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

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

Issue 1761903002: dart2js cps: Keep interceptors in a separate field. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Rebase 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 d9c59b683884b5b28e91fc14dde1e8edcb8c3c9c..9dd05c7b24b68a1d9ed90a9aed1e99b2b397d9fa 100644
--- a/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart
+++ b/pkg/compiler/lib/src/cps_ir/optimize_interceptors.dart
@@ -104,7 +104,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
for (Reference ref = interceptor.firstRef; ref != null; ref = ref.next) {
Node use = ref.parent;
if (use is InvokeMethod) {
- TypeMask type = use.dartReceiver.type;
+ TypeMask type = use.receiver.type;
bool canOccurAsReceiver(ClassElement elem) {
return classWorld.isInstantiated(elem) &&
!typeSystem.areDisjoint(type,
@@ -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.receiverRef != ref) return false;
+ if (invoke.interceptorRef != ref) return false;
var interceptedClasses =
backend.getInterceptedClassesOn(invoke.selector.name);
if (interceptedClasses.contains(helpers.jsDoubleClass)) return false;
@@ -157,7 +157,7 @@ class OptimizeInterceptors extends TrampolineRecursiveVisitor implements Pass {
Node use = ref.parent;
if (use is InvokeMethod) {
if (selectorsOnNull.contains(use.selector) &&
- use.dartReceiver.type.isNullable) {
+ use.receiver.type.isNullable) {
return true;
}
} else {
@@ -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;
+ Primitive interceptor = node.interceptor;
if (interceptor is! Interceptor ||
interceptor.hasMultipleUses ||
loopHeaderFor[interceptor] != currentLoopHeader) {
@@ -269,8 +269,7 @@ 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..receiverRef.unlink()..receiverRef = node.argumentRefs.removeAt(0);
+ node.makeOneShotIntercepted();
}
@override
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/insert_refinements.dart ('k') | pkg/compiler/lib/src/cps_ir/path_based_optimizer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698