|
Lines 1070-1086
Link Here
|
| 1070 |
// protected from non-object locals in calling methods |
1070 |
// protected from non-object locals in calling methods |
| 1071 |
if (this != DEAD_END) { |
1071 |
if (this != DEAD_END) { |
| 1072 |
this.tagBits |= NULL_FLAG_MASK; |
1072 |
this.tagBits |= NULL_FLAG_MASK; |
| 1073 |
int position; |
1073 |
int position = local.getAnalysisId(this.maxFieldCount); |
| 1074 |
if (local instanceof FieldBinding) { |
|
|
| 1075 |
// non-final fields may be modified in separate threads and we cannot be sure about their |
| 1076 |
// definite nullness. Hence, marking as potential non null. |
| 1077 |
// Also marking it as definitely unknown to avoid deferring null check for these fields |
| 1078 |
this.markNullStatus(local, FlowInfo.POTENTIALLY_NON_NULL); |
| 1079 |
this.markAsDefinitelyUnknown(local); |
| 1080 |
return; |
| 1081 |
} else { |
| 1082 |
position = local.id + this.maxFieldCount; |
| 1083 |
} |
| 1084 |
long mask; |
1074 |
long mask; |
| 1085 |
long a1, a2, a3, a4, na2; |
1075 |
long a1, a2, a3, a4, na2; |
| 1086 |
// position is zero-based |
1076 |
// position is zero-based |
|
Lines 1177-1193
Link Here
|
| 1177 |
// protected from non-object locals in calling methods |
1167 |
// protected from non-object locals in calling methods |
| 1178 |
if (this != DEAD_END) { |
1168 |
if (this != DEAD_END) { |
| 1179 |
this.tagBits |= NULL_FLAG_MASK; |
1169 |
this.tagBits |= NULL_FLAG_MASK; |
| 1180 |
int position; |
|
|
| 1181 |
long mask; |
1170 |
long mask; |
| 1182 |
// position is zero-based |
1171 |
int position = local.getAnalysisId(this.maxFieldCount); |
| 1183 |
if (local instanceof FieldBinding) { |
|
|
| 1184 |
// non-final fields may be modified in separate threads and we cannot be sure about their |
| 1185 |
// definite nullness. Hence, marking as potential null. |
| 1186 |
this.markNullStatus(local, FlowInfo.POTENTIALLY_NULL); |
| 1187 |
return; |
| 1188 |
} else { |
| 1189 |
position = local.id + this.maxFieldCount; |
| 1190 |
} |
| 1191 |
if (position < BitCacheSize) { |
1172 |
if (position < BitCacheSize) { |
| 1192 |
// use bits |
1173 |
// use bits |
| 1193 |
if (((mask = 1L << position) & this.nullBit1) != 0) { |
1174 |
if (((mask = 1L << position) & this.nullBit1) != 0) { |
|
Lines 1319-1336
Link Here
|
| 1319 |
if (this != DEAD_END) { |
1300 |
if (this != DEAD_END) { |
| 1320 |
this.tagBits |= NULL_FLAG_MASK; |
1301 |
this.tagBits |= NULL_FLAG_MASK; |
| 1321 |
long mask; |
1302 |
long mask; |
| 1322 |
int position; |
1303 |
int position = local.getAnalysisId(this.maxFieldCount); |
| 1323 |
// position is zero-based |
|
|
| 1324 |
if (local instanceof FieldBinding) { |
| 1325 |
// non-final fields may be modified in separate threads and we cannot be sure about their |
| 1326 |
// definite nullness. Hence, marking as potential non null. |
| 1327 |
// Also marking it as definitely unknown to avoid deferring null check for these fields |
| 1328 |
this.markNullStatus(local, FlowInfo.POTENTIALLY_NON_NULL); |
| 1329 |
this.markAsDefinitelyUnknown(local); |
| 1330 |
return; |
| 1331 |
} else { |
| 1332 |
position = local.id + this.maxFieldCount; |
| 1333 |
} |
| 1334 |
if (position < BitCacheSize) { // use bits |
1304 |
if (position < BitCacheSize) { // use bits |
| 1335 |
// set assigned non null |
1305 |
// set assigned non null |
| 1336 |
this.nullBit1 |= (mask = 1L << position); |
1306 |
this.nullBit1 |= (mask = 1L << position); |
|
Lines 1383-1398
Link Here
|
| 1383 |
if (this != DEAD_END) { |
1353 |
if (this != DEAD_END) { |
| 1384 |
this.tagBits |= NULL_FLAG_MASK; |
1354 |
this.tagBits |= NULL_FLAG_MASK; |
| 1385 |
long mask; |
1355 |
long mask; |
| 1386 |
int position; |
1356 |
int position = local.getAnalysisId(this.maxFieldCount); |
| 1387 |
// position is zero-based |
|
|
| 1388 |
if (local instanceof FieldBinding) { |
| 1389 |
// non-final fields may be modified in separate threads and we cannot be sure about their |
| 1390 |
// definite nullness. Hence, marking as potential null. |
| 1391 |
this.markNullStatus(local, FlowInfo.POTENTIALLY_NULL); |
| 1392 |
return; |
| 1393 |
} else { |
| 1394 |
position = local.id + this.maxFieldCount; |
| 1395 |
} |
| 1396 |
if (position < BitCacheSize) { // use bits |
1357 |
if (position < BitCacheSize) { // use bits |
| 1397 |
// mark assigned null |
1358 |
// mark assigned null |
| 1398 |
this.nullBit1 |= (mask = 1L << position); |
1359 |
this.nullBit1 |= (mask = 1L << position); |