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

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

Issue 1285173002: dart2js cps: Rewrite more List operations into JS array operations. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: receiverIsNotNull -> optional param Created 5 years, 4 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/cps_ir/cps_ir_nodes.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
index a7aac4e4f3d0fdc47aae1f65a53c44fb6a65292f..b93928279c174bfd35086e5bf8abe7d28d81a4bd 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
@@ -519,6 +519,31 @@ class ApplyBuiltinOperator extends Primitive {
bool get isSafeForReordering => true;
}
+/// Apply a built-in method.
+///
+/// It must be known that the arguments have the proper types.
+class ApplyBuiltinMethod extends Primitive {
+ BuiltinMethod method;
+ Reference<Primitive> receiver;
+ List<Reference<Primitive>> arguments;
+ final SourceInformation sourceInformation;
+
+ bool receiverIsNotNull;
+
+ ApplyBuiltinMethod(this.method,
+ Primitive receiver,
+ List<Primitive> arguments,
+ this.sourceInformation,
+ {this.receiverIsNotNull: false})
+ : this.receiver = new Reference<Primitive>(receiver),
+ this.arguments = _referenceList(arguments);
+
+ accept(Visitor visitor) => visitor.visitApplyBuiltinMethod(this);
+
+ bool get isSafeForElimination => false;
+ bool get isSafeForReordering => false;
+}
+
/// Throw a value.
///
/// Throw is an expression, i.e., it always occurs in tail position with
@@ -1156,6 +1181,7 @@ abstract class Visitor<T> {
T visitCreateInvocationMirror(CreateInvocationMirror node);
T visitTypeTest(TypeTest node);
T visitApplyBuiltinOperator(ApplyBuiltinOperator node);
+ T visitApplyBuiltinMethod(ApplyBuiltinMethod node);
T visitGetLength(GetLength node);
T visitGetIndex(GetIndex node);
T visitSetIndex(SetIndex node);
@@ -1426,6 +1452,13 @@ class LeafVisitor implements Visitor {
node.arguments.forEach(processReference);
}
+ processApplyBuiltinMethod(ApplyBuiltinMethod node) {}
+ visitApplyBuiltinMethod(ApplyBuiltinMethod node) {
+ processApplyBuiltinMethod(node);
+ processReference(node.receiver);
+ node.arguments.forEach(processReference);
+ }
+
processForeignCode(ForeignCode node) {}
visitForeignCode(ForeignCode node) {
processForeignCode(node);

Powered by Google App Engine
This is Rietveld 408576698