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

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

Issue 2619813005: Use entities in various ssa helpers. (Closed)
Patch Set: Fix comments. Created 3 years, 11 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/interceptor_simplifier.dart
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index beb5b9e6c2626920eef18d9512cac589a1045d31..86d436e83da64d3c1f289f8f22d576d47aa3f8c1 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -6,7 +6,7 @@ import '../common/backend_api.dart' show BackendClasses;
import '../compiler.dart' show Compiler;
import '../constants/constant_system.dart';
import '../constants/values.dart';
-import '../elements/elements.dart';
+import '../elements/entities.dart';
import '../js_backend/backend.dart';
import '../types/types.dart';
import '../universe/selector.dart' show Selector;
@@ -39,10 +39,10 @@ class SsaSimplifyInterceptors extends HBaseVisitor
final String name = "SsaSimplifyInterceptors";
final ClosedWorld closedWorld;
final Compiler compiler;
- final Element element;
+ final ClassEntity enclosingClass;
HGraph graph;
- SsaSimplifyInterceptors(this.compiler, this.closedWorld, this.element);
+ SsaSimplifyInterceptors(this.compiler, this.closedWorld, this.enclosingClass);
JavaScriptBackend get backend => compiler.backend;
@@ -95,7 +95,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
}
bool canUseSelfForInterceptor(
- HInstruction receiver, Set<ClassElement> interceptedClasses) {
+ HInstruction receiver, Set<ClassEntity> interceptedClasses) {
if (receiver.canBePrimitive(closedWorld)) {
// Primitives always need interceptors.
return false;
@@ -114,7 +114,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
}
HInstruction tryComputeConstantInterceptor(
- HInstruction input, Set<ClassElement> interceptedClasses) {
+ HInstruction input, Set<ClassEntity> interceptedClasses) {
if (input == graph.explicitReceiverParameter) {
// If `explicitReceiverParameter` is set it means the current method is an
// interceptor method, and `this` is the interceptor. The caller just did
@@ -122,14 +122,14 @@ class SsaSimplifyInterceptors extends HBaseVisitor
return graph.thisInstruction;
}
- ClassElement constantInterceptor = tryComputeConstantInterceptorFromType(
+ ClassEntity constantInterceptor = tryComputeConstantInterceptorFromType(
input.instructionType, interceptedClasses);
if (constantInterceptor == null) return null;
// If we just happen to be in an instance method of the constant
// interceptor, `this` is a shorter alias.
- if (constantInterceptor == element.enclosingClass &&
+ if (constantInterceptor == enclosingClass &&
graph.thisInstruction != null) {
return graph.thisInstruction;
}
@@ -138,8 +138,8 @@ class SsaSimplifyInterceptors extends HBaseVisitor
return graph.addConstant(constant, closedWorld);
}
- ClassElement tryComputeConstantInterceptorFromType(
- TypeMask type, Set<ClassElement> interceptedClasses) {
+ ClassEntity tryComputeConstantInterceptorFromType(
+ TypeMask type, Set<ClassEntity> interceptedClasses) {
if (type.isNullable) {
if (type.isNull) {
return backendClasses.nullImplementation;
@@ -173,7 +173,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
// for a subclass or call methods defined on a subclass. Provided the
// code is completely insensitive to the specific instance subclasses, we
// can use the non-leaf class directly.
- ClassElement element = type.singleClass(closedWorld);
+ ClassEntity element = type.singleClass(closedWorld);
if (element != null && backendClasses.isNativeClass(element)) {
return element;
}
@@ -216,7 +216,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
int useCount(HInstruction user, HInstruction used) =>
user.inputs.where((input) => input == used).length;
- Set<ClassElement> interceptedClasses;
+ Set<ClassEntity> interceptedClasses;
HInstruction dominator = findDominator(node.usedBy);
// If there is a call that dominates all other uses, we can use just the
// selector of that instruction.
@@ -232,17 +232,21 @@ class SsaSimplifyInterceptors extends HBaseVisitor
if (interceptedClasses.contains(backendClasses.numImplementation) &&
!(interceptedClasses.contains(backendClasses.doubleImplementation) ||
interceptedClasses.contains(backendClasses.intImplementation))) {
- Set<ClassElement> required;
+ Set<ClassEntity> required;
for (HInstruction user in node.usedBy) {
if (user is! HInvoke) continue;
- Set<ClassElement> intercepted =
+ Set<ClassEntity> intercepted =
backend.getInterceptedClassesOn(user.selector.name);
if (intercepted.contains(backendClasses.intImplementation)) {
- required ??= new Set<ClassElement>();
+ // TODO(johnniwinther): Use type argument when all uses of
+ // intercepted classes expect entities instead of elements.
+ required ??= new Set/*<ClassEntity>*/();
required.add(backendClasses.intImplementation);
}
if (intercepted.contains(backendClasses.doubleImplementation)) {
- required ??= new Set<ClassElement>();
+ // TODO(johnniwinther): Use type argument when all uses of
+ // intercepted classes expect entities instead of elements.
+ required ??= new Set/*<ClassEntity>*/();
required.add(backendClasses.doubleImplementation);
}
}
@@ -252,7 +256,9 @@ class SsaSimplifyInterceptors extends HBaseVisitor
}
}
} else {
- interceptedClasses = new Set<ClassElement>();
+ // TODO(johnniwinther): Use type argument when all uses of intercepted
+ // classes expect entities instead of elements.
+ interceptedClasses = new Set/*<ClassEntity>*/();
for (HInstruction user in node.usedBy) {
if (user is HInvokeDynamic &&
user.isCallOnInterceptor(closedWorld) &&
@@ -314,7 +320,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
if (!(receiver.canBePrimitiveNumber(closedWorld) ||
receiver.canBePrimitiveBoolean(closedWorld) ||
receiver.canBePrimitiveString(closedWorld))) {
- ClassElement interceptorClass = tryComputeConstantInterceptorFromType(
+ ClassEntity interceptorClass = tryComputeConstantInterceptorFromType(
receiver.instructionType.nonNullable(), interceptedClasses);
if (interceptorClass != null) {
HInstruction constantInstruction = graph.addConstant(
« no previous file with comments | « pkg/compiler/lib/src/js_backend/backend.dart ('k') | pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698