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 4cbc51c47d991770fc42e88b84859a33fa36754e..a5dc1c4afe3c24948bdb2ef736bad5d1216dafd8 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
@@ -81,6 +81,41 @@ class SubtypeCheckedModeHelper extends CheckedModeHelper { |
class FunctionTypeCheckedModeHelper extends CheckedModeHelper { |
const FunctionTypeCheckedModeHelper(String name) : super(name); |
+ jsAst.Expression generateCall(SsaCodeGenerator codegen, |
+ HTypeConversion node) { |
+ codegen.use(node.inputs[0]); |
+ return codegen.pop(); |
+// HInstruction functionType = node.typeRepresentation; |
+// |
+// |
+// |
+// |
+// Element helperElement = getElement(codegen.compiler); |
+// codegen.world.registerStaticUse(helperElement); |
+// List<jsAst.Expression> arguments = <jsAst.Expression>[]; |
+// codegen.use(node.checkedInput); |
+// arguments.add(codegen.pop()); |
+// generateAdditionalArguments(codegen, node, arguments); |
+// String helperName = codegen.backend.namer.isolateAccess(helperElement); |
+// return new jsAst.Call(new jsAst.VariableUse(helperName), arguments); |
+// |
+// |
+// List arguments = [, expression]; |
+// pushInvokeDynamic( |
+// node, new Selector.call('_isTest', compiler.jsHelperLibrary, 1), |
+// arguments); |
+// |
+// return new HIs.compound(type, expression, pop()); |
+// |
+// |
+// generateRuntimeError(null, '<<as-test not implemented $type>>'); |
+ |
+ |
+ |
+ |
+ } |
+ |
+ // DEAD CODE, delete this. |
void generateAdditionalArguments(SsaCodeGenerator codegen, |
HTypeConversion node, |
List<jsAst.Expression> arguments) { |
@@ -1018,7 +1053,25 @@ class JavaScriptBackend extends Backend { |
enqueueClass(world, compiler.listClass, elements); |
} |
if (type is FunctionType) { |
- enqueueInResolution(getCheckFunctionSubtype(), elements); |
+ // enqueueInResolution(getCheckFunctionSubtype(), elements); |
+ enqueueInResolution(getThrowRuntimeError(), elements); |
+ enqueueInResolution(compiler.findHelper('buildFunctionType'), elements); |
+ enqueueInResolution( |
+ compiler.findHelper('buildNamedFunctionType'), elements); |
+ enqueueInResolution(compiler.findHelper('buildInterfaceType'), elements); |
+ enqueueInResolution( |
+ compiler.findHelper('getDynamicRuntimeType'), elements); |
+ enqueueInResolution( |
+ compiler.findHelper('getVoidRuntimeType'), elements); |
+ enqueueInResolution(compiler.findHelper('buildDummyType'), elements); |
+ enqueueInResolution( |
+ compiler.findHelper('convertRtiToRuntimeType'),elements); |
+ compiler.enqueuer.resolution.registerInvocation( |
+ new Selector.call('_isTest', compiler.jsHelperLibrary, 1)); |
+ compiler.enqueuer.resolution.registerInvocation( |
+ new Selector.call('_asCheck', compiler.jsHelperLibrary, 1)); |
+ compiler.enqueuer.resolution.registerInvocation( |
+ new Selector.call('_assertCheck', compiler.jsHelperLibrary, 1)); |
} |
if (type.element.isNative()) { |
// We will neeed to add the "$is" and "$as" properties on the |
@@ -1533,10 +1586,6 @@ class JavaScriptBackend extends Backend { |
return compiler.findHelper('assertSubtypeOfRuntimeType'); |
} |
- Element getCheckFunctionSubtype() { |
- return compiler.findHelper('checkFunctionSubtype'); |
- } |
- |
Element getThrowNoSuchMethod() { |
return compiler.findHelper('throwNoSuchMethod'); |
} |