| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| index 47bddb445e2801ce2f8ffb11abb903baa337541d..260316710d52a9320eb70ed3af577fc4236aeb4f 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
|
| @@ -676,12 +676,12 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive visitExpressionInvoke(ast.Send node,
|
| ast.Node expression,
|
| ast.NodeList argumentsNode,
|
| - Selector selector, _) {
|
| + CallStructure callStructure, _) {
|
| ir.Primitive receiver = visit(expression);
|
| List<ir.Primitive> arguments = node.arguments.mapToList(visit);
|
| - arguments = normalizeDynamicArguments(selector.callStructure, arguments);
|
| + arguments = normalizeDynamicArguments(callStructure, arguments);
|
| return irBuilder.buildCallInvocation(
|
| - receiver, selector.callStructure, arguments,
|
| + receiver, callStructure, arguments,
|
| sourceInformation:
|
| sourceInformationBuilder.buildCall(node, argumentsNode));
|
| }
|
| @@ -710,11 +710,11 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive handleDynamicGet(
|
| ast.Send node,
|
| ast.Node receiver,
|
| - Selector selector,
|
| + Name name,
|
| _) {
|
| return irBuilder.buildDynamicGet(
|
| translateReceiver(receiver),
|
| - selector,
|
| + new Selector.getter(name),
|
| elements.getTypeMask(node),
|
| sourceInformationBuilder.buildGet(node));
|
| }
|
| @@ -723,13 +723,15 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive visitIfNotNullDynamicPropertyGet(
|
| ast.Send node,
|
| ast.Node receiver,
|
| - Selector selector,
|
| + Name name,
|
| _) {
|
| ir.Primitive target = visit(receiver);
|
| return irBuilder.buildIfNotNullSend(
|
| target,
|
| nested(() => irBuilder.buildDynamicGet(
|
| - target, selector, elements.getTypeMask(node),
|
| + target,
|
| + new Selector.getter(name),
|
| + elements.getTypeMask(node),
|
| sourceInformationBuilder.buildGet(node))));
|
| }
|
|
|
| @@ -1352,12 +1354,12 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive handleDynamicSet(
|
| ast.SendSet node,
|
| ast.Node receiver,
|
| - Selector selector,
|
| + Name name,
|
| ast.Node rhs,
|
| _) {
|
| return irBuilder.buildDynamicSet(
|
| translateReceiver(receiver),
|
| - selector,
|
| + new Selector.setter(name),
|
| elements.getTypeMask(node),
|
| visit(rhs));
|
| }
|
| @@ -1366,14 +1368,17 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive visitIfNotNullDynamicPropertySet(
|
| ast.SendSet node,
|
| ast.Node receiver,
|
| - Selector selector,
|
| + Name name,
|
| ast.Node rhs,
|
| _) {
|
| ir.Primitive target = visit(receiver);
|
| return irBuilder.buildIfNotNullSend(
|
| target,
|
| nested(() => irBuilder.buildDynamicSet(
|
| - target, selector, elements.getTypeMask(node), visit(rhs))));
|
| + target,
|
| + new Selector.setter(name),
|
| + elements.getTypeMask(node),
|
| + visit(rhs))));
|
| }
|
|
|
| @override
|
| @@ -1451,9 +1456,8 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| ir.Primitive handleDynamicCompounds(
|
| ast.SendSet node,
|
| ast.Node receiver,
|
| + Name name,
|
| CompoundRhs rhs,
|
| - Selector getterSelector,
|
| - Selector setterSelector,
|
| arg) {
|
| ir.Primitive target = translateReceiver(receiver);
|
| ir.Primitive helper() {
|
| @@ -1461,13 +1465,16 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
|
| node,
|
| getValue: () => irBuilder.buildDynamicGet(
|
| target,
|
| - getterSelector,
|
| + new Selector.getter(name),
|
| elements.getGetterTypeMaskInComplexSendSet(node),
|
| sourceInformationBuilder.buildGet(node)),
|
| rhs: rhs,
|
| setValue: (ir.Primitive result) {
|
| irBuilder.buildDynamicSet(
|
| - target, setterSelector, elements.getTypeMask(node), result);
|
| + target,
|
| + new Selector.setter(name),
|
| + elements.getTypeMask(node),
|
| + result);
|
| });
|
| }
|
| return node.isConditional
|
|
|