Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 27c517aa1a5be38b03e3ec186532dea8da7aeebb..50cfa69d304622744dad30a10157402adb7b5d82 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -131,6 +131,7 @@ class LChunkBuilder; |
V(IsSmiAndBranch) \ |
V(IsUndetectableAndBranch) \ |
V(LeaveInlined) \ |
+ V(LinkObjectInList) \ |
V(LoadContextSlot) \ |
V(LoadExternalArrayPointer) \ |
V(LoadFunctionPrototype) \ |
@@ -5326,6 +5327,10 @@ class HObjectAccess { |
return HObjectAccess(kInobject, AllocationSite::kTransitionInfoOffset); |
} |
+ static HObjectAccess ForAllocationSiteWeakNext() { |
+ return HObjectAccess(kInobject, AllocationSite::kWeakNextOffset); |
+ } |
+ |
static HObjectAccess ForFixedArrayLength() { |
return HObjectAccess(kArrayLengths, FixedArray::kLengthOffset); |
} |
@@ -5416,6 +5421,38 @@ class HObjectAccess { |
}; |
+class HLinkObjectInList: public HUnaryOperation { |
+ public: |
+ // There needs to be a mapping from every KnownList to an external reference |
+ enum KnownList { |
+ ALLOCATION_SITE_LIST |
+ }; |
+ |
+ HLinkObjectInList(HValue* object, HObjectAccess store_field, |
+ KnownList known_list) |
+ : HUnaryOperation(object), |
+ store_field_(store_field), |
+ known_list_(known_list) { |
+ set_representation(Representation::Tagged()); |
+ } |
+ |
+ HObjectAccess store_field() const { return store_field_; } |
+ KnownList known_list() const { return known_list_; } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) { |
+ return Representation::Tagged(); |
+ } |
+ |
+ virtual void PrintDataTo(StringStream* stream); |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(LinkObjectInList) |
+ |
+ private: |
+ HObjectAccess store_field_; |
+ KnownList known_list_; |
+}; |
+ |
+ |
class HLoadNamedField: public HTemplateInstruction<2> { |
public: |
HLoadNamedField(HValue* object, |