| 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 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1232 addInlinedInstantiation(type); | 1232 addInlinedInstantiation(type); |
| 1233 if (!currentInlinedInstantiations.isEmpty) { | 1233 if (!currentInlinedInstantiations.isEmpty) { |
| 1234 instantiatedTypes = | 1234 instantiatedTypes = |
| 1235 new List<ResolutionInterfaceType>.from(currentInlinedInstantiations); | 1235 new List<ResolutionInterfaceType>.from(currentInlinedInstantiations); |
| 1236 } | 1236 } |
| 1237 | 1237 |
| 1238 HInstruction newObject; | 1238 HInstruction newObject; |
| 1239 if (!isNativeUpgradeFactory) { | 1239 if (!isNativeUpgradeFactory) { |
| 1240 // Create the runtime type information, if needed. | 1240 // Create the runtime type information, if needed. |
| 1241 bool hasRtiInput = false; | 1241 bool hasRtiInput = false; |
| 1242 if (rtiNeed.classNeedsRtiField(classElement)) { | 1242 if (rtiNeed.classNeedsRtiField(classElement.declaration)) { |
| 1243 // Read the values of the type arguments and create a | 1243 // Read the values of the type arguments and create a |
| 1244 // HTypeInfoExpression to set on the newly create object. | 1244 // HTypeInfoExpression to set on the newly create object. |
| 1245 hasRtiInput = true; | 1245 hasRtiInput = true; |
| 1246 List<HInstruction> typeArguments = <HInstruction>[]; | 1246 List<HInstruction> typeArguments = <HInstruction>[]; |
| 1247 classElement.typeVariables | 1247 classElement.typeVariables |
| 1248 .forEach((ResolutionTypeVariableType typeVariable) { | 1248 .forEach((ResolutionTypeVariableType typeVariable) { |
| 1249 HInstruction argument = localsHandler | 1249 HInstruction argument = localsHandler |
| 1250 .readLocal(localsHandler.getTypeVariableAsLocal(typeVariable)); | 1250 .readLocal(localsHandler.getTypeVariableAsLocal(typeVariable)); |
| 1251 typeArguments.add(argument); | 1251 typeArguments.add(argument); |
| 1252 }); | 1252 }); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1371 localsHandler.startFunction(element, node); | 1371 localsHandler.startFunction(element, node); |
| 1372 close(new HGoto()).addSuccessor(block); | 1372 close(new HGoto()).addSuccessor(block); |
| 1373 | 1373 |
| 1374 open(block); | 1374 open(block); |
| 1375 | 1375 |
| 1376 // Add the type parameters of the class as parameters of this method. This | 1376 // Add the type parameters of the class as parameters of this method. This |
| 1377 // must be done before adding the normal parameters, because their types | 1377 // must be done before adding the normal parameters, because their types |
| 1378 // may contain references to type variables. | 1378 // may contain references to type variables. |
| 1379 var enclosing = element.enclosingElement; | 1379 var enclosing = element.enclosingElement; |
| 1380 if ((element.isConstructor || element.isGenerativeConstructorBody) && | 1380 if ((element.isConstructor || element.isGenerativeConstructorBody) && |
| 1381 rtiNeed.classNeedsRti(enclosing)) { | 1381 rtiNeed.classNeedsRti(enclosing.declaration)) { |
| 1382 enclosing.typeVariables | 1382 enclosing.typeVariables |
| 1383 .forEach((ResolutionTypeVariableType typeVariable) { | 1383 .forEach((ResolutionTypeVariableType typeVariable) { |
| 1384 HParameterValue param = | 1384 HParameterValue param = |
| 1385 addParameter(typeVariable.element, commonMasks.nonNullType); | 1385 addParameter(typeVariable.element, commonMasks.nonNullType); |
| 1386 localsHandler.directLocals[ | 1386 localsHandler.directLocals[ |
| 1387 localsHandler.getTypeVariableAsLocal(typeVariable)] = param; | 1387 localsHandler.getTypeVariableAsLocal(typeVariable)] = param; |
| 1388 }); | 1388 }); |
| 1389 } | 1389 } |
| 1390 | 1390 |
| 1391 if (element is MethodElement) { | 1391 if (element is MethodElement) { |
| (...skipping 5349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6741 this.oldReturnLocal, | 6741 this.oldReturnLocal, |
| 6742 this.oldReturnType, | 6742 this.oldReturnType, |
| 6743 this.oldResolvedAst, | 6743 this.oldResolvedAst, |
| 6744 this.oldStack, | 6744 this.oldStack, |
| 6745 this.oldLocalsHandler, | 6745 this.oldLocalsHandler, |
| 6746 this.inTryStatement, | 6746 this.inTryStatement, |
| 6747 this.allFunctionsCalledOnce, | 6747 this.allFunctionsCalledOnce, |
| 6748 this.oldElementInferenceResults) | 6748 this.oldElementInferenceResults) |
| 6749 : super(function); | 6749 : super(function); |
| 6750 } | 6750 } |
| OLD | NEW |