Chromium Code Reviews| 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 part of ssa; | 5 part of ssa; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * A special element for the extra parameter taken by intercepted | 8 * A special element for the extra parameter taken by intercepted |
| 9 * methods. We need to override [Element.computeType] because our | 9 * methods. We need to override [Element.computeType] because our |
| 10 * optimizers may look at its declared type. | 10 * optimizers may look at its declared type. |
| (...skipping 3881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3892 } | 3892 } |
| 3893 | 3893 |
| 3894 visitThrow(Throw node) { | 3894 visitThrow(Throw node) { |
| 3895 if (node.expression == null) { | 3895 if (node.expression == null) { |
| 3896 HInstruction exception = rethrowableException; | 3896 HInstruction exception = rethrowableException; |
| 3897 if (exception == null) { | 3897 if (exception == null) { |
| 3898 exception = graph.addConstantNull(constantSystem); | 3898 exception = graph.addConstantNull(constantSystem); |
| 3899 compiler.internalError( | 3899 compiler.internalError( |
| 3900 'rethrowableException should not be null', node: node); | 3900 'rethrowableException should not be null', node: node); |
| 3901 } | 3901 } |
| 3902 handleInTryStatement(); | |
|
ngeoffray
2013/04/10 14:51:16
We do this for return/break/continue, but we forgo
| |
| 3902 close(new HThrow(exception, isRethrow: true)); | 3903 close(new HThrow(exception, isRethrow: true)); |
| 3903 } else { | 3904 } else { |
| 3904 visit(node.expression); | 3905 visit(node.expression); |
| 3906 handleInTryStatement(); | |
| 3905 close(new HThrow(pop())); | 3907 close(new HThrow(pop())); |
| 3906 } | 3908 } |
| 3907 } | 3909 } |
| 3908 | 3910 |
| 3909 visitTypeAnnotation(TypeAnnotation node) { | 3911 visitTypeAnnotation(TypeAnnotation node) { |
| 3910 compiler.internalError('visiting type annotation in SSA builder', | 3912 compiler.internalError('visiting type annotation in SSA builder', |
| 3911 node: node); | 3913 node: node); |
| 3912 } | 3914 } |
| 3913 | 3915 |
| 3914 visitVariableDefinitions(VariableDefinitions node) { | 3916 visitVariableDefinitions(VariableDefinitions node) { |
| (...skipping 1247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5162 new HSubGraphBlockInformation(elseBranch.graph)); | 5164 new HSubGraphBlockInformation(elseBranch.graph)); |
| 5163 | 5165 |
| 5164 HBasicBlock conditionStartBlock = conditionBranch.block; | 5166 HBasicBlock conditionStartBlock = conditionBranch.block; |
| 5165 conditionStartBlock.setBlockFlow(info, joinBlock); | 5167 conditionStartBlock.setBlockFlow(info, joinBlock); |
| 5166 SubGraph conditionGraph = conditionBranch.graph; | 5168 SubGraph conditionGraph = conditionBranch.graph; |
| 5167 HIf branch = conditionGraph.end.last; | 5169 HIf branch = conditionGraph.end.last; |
| 5168 assert(branch is HIf); | 5170 assert(branch is HIf); |
| 5169 branch.blockInformation = conditionStartBlock.blockFlow; | 5171 branch.blockInformation = conditionStartBlock.blockFlow; |
| 5170 } | 5172 } |
| 5171 } | 5173 } |
| OLD | NEW |