Lines 343-359
Link Here
|
343 |
case FINALLY_MUST_BE_INLINED : |
343 |
case FINALLY_MUST_BE_INLINED : |
344 |
codeStream.store(anyExceptionVariable, false); |
344 |
codeStream.store(anyExceptionVariable, false); |
345 |
this.finallyBlock.generateCode(currentScope, codeStream); |
345 |
this.finallyBlock.generateCode(currentScope, codeStream); |
|
|
346 |
position = codeStream.position; |
346 |
codeStream.load(anyExceptionVariable); |
347 |
codeStream.load(anyExceptionVariable); |
347 |
codeStream.athrow(); |
348 |
codeStream.athrow(); |
|
|
349 |
codeStream.recordPositionsFrom( |
350 |
position, |
351 |
finallyBlock.sourceEnd); |
348 |
subRoutineStartLabel.place(); |
352 |
subRoutineStartLabel.place(); |
349 |
codeStream.recordPositionsFrom(finallySequenceStartPC, finallyBlock.sourceStart); |
|
|
350 |
break; |
353 |
break; |
351 |
|
354 |
|
352 |
case FINALLY_DOES_NOT_COMPLETE : |
355 |
case FINALLY_DOES_NOT_COMPLETE : |
353 |
codeStream.pop(); |
356 |
codeStream.pop(); |
354 |
subRoutineStartLabel.place(); |
357 |
subRoutineStartLabel.place(); |
355 |
codeStream.recordPositionsFrom(finallySequenceStartPC, finallyBlock.sourceStart); |
358 |
codeStream.recordPositionsFrom(finallySequenceStartPC, finallyBlock.sourceStart); |
356 |
finallyBlock.generateCode(scope, codeStream); |
359 |
this.finallyBlock.generateCode(scope, codeStream); |
357 |
break; |
360 |
break; |
358 |
} |
361 |
} |
359 |
// will naturally fall into subsequent code after subroutine invocation |
362 |
// will naturally fall into subsequent code after subroutine invocation |
Lines 379-385
Link Here
|
379 |
codeStream.removeNotDefinitelyAssignedVariables(currentScope, preTryInitStateIndex); |
382 |
codeStream.removeNotDefinitelyAssignedVariables(currentScope, preTryInitStateIndex); |
380 |
} |
383 |
} |
381 |
// entire sequence for finally is associated to finally block |
384 |
// entire sequence for finally is associated to finally block |
382 |
finallyBlock.generateCode(scope, codeStream); |
385 |
this.finallyBlock.generateCode(scope, codeStream); |
383 |
break; |
386 |
break; |
384 |
|
387 |
|
385 |
case FINALLY_DOES_NOT_COMPLETE : |
388 |
case FINALLY_DOES_NOT_COMPLETE : |