| Index: pkg/compiler/lib/src/ssa/locals_handler.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| index dd364805efdaf0dea863b547f9fd2ff03b8f4dd4..581114a9493728c82089c59c6b88c7182d3aedab 100644
|
| --- a/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| +++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
|
| @@ -61,10 +61,10 @@ class LocalsHandler {
|
| ///
|
| final InterfaceType instanceType;
|
|
|
| - final Compiler compiler;
|
| + final Compiler _compiler;
|
|
|
| LocalsHandler(this.builder, this.executableContext,
|
| - InterfaceType instanceType, this.compiler)
|
| + InterfaceType instanceType, this._compiler)
|
| : this.instanceType =
|
| instanceType == null || instanceType.containsTypeVariables
|
| ? null
|
| @@ -95,7 +95,7 @@ class LocalsHandler {
|
| instanceType = other.instanceType,
|
| builder = other.builder,
|
| closureData = other.closureData,
|
| - compiler = other.compiler,
|
| + _compiler = other._compiler,
|
| activationVariables = other.activationVariables,
|
| cachedTypeOfThis = other.cachedTypeOfThis,
|
| cachedTypesOfCapturedVariables = other.cachedTypesOfCapturedVariables;
|
| @@ -111,7 +111,7 @@ class LocalsHandler {
|
| HInstruction createBox() {
|
| // TODO(floitsch): Clean up this hack. Should we create a box-object by
|
| // just creating an empty object literal?
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| HInstruction box = new HForeignCode(
|
| js.js.parseForeignJS('{}'), backend.nonNullType, <HInstruction>[],
|
| nativeBehavior: native.NativeBehavior.PURE_ALLOCATION);
|
| @@ -131,7 +131,7 @@ class LocalsHandler {
|
| if (element != null && element.isGenerativeConstructorBody) {
|
| // The box is passed as a parameter to a generative
|
| // constructor body.
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| box = builder.addParameter(scopeData.boxElement, backend.nonNullType);
|
| } else {
|
| box = createBox();
|
| @@ -185,7 +185,7 @@ class LocalsHandler {
|
| /// Invariant: [function] must be an implementation element.
|
| void startFunction(AstElement element, ast.Node node) {
|
| assert(invariant(element, element.isImplementation));
|
| - closureData = compiler.closureToClassMapper
|
| + closureData = _compiler.closureToClassMapper
|
| .computeClosureToClassMapping(element.resolvedAst);
|
|
|
| if (element is FunctionElement) {
|
| @@ -201,8 +201,10 @@ class LocalsHandler {
|
| return;
|
| }
|
| }
|
| - HInstruction parameter = builder.addParameter(parameterElement,
|
| - TypeMaskFactory.inferredTypeForElement(parameterElement, compiler));
|
| + HInstruction parameter = builder.addParameter(
|
| + parameterElement,
|
| + TypeMaskFactory.inferredTypeForElement(
|
| + parameterElement, _compiler));
|
| builder.parameters[parameterElement] = parameter;
|
| directLocals[parameterElement] = parameter;
|
| });
|
| @@ -216,7 +218,7 @@ class LocalsHandler {
|
| closureData.forEachFreeVariable((Local from, CapturedVariable to) {
|
| redirectElement(from, to);
|
| });
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| if (closureData.isClosure) {
|
| // Inside closure redirect references to itself to [:this:].
|
| HThis thisInstruction =
|
| @@ -265,7 +267,7 @@ class LocalsHandler {
|
| new SyntheticLocal('receiver', executableContext);
|
| // Unlike `this`, receiver is nullable since direct calls to generative
|
| // constructor call the constructor with `null`.
|
| - ClassWorld classWorld = compiler.world;
|
| + ClassWorld classWorld = _compiler.world;
|
| HParameterValue value =
|
| new HParameterValue(parameter, new TypeMask.exact(cls, classWorld));
|
| builder.graph.explicitReceiverParameter = value;
|
| @@ -306,10 +308,10 @@ class LocalsHandler {
|
| if (isAccessedDirectly(local)) {
|
| if (directLocals[local] == null) {
|
| if (local is TypeVariableElement) {
|
| - compiler.reporter.internalError(compiler.currentElement,
|
| + _compiler.reporter.internalError(_compiler.currentElement,
|
| "Runtime type information not available for $local.");
|
| } else {
|
| - compiler.reporter.internalError(
|
| + _compiler.reporter.internalError(
|
| local, "Cannot find value $local in ${directLocals.keys}.");
|
| }
|
| }
|
| @@ -323,7 +325,7 @@ class LocalsHandler {
|
| ClosureFieldElement redirect = redirectionMapping[local];
|
| HInstruction receiver = readLocal(closureData.closureElement);
|
| TypeMask type = local is BoxLocal
|
| - ? (compiler.backend as JavaScriptBackend).nonNullType
|
| + ? (_compiler.backend as JavaScriptBackend).nonNullType
|
| : getTypeOfCapturedVariable(redirect);
|
| HInstruction fieldGet = new HFieldGet(redirect, receiver, type);
|
| builder.add(fieldGet);
|
| @@ -346,7 +348,7 @@ class LocalsHandler {
|
| HInstruction instruction = new HLocalGet(
|
| local,
|
| localValue,
|
| - (compiler.backend as JavaScriptBackend).dynamicType,
|
| + (_compiler.backend as JavaScriptBackend).dynamicType,
|
| sourceInformation);
|
| builder.add(instruction);
|
| return instruction;
|
| @@ -375,7 +377,7 @@ class LocalsHandler {
|
| }
|
|
|
| return activationVariables.putIfAbsent(local, () {
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| HLocalValue localValue = new HLocalValue(local, backend.nonNullType)
|
| ..sourceInformation = sourceInformation;
|
| builder.graph.entry.addAtExit(localValue);
|
| @@ -480,7 +482,7 @@ class LocalsHandler {
|
| Map<Local, HInstruction> savedDirectLocals =
|
| new Map<Local, HInstruction>.from(directLocals);
|
|
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| // Create phis for all elements in the definitions environment.
|
| savedDirectLocals.forEach((Local local, HInstruction instruction) {
|
| if (isAccessedDirectly(local)) {
|
| @@ -544,7 +546,7 @@ class LocalsHandler {
|
| // variable cannot be alive outside the block. Note: this is only
|
| // true for nodes where we do joins.
|
| Map<Local, HInstruction> joinedLocals = new Map<Local, HInstruction>();
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| otherLocals.directLocals.forEach((Local local, HInstruction instruction) {
|
| // We know 'this' cannot be modified.
|
| if (local == closureData.thisLocal) {
|
| @@ -577,7 +579,7 @@ class LocalsHandler {
|
| if (localsHandlers.length == 1) return localsHandlers[0];
|
| Map<Local, HInstruction> joinedLocals = new Map<Local, HInstruction>();
|
| HInstruction thisValue = null;
|
| - JavaScriptBackend backend = compiler.backend;
|
| + JavaScriptBackend backend = _compiler.backend;
|
| directLocals.forEach((Local local, HInstruction instruction) {
|
| if (local != closureData.thisLocal) {
|
| HPhi phi = new HPhi.noInputs(local, backend.dynamicType);
|
| @@ -623,15 +625,15 @@ class LocalsHandler {
|
| if (result == null) {
|
| ThisLocal local = closureData.thisLocal;
|
| ClassElement cls = local.enclosingClass;
|
| - ClassWorld classWorld = compiler.world;
|
| + ClassWorld classWorld = _compiler.world;
|
| if (classWorld.isUsedAsMixin(cls)) {
|
| // If the enclosing class is used as a mixin, [:this:] can be
|
| // of the class that mixins the enclosing class. These two
|
| // classes do not have a subclass relationship, so, for
|
| // simplicity, we mark the type as an interface type.
|
| - result = new TypeMask.nonNullSubtype(cls.declaration, compiler.world);
|
| + result = new TypeMask.nonNullSubtype(cls.declaration, _compiler.world);
|
| } else {
|
| - result = new TypeMask.nonNullSubclass(cls.declaration, compiler.world);
|
| + result = new TypeMask.nonNullSubclass(cls.declaration, _compiler.world);
|
| }
|
| cachedTypeOfThis = result;
|
| }
|
| @@ -644,7 +646,7 @@ class LocalsHandler {
|
| TypeMask getTypeOfCapturedVariable(Element element) {
|
| assert(element.isField);
|
| return cachedTypesOfCapturedVariables.putIfAbsent(element, () {
|
| - return TypeMaskFactory.inferredTypeForElement(element, compiler);
|
| + return TypeMaskFactory.inferredTypeForElement(element, _compiler);
|
| });
|
| }
|
|
|
|
|