Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index cff5b61b527bec83db46b2efbc99d85898e0a1ae..9858552dcf0cc7c04a9607386256507181629c44 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -786,6 +786,7 @@ TYPE_CHECKER(Code, CODE_TYPE) |
TYPE_CHECKER(Oddball, ODDBALL_TYPE) |
TYPE_CHECKER(Cell, CELL_TYPE) |
TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE) |
+TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) |
TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE) |
TYPE_CHECKER(JSGeneratorObject, JS_GENERATOR_OBJECT_TYPE) |
TYPE_CHECKER(JSModule, JS_MODULE_TYPE) |
@@ -1929,6 +1930,28 @@ void PropertyCell::set_type_raw(Object* val, WriteBarrierMode ignored) { |
} |
+HeapObject* WeakCell::value() const { |
+ return HeapObject::cast(READ_FIELD(this, kValueOffset)); |
+} |
+ |
+ |
+void WeakCell::update_value_from_gc(HeapObject* val) { |
+ WRITE_FIELD(this, kValueOffset, val); |
+ WRITE_BARRIER(GetHeap(), this, kValueOffset, val); |
Erik Corry
2014/10/13 15:56:17
If we are in GC, do we need the write barrier? I
ulan
2014/10/14 10:17:22
Yes, we need write barrier for the first initializ
|
+} |
+ |
+ |
+Object* WeakCell::next() const { return READ_FIELD(this, kNextOffset); } |
+ |
+ |
+void WeakCell::set_next(Object* val, WriteBarrierMode mode) { |
+ WRITE_FIELD(this, kNextOffset, val); |
+ if (mode == UPDATE_WRITE_BARRIER) { |
+ WRITE_BARRIER(GetHeap(), this, kNextOffset, val); |
+ } |
+} |
+ |
+ |
int JSObject::GetHeaderSize() { |
InstanceType type = map()->instance_type(); |
// Check for the most common kind of JavaScript object before |
@@ -3253,6 +3276,7 @@ CAST_ACCESSOR(StringTable) |
CAST_ACCESSOR(Struct) |
CAST_ACCESSOR(Symbol) |
CAST_ACCESSOR(UnseededNumberDictionary) |
+CAST_ACCESSOR(WeakCell) |
CAST_ACCESSOR(WeakHashTable) |