Index: src/ast.h |
=================================================================== |
--- src/ast.h (revision 246) |
+++ src/ast.h (working copy) |
@@ -140,6 +140,8 @@ |
}; |
+class Reference; |
+ |
class Expression: public Node { |
public: |
virtual Expression* AsExpression() { return this; } |
@@ -150,6 +152,18 @@ |
// statement. This is used to transform postfix increments to |
// (faster) prefix increments. |
virtual void MarkAsStatement() { /* do nothing */ } |
+ |
+ // Generate code to store into an expression evaluated as the left-hand |
+ // side of an assignment. The code will expect the stored value on top of |
+ // the expression stack, and a reference containing the expression |
+ // immediately below that. This function is overridden for expression |
+ // types that can be stored into. |
+ virtual void GenerateStoreCode(MacroAssembler* masm, |
+ Scope* scope, |
+ Reference* ref, |
+ bool is_const_init) { |
iposva
2008/09/10 18:01:44
Can you please use an enum for the is_const_init t
Kevin Millikin (Chromium)
2008/09/11 07:15:55
Done. InitState with values CONST_INIT and NOT_CO
|
+ UNREACHABLE(); |
+ } |
}; |
@@ -753,6 +767,14 @@ |
// Bind this proxy to the variable var. |
void BindTo(Variable* var); |
+ // Generate code to store into an expression evaluated as the left-hand |
+ // side of an assignment. The code will expect the stored value on top of |
+ // the expression stack, and a reference containing the expression |
+ // immediately below that. |
+ virtual void GenerateStoreCode(MacroAssembler* masm, |
+ Scope* scope, |
+ Reference* ref, |
+ bool is_const_init); |
protected: |
Handle<String> name_; |
Variable* var_; // resolved variable, or NULL |
@@ -828,6 +850,14 @@ |
Type type() const { return type_; } |
int index() const { return index_; } |
+ // Generate code to store into an expression evaluated as the left-hand |
+ // side of an assignment. The code will expect the stored value on top of |
+ // the expression stack, and a reference containing the expression |
+ // immediately below that. |
+ virtual void GenerateStoreCode(MacroAssembler* masm, |
+ Scope* scope, |
+ Reference* ref, |
+ bool is_const_init); |
private: |
Variable* var_; |
Type type_; |
@@ -855,6 +885,14 @@ |
// during preparsing. |
static Property* this_property() { return &this_property_; } |
+ // Generate code to store into an expression evaluated as the left-hand |
+ // side of an assignment. The code will expect the stored value on top of |
+ // the expression stack, and a reference containing the expression |
+ // immediately below that. |
+ virtual void GenerateStoreCode(MacroAssembler* masm, |
+ Scope* scope, |
+ Reference* ref, |
+ bool is_const_init); |
private: |
Expression* obj_; |
Expression* key_; |