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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1076793005: Fine-grain field, getter, setter, and function access in IrBuilder. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 months 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
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6541e41a2533146b0cbf615a0c3a7ffff500457e..2b6b9f02e66971bb9aa8a15a5da48786394b10cf 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
@@ -244,7 +244,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
if (parameterElement.isInitializingFormal) {
InitializingFormalElement initializingFormal = parameterElement;
withBuilder(irBuilder.makeInitializerBuilder(), () {
- ir.Primitive value = irBuilder.buildLocalGet(parameterElement);
+ ir.Primitive value =
+ irBuilder.buildLocalVariableGet(parameterElement);
result.add(irBuilder.makeFieldInitializer(
initializingFormal.fieldElement,
irBuilder.makeRunnableBody(value)));
@@ -681,7 +682,15 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
if (element.isConst) {
return translateConstant(node);
}
- return irBuilder.buildLocalGet(element);
+ return irBuilder.buildLocalVariableGet(element);
+ }
+
+ @override
+ ir.Primitive visitLocalFunctionGet(
+ ast.Send node,
+ LocalFunctionElement function,
+ _) {
+ return irBuilder.buildLocalFunctionGet(function);
}
@override
@@ -692,7 +701,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
if (field.isConst) {
return translateConstant(node);
}
- return irBuilder.buildStaticGet(field,
+ return irBuilder.buildStaticFieldGet(field,
sourceInformation: sourceInformationBuilder.buildGet(node));
}
@@ -713,8 +722,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Send node,
FunctionElement getter,
_) {
- return irBuilder.buildStaticInvocation(getter,
- new Selector.getter(getter.name, getter.library), const []);
+ return irBuilder.buildStaticGetterGet(getter);
}
@override
@@ -722,7 +730,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Send node,
FieldElement field,
_) {
- return irBuilder.buildSuperGet(field);
+ return irBuilder.buildSuperFieldGet(field);
}
@override
@@ -730,7 +738,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Send node,
FunctionElement getter,
_) {
- return irBuilder.buildSuperGet(getter);
+ return irBuilder.buildSuperGetterGet(getter);
}
@override
@@ -738,7 +746,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Send node,
MethodElement method,
_) {
- return irBuilder.buildSuperGet(method);
+ return irBuilder.buildSuperMethodGet(method);
}
@override
@@ -849,7 +857,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector = new Selector.binaryOperator(operator.selectorName);
List<ir.Primitive> arguments = <ir.Primitive>[visit(argument)];
arguments = normalizeDynamicArguments(selector, arguments);
- return irBuilder.buildSuperInvocation(function, selector, arguments);
+ return irBuilder.buildSuperMethodInvocation(function, selector, arguments);
}
@override
@@ -871,7 +879,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector = new Selector.index();
List<ir.Primitive> arguments = <ir.Primitive>[visit(index)];
arguments = normalizeDynamicArguments(selector, arguments);
- return irBuilder.buildSuperInvocation(function, selector, arguments);
+ return irBuilder.buildSuperMethodInvocation(function, selector, arguments);
}
@override
@@ -943,7 +951,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
SelectorKind.OPERATOR,
new PublicName(operator.selectorName),
CallStructure.NO_ARGS);
- return irBuilder.buildSuperInvocation(function, selector, const []);
+ return irBuilder.buildSuperMethodInvocation(function, selector, const []);
}
// TODO(johnniwinther): Handle this in the [IrBuilder] to ensure the correct
@@ -1008,7 +1016,18 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return irBuilder.buildLocalInvocation(element, selector,
+ return irBuilder.buildLocalVariableInvocation(element, selector,
+ translateDynamicArguments(arguments, selector));
+ }
+
+ @override
+ ir.Primitive visitLocalFunctionInvoke(
+ ast.Send node,
+ LocalFunctionElement function,
+ ast.NodeList arguments,
+ Selector selector,
+ _) {
+ return irBuilder.buildLocalFunctionInvocation(function, selector,
translateDynamicArguments(arguments, selector));
}
@@ -1019,9 +1038,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return translateCallInvoke(
- irBuilder.buildStaticGet(field),
- arguments, selector);
+ return irBuilder.buildStaticFieldInvocation(field, selector,
+ translateDynamicArguments(arguments, selector));
}
@override
@@ -1035,7 +1053,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
if (function.isForeign(compiler.backend)) {
return giveup(node, 'handleStaticFunctionInvoke: foreign: $function');
}
- return irBuilder.buildStaticInvocation(function, selector,
+ return irBuilder.buildStaticFunctionInvocation(function, selector,
translateStaticArguments(arguments, function, selector.callStructure),
sourceInformation: sourceInformationBuilder.buildCall(node));
}
@@ -1047,9 +1065,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return translateCallInvoke(
- irBuilder.buildStaticGet(getter),
- arguments, selector);
+ return irBuilder.buildStaticGetterInvocation(getter, selector,
+ translateDynamicArguments(arguments, selector));
}
@override
@@ -1059,9 +1076,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return translateCallInvoke(
- irBuilder.buildSuperGet(field),
- arguments, selector);
+ return irBuilder.buildSuperFieldInvocation(field, selector,
+ translateDynamicArguments(arguments, selector));
}
@override
@@ -1071,9 +1087,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return translateCallInvoke(
- irBuilder.buildSuperGet(getter),
- arguments, selector);
+ return irBuilder.buildSuperGetterInvocation(getter, selector,
+ translateDynamicArguments(arguments, selector));
}
@override
@@ -1083,7 +1098,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.NodeList arguments,
Selector selector,
_) {
- return irBuilder.buildSuperInvocation(method, selector,
+ return irBuilder.buildSuperMethodInvocation(method, selector,
translateDynamicArguments(arguments, selector));
}
@@ -1182,7 +1197,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector = new Selector.index();
List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
arguments = normalizeDynamicArguments(selector, arguments);
- return irBuilder.buildSuperInvocation(getter, selector, arguments);
+ return irBuilder.buildSuperMethodInvocation(
+ getter, selector, arguments);
},
operator: operator,
rhs: rhs,
@@ -1283,11 +1299,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildLocalGet(element),
+ getValue: () => irBuilder.buildLocalVariableGet(element),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildLocalSet(element, result);
+ irBuilder.buildLocalVariableSet(element, result);
});
}
@@ -1299,10 +1315,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildLocalGet(element),
+ getValue: () => irBuilder.buildLocalVariableGet(element),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildLocalSet(element, result);
+ irBuilder.buildLocalVariableSet(element, result);
},
isPrefix: isPrefix);
}
@@ -1313,7 +1329,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
LocalElement element,
ast.Node rhs,
_) {
- return irBuilder.buildLocalSet(element, visit(rhs));
+ return irBuilder.buildLocalVariableSet(element, visit(rhs));
}
@override
@@ -1324,11 +1340,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildStaticGet(field),
+ getValue: () => irBuilder.buildStaticFieldGet(field),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(field, result);
+ irBuilder.buildStaticFieldSet(field, result);
});
}
@@ -1340,10 +1356,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildStaticGet(field),
+ getValue: () => irBuilder.buildStaticFieldGet(field),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(field, result);
+ irBuilder.buildStaticFieldSet(field, result);
},
isPrefix: isPrefix);
}
@@ -1354,7 +1370,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FieldElement field,
ast.Node rhs,
_) {
- return irBuilder.buildStaticSet(field, visit(rhs));
+ return irBuilder.buildStaticFieldSet(field, visit(rhs));
}
@override
@@ -1363,7 +1379,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FieldElement field,
ast.Node rhs,
_) {
- return irBuilder.buildSuperSet(field, visit(rhs));
+ return irBuilder.buildSuperFieldSet(field, visit(rhs));
}
@override
@@ -1372,7 +1388,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FunctionElement setter,
ast.Node rhs,
_) {
- return irBuilder.buildSuperSet(setter, visit(rhs));
+ return irBuilder.buildSuperSetterSet(setter, visit(rhs));
}
@override
@@ -1384,11 +1400,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildStaticGet(getter),
+ getValue: () => irBuilder.buildStaticGetterGet(getter),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(setter, result);
+ irBuilder.buildStaticSetterSet(setter, result);
});
}
@@ -1401,10 +1417,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(readField),
+ getValue: () => irBuilder.buildSuperFieldGet(readField),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(writtenField, result);
+ irBuilder.buildSuperFieldSet(writtenField, result);
},
isPrefix: isPrefix);
}
@@ -1418,10 +1434,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(field),
+ getValue: () => irBuilder.buildSuperFieldGet(field),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
},
isPrefix: isPrefix);
}
@@ -1435,10 +1451,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(getter),
+ getValue: () => irBuilder.buildSuperGetterGet(getter),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(field, result);
+ irBuilder.buildSuperFieldSet(field, result);
},
isPrefix: isPrefix);
}
@@ -1452,10 +1468,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(getter),
+ getValue: () => irBuilder.buildSuperGetterGet(getter),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
},
isPrefix: isPrefix);
}
@@ -1469,10 +1485,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(method),
+ getValue: () => irBuilder.buildSuperMethodGet(method),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
},
isPrefix: isPrefix);
}
@@ -1486,10 +1502,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildStaticGet(getter),
+ getValue: () => irBuilder.buildStaticGetterGet(getter),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(setter, result);
+ irBuilder.buildStaticSetterSet(setter, result);
},
isPrefix: isPrefix);
}
@@ -1503,11 +1519,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildStaticGet(method),
+ getValue: () => irBuilder.buildStaticFunctionGet(method),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(setter, result);
+ irBuilder.buildStaticSetterSet(setter, result);
});
}
@@ -1520,10 +1536,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
arg,
{bool isPrefix}) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildStaticGet(getter),
+ getValue: () => irBuilder.buildStaticFunctionGet(getter),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildStaticSet(setter, result);
+ irBuilder.buildStaticSetterSet(setter, result);
},
isPrefix: isPrefix);
}
@@ -1570,7 +1586,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector = new Selector.index();
List<ir.Primitive> arguments = <ir.Primitive>[indexValue];
arguments = normalizeDynamicArguments(selector, arguments);
- return irBuilder.buildSuperInvocation(
+ return irBuilder.buildSuperMethodInvocation(
indexFunction, selector, arguments);
},
operator: operator,
@@ -1578,7 +1594,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector = new Selector.indexSet();
List<ir.Primitive> arguments = <ir.Primitive>[indexValue, result];
arguments = normalizeDynamicArguments(selector, arguments);
- irBuilder.buildSuperInvocation(
+ irBuilder.buildSuperMethodInvocation(
indexSetFunction, selector, arguments);
},
isPrefix: isPrefix);
@@ -1590,7 +1606,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FunctionElement setter,
ast.Node rhs,
_) {
- return irBuilder.buildStaticSet(setter, visit(rhs));
+ return irBuilder.buildStaticSetterSet(setter, visit(rhs));
}
@override
@@ -1601,11 +1617,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildSuperGet(field),
+ getValue: () => irBuilder.buildSuperFieldGet(field),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(field, result);
+ irBuilder.buildSuperFieldSet(field, result);
});
}
@@ -1617,10 +1633,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
op.IncDecOperator operator,
_) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(readField),
+ getValue: () => irBuilder.buildSuperFieldGet(readField),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(writtenField, result);
+ irBuilder.buildSuperFieldSet(writtenField, result);
},
isPrefix: false);
}
@@ -1633,10 +1649,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
op.IncDecOperator operator,
_) {
return translatePrefixPostfix(
- getValue: () => irBuilder.buildSuperGet(readField),
+ getValue: () => irBuilder.buildSuperFieldGet(readField),
operator: operator,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(writtenField, result);
+ irBuilder.buildSuperFieldSet(writtenField, result);
},
isPrefix: true);
}
@@ -1650,11 +1666,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildSuperGet(field),
+ getValue: () => irBuilder.buildSuperFieldGet(field),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
});
}
@@ -1667,11 +1683,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildSuperGet(getter),
+ getValue: () => irBuilder.buildSuperGetterGet(getter),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(field, result);
+ irBuilder.buildSuperFieldSet(field, result);
});
}
@@ -1684,11 +1700,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildSuperGet(getter),
+ getValue: () => irBuilder.buildSuperGetterGet(getter),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
});
}
@@ -1701,11 +1717,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ast.Node rhs,
_) {
return translateCompound(
- getValue: () => irBuilder.buildSuperGet(method),
+ getValue: () => irBuilder.buildSuperMethodGet(method),
operator: operator,
rhs: rhs,
setValue: (ir.Primitive result) {
- irBuilder.buildSuperSet(setter, result);
+ irBuilder.buildSuperSetterSet(setter, result);
});
}
@@ -2336,7 +2352,7 @@ class JsIrBuilderVisitor extends IrBuilderVisitor {
if (parameter.isInitializingFormal) {
InitializingFormalElement fieldParameter = parameter;
fieldValues[fieldParameter.fieldElement] =
- irBuilder.buildLocalGet(parameter);
+ irBuilder.buildLocalVariableGet(parameter);
}
});
// Evaluate constructor initializers, e.g. `Foo() : x = 50`.
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698