Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index a4580922d0f9c8816c0df059bfad13edc89b66d6..43d3d1a0c08cd3792a09cfd9e5ab8e8739b3234e 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -6048,12 +6048,17 @@ class HObjectAccess V8_FINAL { |
}; |
-class HLoadNamedField V8_FINAL : public HTemplateInstruction<1> { |
+class HLoadNamedField V8_FINAL : public HTemplateInstruction<2> { |
public: |
- DECLARE_INSTRUCTION_FACTORY_P2(HLoadNamedField, HValue*, HObjectAccess); |
+ DECLARE_INSTRUCTION_FACTORY_P3(HLoadNamedField, HValue*, HValue*, |
+ HObjectAccess); |
HValue* object() { return OperandAt(0); } |
- bool HasTypeCheck() { return object()->IsCheckMaps(); } |
+ HValue* dependency() { |
+ ASSERT(HasDependency()); |
+ return OperandAt(1); |
+ } |
+ bool HasDependency() const { return OperandAt(0) != OperandAt(1); } |
HObjectAccess access() const { return access_; } |
Representation field_representation() const { |
return access_.representation(); |
@@ -6082,9 +6087,12 @@ class HLoadNamedField V8_FINAL : public HTemplateInstruction<1> { |
} |
private: |
- HLoadNamedField(HValue* object, HObjectAccess access) : access_(access) { |
+ HLoadNamedField(HValue* object, |
+ HValue* dependency, |
+ HObjectAccess access) : access_(access) { |
ASSERT(object != NULL); |
SetOperandAt(0, object); |
+ SetOperandAt(1, dependency != NULL ? dependency : object); |
Representation representation = access.representation(); |
if (representation.IsInteger8() || |