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

Unified Diff: pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart

Issue 1743283002: dart2js cps: Use definitions by default, not references. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix doc comments and long lines Created 4 years, 10 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/cps_ir/optimize_interceptors.dart
diff --git a/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart b/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart
index 689dac67fdd02e4163c1c5dd72904b3bcd08b059..d9c59b683884b5b28e91fc14dde1e8edcb8c3c9c 100644
--- a/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart
+++ b/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart
@@ -137,7 +137,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
for (Reference ref = node.firstRef; ref != null; ref = ref.next) {
if (ref.parent is InvokeMethod) {
InvokeMethod invoke = ref.parent;
- if (invoke.receiver != ref) return false;
+ if (invoke.receiverRef != ref) return false;
var interceptedClasses =
backend.getInterceptedClassesOn(invoke.selector.name);
if (interceptedClasses.contains(helpers.jsDoubleClass)) return false;
@@ -173,7 +173,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
// TODO(asgerf): This could be more precise if we used the use-site type,
// since the interceptor may have been hoisted out of a loop, where a less
// precise type is known.
- Primitive input = node.input.definition;
+ Primitive input = node.input;
TypeMask type = input.type;
if (canInterceptNull(node)) return null;
type = type.nonNullable();
@@ -198,7 +198,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
/// successful.
bool constifyInterceptor(Interceptor interceptor) {
LetPrim let = interceptor.parent;
- Primitive input = interceptor.input.definition;
+ Primitive input = interceptor.input;
ClassElement classElement = getSingleInterceptorClass(interceptor);
if (classElement == null) return false;
@@ -261,7 +261,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
@override
void visitInvokeMethod(InvokeMethod node) {
if (node.callingConvention != CallingConvention.Intercepted) return;
- Primitive interceptor = node.receiver.definition;
+ Primitive interceptor = node.receiver;
if (interceptor is! Interceptor ||
interceptor.hasMultipleUses ||
loopHeaderFor[interceptor] != currentLoopHeader) {
@@ -270,12 +270,12 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
// TODO(asgerf): Consider heuristics for when to use one-shot interceptors.
// E.g. using only one-shot interceptors with a fast path.
node.callingConvention = CallingConvention.OneShotIntercepted;
- node..receiver.unlink()..receiver = node.arguments.removeAt(0);
+ node..receiverRef.unlink()..receiverRef = node.argumentRefs.removeAt(0);
}
@override
void visitTypeTestViaFlag(TypeTestViaFlag node) {
- Primitive interceptor = node.interceptor.definition;
+ Primitive interceptor = node.interceptor;
if (interceptor is! Interceptor ||
interceptor.hasMultipleUses ||
loopHeaderFor[interceptor] != currentLoopHeader ||
@@ -283,7 +283,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
return;
}
Interceptor inter = interceptor;
- Primitive value = inter.input.definition;
+ Primitive value = inter.input;
node.replaceWith(new TypeTest(value, node.dartType, [])..type = node.type);
}
}

Powered by Google App Engine
This is Rietveld 408576698