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

Unified Diff: sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart

Issue 278823002: dart2dart: Method and constructor calls in new backend. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Formatting and copyright notice. Created 6 years, 7 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: sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart
diff --git a/sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart b/sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart
index 3b29e65cd5805142bf6601b405a564cce57b16a2..31d1520c08a2c3207b0526e3292b48b42381c4a0 100644
--- a/sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart
+++ b/sdk/lib/_internal/compiler/implementation/ir/ir_unpickler.dart
@@ -87,6 +87,11 @@ class Unpickler {
return constantPool.get(elementIndex);
}
+ types.DartType readDartType() {
+ int typeIndex = readInt();
+ return constantPool.get(typeIndex);
+ }
+
Selector readSelector() {
int tag = readByte();
if (tag == Pickles.BACKREFERENCE) {
@@ -143,6 +148,14 @@ class Unpickler {
addExpression(readInvokeStatic());
current = null;
break;
+ case Pickles.NODE_INVOKE_METHOD:
+ addExpression(readInvokeMethod());
+ current = null;
+ break;
+ case Pickles.NODE_INVOKE_CONSTRUCTOR:
+ addExpression(readInvokeConstructor());
+ current = null;
+ break;
case Pickles.NODE_INVOKE_CONTINUATION:
addExpression(readInvokeContinuation());
current = null;
@@ -221,6 +234,22 @@ class Unpickler {
return new ir.InvokeStatic(functionElement, selector, continuation,
arguments);
}
+
+ ir.InvokeMethod readInvokeMethod() {
+ ir.Definition receiver = readBackReference();
+ Selector selector = readSelector();
+ ir.Continuation continuation = readBackReference();
+ List<ir.Definition> arguments = readBackReferenceList();
+ return new ir.InvokeMethod(receiver, selector, continuation, arguments);
+ }
+
+ ir.InvokeConstructor readInvokeConstructor() {
+ types.GenericType type = readDartType();
+ FunctionElement target = readElement();
+ ir.Continuation continuation = readBackReference();
+ List<ir.Definition> arguments = readBackReferenceList();
+ return new ir.InvokeConstructor(type, target, continuation, arguments);
+ }
ir.InvokeContinuation readInvokeContinuation() {
ir.Continuation continuation = readBackReference();

Powered by Google App Engine
This is Rietveld 408576698