Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
index 02e78b7fce8abee9707e54097758e1a4a53054b1..165cedd41c3e66137efd1ac7a55d69ef4ed6a388 100644 |
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
@@ -163,6 +163,7 @@ class FunctionInlineCache { |
class JavaScriptBackend extends Backend { |
SsaBuilderTask builder; |
+ SsaFromIrBuilderTask fromIrBuilder; |
SsaOptimizerTask optimizer; |
SsaCodeGeneratorTask generator; |
CodeEmitterTask emitter; |
@@ -419,6 +420,7 @@ class JavaScriptBackend extends Backend { |
super(compiler, JAVA_SCRIPT_CONSTANT_SYSTEM) { |
emitter = new CodeEmitterTask(compiler, namer, generateSourceMap); |
builder = new SsaBuilderTask(this); |
+ fromIrBuilder = new SsaFromIrBuilderTask(compiler); |
optimizer = new SsaOptimizerTask(this); |
generator = new SsaCodeGeneratorTask(this); |
typeVariableHandler = new TypeVariableHandler(this); |
@@ -1260,8 +1262,9 @@ class JavaScriptBackend extends Backend { |
compiler.enqueuer.codegen.registerStaticUse(getCyclicThrowHelper()); |
} |
} |
- |
- HGraph graph = builder.build(work); |
+ HGraph graph = element.hasIrNode(compiler) |
+ ? fromIrBuilder.build(work) |
+ : builder.build(work); |
optimizer.optimize(work, graph); |
jsAst.Expression code = generator.generateCode(work, graph); |
generatedCode[element] = code; |