Index: src/ia32/lithium-ia32.h |
=================================================================== |
--- src/ia32/lithium-ia32.h (revision 9531) |
+++ src/ia32/lithium-ia32.h (working copy) |
@@ -101,7 +101,7 @@ |
V(Integer32ToDouble) \ |
V(InvokeFunction) \ |
V(IsConstructCallAndBranch) \ |
- V(IsNullAndBranch) \ |
+ V(IsNilAndBranch) \ |
V(IsObjectAndBranch) \ |
V(IsSmiAndBranch) \ |
V(IsUndetectableAndBranch) \ |
@@ -615,17 +615,18 @@ |
}; |
-class LIsNullAndBranch: public LControlInstruction<1, 1> { |
+class LIsNilAndBranch: public LControlInstruction<1, 1> { |
public: |
- LIsNullAndBranch(LOperand* value, LOperand* temp) { |
+ LIsNilAndBranch(LOperand* value, LOperand* temp) { |
inputs_[0] = value; |
temps_[0] = temp; |
} |
- DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch") |
- DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch) |
+ DECLARE_CONCRETE_INSTRUCTION(IsNilAndBranch, "is-nil-and-branch") |
+ DECLARE_HYDROGEN_ACCESSOR(IsNilAndBranch) |
- bool is_strict() const { return hydrogen()->is_strict(); } |
+ EqualityKind kind() const { return hydrogen()->kind(); } |
+ NilValue nil() const { return hydrogen()->nil(); } |
virtual void PrintDataTo(StringStream* stream); |
}; |
@@ -1230,10 +1231,12 @@ |
}; |
-class LStoreGlobalCell: public LTemplateInstruction<0, 1, 0> { |
+class LStoreGlobalCell: public LTemplateInstruction<0, 1, 2> { |
public: |
- explicit LStoreGlobalCell(LOperand* value) { |
+ explicit LStoreGlobalCell(LOperand* value, LOperand* temp1, LOperand* temp2) { |
inputs_[0] = value; |
+ temps_[0] = temp1; |
+ temps_[1] = temp2; |
} |
DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell") |
@@ -1798,6 +1801,8 @@ |
inputs_[0] = value; |
} |
+ LOperand* value() { return inputs_[0]; } |
+ |
DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function") |
DECLARE_HYDROGEN_ACCESSOR(CheckFunction) |
}; |
@@ -2070,6 +2075,7 @@ |
graph_(graph), |
instructions_(32), |
pointer_maps_(8), |
+ num_double_slots_(0), |
inlined_closures_(1) { } |
void AddInstruction(LInstruction* instruction, HBasicBlock* block); |
@@ -2083,6 +2089,8 @@ |
int ParameterAt(int index); |
int GetParameterStackSlot(int index) const; |
int spill_slot_count() const { return spill_slot_count_; } |
+ int num_double_slots() const { return num_double_slots_; } |
+ |
CompilationInfo* info() const { return info_; } |
HGraph* graph() const { return graph_; } |
const ZoneList<LInstruction*>* instructions() const { return &instructions_; } |
@@ -2124,6 +2132,7 @@ |
HGraph* const graph_; |
ZoneList<LInstruction*> instructions_; |
ZoneList<LPointerMap*> pointer_maps_; |
+ int num_double_slots_; |
ZoneList<Handle<JSFunction> > inlined_closures_; |
}; |
@@ -2259,7 +2268,8 @@ |
LInstruction* instr, int ast_id); |
void ClearInstructionPendingDeoptimizationEnvironment(); |
- LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env); |
+ LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env, |
+ int* argument_index_accumulator); |
void VisitInstruction(HInstruction* current); |