| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 98d96a8f28ac0747517e1b407753ed869a817ba0..cfd4e62a2339f4aa955f01dceb8d192532d20ad2 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -707,6 +707,7 @@ TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE)
|
| TYPE_CHECKER(Map, MAP_TYPE)
|
| TYPE_CHECKER(FixedArray, FIXED_ARRAY_TYPE)
|
| TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE)
|
| +TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE)
|
| TYPE_CHECKER(ConstantPoolArray, CONSTANT_POOL_ARRAY_TYPE)
|
|
|
|
|
| @@ -2368,6 +2369,39 @@ void FixedDoubleArray::FillWithHoles(int from, int to) {
|
| }
|
|
|
|
|
| +Object* WeakFixedArray::get(int index) const {
|
| + Object* raw = FixedArray::cast(this)->get(index + kFirstIndex);
|
| + if (raw->IsSmi()) return raw;
|
| + return WeakCell::cast(raw)->value();
|
| +}
|
| +
|
| +
|
| +bool WeakFixedArray::IsEmptySlot(int index) const {
|
| + DCHECK(index < length());
|
| + return get(index)->IsSmi();
|
| +}
|
| +
|
| +
|
| +void WeakFixedArray::clear(int index) {
|
| + FixedArray::cast(this)->set(index + kFirstIndex, Smi::FromInt(0));
|
| +}
|
| +
|
| +
|
| +int WeakFixedArray::length() const {
|
| + return FixedArray::cast(this)->length() - kFirstIndex;
|
| +}
|
| +
|
| +
|
| +int WeakFixedArray::last_used_index() const {
|
| + return Smi::cast(FixedArray::cast(this)->get(kLastUsedIndexIndex))->value();
|
| +}
|
| +
|
| +
|
| +void WeakFixedArray::set_last_used_index(int index) {
|
| + FixedArray::cast(this)->set(kLastUsedIndexIndex, Smi::FromInt(index));
|
| +}
|
| +
|
| +
|
| void ConstantPoolArray::NumberOfEntries::increment(Type type) {
|
| DCHECK(type < NUMBER_OF_TYPES);
|
| element_counts_[type]++;
|
| @@ -3362,6 +3396,7 @@ CAST_ACCESSOR(Struct)
|
| CAST_ACCESSOR(Symbol)
|
| CAST_ACCESSOR(UnseededNumberDictionary)
|
| CAST_ACCESSOR(WeakCell)
|
| +CAST_ACCESSOR(WeakFixedArray)
|
| CAST_ACCESSOR(WeakHashTable)
|
|
|
|
|
|
|