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 2e107bce7a3590aebbe5283701a917279120c803..f1294a442e966673024e92a4b2e9a6773b53f638 100644 |
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart |
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart |
@@ -2,6 +2,7 @@ |
// 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/ssa_branch_builder.dart'; |
import 'package:kernel/ast.dart' as ir; |
import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; |
@@ -67,7 +68,6 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder { |
JavaScriptBackend get backend => compiler.backend; |
- LocalsHandler localsHandler; |
SourceInformationBuilder sourceInformationBuilder; |
KernelAstAdapter astAdapter; |
@@ -113,6 +113,23 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder { |
return graph; |
} |
+ @override |
+ HBoolify popBoolified() { |
+ HInstruction value = pop(); |
+ // TODO(het): add boolean conversion type check |
Siggi Cherem (dart-lang)
2016/09/01 23:51:21
once you do, would this method move to GraphBuilde
Harry Terkelsen
2016/09/02 17:52:27
Yes, if we also pass in the boolType
|
+ HInstruction result = new HBoolify(value, backend.boolType); |
+ add(result); |
+ return result; |
+ } |
+ |
+ // TODO(het): This implementation is shared with [SsaBuilder]. Should we just |
+ // allow [GraphBuilder] to access `compiler`? |
Siggi Cherem (dart-lang)
2016/09/01 23:51:22
seems ok, is it only for boolType? We could also j
Harry Terkelsen
2016/09/02 17:52:27
It's for boolType and for the 'compiler' argument
|
+ @override |
+ pushCheckNull(HInstruction expression) { |
+ push(new HIdentity( |
+ expression, graph.addConstantNull(compiler), null, backend.boolType)); |
+ } |
+ |
/// Builds a SSA graph for [method]. |
void buildMethod(IrFunction method, FunctionElement functionElement) { |
openFunction(method, functionElement); |
@@ -172,6 +189,15 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder { |
} |
@override |
+ void visitIfStatement(ir.IfStatement ifStatement) { |
+ SsaBranchBuilder branchBuilder = new SsaBranchBuilder(this, compiler); |
+ branchBuilder.handleIf( |
+ () => ifStatement.condition.accept(this), |
+ () => ifStatement.then.accept(this), |
+ () => ifStatement.otherwise?.accept(this)); |
+ } |
+ |
+ @override |
void visitIntLiteral(ir.IntLiteral intLiteral) { |
stack.add(graph.addConstantInt(intLiteral.value, compiler)); |
} |