| 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 3574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3585 visitSendSet(SendSet node) { | 3585 visitSendSet(SendSet node) { |
| 3586 Element element = elements[node]; | 3586 Element element = elements[node]; |
| 3587 if (!Elements.isUnresolved(element) && element.impliesType()) { | 3587 if (!Elements.isUnresolved(element) && element.impliesType()) { |
| 3588 Identifier selector = node.selector; | 3588 Identifier selector = node.selector; |
| 3589 generateThrowNoSuchMethod(node, selector.source.slowToString(), | 3589 generateThrowNoSuchMethod(node, selector.source.slowToString(), |
| 3590 argumentNodes: node.arguments); | 3590 argumentNodes: node.arguments); |
| 3591 return; | 3591 return; |
| 3592 } | 3592 } |
| 3593 Operator op = node.assignmentOperator; | 3593 Operator op = node.assignmentOperator; |
| 3594 if (node.isSuperCall) { | 3594 if (node.isSuperCall) { |
| 3595 if (element == null) return generateSuperNoSuchMethodSend(node); | 3595 if (Elements.isUnresolved(element)) { |
| 3596 return generateSuperNoSuchMethodSend(node); |
| 3597 } |
| 3596 HInstruction target = new HStatic(element); | 3598 HInstruction target = new HStatic(element); |
| 3597 HInstruction context = localsHandler.readThis(); | 3599 HInstruction context = localsHandler.readThis(); |
| 3598 add(target); | 3600 add(target); |
| 3599 var inputs = <HInstruction>[target, context]; | 3601 var inputs = <HInstruction>[target, context]; |
| 3600 addDynamicSendArgumentsToList(node, inputs); | 3602 addDynamicSendArgumentsToList(node, inputs); |
| 3601 if (!identical(node.assignmentOperator.source.stringValue, '=')) { | 3603 if (!identical(node.assignmentOperator.source.stringValue, '=')) { |
| 3602 compiler.unimplemented('complex super assignment', | 3604 compiler.unimplemented('complex super assignment', |
| 3603 node: node.assignmentOperator); | 3605 node: node.assignmentOperator); |
| 3604 } | 3606 } |
| 3605 push(new HInvokeSuper(inputs, isSetter: true)); | 3607 push(new HInvokeSuper(inputs, isSetter: true)); |
| (...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5092 new HSubGraphBlockInformation(elseBranch.graph)); | 5094 new HSubGraphBlockInformation(elseBranch.graph)); |
| 5093 | 5095 |
| 5094 HBasicBlock conditionStartBlock = conditionBranch.block; | 5096 HBasicBlock conditionStartBlock = conditionBranch.block; |
| 5095 conditionStartBlock.setBlockFlow(info, joinBlock); | 5097 conditionStartBlock.setBlockFlow(info, joinBlock); |
| 5096 SubGraph conditionGraph = conditionBranch.graph; | 5098 SubGraph conditionGraph = conditionBranch.graph; |
| 5097 HIf branch = conditionGraph.end.last; | 5099 HIf branch = conditionGraph.end.last; |
| 5098 assert(branch is HIf); | 5100 assert(branch is HIf); |
| 5099 branch.blockInformation = conditionStartBlock.blockFlow; | 5101 branch.blockInformation = conditionStartBlock.blockFlow; |
| 5100 } | 5102 } |
| 5101 } | 5103 } |
| OLD | NEW |