Lines 326-341
Link Here
|
326 |
|
326 |
|
327 |
int pc = codeStream.position; |
327 |
int pc = codeStream.position; |
328 |
boolean needRuntimeCheckcast = (this.bits & GenerateCheckcast) != 0; |
328 |
boolean needRuntimeCheckcast = (this.bits & GenerateCheckcast) != 0; |
|
|
329 |
boolean generateExpression = valueRequired || needRuntimeCheckcast; |
329 |
if (constant != Constant.NotAConstant) { |
330 |
if (constant != Constant.NotAConstant) { |
330 |
if (valueRequired || needRuntimeCheckcast) { // Added for: 1F1W9IG: IVJCOM:WINNT - Compiler omits casting check |
331 |
if (generateExpression) { // Added for: 1F1W9IG: IVJCOM:WINNT - Compiler omits casting check |
331 |
codeStream.generateConstant(constant, implicitConversion); |
332 |
codeStream.generateConstant(constant, implicitConversion); |
332 |
if (needRuntimeCheckcast) { |
333 |
if (needRuntimeCheckcast) { |
333 |
codeStream.checkcast(this.resolvedType); |
334 |
codeStream.checkcast(this.resolvedType); |
334 |
if (valueRequired) { |
335 |
} |
335 |
codeStream.generateImplicitConversion(this.implicitConversion); |
336 |
if (valueRequired) { |
336 |
} else { |
337 |
codeStream.generateImplicitConversion(this.implicitConversion); |
337 |
codeStream.pop(); |
338 |
} else { |
338 |
} |
339 |
codeStream.pop(); |
339 |
} |
340 |
} |
340 |
} |
341 |
} |
341 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
342 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
Lines 344-362
Link Here
|
344 |
expression.generateCode( |
345 |
expression.generateCode( |
345 |
currentScope, |
346 |
currentScope, |
346 |
codeStream, |
347 |
codeStream, |
347 |
valueRequired || needRuntimeCheckcast); |
348 |
generateExpression); |
348 |
if (needRuntimeCheckcast |
349 |
if (needRuntimeCheckcast |
349 |
&& this.expression.postConversionType(currentScope) != this.resolvedType) { // no need to issue a checkcast if already done as genericCast |
350 |
&& this.expression.postConversionType(currentScope) != this.resolvedType) { // no need to issue a checkcast if already done as genericCast |
350 |
codeStream.checkcast(this.resolvedType); |
351 |
codeStream.checkcast(this.resolvedType); |
|
|
352 |
} |
353 |
if (generateExpression) { |
351 |
if (valueRequired) { |
354 |
if (valueRequired) { |
352 |
codeStream.generateImplicitConversion(implicitConversion); |
355 |
codeStream.generateImplicitConversion(implicitConversion); |
353 |
} else { |
356 |
} else { |
354 |
codeStream.pop(); |
357 |
codeStream.pop(); |
355 |
} |
358 |
} |
356 |
} else { |
359 |
} |
357 |
if (valueRequired) |
|
|
358 |
codeStream.generateImplicitConversion(implicitConversion); |
359 |
} |
360 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
360 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
361 |
} |
361 |
} |
362 |
|
362 |
|