| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:collection'; | 5 import 'dart:collection'; |
| 6 | 6 |
| 7 import 'package:js_runtime/shared/embedded_names.dart'; | 7 import 'package:js_runtime/shared/embedded_names.dart'; |
| 8 | 8 |
| 9 import '../closure.dart'; | 9 import '../closure.dart'; |
| 10 import '../common.dart'; | 10 import '../common.dart'; |
| (...skipping 6212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6223 // The body has the finally block as successor. | 6223 // The body has the finally block as successor. |
| 6224 if (endTryBlock != null) { | 6224 if (endTryBlock != null) { |
| 6225 endTryBlock.addSuccessor(startFinallyBlock); | 6225 endTryBlock.addSuccessor(startFinallyBlock); |
| 6226 endTryBlock.addSuccessor(exitBlock); | 6226 endTryBlock.addSuccessor(exitBlock); |
| 6227 } | 6227 } |
| 6228 | 6228 |
| 6229 // The finally block has the exit block as successor. | 6229 // The finally block has the exit block as successor. |
| 6230 endFinallyBlock.addSuccessor(exitBlock); | 6230 endFinallyBlock.addSuccessor(exitBlock); |
| 6231 | 6231 |
| 6232 // If a block inside try/catch aborts (eg with a return statement), | 6232 // If a block inside try/catch aborts (eg with a return statement), |
| 6233 // we explicitely mark this block a predecessor of the catch | 6233 // we explicitly mark this block a predecessor of the catch |
| 6234 // block and the finally block. | 6234 // block and the finally block. |
| 6235 addExitTrySuccessor(startFinallyBlock); | 6235 addExitTrySuccessor(startFinallyBlock); |
| 6236 | 6236 |
| 6237 // Use the locals handler not altered by the catch and finally | 6237 // Use the locals handler not altered by the catch and finally |
| 6238 // blocks. | 6238 // blocks. |
| 6239 // TODO(sigurdm): We can probably do this, because try-variables are boxed. | 6239 // TODO(sigurdm): We can probably do this, because try-variables are boxed. |
| 6240 // Need to verify. | 6240 // Need to verify. |
| 6241 localsHandler = savedLocals; | 6241 localsHandler = savedLocals; |
| 6242 open(exitBlock); | 6242 open(exitBlock); |
| 6243 enterBlock.setBlockFlow( | 6243 enterBlock.setBlockFlow( |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6431 endCatchBlock.addSuccessor( | 6431 endCatchBlock.addSuccessor( |
| 6432 startFinallyBlock != null ? startFinallyBlock : exitBlock); | 6432 startFinallyBlock != null ? startFinallyBlock : exitBlock); |
| 6433 } | 6433 } |
| 6434 | 6434 |
| 6435 // The finally block has the exit block as successor. | 6435 // The finally block has the exit block as successor. |
| 6436 if (endFinallyBlock != null) { | 6436 if (endFinallyBlock != null) { |
| 6437 endFinallyBlock.addSuccessor(exitBlock); | 6437 endFinallyBlock.addSuccessor(exitBlock); |
| 6438 } | 6438 } |
| 6439 | 6439 |
| 6440 // If a block inside try/catch aborts (eg with a return statement), | 6440 // If a block inside try/catch aborts (eg with a return statement), |
| 6441 // we explicitely mark this block a predecessor of the catch | 6441 // we explicitly mark this block a predecessor of the catch |
| 6442 // block and the finally block. | 6442 // block and the finally block. |
| 6443 addExitTrySuccessor(startCatchBlock); | 6443 addExitTrySuccessor(startCatchBlock); |
| 6444 addExitTrySuccessor(startFinallyBlock); | 6444 addExitTrySuccessor(startFinallyBlock); |
| 6445 | 6445 |
| 6446 // Use the locals handler not altered by the catch and finally | 6446 // Use the locals handler not altered by the catch and finally |
| 6447 // blocks. | 6447 // blocks. |
| 6448 localsHandler = savedLocals; | 6448 localsHandler = savedLocals; |
| 6449 open(exitBlock); | 6449 open(exitBlock); |
| 6450 enterBlock.setBlockFlow( | 6450 enterBlock.setBlockFlow( |
| 6451 new HTryBlockInformation(wrapStatementGraph(bodyGraph), exception, | 6451 new HTryBlockInformation(wrapStatementGraph(bodyGraph), exception, |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6849 this.oldReturnLocal, | 6849 this.oldReturnLocal, |
| 6850 this.oldReturnType, | 6850 this.oldReturnType, |
| 6851 this.oldResolvedAst, | 6851 this.oldResolvedAst, |
| 6852 this.oldStack, | 6852 this.oldStack, |
| 6853 this.oldLocalsHandler, | 6853 this.oldLocalsHandler, |
| 6854 this.inTryStatement, | 6854 this.inTryStatement, |
| 6855 this.allFunctionsCalledOnce, | 6855 this.allFunctionsCalledOnce, |
| 6856 this.oldElementInferenceResults) | 6856 this.oldElementInferenceResults) |
| 6857 : super(function); | 6857 : super(function); |
| 6858 } | 6858 } |
| OLD | NEW |