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

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

Issue 2659883002: Use entities in BackendClasses (Closed)
Patch Set: Updated cf. 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
« no previous file with comments | « pkg/compiler/lib/src/native/enqueue.dart ('k') | pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 86d436e83da64d3c1f289f8f22d576d47aa3f8c1..a3165ef07a7c8c7e57cbd2ea827843eb3dc373c9 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -101,7 +101,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
return false;
}
if (receiver.canBeNull() &&
- interceptedClasses.contains(backendClasses.nullImplementation)) {
+ interceptedClasses.contains(backendClasses.nullClass)) {
// Need the JSNull interceptor.
return false;
}
@@ -142,25 +142,25 @@ class SsaSimplifyInterceptors extends HBaseVisitor
TypeMask type, Set<ClassEntity> interceptedClasses) {
if (type.isNullable) {
if (type.isNull) {
- return backendClasses.nullImplementation;
+ return backendClasses.nullClass;
}
} else if (type.containsOnlyInt(closedWorld)) {
- return backendClasses.intImplementation;
+ return backendClasses.intClass;
} else if (type.containsOnlyDouble(closedWorld)) {
- return backendClasses.doubleImplementation;
+ return backendClasses.doubleClass;
} else if (type.containsOnlyBool(closedWorld)) {
- return backendClasses.boolImplementation;
+ return backendClasses.boolClass;
} else if (type.containsOnlyString(closedWorld)) {
- return backendClasses.stringImplementation;
- } else if (type.satisfies(backendClasses.listImplementation, closedWorld)) {
- return backendClasses.listImplementation;
+ return backendClasses.stringClass;
+ } else if (type.satisfies(backendClasses.listClass, closedWorld)) {
+ return backendClasses.listClass;
} else if (type.containsOnlyNum(closedWorld) &&
- !interceptedClasses.contains(backendClasses.intImplementation) &&
- !interceptedClasses.contains(backendClasses.doubleImplementation)) {
+ !interceptedClasses.contains(backendClasses.intClass) &&
+ !interceptedClasses.contains(backendClasses.doubleClass)) {
// If the method being intercepted is not defined in [int] or [double] we
// can safely use the number interceptor. This is because none of the
// [int] or [double] methods are called from a method defined on [num].
- return backendClasses.numImplementation;
+ return backendClasses.numClass;
} else {
// Try to find constant interceptor for a native class. If the receiver
// is constrained to a leaf native class, we can use the class's
@@ -229,25 +229,25 @@ class SsaSimplifyInterceptors extends HBaseVisitor
// If we found that we need number, we must still go through all
// uses to check if they require int, or double.
- if (interceptedClasses.contains(backendClasses.numImplementation) &&
- !(interceptedClasses.contains(backendClasses.doubleImplementation) ||
- interceptedClasses.contains(backendClasses.intImplementation))) {
+ if (interceptedClasses.contains(backendClasses.numClass) &&
+ !(interceptedClasses.contains(backendClasses.doubleClass) ||
+ interceptedClasses.contains(backendClasses.intClass))) {
Set<ClassEntity> required;
for (HInstruction user in node.usedBy) {
if (user is! HInvoke) continue;
Set<ClassEntity> intercepted =
backend.getInterceptedClassesOn(user.selector.name);
- if (intercepted.contains(backendClasses.intImplementation)) {
+ if (intercepted.contains(backendClasses.intClass)) {
// TODO(johnniwinther): Use type argument when all uses of
// intercepted classes expect entities instead of elements.
required ??= new Set/*<ClassEntity>*/();
- required.add(backendClasses.intImplementation);
+ required.add(backendClasses.intClass);
}
- if (intercepted.contains(backendClasses.doubleImplementation)) {
+ if (intercepted.contains(backendClasses.doubleClass)) {
// TODO(johnniwinther): Use type argument when all uses of
// intercepted classes expect entities instead of elements.
required ??= new Set/*<ClassEntity>*/();
- required.add(backendClasses.doubleImplementation);
+ required.add(backendClasses.doubleClass);
}
}
// Don't modify the result of [backend.getInterceptedClassesOn].
@@ -315,7 +315,7 @@ class SsaSimplifyInterceptors extends HBaseVisitor
// constant interceptor `C`. Then we can use `(receiver && C)` for the
// interceptor.
if (receiver.canBeNull()) {
- if (!interceptedClasses.contains(backendClasses.nullImplementation)) {
+ if (!interceptedClasses.contains(backendClasses.nullClass)) {
// Can use `(receiver && C)` only if receiver is either null or truthy.
if (!(receiver.canBePrimitiveNumber(closedWorld) ||
receiver.canBePrimitiveBoolean(closedWorld) ||
« no previous file with comments | « pkg/compiler/lib/src/native/enqueue.dart ('k') | pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698