| 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 dad06b9456d53d0db4f49573f5f1353a455116e8..68c0d561c46ef9e9fe8142f1d960b1dfd3a4b4f1 100644
|
| --- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
|
| +++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
|
| @@ -221,8 +221,8 @@ class SsaSimplifyInterceptors extends HBaseVisitor
|
| dominator.isCallOnInterceptor(closedWorld) &&
|
| node == dominator.receiver &&
|
| useCount(dominator, node) == 1) {
|
| - interceptedClasses =
|
| - interceptorData.getInterceptedClassesOn(dominator.selector.name);
|
| + interceptedClasses = interceptorData.getInterceptedClassesOn(
|
| + dominator.selector.name, closedWorld);
|
|
|
| // If we found that we need number, we must still go through all
|
| // uses to check if they require int, or double.
|
| @@ -232,8 +232,8 @@ class SsaSimplifyInterceptors extends HBaseVisitor
|
| Set<ClassEntity> required;
|
| for (HInstruction user in node.usedBy) {
|
| if (user is! HInvoke) continue;
|
| - Set<ClassEntity> intercepted =
|
| - interceptorData.getInterceptedClassesOn(user.selector.name);
|
| + Set<ClassEntity> intercepted = interceptorData
|
| + .getInterceptedClassesOn(user.selector.name, closedWorld);
|
| if (intercepted.contains(_commonElements.jsIntClass)) {
|
| // TODO(johnniwinther): Use type argument when all uses of
|
| // intercepted classes expect entities instead of elements.
|
| @@ -261,14 +261,14 @@ class SsaSimplifyInterceptors extends HBaseVisitor
|
| user.isCallOnInterceptor(closedWorld) &&
|
| node == user.receiver &&
|
| useCount(user, node) == 1) {
|
| - interceptedClasses.addAll(
|
| - interceptorData.getInterceptedClassesOn(user.selector.name));
|
| + interceptedClasses.addAll(interceptorData.getInterceptedClassesOn(
|
| + user.selector.name, closedWorld));
|
| } else if (user is HInvokeSuper &&
|
| user.isCallOnInterceptor(closedWorld) &&
|
| node == user.receiver &&
|
| useCount(user, node) == 1) {
|
| - interceptedClasses.addAll(
|
| - interceptorData.getInterceptedClassesOn(user.selector.name));
|
| + interceptedClasses.addAll(interceptorData.getInterceptedClassesOn(
|
| + user.selector.name, closedWorld));
|
| } else {
|
| // Use a most general interceptor for other instructions, example,
|
| // is-checks and escaping interceptors.
|
| @@ -349,7 +349,8 @@ class SsaSimplifyInterceptors extends HBaseVisitor
|
| // See if we can rewrite the is-check to use 'instanceof', i.e. rewrite
|
| // "getInterceptor(x).$isT" to "x instanceof T".
|
| if (node == user.interceptor) {
|
| - if (interceptorData.mayGenerateInstanceofCheck(user.typeExpression)) {
|
| + if (interceptorData.mayGenerateInstanceofCheck(
|
| + user.typeExpression, closedWorld)) {
|
| HInstruction instanceofCheck = new HIs.instanceOf(
|
| user.typeExpression, user.expression, user.instructionType);
|
| instanceofCheck.sourceInformation = user.sourceInformation;
|
|
|