Lines 347-387
Link Here
|
347 |
codeStream.generateConstant(fieldConstant, implicitConversion); |
347 |
codeStream.generateConstant(fieldConstant, implicitConversion); |
348 |
} |
348 |
} |
349 |
} else { |
349 |
} else { |
350 |
if (valueRequired) { |
350 |
boolean isStatic = fieldBinding.isStatic(); |
351 |
boolean isStatic = fieldBinding.isStatic(); |
351 |
if (!isStatic) { |
352 |
if (!isStatic) { |
352 |
if ((bits & DepthMASK) != 0) { |
353 |
if ((bits & DepthMASK) != 0) { |
353 |
ReferenceBinding targetType = currentScope.enclosingSourceType().enclosingTypeAt((bits & DepthMASK) >> DepthSHIFT); |
354 |
ReferenceBinding targetType = currentScope.enclosingSourceType().enclosingTypeAt((bits & DepthMASK) >> DepthSHIFT); |
354 |
Object[] emulationPath = currentScope.getEmulationPath(targetType, true /*only exact match*/, false/*consider enclosing arg*/); |
355 |
Object[] emulationPath = currentScope.getEmulationPath(targetType, true /*only exact match*/, false/*consider enclosing arg*/); |
355 |
codeStream.generateOuterAccess(emulationPath, this, targetType, currentScope); |
356 |
codeStream.generateOuterAccess(emulationPath, this, targetType, currentScope); |
|
|
357 |
} else { |
358 |
generateReceiver(codeStream); |
359 |
} |
360 |
} |
361 |
// managing private access |
362 |
if ((syntheticAccessors == null) || (syntheticAccessors[READ] == null)) { |
363 |
if (isStatic) { |
364 |
codeStream.getstatic(fieldBinding); |
365 |
} else { |
366 |
codeStream.getfield(fieldBinding); |
367 |
} |
368 |
} else { |
356 |
} else { |
369 |
codeStream.invokestatic(syntheticAccessors[READ]); |
357 |
generateReceiver(codeStream); |
370 |
} |
358 |
} |
371 |
if (valueRequired) { |
359 |
} |
372 |
if (this.genericCast != null) codeStream.checkcast(this.genericCast); |
360 |
// managing private access |
373 |
codeStream.generateImplicitConversion(implicitConversion); |
361 |
if ((syntheticAccessors == null) || (syntheticAccessors[READ] == null)) { |
|
|
362 |
if (isStatic) { |
363 |
codeStream.getstatic(fieldBinding); |
374 |
} else { |
364 |
} else { |
375 |
// could occur if !valueRequired but compliance >= 1.4 |
365 |
codeStream.getfield(fieldBinding); |
376 |
switch (fieldBinding.type.id) { |
366 |
} |
377 |
case T_long : |
367 |
} else { |
378 |
case T_double : |
368 |
codeStream.invokestatic(syntheticAccessors[READ]); |
379 |
codeStream.pop2(); |
369 |
} |
380 |
break; |
370 |
if (valueRequired) { |
381 |
default : |
371 |
if (this.genericCast != null) codeStream.checkcast(this.genericCast); |
382 |
codeStream.pop(); |
372 |
codeStream.generateImplicitConversion(implicitConversion); |
383 |
} |
373 |
} else { |
384 |
} |
374 |
// could occur if !valueRequired but compliance >= 1.4 |
|
|
375 |
switch (fieldBinding.type.id) { |
376 |
case T_long : |
377 |
case T_double : |
378 |
codeStream.pop2(); |
379 |
break; |
380 |
default : |
381 |
codeStream.pop(); |
382 |
} |
385 |
} |
383 |
} |
386 |
} |
384 |
} |
387 |
break; |
385 |
break; |