| Index: src/arm/lithium-arm.h
|
| ===================================================================
|
| --- src/arm/lithium-arm.h (revision 9808)
|
| +++ src/arm/lithium-arm.h (working copy)
|
| @@ -162,6 +162,7 @@
|
| V(ThisFunction) \
|
| V(Throw) \
|
| V(ToFastProperties) \
|
| + V(TransitionElementsKind) \
|
| V(Typeof) \
|
| V(TypeofIsAndBranch) \
|
| V(UnaryMathOperation) \
|
| @@ -1260,7 +1261,6 @@
|
| LOperand* context() { return InputAt(0); }
|
| LOperand* value() { return InputAt(1); }
|
| int slot_index() { return hydrogen()->slot_index(); }
|
| - int needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
| @@ -1277,7 +1277,9 @@
|
|
|
|
|
| class LThisFunction: public LTemplateInstruction<1, 0, 0> {
|
| + public:
|
| DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
|
| + DECLARE_HYDROGEN_ACCESSOR(ThisFunction)
|
| };
|
|
|
|
|
| @@ -1561,7 +1563,6 @@
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| bool is_in_object() { return hydrogen()->is_in_object(); }
|
| int offset() { return hydrogen()->offset(); }
|
| - bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
|
| Handle<Map> transition() const { return hydrogen()->transition(); }
|
| };
|
|
|
| @@ -1581,7 +1582,8 @@
|
| LOperand* object() { return inputs_[0]; }
|
| LOperand* value() { return inputs_[1]; }
|
| Handle<Object> name() const { return hydrogen()->name(); }
|
| - bool strict_mode() { return hydrogen()->strict_mode(); }
|
| + StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
| + bool strict_mode() { return strict_mode_flag() == kStrictMode; }
|
| };
|
|
|
|
|
| @@ -1669,6 +1671,30 @@
|
| };
|
|
|
|
|
| +class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> {
|
| + public:
|
| + LTransitionElementsKind(LOperand* object,
|
| + LOperand* new_map_temp,
|
| + LOperand* temp_reg) {
|
| + inputs_[0] = object;
|
| + temps_[0] = new_map_temp;
|
| + temps_[1] = temp_reg;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
|
| + "transition-elements-kind")
|
| + DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
|
| +
|
| + virtual void PrintDataTo(StringStream* stream);
|
| +
|
| + LOperand* object() { return inputs_[0]; }
|
| + LOperand* new_map_reg() { return temps_[0]; }
|
| + LOperand* temp_reg() { return temps_[1]; }
|
| + Handle<Map> original_map() { return hydrogen()->original_map(); }
|
| + Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
|
| +};
|
| +
|
| +
|
| class LStringAdd: public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LStringAdd(LOperand* left, LOperand* right) {
|
|
|