| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
| 6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
| 7 | 7 |
| 8 #include <iosfwd> | 8 #include <iosfwd> |
| 9 | 9 |
| 10 #include "src/assert-scope.h" | 10 #include "src/assert-scope.h" |
| (...skipping 6286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6297 | 6297 |
| 6298 | 6298 |
| 6299 // Container for metadata stored on each prototype map. | 6299 // Container for metadata stored on each prototype map. |
| 6300 class PrototypeInfo : public Struct { | 6300 class PrototypeInfo : public Struct { |
| 6301 public: | 6301 public: |
| 6302 static const int UNREGISTERED = -1; | 6302 static const int UNREGISTERED = -1; |
| 6303 | 6303 |
| 6304 // [prototype_users]: WeakFixedArray containing maps using this prototype, | 6304 // [prototype_users]: WeakFixedArray containing maps using this prototype, |
| 6305 // or Smi(0) if uninitialized. | 6305 // or Smi(0) if uninitialized. |
| 6306 DECL_ACCESSORS(prototype_users, Object) | 6306 DECL_ACCESSORS(prototype_users, Object) |
| 6307 |
| 6308 // [object_create_map]: A field caching the map for Object.create(prototype). |
| 6309 static inline void SetObjectCreateMap(Handle<PrototypeInfo> info, |
| 6310 Handle<Map> map); |
| 6311 inline Map* ObjectCreateMap(); |
| 6312 inline bool HasObjectCreateMap(); |
| 6313 |
| 6307 // [registry_slot]: Slot in prototype's user registry where this user | 6314 // [registry_slot]: Slot in prototype's user registry where this user |
| 6308 // is stored. Returns UNREGISTERED if this prototype has not been registered. | 6315 // is stored. Returns UNREGISTERED if this prototype has not been registered. |
| 6309 inline int registry_slot() const; | 6316 inline int registry_slot() const; |
| 6310 inline void set_registry_slot(int slot); | 6317 inline void set_registry_slot(int slot); |
| 6311 // [validity_cell]: Cell containing the validity bit for prototype chains | 6318 // [validity_cell]: Cell containing the validity bit for prototype chains |
| 6312 // going through this object, or Smi(0) if uninitialized. | 6319 // going through this object, or Smi(0) if uninitialized. |
| 6313 // When a prototype object changes its map, then both its own validity cell | 6320 // When a prototype object changes its map, then both its own validity cell |
| 6314 // and those of all "downstream" prototypes are invalidated; handlers for a | 6321 // and those of all "downstream" prototypes are invalidated; handlers for a |
| 6315 // given receiver embed the currently valid cell for that receiver's prototype | 6322 // given receiver embed the currently valid cell for that receiver's prototype |
| 6316 // during their compilation and check it on execution. | 6323 // during their compilation and check it on execution. |
| 6317 DECL_ACCESSORS(validity_cell, Object) | 6324 DECL_ACCESSORS(validity_cell, Object) |
| 6318 // [bit_field] | 6325 // [bit_field] |
| 6319 inline int bit_field() const; | 6326 inline int bit_field() const; |
| 6320 inline void set_bit_field(int bit_field); | 6327 inline void set_bit_field(int bit_field); |
| 6321 | 6328 |
| 6322 DECL_BOOLEAN_ACCESSORS(should_be_fast_map) | 6329 DECL_BOOLEAN_ACCESSORS(should_be_fast_map) |
| 6323 | 6330 |
| 6324 DECLARE_CAST(PrototypeInfo) | 6331 DECLARE_CAST(PrototypeInfo) |
| 6325 | 6332 |
| 6326 // Dispatched behavior. | 6333 // Dispatched behavior. |
| 6327 DECLARE_PRINTER(PrototypeInfo) | 6334 DECLARE_PRINTER(PrototypeInfo) |
| 6328 DECLARE_VERIFIER(PrototypeInfo) | 6335 DECLARE_VERIFIER(PrototypeInfo) |
| 6329 | 6336 |
| 6330 static const int kPrototypeUsersOffset = HeapObject::kHeaderSize; | 6337 static const int kPrototypeUsersOffset = HeapObject::kHeaderSize; |
| 6331 static const int kRegistrySlotOffset = kPrototypeUsersOffset + kPointerSize; | 6338 static const int kRegistrySlotOffset = kPrototypeUsersOffset + kPointerSize; |
| 6332 static const int kValidityCellOffset = kRegistrySlotOffset + kPointerSize; | 6339 static const int kValidityCellOffset = kRegistrySlotOffset + kPointerSize; |
| 6333 static const int kBitFieldOffset = kValidityCellOffset + kPointerSize; | 6340 static const int kObjectCreateMap = kValidityCellOffset + kPointerSize; |
| 6341 static const int kBitFieldOffset = kObjectCreateMap + kPointerSize; |
| 6334 static const int kSize = kBitFieldOffset + kPointerSize; | 6342 static const int kSize = kBitFieldOffset + kPointerSize; |
| 6335 | 6343 |
| 6336 // Bit field usage. | 6344 // Bit field usage. |
| 6337 static const int kShouldBeFastBit = 0; | 6345 static const int kShouldBeFastBit = 0; |
| 6338 | 6346 |
| 6339 private: | 6347 private: |
| 6348 DECL_ACCESSORS(object_create_map, Object) |
| 6349 |
| 6340 DISALLOW_IMPLICIT_CONSTRUCTORS(PrototypeInfo); | 6350 DISALLOW_IMPLICIT_CONSTRUCTORS(PrototypeInfo); |
| 6341 }; | 6351 }; |
| 6342 | 6352 |
| 6343 | 6353 |
| 6344 // Pair used to store both a ScopeInfo and an extension object in the extension | 6354 // Pair used to store both a ScopeInfo and an extension object in the extension |
| 6345 // slot of a block context. Needed in the rare case where a declaration block | 6355 // slot of a block context. Needed in the rare case where a declaration block |
| 6346 // scope (a "varblock" as used to desugar parameter destructuring) also contains | 6356 // scope (a "varblock" as used to desugar parameter destructuring) also contains |
| 6347 // a sloppy direct eval. (In no other case both are needed at the same time.) | 6357 // a sloppy direct eval. (In no other case both are needed at the same time.) |
| 6348 class SloppyBlockWithEvalContextExtension : public Struct { | 6358 class SloppyBlockWithEvalContextExtension : public Struct { |
| 6349 public: | 6359 public: |
| (...skipping 4465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10815 } | 10825 } |
| 10816 return value; | 10826 return value; |
| 10817 } | 10827 } |
| 10818 }; | 10828 }; |
| 10819 | 10829 |
| 10820 | 10830 |
| 10821 } // NOLINT, false-positive due to second-order macros. | 10831 } // NOLINT, false-positive due to second-order macros. |
| 10822 } // NOLINT, false-positive due to second-order macros. | 10832 } // NOLINT, false-positive due to second-order macros. |
| 10823 | 10833 |
| 10824 #endif // V8_OBJECTS_H_ | 10834 #endif // V8_OBJECTS_H_ |
| OLD | NEW |