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

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

Issue 2563443007: Reduce use of Compiler.closedWorld (Closed)
Patch Set: Created 4 years 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 | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/ssa/codegen.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_kernel.dart
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index f53eddf9aac93f36d60f222eaa7c1a40e8dddc15..f3e651b44c269fbbf63bd0f6413df449807f18b9 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -32,6 +32,7 @@ import '../universe/call_structure.dart' show CallStructure;
import '../universe/selector.dart';
import '../universe/use.dart' show StaticUse, TypeUse;
import '../universe/side_effects.dart' show SideEffects;
+import '../world.dart' show ClosedWorld;
import 'graph_builder.dart';
import 'kernel_ast_adapter.dart';
import 'kernel_string_builder.dart';
@@ -207,7 +208,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
value, compiler.coreTypes.boolType,
kind: HTypeConversion.BOOLEAN_CONVERSION_CHECK);
}
- HInstruction result = new HBoolify(value, backend.boolType);
+ HInstruction result = new HBoolify(value, commonMasks.boolType);
add(result);
return result;
}
@@ -244,8 +245,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
astAdapter.getClass(constructor.enclosingClass),
constructorArguments,
new TypeMask.nonNullExact(
- astAdapter.getClass(constructor.enclosingClass),
- compiler.closedWorld),
+ astAdapter.getClass(constructor.enclosingClass), closedWorld),
instantiatedTypes: <DartType>[
astAdapter.getClass(constructor.enclosingClass).thisType
],
@@ -426,8 +426,8 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
/// Pushes a boolean checking [expression] against null.
pushCheckNull(HInstruction expression) {
- push(new HIdentity(
- expression, graph.addConstantNull(compiler), null, backend.boolType));
+ push(new HIdentity(expression, graph.addConstantNull(compiler), null,
+ commonMasks.boolType));
}
@override
@@ -447,7 +447,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInstruction errorMessage =
graph.addConstantString(new DartString.literal(message), compiler);
HInstruction trap = new HForeignCode(js.js.parseForeignJS("#.#"),
- backend.dynamicType, <HInstruction>[nullValue, errorMessage]);
+ commonMasks.dynamicType, <HInstruction>[nullValue, errorMessage]);
trap.sideEffects
..setAllSideEffects()
..setDependsOnSomething();
@@ -590,7 +590,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInstruction buildGetLength() {
HFieldGet result = new HFieldGet(
- astAdapter.jsIndexableLength, array, backend.positiveIntType,
+ astAdapter.jsIndexableLength, array, commonMasks.positiveIntType,
isAssignable: !isFixed);
add(result);
return result;
@@ -604,7 +604,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
// array.length == _end || throwConcurrentModificationError(array)
//
HInstruction length = buildGetLength();
- push(new HIdentity(length, originalLength, null, backend.boolType));
+ push(new HIdentity(length, originalLength, null, commonMasks.boolType));
_pushStaticInvocation(
astAdapter.checkConcurrentModificationError,
[pop(), array],
@@ -624,7 +624,8 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInstruction buildCondition() {
HInstruction index = localsHandler.readLocal(indexVariable);
HInstruction length = buildGetLength();
- HInstruction compare = new HLess(index, length, null, backend.boolType);
+ HInstruction compare =
+ new HLess(index, length, null, commonMasks.boolType);
add(compare);
return compare;
}
@@ -663,7 +664,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInstruction index = localsHandler.readLocal(indexVariable);
HInstruction one = graph.addConstantInt(1, compiler);
HInstruction addInstruction =
- new HAdd(index, one, null, backend.positiveIntType);
+ new HAdd(index, one, null, commonMasks.positiveIntType);
add(addInstruction);
localsHandler.updateLocal(indexVariable, addInstruction);
}
@@ -718,7 +719,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
ir.Procedure typeInfoSetterFn = astAdapter.setRuntimeTypeInfo;
// TODO(efortuna): Insert source information in this static invocation.
_pushStaticInvocation(typeInfoSetterFn, <HInstruction>[newObject, typeInfo],
- backend.dynamicType);
+ commonMasks.dynamicType);
// The new object will now be referenced through the
// `setRuntimeTypeInfo` call. We therefore set the type of that
@@ -895,14 +896,15 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
element.accept(this);
elements.add(pop());
}
- listInstruction = new HLiteralList(elements, backend.extendableArrayType);
+ listInstruction =
+ new HLiteralList(elements, commonMasks.extendableArrayType);
add(listInstruction);
listInstruction =
setListRuntimeTypeInfoIfNeeded(listInstruction, listLiteral);
}
TypeMask type = astAdapter.typeOfListLiteral(targetElement, listLiteral);
- if (!type.containsAll(compiler.closedWorld)) {
+ if (!type.containsAll(closedWorld)) {
listInstruction.instructionType = type;
}
stack.add(listInstruction);
@@ -932,7 +934,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
} else {
constructor = astAdapter.mapLiteralConstructor;
HLiteralList argList =
- new HLiteralList(constructorArgs, backend.extendableArrayType);
+ new HLiteralList(constructorArgs, commonMasks.extendableArrayType);
add(argList);
inputs.add(argList);
}
@@ -973,12 +975,11 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
// type inference might discover a more specific type, or find nothing (in
// dart2js unit tests).
TypeMask mapType = new TypeMask.nonNullSubtype(
- astAdapter.getElement(astAdapter.mapLiteralClass),
- compiler.closedWorld);
+ astAdapter.getElement(astAdapter.mapLiteralClass), closedWorld);
TypeMask returnTypeMask = TypeMaskFactory.inferredReturnTypeForElement(
astAdapter.getElement(constructor), compiler);
TypeMask instructionType =
- mapType.intersection(returnTypeMask, compiler.closedWorld);
+ mapType.intersection(returnTypeMask, closedWorld);
addImplicitInstantiation(type);
_pushStaticInvocation(constructor, inputs, instructionType);
@@ -1009,7 +1010,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
dartType, sourceElement,
sourceInformation: null);
_pushStaticInvocation(astAdapter.runtimeTypeToString,
- <HInstruction>[value], backend.stringType);
+ <HInstruction>[value], commonMasks.stringType);
_pushStaticInvocation(astAdapter.createRuntimeType, <HInstruction>[pop()],
astAdapter.createRuntimeTypeReturnType);
return;
@@ -1374,7 +1375,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
// to fetch the static state.
String name = backend.namer.staticStateHolder;
push(new HForeignCode(
- js.js.parseForeignJS(name), backend.dynamicType, <HInstruction>[],
+ js.js.parseForeignJS(name), commonMasks.dynamicType, <HInstruction>[],
nativeBehavior: native.NativeBehavior.DEPENDS_OTHER));
} else {
// Call a helper method from the isolate library. The isolate library uses
@@ -1385,7 +1386,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
compiler.reporter.internalError(astAdapter.getNode(invocation),
'Isolate library and compiler mismatch.');
}
- _pushStaticInvocation(target, <HInstruction>[], backend.dynamicType);
+ _pushStaticInvocation(target, <HInstruction>[], commonMasks.dynamicType);
}
}
@@ -1401,7 +1402,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
// If the isolate library is not used, we ignore the isolate argument and
// just invoke the closure.
push(new HInvokeClosure(new Selector.callClosure(0),
- <HInstruction>[inputs[1]], backend.dynamicType));
+ <HInstruction>[inputs[1]], commonMasks.dynamicType));
} else {
// Call a helper method from the isolate library.
ir.Procedure callInIsolate = astAdapter.callInIsolate;
@@ -1409,7 +1410,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
compiler.reporter.internalError(astAdapter.getNode(invocation),
'Isolate library and compiler mismatch.');
}
- _pushStaticInvocation(callInIsolate, inputs, backend.dynamicType);
+ _pushStaticInvocation(callInIsolate, inputs, commonMasks.dynamicType);
}
}
@@ -1443,7 +1444,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
push(new HForeignCode(
js.js.expressionTemplateYielding(backend.emitter
.staticFunctionAccess(astAdapter.getMember(staticTarget))),
- backend.dynamicType,
+ commonMasks.dynamicType,
<HInstruction>[],
nativeBehavior: native.NativeBehavior.PURE));
return;
@@ -1470,8 +1471,8 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
String isolateName = backend.namer.staticStateHolder;
SideEffects sideEffects = new SideEffects.empty();
sideEffects.setAllSideEffects();
- push(new HForeignCode(
- js.js.parseForeignJS("$isolateName = #"), backend.dynamicType, inputs,
+ push(new HForeignCode(js.js.parseForeignJS("$isolateName = #"),
+ commonMasks.dynamicType, inputs,
nativeBehavior: native.NativeBehavior.CHANGES_OTHER,
effects: sideEffects));
}
@@ -1483,7 +1484,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
}
push(new HForeignCode(js.js.parseForeignJS(backend.namer.staticStateHolder),
- backend.dynamicType, <HInstruction>[],
+ commonMasks.dynamicType, <HInstruction>[],
nativeBehavior: native.NativeBehavior.DEPENDS_OTHER));
}
@@ -1670,7 +1671,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
return;
}
List<HInstruction> inputs = _visitPositionalArguments(invocation.arguments);
- push(new HStringConcat(inputs[0], inputs[1], backend.stringType));
+ push(new HStringConcat(inputs[0], inputs[1], commonMasks.stringType));
}
void _pushStaticInvocation(
@@ -1736,8 +1737,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
capturedVariables.add(localsHandler.readLocal(capturedLocal));
});
- TypeMask type =
- new TypeMask.nonNullExact(closureClassElement, compiler.closedWorld);
+ TypeMask type = new TypeMask.nonNullExact(closureClassElement, closedWorld);
// TODO(efortuna): Add source information here.
push(new HCreate(closureClassElement, capturedVariables, type));
@@ -1798,7 +1798,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInterceptor _interceptorFor(HInstruction intercepted) {
HInterceptor interceptor =
- new HInterceptor(intercepted, backend.nonNullType);
+ new HInterceptor(intercepted, commonMasks.nonNullType);
add(interceptor);
return interceptor;
}
@@ -1835,7 +1835,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
null,
isSetter: selector.isSetter || selector.isIndexSet);
instruction.sideEffects =
- compiler.closedWorld.getSideEffectsOfSelector(selector, null);
+ closedWorld.getSideEffectsOfSelector(selector, null);
push(instruction);
}
@@ -1846,7 +1846,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
List<HInstruction> arguments =
_visitArgumentsForStaticTarget(target.function, invocation.arguments);
TypeMask typeMask = new TypeMask.nonNullExact(
- astAdapter.getElement(target.enclosingClass), compiler.closedWorld);
+ astAdapter.getElement(target.enclosingClass), closedWorld);
_pushStaticInvocation(target, arguments, typeMask);
}
@@ -1868,17 +1868,17 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
if (type is MalformedType) {
ErroneousElement element = type.element;
generateTypeError(isExpression, element.message);
- push(new HIs.compound(type, expression, pop(), backend.boolType));
+ push(new HIs.compound(type, expression, pop(), commonMasks.boolType));
return;
}
if (type.isFunctionType) {
List arguments = <HInstruction>[buildFunctionType(type), expression];
- _pushDynamicInvocation(isExpression, backend.boolType, arguments,
+ _pushDynamicInvocation(isExpression, commonMasks.boolType, arguments,
selector: new Selector.call(
new PrivateName('_isTest', astAdapter.jsHelperLibrary),
CallStructure.ONE_ARG));
- push(new HIs.compound(type, expression, pop(), backend.boolType));
+ push(new HIs.compound(type, expression, pop(), commonMasks.boolType));
return;
}
@@ -1886,22 +1886,22 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
HInstruction runtimeType =
typeBuilder.addTypeVariableReference(type, sourceElement);
_pushStaticInvocation(astAdapter.checkSubtypeOfRuntimeType,
- <HInstruction>[expression, runtimeType], backend.boolType);
- push(new HIs.variable(type, expression, pop(), backend.boolType));
+ <HInstruction>[expression, runtimeType], commonMasks.boolType);
+ push(new HIs.variable(type, expression, pop(), commonMasks.boolType));
return;
}
// TODO(sra): Type with type parameters.
if (backend.hasDirectCheckFor(type)) {
- push(new HIs.direct(type, expression, backend.boolType));
+ push(new HIs.direct(type, expression, commonMasks.boolType));
return;
}
// The interceptor is not always needed. It is removed by optimization
// when the receiver type or tested type permit.
HInterceptor interceptor = _interceptorFor(expression);
- push(new HIs.raw(type, expression, interceptor, backend.boolType));
+ push(new HIs.raw(type, expression, interceptor, commonMasks.boolType));
}
@override
@@ -1931,7 +1931,7 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
@override
void visitNot(ir.Not not) {
not.operand.accept(this);
- push(new HNot(popBoolified(), backend.boolType));
+ push(new HNot(popBoolified(), commonMasks.boolType));
}
@override
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/ssa/codegen.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698