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

Unified Diff: pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart

Issue 1223813006: dart2js cps: Direct access on JS arrays. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update unit tests and remove unused functions Created 5 years, 5 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
Index: pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
index be59dc90692297fe4217949f62c5415defa83806..8c7a5af2e3cf161e2b3334bfcbc1e211f06c5348 100644
--- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
+++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
@@ -350,6 +350,7 @@ class StatementRewriter extends Transformer implements Pass {
return exp is Constant ||
exp is This ||
exp is CreateInvocationMirror ||
+ exp is GetStatic && exp.element.isFunction ||
exp is Interceptor ||
exp is ApplyBuiltinOperator ||
exp is VariableUse && constantEnvironment.containsKey(exp.variable);
@@ -717,6 +718,24 @@ class StatementRewriter extends Transformer implements Pass {
return node;
}
+ Expression visitGetLength(GetLength node) {
+ node.object = visitExpression(node.object);
+ return node;
+ }
+
+ Expression visitGetIndex(GetIndex node) {
+ node.index = visitExpression(node.index);
+ node.object = visitExpression(node.object);
+ return node;
+ }
+
+ Expression visitSetIndex(SetIndex node) {
+ node.value = visitExpression(node.value);
+ node.index = visitExpression(node.index);
+ node.object = visitExpression(node.object);
+ return node;
+ }
+
/// True if [operator] is a binary operator that always has the same value
/// if its arguments are swapped.
bool isSymmetricOperator(BuiltinOperator operator) {

Powered by Google App Engine
This is Rietveld 408576698