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

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

Issue 2280133002: implement kernel -> ssa for literals (Closed)
Patch Set: put ast accesses in separate class Created 4 years, 4 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 dc58408e7dae17b779b2c74a876d2f29f6ea61f9..b25325d28710ceda443390e29df0defa83cb51c0 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -2,9 +2,10 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'package:compiler/src/ssa/kernel_ast_adapter.dart';
Siggi Cherem (dart-lang) 2016/08/26 20:27:11 nit: use relative import? (just to be homogeneous
import 'package:kernel/ast.dart' as ir;
-import '../common/codegen.dart' show CodegenWorkItem;
+import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem;
import '../common/tasks.dart' show CompilerTask;
import '../compiler.dart';
import '../diagnostics/spannable.dart';
@@ -14,6 +15,7 @@ import '../js_backend/backend.dart' show JavaScriptBackend;
import '../kernel/kernel.dart';
import '../kernel/kernel_visitor.dart';
import '../resolution/tree_elements.dart';
+import '../tree/dartstring.dart';
import 'graph_builder.dart';
import 'locals_handler.dart';
import 'nodes.dart';
@@ -45,8 +47,9 @@ class SsaKernelBuilderTask extends CompilerTask {
element,
work.resolvedAst,
backend.compiler,
+ work.registry,
sourceInformationFactory,
- visitor.nodeToElement);
+ visitor);
return builder.build();
});
}
@@ -57,20 +60,22 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
final FunctionElement functionElement;
final ResolvedAst resolvedAst;
final Compiler compiler;
- final Map<ir.Node, Element> nodeToElement;
+ final CodegenRegistry registry;
JavaScriptBackend get backend => compiler.backend;
LocalsHandler localsHandler;
SourceInformationBuilder sourceInformationBuilder;
+ KernelAstAdapter astAdapter;
KernelSsaBuilder(
this.function,
this.functionElement,
this.resolvedAst,
this.compiler,
+ this.registry,
SourceInformationStrategy sourceInformationFactory,
- this.nodeToElement) {
+ KernelVisitor visitor) {
graph.element = functionElement;
// TODO(het): Should sourceInformationBuilder be in GraphBuilder?
this.sourceInformationBuilder =
@@ -79,6 +84,8 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
sourceInformationBuilder.buildVariableDeclaration();
this.localsHandler =
new LocalsHandler(this, functionElement, null, compiler);
+ this.astAdapter =
+ new KernelAstAdapter(compiler.backend, resolvedAst, visitor.nodeToAst);
}
HGraph build() {
@@ -159,4 +166,32 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
void visitIntLiteral(ir.IntLiteral intLiteral) {
stack.add(graph.addConstantInt(intLiteral.value, compiler));
}
+
+ @override
+ visitDoubleLiteral(ir.DoubleLiteral doubleLiteral) {
+ stack.add(graph.addConstantDouble(doubleLiteral.value, compiler));
+ }
+
+ @override
+ visitBoolLiteral(ir.BoolLiteral boolLiteral) {
+ stack.add(graph.addConstantBool(boolLiteral.value, compiler));
+ }
+
+ @override
+ visitStringLiteral(ir.StringLiteral stringLiteral) {
+ stack.add(graph.addConstantString(
+ new DartString.literal(stringLiteral.value), compiler));
+ }
+
+ @override
+ visitSymbolLiteral(ir.SymbolLiteral symbolLiteral) {
+ stack.add(
+ graph.addConstant(astAdapter.getConstantFor(symbolLiteral), compiler));
+ registry?.registerConstSymbol(symbolLiteral.value);
+ }
+
+ @override
+ visitNullLiteral(ir.NullLiteral nullLiteral) {
+ stack.add(graph.addConstantNull(compiler));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698