Index: pkg/compiler/lib/src/ssa/nodes.dart |
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart |
index bbd214ca1335fc5531b5ad1449ca6538dd58a834..83ecc44dca5ef1fa641f1c9b4e40d7d7649298d3 100644 |
--- a/pkg/compiler/lib/src/ssa/nodes.dart |
+++ b/pkg/compiler/lib/src/ssa/nodes.dart |
@@ -1121,7 +1121,7 @@ abstract class HInstruction implements Spannable { |
TypeMask instructionType; |
Selector get selector => null; |
- HInstruction getDartReceiver(Compiler compiler) => null; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => null; |
bool onlyThrowsNSM() => false; |
bool isInBasicBlock() => block != null; |
@@ -1304,7 +1304,7 @@ abstract class HInstruction implements Spannable { |
bool isConstantFalse() => false; |
bool isConstantTrue() => false; |
- bool isInterceptor(Compiler compiler) => false; |
+ bool isInterceptor(ClosedWorld closedWorld) => false; |
bool isValid() { |
HValidator validator = new HValidator(); |
@@ -1544,15 +1544,15 @@ abstract class HInvokeDynamic extends HInvoke { |
: const InvokeDynamicSpecializer(); |
toString() => 'invoke dynamic: selector=$selector, mask=$mask'; |
HInstruction get receiver => inputs[0]; |
- HInstruction getDartReceiver(Compiler compiler) { |
- return isCallOnInterceptor(compiler) ? inputs[1] : inputs[0]; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) { |
+ return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0]; |
} |
/** |
* Returns whether this call is on an interceptor object. |
*/ |
- bool isCallOnInterceptor(Compiler compiler) { |
- return isInterceptedCall && receiver.isInterceptor(compiler); |
+ bool isCallOnInterceptor(ClosedWorld closedWorld) { |
+ return isInterceptedCall && receiver.isInterceptor(closedWorld); |
} |
int typeCode() => HInstruction.INVOKE_DYNAMIC_TYPECODE; |
@@ -1649,15 +1649,15 @@ class HInvokeSuper extends HInvokeStatic { |
} |
HInstruction get receiver => inputs[0]; |
- HInstruction getDartReceiver(Compiler compiler) { |
- return isCallOnInterceptor(compiler) ? inputs[1] : inputs[0]; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) { |
+ return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0]; |
} |
/** |
* Returns whether this call is on an interceptor object. |
*/ |
- bool isCallOnInterceptor(Compiler compiler) { |
- return isInterceptedCall && receiver.isInterceptor(compiler); |
+ bool isCallOnInterceptor(ClosedWorld closedWorld) { |
+ return isInterceptedCall && receiver.isInterceptor(closedWorld); |
} |
toString() => 'invoke super: $element'; |
@@ -1707,22 +1707,22 @@ class HFieldGet extends HFieldAccess { |
} |
} |
- bool isInterceptor(Compiler compiler) { |
+ bool isInterceptor(ClosedWorld closedWorld) { |
if (sourceElement == null) return false; |
// In case of a closure inside an interceptor class, [:this:] is |
// stored in the generated closure class, and accessed through a |
// [HFieldGet]. |
- JavaScriptBackend backend = compiler.backend; |
if (sourceElement is ThisLocal) { |
ThisLocal thisLocal = sourceElement; |
- return backend.isInterceptorClass(thisLocal.enclosingClass); |
+ return closedWorld.backendClasses |
+ .isInterceptorClass(thisLocal.enclosingClass); |
} |
return false; |
} |
bool canThrow() => receiver.canBeNull(); |
- HInstruction getDartReceiver(Compiler compiler) => receiver; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver; |
bool onlyThrowsNSM() => true; |
bool get isNullCheck => element == null; |
@@ -1745,7 +1745,7 @@ class HFieldSet extends HFieldAccess { |
bool canThrow() => receiver.canBeNull(); |
- HInstruction getDartReceiver(Compiler compiler) => receiver; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver; |
bool onlyThrowsNSM() => true; |
HInstruction get value => inputs[1]; |
@@ -1797,7 +1797,7 @@ class HReadModifyWrite extends HLateInstruction { |
bool canThrow() => receiver.canBeNull(); |
- HInstruction getDartReceiver(Compiler compiler) => receiver; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver; |
bool onlyThrowsNSM() => true; |
HInstruction get value => inputs[1]; |
@@ -2254,7 +2254,7 @@ class HConstant extends HInstruction { |
bool isConstantFalse() => constant.isFalse; |
bool isConstantTrue() => constant.isTrue; |
- bool isInterceptor(Compiler compiler) => constant.isInterceptor; |
+ bool isInterceptor(ClosedWorld closedWorld) => constant.isInterceptor; |
// Maybe avoid this if the literal is big? |
bool isCodeMotionInvariant() => true; |
@@ -2320,9 +2320,9 @@ class HThis extends HParameterValue { |
bool isCodeMotionInvariant() => true; |
- bool isInterceptor(Compiler compiler) { |
- JavaScriptBackend backend = compiler.backend; |
- return backend.isInterceptorClass(sourceElement.enclosingClass); |
+ bool isInterceptor(ClosedWorld closedWorld) { |
+ return closedWorld.backendClasses |
+ .isInterceptorClass(sourceElement.enclosingClass); |
} |
String toString() => 'this'; |
@@ -2528,7 +2528,7 @@ class HInterceptor extends HInstruction { |
inputs.add(constant); |
} |
- bool isInterceptor(Compiler compiler) => true; |
+ bool isInterceptor(ClosedWorld closedWorld) => true; |
int typeCode() => HInstruction.INTERCEPTOR_TYPECODE; |
bool typeEquals(other) => other is HInterceptor; |
@@ -2556,7 +2556,7 @@ class HOneShotInterceptor extends HInvokeDynamic { |
assert(inputs[0] is HConstant); |
assert(inputs[0].isNull()); |
} |
- bool isCallOnInterceptor(Compiler compiler) => true; |
+ bool isCallOnInterceptor(ClosedWorld closedWorld) => true; |
String toString() => 'one shot interceptor: selector=$selector, mask=$mask'; |
accept(HVisitor visitor) => visitor.visitOneShotInterceptor(this); |
@@ -2631,7 +2631,7 @@ class HIndex extends HInstruction { |
// TODO(27272): Make HIndex dependent on bounds checking. |
bool get isMovable => false; |
- HInstruction getDartReceiver(Compiler compiler) => receiver; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver; |
bool onlyThrowsNSM() => true; |
bool canThrow() => receiver.canBeNull(); |
@@ -2665,7 +2665,7 @@ class HIndexAssign extends HInstruction { |
// TODO(27272): Make HIndex dependent on bounds checking. |
bool get isMovable => false; |
- HInstruction getDartReceiver(Compiler compiler) => receiver; |
+ HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver; |
bool onlyThrowsNSM() => true; |
bool canThrow() => receiver.canBeNull(); |
} |