| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index bfdf7b66d0b321c6d840f8a630b4bc5a1e260b99..6dc3d38365e688529fb00e6268b21ce51763cf79 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -2134,8 +2134,10 @@ void WeakCell::clear_next(Heap* heap) {
|
| bool WeakCell::next_cleared() { return next()->IsTheHole(); }
|
|
|
|
|
| -int JSObject::GetHeaderSize() {
|
| - InstanceType type = map()->instance_type();
|
| +int JSObject::GetHeaderSize() { return GetHeaderSize(map()->instance_type()); }
|
| +
|
| +
|
| +int JSObject::GetHeaderSize(InstanceType type) {
|
| // Check for the most common kind of JavaScript object before
|
| // falling into the generic switch. This speeds up the internal
|
| // field operations considerably on average.
|
| @@ -2192,15 +2194,18 @@ int JSObject::GetHeaderSize() {
|
| }
|
|
|
|
|
| -int JSObject::GetInternalFieldCount() {
|
| - DCHECK(1 << kPointerSizeLog2 == kPointerSize);
|
| - // Make sure to adjust for the number of in-object properties. These
|
| - // properties do contribute to the size, but are not internal fields.
|
| - return ((Size() - GetHeaderSize()) >> kPointerSizeLog2) -
|
| - map()->GetInObjectProperties();
|
| +int JSObject::GetInternalFieldCount(Map* map) {
|
| + int instance_size = map->instance_size();
|
| + if (instance_size == kVariableSizeSentinel) return 0;
|
| + InstanceType instance_type = map->instance_type();
|
| + return ((instance_size - GetHeaderSize(instance_type)) >> kPointerSizeLog2) -
|
| + map->GetInObjectProperties();
|
| }
|
|
|
|
|
| +int JSObject::GetInternalFieldCount() { return GetInternalFieldCount(map()); }
|
| +
|
| +
|
| int JSObject::GetInternalFieldOffset(int index) {
|
| DCHECK(index < GetInternalFieldCount() && index >= 0);
|
| return GetHeaderSize() + (kPointerSize * index);
|
| @@ -5624,6 +5629,12 @@ void Map::SetConstructor(Object* constructor, WriteBarrierMode mode) {
|
| }
|
|
|
|
|
| +Handle<Map> Map::CopyInitialMap(Handle<Map> map) {
|
| + return CopyInitialMap(map, map->instance_size(), map->GetInObjectProperties(),
|
| + map->unused_property_fields());
|
| +}
|
| +
|
| +
|
| ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset)
|
| ACCESSORS(JSFunction, literals_or_bindings, FixedArray, kLiteralsOffset)
|
| ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset)
|
|
|