Index: src/crankshaft/hydrogen-instructions.h |
diff --git a/src/crankshaft/hydrogen-instructions.h b/src/crankshaft/hydrogen-instructions.h |
index ea9be601a771760bd2fdd4e4fcbcf115d02bbebe..05a3e796a9a6b50eb90c2d4b535c1d9c217523da 100644 |
--- a/src/crankshaft/hydrogen-instructions.h |
+++ b/src/crankshaft/hydrogen-instructions.h |
@@ -3857,6 +3857,7 @@ class HApplyArguments final : public HTemplateInstruction<4> { |
class HArgumentsElements final : public HTemplateInstruction<0> { |
public: |
DECLARE_INSTRUCTION_FACTORY_P1(HArgumentsElements, bool); |
+ DECLARE_INSTRUCTION_FACTORY_P2(HArgumentsElements, bool, bool); |
DECLARE_CONCRETE_INSTRUCTION(ArgumentsElements) |
@@ -3865,12 +3866,14 @@ class HArgumentsElements final : public HTemplateInstruction<0> { |
} |
bool from_inlined() const { return from_inlined_; } |
+ bool arguments_adaptor() const { return arguments_adaptor_; } |
protected: |
bool DataEquals(HValue* other) override { return true; } |
private: |
- explicit HArgumentsElements(bool from_inlined) : from_inlined_(from_inlined) { |
+ explicit HArgumentsElements(bool from_inlined, bool arguments_adaptor = true) |
+ : from_inlined_(from_inlined), arguments_adaptor_(arguments_adaptor) { |
// The value produced by this instruction is a pointer into the stack |
// that looks as if it was a smi because of alignment. |
set_representation(Representation::Tagged()); |
@@ -3880,6 +3883,7 @@ class HArgumentsElements final : public HTemplateInstruction<0> { |
bool IsDeletable() const override { return true; } |
bool from_inlined_; |
+ bool arguments_adaptor_; |
}; |
@@ -5880,6 +5884,10 @@ class HObjectAccess final { |
Representation::Integer32()); |
} |
+ static HObjectAccess ForMapDescriptors() { |
+ return HObjectAccess(kInobject, Map::kDescriptorsOffset); |
+ } |
+ |
static HObjectAccess ForNameHashField() { |
return HObjectAccess(kInobject, |
Name::kHashFieldOffset, |