Lines 319-325
Link Here
|
319 |
// prot. non null |
319 |
// prot. non null |
320 |
& ((a2 = this.nullBit2) | (a4 = this.nullBit4)); |
320 |
& ((a2 = this.nullBit2) | (a4 = this.nullBit4)); |
321 |
// null or unknown |
321 |
// null or unknown |
322 |
m2 = s1 & (s2 = this.nullBit2) & (s3 ^ s4) |
322 |
m2 = s1 & (s2 = this.nullBit2) & (s3 ^ s4) // TODO(stephan): potential typo: should this be "s2 = source.nullBit2"??? |
323 |
// prot. null |
323 |
// prot. null |
324 |
& ((a3 = this.nullBit3) | a4); |
324 |
& ((a3 = this.nullBit3) | a4); |
325 |
// non null or unknown |
325 |
// non null or unknown |
Lines 330-341
Link Here
|
330 |
| (ns2 = ~s2) & s3 & ns4 & (a2 | a4) |
330 |
| (ns2 = ~s2) & s3 & ns4 & (a2 | a4) |
331 |
| ns2 & ns3 & s4 & (a2 | a3)); |
331 |
| ns2 & ns3 & s4 & (a2 | a3)); |
332 |
if ((m = (m1 | m2 | m3)) != 0) { |
332 |
if ((m = (m1 | m2 | m3)) != 0) { |
|
|
333 |
long x = ~this.nullBit1 & a2 & a3 & a4; |
333 |
newCopy = true; |
334 |
newCopy = true; |
334 |
source = source.unconditionalCopy(); |
335 |
source = source.unconditionalCopy(); |
335 |
source.nullBit1 &= ~m; |
336 |
source.nullBit1 &= ~m; |
336 |
source.nullBit2 &= (nm1 = ~m1) & ((nm2 = ~m2) | a4); |
337 |
source.nullBit2 &= (nm1 = ~m1) & ((nm2 = ~m2) | a4); |
337 |
source.nullBit3 &= (nm1 | a2) & nm2; |
338 |
source.nullBit3 &= (nm1 | a2) & nm2; |
338 |
source.nullBit4 &= nm1 & nm2; |
339 |
source.nullBit4 &= nm1 & nm2; |
|
|
340 |
if (x != 0) { |
341 |
source.nullBit1 &= ~x; |
342 |
source.nullBit2 |= x; |
343 |
source.nullBit3 |= x; |
344 |
source.nullBit4 |= x; |
345 |
} |
339 |
} |
346 |
} |
340 |
if (this.extra != null && source.extra != null) { |
347 |
if (this.extra != null && source.extra != null) { |
341 |
int length = this.extra[2].length, sourceLength = source.extra[0].length; |
348 |
int length = this.extra[2].length, sourceLength = source.extra[0].length; |