| 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 class Interceptors { | 7 class Interceptors { |
| 8 Compiler compiler; | 8 Compiler compiler; |
| 9 Interceptors(Compiler this.compiler); | 9 Interceptors(Compiler this.compiler); |
| 10 | 10 |
| (...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 986 bodyElement = backendMember; | 986 bodyElement = backendMember; |
| 987 break; | 987 break; |
| 988 } | 988 } |
| 989 } | 989 } |
| 990 } | 990 } |
| 991 if (bodyElement == null) { | 991 if (bodyElement == null) { |
| 992 bodyElement = new ConstructorBodyElement(constructor); | 992 bodyElement = new ConstructorBodyElement(constructor); |
| 993 // [:resolveMethodElement:] require the passed element to be a | 993 // [:resolveMethodElement:] require the passed element to be a |
| 994 // declaration. | 994 // declaration. |
| 995 TreeElements treeElements = | 995 TreeElements treeElements = |
| 996 compiler.resolver.resolveMethodElement(constructor.declaration); | 996 compiler.enqueuer.resolution.getCachedElements( |
| 997 constructor.declaration); |
| 997 classElement.backendMembers = | 998 classElement.backendMembers = |
| 998 classElement.backendMembers.prepend(bodyElement); | 999 classElement.backendMembers.prepend(bodyElement); |
| 999 | 1000 |
| 1000 if (constructor.isPatch) { | 1001 if (constructor.isPatch) { |
| 1001 // Create origin body element for patched constructors. | 1002 // Create origin body element for patched constructors. |
| 1002 bodyElement.origin = new ConstructorBodyElement(constructor.origin); | 1003 bodyElement.origin = new ConstructorBodyElement(constructor.origin); |
| 1003 bodyElement.origin.patch = bodyElement; | 1004 bodyElement.origin.patch = bodyElement; |
| 1004 classElement.origin.backendMembers = | 1005 classElement.origin.backendMembers = |
| 1005 classElement.origin.backendMembers.prepend(bodyElement.origin); | 1006 classElement.origin.backendMembers.prepend(bodyElement.origin); |
| 1006 } | 1007 } |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1156 // Don't forget to update the field, if the parameter is of the | 1157 // Don't forget to update the field, if the parameter is of the |
| 1157 // form [:this.x:]. | 1158 // form [:this.x:]. |
| 1158 if (parameter.kind == ElementKind.FIELD_PARAMETER) { | 1159 if (parameter.kind == ElementKind.FIELD_PARAMETER) { |
| 1159 FieldParameterElement fieldParameterElement = parameter; | 1160 FieldParameterElement fieldParameterElement = parameter; |
| 1160 fieldValues[fieldParameterElement.fieldElement] = argument; | 1161 fieldValues[fieldParameterElement.fieldElement] = argument; |
| 1161 } | 1162 } |
| 1162 }); | 1163 }); |
| 1163 | 1164 |
| 1164 // Build the initializers in the context of the new constructor. | 1165 // Build the initializers in the context of the new constructor. |
| 1165 TreeElements oldElements = elements; | 1166 TreeElements oldElements = elements; |
| 1166 elements = compiler.resolver.resolveMethodElement(constructor); | 1167 elements = |
| 1168 compiler.enqueuer.resolution.getCachedElements(constructor); |
| 1167 buildInitializers(constructor, constructors, fieldValues); | 1169 buildInitializers(constructor, constructors, fieldValues); |
| 1168 elements = oldElements; | 1170 elements = oldElements; |
| 1169 }); | 1171 }); |
| 1170 } | 1172 } |
| 1171 | 1173 |
| 1172 /** | 1174 /** |
| 1173 * Run through the initializers and inline all field initializers. Recursively | 1175 * Run through the initializers and inline all field initializers. Recursively |
| 1174 * inlines super initializers. | 1176 * inlines super initializers. |
| 1175 * | 1177 * |
| 1176 * The constructors of the inlined initializers is added to [constructors] | 1178 * The constructors of the inlined initializers is added to [constructors] |
| (...skipping 3330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4507 new HSubGraphBlockInformation(elseBranch.graph)); | 4509 new HSubGraphBlockInformation(elseBranch.graph)); |
| 4508 | 4510 |
| 4509 HBasicBlock conditionStartBlock = conditionBranch.block; | 4511 HBasicBlock conditionStartBlock = conditionBranch.block; |
| 4510 conditionStartBlock.setBlockFlow(info, joinBlock); | 4512 conditionStartBlock.setBlockFlow(info, joinBlock); |
| 4511 SubGraph conditionGraph = conditionBranch.graph; | 4513 SubGraph conditionGraph = conditionBranch.graph; |
| 4512 HIf branch = conditionGraph.end.last; | 4514 HIf branch = conditionGraph.end.last; |
| 4513 assert(branch is HIf); | 4515 assert(branch is HIf); |
| 4514 branch.blockInformation = conditionStartBlock.blockFlow; | 4516 branch.blockInformation = conditionStartBlock.blockFlow; |
| 4515 } | 4517 } |
| 4516 } | 4518 } |
| OLD | NEW |