Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 41fe7b155136aa3759f679181bcdf982b1ea11ff..e9676d4bf6714d3b7024d3588c5f2bf037c0d0d4 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -4627,6 +4627,34 @@ void Code::set_marked_for_deoptimization(bool flag) { |
} |
+bool Code::is_weak_stub() { |
+ return can_be_weak_stub() && WeakStubField::decode( |
+ READ_UINT32_FIELD(this, kKindSpecificFlags1Offset)); |
+} |
+ |
+ |
+void Code::mark_as_weak_stub() { |
+ ASSERT(can_be_weak_stub()); |
+ int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); |
+ int updated = WeakStubField::update(previous, true); |
+ WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); |
+} |
+ |
+ |
+bool Code::is_invalidated_weak_stub() { |
+ return is_weak_stub() && InvalidatedWeakStubField::decode( |
+ READ_UINT32_FIELD(this, kKindSpecificFlags1Offset)); |
+} |
+ |
+ |
+void Code::mark_as_invalidated_weak_stub() { |
+ ASSERT(is_inline_cache_stub()); |
+ int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); |
+ int updated = InvalidatedWeakStubField::update(previous, true); |
+ WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); |
+} |
+ |
+ |
bool Code::is_inline_cache_stub() { |
Kind kind = this->kind(); |
switch (kind) { |
@@ -4771,6 +4799,14 @@ class Code::FindAndReplacePattern { |
}; |
+bool Code::IsWeakObjectInIC(Object* object) { |
+ ASSERT(can_be_weak_stub()); |
+ return object->IsMap() && Map::cast(object)->CanTransition() && |
+ FLAG_collect_maps && |
+ FLAG_weak_embedded_maps_in_ic; |
+} |
+ |
+ |
Object* Map::prototype() { |
return READ_FIELD(this, kPrototypeOffset); |
} |
@@ -5021,6 +5057,7 @@ HeapObject* Map::UncheckedPrototypeTransitions() { |
ACCESSORS(Map, code_cache, Object, kCodeCacheOffset) |
ACCESSORS(Map, dependent_code, DependentCode, kDependentCodeOffset) |
+ACCESSORS(Map, dependent_ic, Object, kDependentICOffset) |
ACCESSORS(Map, constructor, Object, kConstructorOffset) |
ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) |