| Index: src/hydrogen-instructions.h
|
| ===================================================================
|
| --- src/hydrogen-instructions.h (revision 7030)
|
| +++ src/hydrogen-instructions.h (working copy)
|
| @@ -64,6 +64,7 @@
|
|
|
|
|
| #define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V) \
|
| + V(AbnormalExit) \
|
| V(AccessArgumentsAt) \
|
| V(Add) \
|
| V(ApplyArguments) \
|
| @@ -834,12 +835,11 @@
|
| };
|
|
|
|
|
| -class HThrow: public HUnaryControlInstruction {
|
| +class HAbnormalExit: public HControlInstruction {
|
| public:
|
| - explicit HThrow(HValue* value)
|
| - : HUnaryControlInstruction(value, NULL, NULL) { }
|
| + HAbnormalExit() : HControlInstruction(NULL, NULL) { }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
| + DECLARE_CONCRETE_INSTRUCTION(AbnormalExit, "abnormal_exit")
|
| };
|
|
|
|
|
| @@ -866,6 +866,20 @@
|
| };
|
|
|
|
|
| +class HThrow: public HUnaryOperation {
|
| + public:
|
| + explicit HThrow(HValue* value) : HUnaryOperation(value) {
|
| + SetAllSideEffects();
|
| + }
|
| +
|
| + virtual Representation RequiredInputRepresentation(int index) const {
|
| + return Representation::Tagged();
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
| +};
|
| +
|
| +
|
| class HChange: public HUnaryOperation {
|
| public:
|
| HChange(HValue* value,
|
| @@ -989,7 +1003,7 @@
|
| public:
|
| HStackCheck() { }
|
|
|
| - DECLARE_CONCRETE_INSTRUCTION(Throw, "stack_check")
|
| + DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack_check")
|
| };
|
|
|
|
|
| @@ -1832,6 +1846,7 @@
|
| SetOperandAt(1, receiver);
|
| SetOperandAt(2, length);
|
| SetOperandAt(3, elements);
|
| + SetAllSideEffects();
|
| }
|
|
|
| virtual Representation RequiredInputRepresentation(int index) const {
|
| @@ -1851,8 +1866,6 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply_arguments")
|
|
|
| -
|
| -
|
| protected:
|
| virtual void InternalSetOperandAt(int index, HValue* value) {
|
| operands_[index] = value;
|
| @@ -2576,12 +2589,17 @@
|
|
|
| class HStoreGlobal: public HUnaryOperation {
|
| public:
|
| - HStoreGlobal(HValue* value, Handle<JSGlobalPropertyCell> cell)
|
| - : HUnaryOperation(value), cell_(cell) {
|
| + HStoreGlobal(HValue* value,
|
| + Handle<JSGlobalPropertyCell> cell,
|
| + bool check_hole_value)
|
| + : HUnaryOperation(value),
|
| + cell_(cell),
|
| + check_hole_value_(check_hole_value) {
|
| SetFlag(kChangesGlobalVars);
|
| }
|
|
|
| Handle<JSGlobalPropertyCell> cell() const { return cell_; }
|
| + bool check_hole_value() const { return check_hole_value_; }
|
|
|
| virtual Representation RequiredInputRepresentation(int index) const {
|
| return Representation::Tagged();
|
| @@ -2592,6 +2610,7 @@
|
|
|
| private:
|
| Handle<JSGlobalPropertyCell> cell_;
|
| + bool check_hole_value_;
|
| };
|
|
|
|
|
| @@ -3068,6 +3087,10 @@
|
| set_representation(Representation::Tagged());
|
| }
|
|
|
| + virtual Representation RequiredInputRepresentation(int index) const {
|
| + return Representation::Tagged();
|
| + }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
|
| };
|
|
|
|
|