static int subtract(Block[] targets, Block[] subtrahends, int from, int to, boolean inv) { int s = 0; for (int i = from; i <= to; i++) { Block target = targets[i]; if (target == null || (!target.isFull && target.bits == null)) continue; Block subtrahend = subtrahends[i]; if (subtrahend == null) { if (inv) { if (target.isFull) { s -= BLOCK_SIZE; } else { s -= count(target.bits, 0, BLOCK_SIZE - 1); } target.isFull = false; target.bits = null; target.shared = false; } } else { s += subtract(target, subtrahend, inv); } } return s; }
static int subtract(Block[] targets, Block[] subtrahends, int from, int to, boolean inv) { int s = 0; for (int i = from; i <= to; i++) { Block target = targets[i]; if (target == null || (!target.isFull && target.bits == null)) continue; Block subtrahend = subtrahends[i]; if (subtrahend == null) { if (inv) { if (target.isFull) { s -= BLOCK_SIZE; } else { s -= count(target.bits, 0, BLOCK_SIZE - 1); } target.isFull = false; target.bits = null; target.shared = false; } } else { s += subtract(target, subtrahend, inv); } } return s; }
int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); target.bits = addbits; target.shared = true; return count(addbits, 0, BLOCK_SIZE - 1); } else { target.bits = targetbits = emptyBits(null);
int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); int s = BLOCK_SIZE; if ((targetbits = target.bits) != null) { s -= count(targetbits, 0, BLOCK_SIZE - 1); target.bits = addbits; target.shared = true; return count(addbits, 0, BLOCK_SIZE - 1); } else { target.bits = targetbits = emptyBits(null);