| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 287f6bb2e1db6c644564602ef3f551d33a8bb877..168fe71ac458f24ea9f8b35f50ed2522737e68c4 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -2170,6 +2170,8 @@ class JSObject: public JSReceiver {
|
| static void OptimizeAsPrototype(Handle<JSObject> object,
|
| PrototypeOptimizationMode mode);
|
| static void ReoptimizeIfPrototype(Handle<JSObject> object);
|
| + static void MakePrototypesFast(Handle<Object> receiver,
|
| + WhereToStart where_to_start, Isolate* isolate);
|
| static void LazyRegisterPrototypeUser(Handle<Map> user, Isolate* isolate);
|
| static void UpdatePrototypeUserRegistration(Handle<Map> old_map,
|
| Handle<Map> new_map,
|
| @@ -5747,6 +5749,9 @@ class Map: public HeapObject {
|
| Handle<JSObject> prototype, Isolate* isolate);
|
| static Handle<PrototypeInfo> GetOrCreatePrototypeInfo(
|
| Handle<Map> prototype_map, Isolate* isolate);
|
| + inline bool should_be_fast_prototype_map() const;
|
| + static void SetShouldBeFastPrototypeMap(Handle<Map> map, bool value,
|
| + Isolate* isolate);
|
|
|
| // [prototype chain validity cell]: Associated with a prototype object,
|
| // stored in that object's map's PrototypeInfo, indicates that prototype
|
| @@ -6314,6 +6319,11 @@ class PrototypeInfo : public Struct {
|
| // given receiver embed the currently valid cell for that receiver's prototype
|
| // during their compilation and check it on execution.
|
| DECL_ACCESSORS(validity_cell, Object)
|
| + // [bit_field]
|
| + inline int bit_field() const;
|
| + inline void set_bit_field(int bit_field);
|
| +
|
| + DECL_BOOLEAN_ACCESSORS(should_be_fast_map)
|
|
|
| DECLARE_CAST(PrototypeInfo)
|
|
|
| @@ -6324,8 +6334,11 @@ class PrototypeInfo : public Struct {
|
| static const int kPrototypeUsersOffset = HeapObject::kHeaderSize;
|
| static const int kRegistrySlotOffset = kPrototypeUsersOffset + kPointerSize;
|
| static const int kValidityCellOffset = kRegistrySlotOffset + kPointerSize;
|
| - static const int kConstructorNameOffset = kValidityCellOffset + kPointerSize;
|
| - static const int kSize = kConstructorNameOffset + kPointerSize;
|
| + static const int kBitFieldOffset = kValidityCellOffset + kPointerSize;
|
| + static const int kSize = kBitFieldOffset + kPointerSize;
|
| +
|
| + // Bit field usage.
|
| + static const int kShouldBeFastBit = 0;
|
|
|
| private:
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(PrototypeInfo);
|
|
|