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

Unified Diff: runtime/vm/parser.h

Issue 15979010: Fix two bugs in the Dart VM's super-noSuchMethod invocation. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: improved version Created 7 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: runtime/vm/parser.h
===================================================================
--- runtime/vm/parser.h (revision 23536)
+++ runtime/vm/parser.h (working copy)
@@ -101,6 +101,7 @@
return expression_temp_var_ != NULL;
}
static LocalVariable* CreateExpressionTempVar(intptr_t token_pos);
+ LocalVariable* EnsureExpressionTemp();
int first_parameter_index() const { return first_parameter_index_; }
int first_stack_local_index() const { return first_stack_local_index_; }
@@ -168,6 +169,8 @@
va_list args);
private:
+ friend class EffectGraphVisitor; // For BuildNoSuchMethodArguments.
+
struct Block;
class TryBlocks;
@@ -385,14 +388,18 @@
String& ParseNativeDeclaration();
void ParseInterfaceList(const Class& cls);
RawAbstractType* ParseMixins(const AbstractType& super_type);
- StaticCallNode* BuildInvocationMirrorAllocation(
+ static StaticCallNode* BuildInvocationMirrorAllocation(
intptr_t call_pos,
const String& function_name,
- const ArgumentListNode& function_args);
- ArgumentListNode* BuildNoSuchMethodArguments(
+ const ArgumentListNode& function_args,
+ const LocalVariable* temp = NULL);
+ // Build arguments for a NoSuchMethodCall. If LocalVariable temp is not NULL,
+ // the last argument is stored in temp.
+ static ArgumentListNode* BuildNoSuchMethodArguments(
intptr_t call_pos,
const String& function_name,
- const ArgumentListNode& function_args);
+ const ArgumentListNode& function_args,
+ const LocalVariable* temp = NULL);
RawFunction* GetSuperFunction(intptr_t token_pos,
const String& name,
ArgumentListNode* arguments,
@@ -610,7 +617,6 @@
void CheckOperatorArity(const MemberDesc& member);
- const LocalVariable* GetIncrementTempLocal();
void EnsureExpressionTemp();
void EnsureSavedCurrentContext();
AstNode* CreateAssignmentNode(AstNode* original, AstNode* rhs);

Powered by Google App Engine
This is Rietveld 408576698