| Index: src/ia32/lithium-ia32.h
|
| diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
|
| index bf8dbc636dc0c073cca82382bb4b9b3d6f3e649c..f630ae68d80feb80a4374103d2633f9053c8f440 100644
|
| --- a/src/ia32/lithium-ia32.h
|
| +++ b/src/ia32/lithium-ia32.h
|
| @@ -172,7 +172,8 @@ class LCodeGen;
|
| V(ForInPrepareMap) \
|
| V(ForInCacheArray) \
|
| V(CheckMapValue) \
|
| - V(LoadFieldByIndex)
|
| + V(LoadFieldByIndex) \
|
| + V(WrapReceiver)
|
|
|
|
|
| #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
|
| @@ -455,18 +456,33 @@ class LControlInstruction: public LTemplateInstruction<0, I, T> {
|
| };
|
|
|
|
|
| -class LApplyArguments: public LTemplateInstruction<1, 4, 1> {
|
| +class LWrapReceiver: public LTemplateInstruction<1, 2, 1> {
|
| + public:
|
| + LWrapReceiver(LOperand* receiver,
|
| + LOperand* function,
|
| + LOperand* temp) {
|
| + inputs_[0] = receiver;
|
| + inputs_[1] = function;
|
| + temps_[0] = temp;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
|
| +
|
| + LOperand* receiver() { return inputs_[0]; }
|
| + LOperand* function() { return inputs_[1]; }
|
| +};
|
| +
|
| +
|
| +class LApplyArguments: public LTemplateInstruction<1, 4, 0> {
|
| public:
|
| LApplyArguments(LOperand* function,
|
| LOperand* receiver,
|
| LOperand* length,
|
| - LOperand* elements,
|
| - LOperand* temp) {
|
| + LOperand* elements) {
|
| inputs_[0] = function;
|
| inputs_[1] = receiver;
|
| inputs_[2] = length;
|
| inputs_[3] = elements;
|
| - temps_[0] = temp;
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply-arguments")
|
|
|