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

Unified Diff: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart

Issue 11348177: Cleanup after the interceptor refactoring work, and add a new SSA instruction for an interceptor, s… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month 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: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (revision 15192)
+++ sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (working copy)
@@ -32,6 +32,7 @@
R visitIndex(HIndex node);
R visitIndexAssign(HIndexAssign node);
R visitIntegerCheck(HIntegerCheck node);
+ R visitInterceptor(HInterceptor node);
R visitInvokeClosure(HInvokeClosure node);
R visitInvokeDynamicGetter(HInvokeDynamicGetter node);
R visitInvokeDynamicMethod(HInvokeDynamicMethod node);
@@ -291,6 +292,7 @@
visitIndex(HIndex node) => visitInvokeStatic(node);
visitIndexAssign(HIndexAssign node) => visitInvokeStatic(node);
visitIntegerCheck(HIntegerCheck node) => visitCheck(node);
+ visitInterceptor(HInterceptor node) => visitInstruction(node);
visitInvokeClosure(HInvokeClosure node)
=> visitInvokeDynamic(node);
visitInvokeDynamicMethod(HInvokeDynamicMethod node)
@@ -781,7 +783,7 @@
static const int TYPE_GUARD_TYPECODE = 1;
static const int BOUNDS_CHECK_TYPECODE = 2;
static const int INTEGER_CHECK_TYPECODE = 3;
- static const int INVOKE_INTERCEPTOR_TYPECODE = 4;
+ static const int INTERCEPTOR_TYPECODE = 4;
static const int ADD_TYPECODE = 5;
static const int DIVIDE_TYPECODE = 6;
static const int MODULO_TYPECODE = 7;
@@ -1391,7 +1393,6 @@
}
class HInvokeStatic extends HInvoke {
- bool isSideEffectFree = false;
/** The first input must be the target. */
HInvokeStatic(inputs, [HType knownType = HType.UNKNOWN]) : super(inputs) {
guaranteedType = knownType;
@@ -1416,13 +1417,6 @@
Compiler compiler) {
return HType.UNKNOWN;
}
-
- void prepareGvn(HTypeMap types) {
ahe 2012/11/22 13:26:11 What is this change for?
ngeoffray 2012/11/22 13:37:59 This code was temporary, to make sure we did not r
- clearAllSideEffects();
- if (!isSideEffectFree) {
- setAllSideEffects();
- }
- }
}
class HInvokeSuper extends HInvokeStatic {
@@ -2401,6 +2395,21 @@
bool isCodeMotionInvariant() => !element.isAssignable();
}
+class HInterceptor extends HInstruction {
+ final Set<ClassElement> interceptedClasses;
+ HInterceptor(this.interceptedClasses, HInstruction receiver)
+ : super(<HInstruction>[receiver]);
+ String toString() => 'interceptor on $interceptedClasses';
ahe 2012/11/22 13:26:11 What is the method name?
ngeoffray 2012/11/22 13:37:59 An interceptor is not necessary on one method call
+ accept(HVisitor visitor) => visitor.visitInterceptor(this);
+ HInstruction get receiver => inputs[0];
+
+ void prepareGvn(HTypeMap types) {
+ clearAllSideEffects();
+ }
+
+ int typeCode() => HInstruction.INTERCEPTOR_TYPECODE;
+}
+
/** An [HLazyStatic] is a static that is initialized lazily at first read. */
class HLazyStatic extends HStatic {
HLazyStatic(Element element) : super(element);

Powered by Google App Engine
This is Rietveld 408576698