Chromium Code Reviews| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| index b7ac48ed878caffb5d9ab201c12dc28fb7209306..69581d69697d4fdf4fc16032c9007ae06e8b7f44 100644 |
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| @@ -33,27 +33,33 @@ class IrBuilderTask extends CompilerTask { |
| ir.FunctionDefinition getIr(Element element) => nodes[element.implementation]; |
| + ir.FunctionDefinition buildNode(AstElement element) { |
| + if (!canBuild(element)) return null; |
| + TreeElements elementsMapping = element.resolvedAst.elements; |
| + element = element.implementation; |
| + return compiler.withCurrentElement(element, () { |
| + SourceFile sourceFile = elementSourceFile(element); |
| + IrBuilderVisitor builder = |
| + new IrBuilderVisitor(elementsMapping, compiler, sourceFile); |
| + ir.FunctionDefinition function; |
| + function = builder.buildFunction(element); |
| + |
| + if (function != null) { |
| + compiler.tracer.traceCompilation(element.name, null); |
| + compiler.tracer.traceGraph("IR Builder", function); |
| + } |
| + return function; |
| + }); |
| + } |
| + |
| void buildNodes({bool useNewBackend: false}) { |
| if (!irEnabled(useNewBackend: useNewBackend)) return; |
|
floitsch
2014/11/12 11:03:19
Why does the builder need to know about backends?
sigurdm
2014/11/13 08:29:41
I agree - I removed it - it was only used from tes
|
| measure(() { |
| Set<Element> resolved = compiler.enqueuer.resolution.resolvedElements; |
| resolved.forEach((AstElement element) { |
| - if (canBuild(element)) { |
| - TreeElements elementsMapping = element.resolvedAst.elements; |
| - element = element.implementation; |
| - compiler.withCurrentElement(element, () { |
| - SourceFile sourceFile = elementSourceFile(element); |
| - IrBuilderVisitor builder = |
| - new IrBuilderVisitor(elementsMapping, compiler, sourceFile); |
| - ir.FunctionDefinition function; |
| - function = builder.buildFunction(element); |
| - |
| - if (function != null) { |
| - nodes[element] = function; |
| - compiler.tracer.traceCompilation(element.name, null); |
| - compiler.tracer.traceGraph("IR Builder", function); |
| - } |
| - }); |
| + ir.FunctionDefinition functionDefinition = buildNode(element); |
| + if (functionDefinition != null) { |
| + nodes[element] = functionDefinition; |
| } |
| }); |
| }); |