Chromium Code Reviews| 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) |