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

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

Issue 2812633002: Decouple LocalsHandler from Compiler and JavaScriptBackend (Closed)
Patch Set: dartfmt Created 3 years, 8 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/ssa/builder.dart
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 4d770f69583c56a2ab5e2c2cb841a24c2c2c470b..1619cd9a6bcca33a85cbee8f52fe8daa822c2626 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -145,9 +145,6 @@ class SsaBuilder extends ast.Visitor
// code-analysis too.
final CodegenRegistry registry;
- /// All results from the global type-inference analysis.
- final GlobalTypeInferenceResults inferenceResults;
-
/// Results from the global type-inference analysis corresponding to the
/// current element being visited.
///
@@ -205,8 +202,7 @@ class SsaBuilder extends ast.Visitor
: this.infoReporter = backend.compiler.dumpInfoTask,
this.backend = backend,
this.constantSystem = backend.constantSystem,
- this.rtiSubstitutions = backend.rtiSubstitutions,
- this.inferenceResults = backend.compiler.globalInference.results {
+ this.rtiSubstitutions = backend.rtiSubstitutions {
assert(target.isImplementation);
compiler = backend.compiler;
elementInferenceResults = _resultOf(target);
@@ -217,7 +213,8 @@ class SsaBuilder extends ast.Visitor
sourceInformationFactory.createBuilderForContext(resolvedAst);
graph.sourceInformation =
sourceInformationBuilder.buildVariableDeclaration();
- localsHandler = new LocalsHandler(this, target, null, compiler);
+ localsHandler = new LocalsHandler(
+ this, target, null, backend.nativeData, backend.interceptorData);
loopHandler = new SsaLoopHandler(this);
typeBuilder = new TypeBuilder(this);
}
@@ -260,7 +257,7 @@ class SsaBuilder extends ast.Visitor
/// context were we don't expect to see a constructor body element, we
/// directly fetch the data from the global inference results.
GlobalTypeInferenceElementResult _resultOf(MemberElement element) =>
- inferenceResults.resultOfMember(
+ globalInferenceResults.resultOfMember(
element is ConstructorBodyElementX ? element.constructor : element);
/// Build the graph for [target].
@@ -457,7 +454,7 @@ class SsaBuilder extends ast.Visitor
// A generative constructor body is not seen by global analysis,
// so we should not query for its type.
if (!function.isGenerativeConstructorBody) {
- if (inferenceResults.resultOfMember(function).throwsAlways) {
+ if (globalInferenceResults.resultOfMember(function).throwsAlways) {
isReachable = false;
return false;
}
@@ -591,7 +588,7 @@ class SsaBuilder extends ast.Visitor
bool isFunctionCalledOnce(MethodElement element) {
// ConstructorBodyElements are not in the type inference graph.
if (element is ConstructorBodyElement) return false;
- return inferenceResults.resultOfMember(element).isCalledOnce;
+ return globalInferenceResults.resultOfMember(element).isCalledOnce;
}
bool isCalledOnce(MethodElement element) {
@@ -798,9 +795,10 @@ class SsaBuilder extends ast.Visitor
{ResolutionInterfaceType instanceType}) {
ResolvedAst resolvedAst = function.resolvedAst;
assert(resolvedAst != null);
- localsHandler = new LocalsHandler(this, function, instanceType, compiler);
+ localsHandler = new LocalsHandler(this, function, instanceType,
+ backend.nativeData, backend.interceptorData);
localsHandler.closureData =
- compiler.closureToClassMapper.getClosureToClassMapping(resolvedAst);
+ closureToClassMapper.getClosureToClassMapping(resolvedAst);
returnLocal = new SyntheticLocal("result", function);
localsHandler.updateLocal(returnLocal, graph.addConstantNull(closedWorld));
@@ -964,10 +962,10 @@ class SsaBuilder extends ast.Visitor
ResolvedAst oldResolvedAst = resolvedAst;
resolvedAst = callee.resolvedAst;
final oldElementInferenceResults = elementInferenceResults;
- elementInferenceResults = inferenceResults.resultOfMember(callee);
+ elementInferenceResults = globalInferenceResults.resultOfMember(callee);
ClosureClassMap oldClosureData = localsHandler.closureData;
ClosureClassMap newClosureData =
- compiler.closureToClassMapper.getClosureToClassMapping(resolvedAst);
+ closureToClassMapper.getClosureToClassMapping(resolvedAst);
localsHandler.closureData = newClosureData;
if (resolvedAst.kind == ResolvedAstKind.PARSED) {
localsHandler.enterScope(resolvedAst.node, callee);
@@ -1139,10 +1137,11 @@ class SsaBuilder extends ast.Visitor
ResolvedAst savedResolvedAst = resolvedAst;
resolvedAst = fieldResolvedAst;
final oldElementInferenceResults = elementInferenceResults;
- elementInferenceResults = inferenceResults.resultOfMember(member);
+ elementInferenceResults =
+ globalInferenceResults.resultOfMember(member);
// In case the field initializer uses closures, run the
// closure to class mapper.
- compiler.closureToClassMapper.getClosureToClassMapping(resolvedAst);
+ closureToClassMapper.getClosureToClassMapping(resolvedAst);
inlinedFrom(fieldResolvedAst, () => right.accept(this));
resolvedAst = savedResolvedAst;
elementInferenceResults = oldElementInferenceResults;
@@ -1304,8 +1303,8 @@ class SsaBuilder extends ast.Visitor
}
bodyCallInputs.add(newObject);
ast.Node node = constructorResolvedAst.node;
- ClosureClassMap parameterClosureData = compiler.closureToClassMapper
- .getClosureToClassMapping(constructorResolvedAst);
+ ClosureClassMap parameterClosureData =
+ closureToClassMapper.getClosureToClassMapping(constructorResolvedAst);
FunctionSignature functionSignature = body.functionSignature;
// Provide the parameters to the generative constructor body.
@@ -2995,7 +2994,8 @@ class SsaBuilder extends ast.Visitor
graph.addConstantString(new ast.DartString.literal(loadId), closedWorld)
];
push(new HInvokeStatic(loadFunction, inputs, commonMasks.nonNullType,
- targetCanThrow: false)..sourceInformation = sourceInformation);
+ targetCanThrow: false)
+ ..sourceInformation = sourceInformation);
}
generateSuperNoSuchMethodSend(
@@ -3431,7 +3431,7 @@ class SsaBuilder extends ast.Visitor
? native.NativeThrowBehavior.MAY
: native.NativeThrowBehavior.NEVER);
push(foreign);
- if (inferenceResults.isFixedArrayCheckedForGrowable(send)) {
+ if (globalInferenceResults.isFixedArrayCheckedForGrowable(send)) {
js.Template code = js.js.parseForeignJS(r'#.fixed$length = Array');
// We set the instruction as [canThrow] to avoid it being dead code.
// We need a finer grained side effect.
@@ -4096,7 +4096,8 @@ class SsaBuilder extends ast.Visitor
nativeBehavior.codeTemplate = codeTemplate;
return new HForeignCode(codeTemplate, commonMasks.dynamicType, inputs,
- nativeBehavior: nativeBehavior)..sourceInformation = sourceInformation;
+ nativeBehavior: nativeBehavior)
+ ..sourceInformation = sourceInformation;
}
void pushInvokeStatic(
« no previous file with comments | « no previous file | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698