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

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

Issue 2926863002: Handle parameters in compile_from_dill_test (Closed)
Patch Set: Cleanup. Created 3 years, 6 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 cd6527f02e6ec077f271d4c689fafd9a8211a443..429aeffc2d22c729726b2119425b3d8e856c7c13 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -603,7 +603,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
closureToClassMapper.getMemberMap(astElement);
localsHandler.closureData = newClosureData;
if (resolvedAst.kind == ResolvedAstKind.PARSED) {
- localsHandler.enterScope(resolvedAst.node,
+ localsHandler.enterScope(newClosureData.capturingScopes[resolvedAst.node],
forGenerativeConstructorBody: astElement.isGenerativeConstructorBody);
}
inlinedFrom(astElement, () {
@@ -623,7 +623,19 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
/// Builds a SSA graph for FunctionNodes, found in FunctionExpressions and
/// Procedures.
void buildFunctionNode(ir.FunctionNode functionNode) {
- openFunction();
+ Map<Local, TypeMask> parameterMap = <Local, TypeMask>{};
+
+ void handleParameter(ir.VariableDeclaration node) {
+ Local local = _localsMap.getLocal(node);
+ parameterMap[local] = _typeInferenceMap.getInferredTypeOfParameter(local);
+ }
+
+ functionNode.positionalParameters.forEach(handleParameter);
+ functionNode.namedParameters.toList()
+ ..sort(namedOrdering)
+ ..forEach(handleParameter);
+
+ openFunction(parameterMap);
ir.TreeNode parent = functionNode.parent;
if (parent is ir.Procedure && parent.kind == ir.ProcedureKind.Factory) {
_addClassTypeVariablesIfNeeded(functionNode.parent);
@@ -670,11 +682,15 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
}
}
- void openFunction() {
+ void openFunction(
+ [Map<Local, TypeMask> parameters = const <Local, TypeMask>{}]) {
HBasicBlock block = graph.addNewBlock();
open(graph.entry);
- localsHandler.startFunction(targetElement, functionNode,
+ ClosureClassMap closureData =
+ closureToClassMapper.getMemberMap(targetElement);
+ localsHandler.startFunction(targetElement, closureData,
+ closureData.capturingScopes[functionNode], parameters,
isGenerativeConstructorBody: _targetIsConstructorBody);
close(new HGoto()).addSuccessor(block);

Powered by Google App Engine
This is Rietveld 408576698