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") |