| 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 class Interceptors { | 5 class Interceptors { |
| 6 Compiler compiler; | 6 Compiler compiler; |
| 7 Interceptors(Compiler this.compiler); | 7 Interceptors(Compiler this.compiler); |
| 8 | 8 |
| 9 SourceString mapOperatorToMethodName(Operator op) { | 9 SourceString mapOperatorToMethodName(Operator op) { |
| 10 String name = op.source.stringValue; | 10 String name = op.source.stringValue; |
| (...skipping 2544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2555 target = new HInvokeSuper(inputs); | 2555 target = new HInvokeSuper(inputs); |
| 2556 add(target); | 2556 add(target); |
| 2557 inputs = <HInstruction>[target]; | 2557 inputs = <HInstruction>[target]; |
| 2558 addDynamicSendArgumentsToList(node, inputs); | 2558 addDynamicSendArgumentsToList(node, inputs); |
| 2559 push(new HInvokeClosure(selector, inputs)); | 2559 push(new HInvokeClosure(selector, inputs)); |
| 2560 } | 2560 } |
| 2561 } | 2561 } |
| 2562 | 2562 |
| 2563 HInstruction analyzeTypeArgument(DartType argument, Node currentNode) { | 2563 HInstruction analyzeTypeArgument(DartType argument, Node currentNode) { |
| 2564 if (argument.element.isTypeVariable()) { | 2564 if (argument.element.isTypeVariable()) { |
| 2565 Element member = work.element; | 2565 if (work.element.isFactoryConstructor() |
| 2566 if (member.enclosingElement.isClosure()) { | 2566 || work.element.isGenerativeConstructor()) { |
| 2567 member = (member.enclosingElement as ClosureClassElement).methodElement; | |
| 2568 member = member.getOutermostEnclosingMemberOrTopLevel(); | |
| 2569 } | |
| 2570 if (member.isFactoryConstructor()) { | |
| 2571 // The type variable is stored in a parameter of the | 2567 // The type variable is stored in a parameter of the |
| 2572 // factory. | 2568 // factory. |
| 2573 return localsHandler.readLocal(argument.element); | 2569 return localsHandler.readLocal(argument.element); |
| 2574 } else if (member.isInstanceMember() | 2570 } else if (work.element.isInstanceMember()) { |
| 2575 || member.isGenerativeConstructor()) { | |
| 2576 // The type variable is stored in [this]. | 2571 // The type variable is stored in [this]. |
| 2577 pushInvokeHelper1(interceptors.getGetRuntimeTypeInfo(), | 2572 pushInvokeHelper1(interceptors.getGetRuntimeTypeInfo(), |
| 2578 localsHandler.readThis()); | 2573 localsHandler.readThis()); |
| 2579 HInstruction typeInfo = pop(); | 2574 HInstruction typeInfo = pop(); |
| 2580 HInstruction foreign = new HForeign( | 2575 HInstruction foreign = new HForeign( |
| 2581 new LiteralDartString('#.$argument'), | 2576 new LiteralDartString('#.$argument'), |
| 2582 new LiteralDartString('String'), | 2577 new LiteralDartString('String'), |
| 2583 <HInstruction>[typeInfo]); | 2578 <HInstruction>[typeInfo]); |
| 2584 add(foreign); | 2579 add(foreign); |
| 2585 return foreign; | 2580 return foreign; |
| (...skipping 1459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4045 new HSubGraphBlockInformation(elseBranch.graph)); | 4040 new HSubGraphBlockInformation(elseBranch.graph)); |
| 4046 | 4041 |
| 4047 HBasicBlock conditionStartBlock = conditionBranch.block; | 4042 HBasicBlock conditionStartBlock = conditionBranch.block; |
| 4048 conditionStartBlock.setBlockFlow(info, joinBlock); | 4043 conditionStartBlock.setBlockFlow(info, joinBlock); |
| 4049 SubGraph conditionGraph = conditionBranch.graph; | 4044 SubGraph conditionGraph = conditionBranch.graph; |
| 4050 HIf branch = conditionGraph.end.last; | 4045 HIf branch = conditionGraph.end.last; |
| 4051 assert(branch is HIf); | 4046 assert(branch is HIf); |
| 4052 branch.blockInformation = conditionStartBlock.blockFlow; | 4047 branch.blockInformation = conditionStartBlock.blockFlow; |
| 4053 } | 4048 } |
| 4054 } | 4049 } |
| OLD | NEW |