| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| index 9a05a589e8227ad157530bf829e44da0241278ef..166fa4befec0670f8dea2ac7512df9d45ebc4784 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| @@ -14,6 +14,8 @@ import '../../util/maplet.dart';
|
| import '../../constants/values.dart';
|
| import '../../dart2jslib.dart';
|
| import '../../dart_types.dart';
|
| +import '../../types/types.dart' show TypeMask;
|
| +import '../../universe/universe.dart' show UniverseSelector;
|
|
|
| class CodegenBailout {
|
| final tree_ir.Node node;
|
| @@ -251,10 +253,11 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
|
|
| void registerMethodInvoke(tree_ir.InvokeMethod node) {
|
| Selector selector = node.selector;
|
| + TypeMask mask = node.mask;
|
| if (selector.isGetter) {
|
| - registry.registerDynamicGetter(selector);
|
| + registry.registerDynamicGetter(new UniverseSelector(selector, mask));
|
| } else if (selector.isSetter) {
|
| - registry.registerDynamicSetter(selector);
|
| + registry.registerDynamicSetter(new UniverseSelector(selector, mask));
|
| } else {
|
| assert(invariant(CURRENT_ELEMENT_SPANNABLE,
|
| selector.isCall || selector.isOperator ||
|
| @@ -262,8 +265,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| message: 'unexpected kind ${selector.kind}'));
|
| // TODO(sigurdm): We should find a better place to register the call.
|
| Selector call = new Selector.callClosureFrom(selector);
|
| - registry.registerDynamicInvocation(call);
|
| - registry.registerDynamicInvocation(selector);
|
| + registry.registerDynamicInvocation(new UniverseSelector(call, null));
|
| + registry.registerDynamicInvocation(new UniverseSelector(selector, mask));
|
| }
|
| }
|
|
|
|
|