Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
index 384ca4e161031bab157385ace6a22772f855362e..9644ba2e92e2dc5d54413abbe35cd57160b9e11d 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
@@ -89,36 +89,6 @@ class SubtypeCheckedModeHelper extends CheckedModeHelper { |
} |
} |
-class FunctionTypeCheckedModeHelper extends CheckedModeHelper { |
- const FunctionTypeCheckedModeHelper(String name) : super(name); |
- |
- void generateAdditionalArguments(SsaCodeGenerator codegen, |
- HTypeConversion node, |
- List<jsAst.Expression> arguments) { |
- DartType type = node.typeExpression; |
- String signatureName = codegen.backend.namer.getFunctionTypeName(type); |
- arguments.add(js.string(signatureName)); |
- |
- if (type.containsTypeVariables) { |
- ClassElement contextClass = Types.getClassContext(type); |
- // TODO(ahe): Creating a string here is unfortunate. It is slow (due to |
- // string concatenation in the implementation), and may prevent |
- // segmentation of '$'. |
- String contextName = codegen.backend.namer.getNameForRti(contextClass); |
- arguments.add(js.string(contextName)); |
- |
- if (node.contextIsTypeArguments) { |
- arguments.add(new jsAst.LiteralNull()); |
- codegen.use(node.context); |
- arguments.add(codegen.pop()); |
- } else { |
- codegen.use(node.context); |
- arguments.add(codegen.pop()); |
- } |
- } |
- } |
-} |
- |
/* |
* Invariants: |
* canInline(function) implies canInline(function, insideLoop:true) |
@@ -397,8 +367,6 @@ class JavaScriptBackend extends Backend { |
const SubtypeCheckedModeHelper('assertSubtype'), |
const TypeVariableCheckedModeHelper('subtypeOfRuntimeTypeCast'), |
const TypeVariableCheckedModeHelper('assertSubtypeOfRuntimeType'), |
- const FunctionTypeCheckedModeHelper('functionSubtypeCast'), |
- const FunctionTypeCheckedModeHelper('assertFunctionSubtype'), |
const PropertyCheckedModeHelper('propertyTypeCast'), |
const PropertyCheckedModeHelper('propertyTypeCheck') ]; |
@@ -1066,7 +1034,8 @@ class JavaScriptBackend extends Backend { |
enqueueClass(world, compiler.listClass, elements); |
} |
if (type is FunctionType) { |
- enqueueInResolution(getCheckFunctionSubtype(), elements); |
+ enqueueInResolution( |
+ compiler.findHelper('functionTypeTestMetaHelper'), elements); |
} |
if (type.element.isNative()) { |
// We will neeed to add the "$is" and "$as" properties on the |
@@ -1484,9 +1453,7 @@ class JavaScriptBackend extends Backend { |
? 'subtypeOfRuntimeTypeCast' |
: 'assertSubtypeOfRuntimeType'; |
} else if (type.kind == TypeKind.FUNCTION) { |
- return typeCast |
- ? 'functionSubtypeCast' |
- : 'assertFunctionSubtype'; |
+ return null; |
} else { |
if (nativeCheck) { |
// TODO(karlklose): can we get rid of this branch when we use |
@@ -1621,10 +1588,6 @@ class JavaScriptBackend extends Backend { |
return compiler.findHelper('assertSubtypeOfRuntimeType'); |
} |
- Element getCheckFunctionSubtype() { |
- return compiler.findHelper('checkFunctionSubtype'); |
- } |
- |
Element getThrowNoSuchMethod() { |
return compiler.findHelper('throwNoSuchMethod'); |
} |