| 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 js_backend; | 5 part of js_backend; |
| 6 | 6 |
| 7 typedef void Recompile(Element element); | 7 typedef void Recompile(Element element); |
| 8 | 8 |
| 9 class ReturnInfo { | 9 class ReturnInfo { |
| 10 HType returnType; | 10 HType returnType; |
| (...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 983 enqueueInResolution(getTraceFromException()); | 983 enqueueInResolution(getTraceFromException()); |
| 984 } | 984 } |
| 985 | 985 |
| 986 void registerRuntimeType() { | 986 void registerRuntimeType() { |
| 987 enqueueInResolution(getSetRuntimeTypeInfo()); | 987 enqueueInResolution(getSetRuntimeTypeInfo()); |
| 988 enqueueInResolution(getGetRuntimeTypeInfo()); | 988 enqueueInResolution(getGetRuntimeTypeInfo()); |
| 989 enqueueInResolution(getGetRuntimeTypeArgument()); | 989 enqueueInResolution(getGetRuntimeTypeArgument()); |
| 990 } | 990 } |
| 991 | 991 |
| 992 void registerIsCheck(DartType type, Enqueuer world) { | 992 void registerIsCheck(DartType type, Enqueuer world) { |
| 993 if (!type.isRaw) { | 993 if (!type.isRaw || type is TypeVariableType) { |
| 994 enqueueInResolution(getSetRuntimeTypeInfo()); | 994 enqueueInResolution(getSetRuntimeTypeInfo()); |
| 995 enqueueInResolution(getGetRuntimeTypeInfo()); | 995 enqueueInResolution(getGetRuntimeTypeInfo()); |
| 996 enqueueInResolution(getGetRuntimeTypeArgument()); | 996 enqueueInResolution(getGetRuntimeTypeArgument()); |
| 997 enqueueInResolution(getCheckArguments()); | 997 enqueueInResolution(getCheckArguments()); |
| 998 enqueueInResolution(getGetObjectIsSubtype()); |
| 998 } | 999 } |
| 999 // [registerIsCheck] is also called for checked mode checks, so we | 1000 // [registerIsCheck] is also called for checked mode checks, so we |
| 1000 // need to register checked mode helpers. | 1001 // need to register checked mode helpers. |
| 1001 if (compiler.enableTypeAssertions) { | 1002 if (compiler.enableTypeAssertions) { |
| 1002 SourceString helperName = getCheckedModeHelper(type); | 1003 SourceString helperName = getCheckedModeHelper(type); |
| 1003 Element e = compiler.findHelper(helperName); | 1004 Element e = compiler.findHelper(helperName); |
| 1004 if (e != null) world.addToWorkList(e); | 1005 if (e != null) world.addToWorkList(e); |
| 1005 // We also need the native variant of the check (for DOM types). | 1006 // We also need the native variant of the check (for DOM types). |
| 1006 helperName = nativeNames[helperName.stringValue]; | 1007 helperName = nativeNames[helperName.stringValue]; |
| 1007 if (helperName != null) { | 1008 if (helperName != null) { |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 } | 1421 } |
| 1421 | 1422 |
| 1422 Element getGetRuntimeTypeArgument() { | 1423 Element getGetRuntimeTypeArgument() { |
| 1423 return compiler.findHelper(const SourceString('getRuntimeTypeArgument')); | 1424 return compiler.findHelper(const SourceString('getRuntimeTypeArgument')); |
| 1424 } | 1425 } |
| 1425 | 1426 |
| 1426 Element getCheckArguments() { | 1427 Element getCheckArguments() { |
| 1427 return compiler.findHelper(const SourceString('checkArguments')); | 1428 return compiler.findHelper(const SourceString('checkArguments')); |
| 1428 } | 1429 } |
| 1429 | 1430 |
| 1431 Element getGetObjectIsSubtype() { |
| 1432 return compiler.findHelper(const SourceString('objectIsSubtype')); |
| 1433 } |
| 1434 |
| 1430 Element getThrowNoSuchMethod() { | 1435 Element getThrowNoSuchMethod() { |
| 1431 return compiler.findHelper(const SourceString('throwNoSuchMethod')); | 1436 return compiler.findHelper(const SourceString('throwNoSuchMethod')); |
| 1432 } | 1437 } |
| 1433 | 1438 |
| 1434 Element getCreateRuntimeType() { | 1439 Element getCreateRuntimeType() { |
| 1435 return compiler.findHelper(const SourceString('createRuntimeType')); | 1440 return compiler.findHelper(const SourceString('createRuntimeType')); |
| 1436 } | 1441 } |
| 1437 | 1442 |
| 1438 Element getFallThroughError() { | 1443 Element getFallThroughError() { |
| 1439 return compiler.findHelper(const SourceString("getFallThroughError")); | 1444 return compiler.findHelper(const SourceString("getFallThroughError")); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1453 * | 1458 * |
| 1454 * Invariant: [element] must be a declaration element. | 1459 * Invariant: [element] must be a declaration element. |
| 1455 */ | 1460 */ |
| 1456 void eagerRecompile(Element element) { | 1461 void eagerRecompile(Element element) { |
| 1457 assert(invariant(element, element.isDeclaration)); | 1462 assert(invariant(element, element.isDeclaration)); |
| 1458 generatedCode.remove(element); | 1463 generatedCode.remove(element); |
| 1459 generatedBailoutCode.remove(element); | 1464 generatedBailoutCode.remove(element); |
| 1460 compiler.enqueuer.codegen.addToWorkList(element); | 1465 compiler.enqueuer.codegen.addToWorkList(element); |
| 1461 } | 1466 } |
| 1462 } | 1467 } |
| OLD | NEW |