Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(731)

Unified Diff: pkg/compiler/lib/src/ssa/builder_kernel.dart

Issue 2899983003: Create KernelSsaBuilder from KernelSsaBuilderTask (Closed)
Patch Set: Updated cf. comments. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/ssa/builder_kernel.dart
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index a3879ecf2a86df97217705c1fc996a24224eb8d1..042e32f67466eab8d174e6e8f028ca35876cb16e 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -6,9 +6,8 @@ import 'package:kernel/ast.dart' as ir;
import '../closure.dart';
import '../common.dart';
-import '../common/codegen.dart' show CodegenWorkItem, CodegenRegistry;
+import '../common/codegen.dart' show CodegenRegistry;
import '../common/names.dart';
-import '../common/tasks.dart';
import '../compiler.dart';
import '../constants/values.dart'
show
@@ -22,8 +21,6 @@ import '../elements/resolution_types.dart';
import '../io/source_information.dart';
import '../js/js.dart' as js;
import '../js_backend/backend.dart' show JavaScriptBackend;
-import '../js_backend/element_strategy.dart' show ElementCodegenWorkItem;
-import '../kernel/kernel.dart';
import '../native/native.dart' as native;
import '../resolution/tree_elements.dart';
import '../tree/nodes.dart' show Node;
@@ -32,7 +29,6 @@ import '../universe/selector.dart';
import '../universe/side_effects.dart' show SideEffects;
import '../universe/use.dart' show DynamicUse;
import '../world.dart';
-import 'builder.dart';
import 'graph_builder.dart';
import 'jump_handler.dart';
import 'kernel_ast_adapter.dart';
@@ -40,74 +36,21 @@ import 'kernel_string_builder.dart';
import 'locals_handler.dart';
import 'loop_handler.dart';
import 'nodes.dart';
-import 'ssa.dart';
import 'ssa_branch_builder.dart';
import 'switch_continue_analysis.dart';
import 'type_builder.dart';
import 'types.dart' show TypeMaskFactory;
-class SsaAstKernelBuilderTask extends SsaAstBuilderBase {
- final SourceInformationStrategy sourceInformationFactory;
-
- String get name => 'SSA kernel builder';
-
- SsaAstKernelBuilderTask(
- JavaScriptBackend backend, this.sourceInformationFactory)
- : super(backend);
-
- HGraph build(ElementCodegenWorkItem work, ClosedWorld closedWorld) {
- return measure(() {
- if (handleConstantField(work)) {
- // No code is generated for `work.element`.
- return null;
- }
- MemberElement element = work.element.implementation;
- Kernel kernel = backend.kernelTask.kernel;
- KernelSsaBuilder builder = new KernelSsaBuilder(
- element,
- work.resolvedAst,
- backend.compiler,
- closedWorld,
- work.registry,
- sourceInformationFactory,
- kernel);
- HGraph graph = builder.build();
-
- if (backend.tracer.isEnabled) {
- String name;
- if (element.isClassMember) {
- String className = element.enclosingClass.name;
- String memberName = element.name;
- name = "$className.$memberName";
- if (element.isGenerativeConstructorBody) {
- name = "$name (body)";
- }
- } else {
- name = "${element.name}";
- }
- backend.tracer.traceCompilation(name);
- backend.tracer.traceGraph('builder', graph);
- }
-
- return graph;
- });
- }
-}
-
-class KernelSsaBuilderTask extends CompilerTask implements SsaBuilderTask {
- KernelSsaBuilderTask(Measurer measurer) : super(measurer);
-
- @override
- HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
- throw new UnimplementedError("KernelSsaBuilderTask.build");
- }
-}
-
class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
ir.Node target;
bool _targetIsConstructorBody = false;
final MemberElement targetElement;
- final ResolvedAst resolvedAst;
+
+ /// The root node of [targetElement]. This is used as the key into the
+ /// [startFunction] of the locals handler.
+ // TODO(johnniwinther,efortuna): Avoid the need for AST nodes in the locals
+ // handler.
+ final Node functionNode;
final ClosedWorld closedWorld;
final CodegenRegistry registry;
@@ -150,24 +93,20 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
KernelSsaBuilder(
this.targetElement,
- this.resolvedAst,
this.compiler,
+ this.astAdapter,
this.closedWorld,
this.registry,
- SourceInformationStrategy sourceInformationFactory,
- Kernel kernel) {
+ // TODO(het): Should sourceInformationBuilder be in GraphBuilder?
+ this.sourceInformationBuilder,
+ this.functionNode) {
this.loopHandler = new KernelLoopHandler(this);
typeBuilder = new TypeBuilder(this);
graph.element = targetElement;
- // TODO(het): Should sourceInformationBuilder be in GraphBuilder?
- this.sourceInformationBuilder =
- sourceInformationFactory.createBuilderForContext(resolvedAst);
graph.sourceInformation =
sourceInformationBuilder.buildVariableDeclaration();
this.localsHandler = new LocalsHandler(
this, targetElement, null, nativeData, interceptorData);
- this.astAdapter = new KernelAstAdapter(kernel, compiler.backend,
- resolvedAst, kernel.nodeToAst, kernel.nodeToElement);
target = astAdapter.getInitialKernelNode(targetElement);
if (targetElement is ConstructorBodyElement) {
_targetIsConstructorBody = true;
@@ -421,7 +360,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
}
withCurrentIrNode(ir.Node node, f()) {
- compiler.reporter.withCurrentElement(astAdapter.getElement(node), f);
+ astAdapter.reporter.withCurrentElement(astAdapter.getElement(node), f);
}
/// Sets context for generating code that is the result of inlining
@@ -713,11 +652,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HBasicBlock block = graph.addNewBlock();
open(graph.entry);
- Node function;
- if (resolvedAst.kind == ResolvedAstKind.PARSED) {
- function = resolvedAst.node;
- }
- localsHandler.startFunction(targetElement, function);
+ localsHandler.startFunction(targetElement, functionNode);
close(new HGoto()).addSuccessor(block);
open(block);
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_strategy.dart ('k') | pkg/compiler/lib/src/ssa/rasta_ssa_builder_task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698