OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 // - JSMap | 55 // - JSMap |
56 // - JSSetIterator | 56 // - JSSetIterator |
57 // - JSMapIterator | 57 // - JSMapIterator |
58 // - JSWeakCollection | 58 // - JSWeakCollection |
59 // - JSWeakMap | 59 // - JSWeakMap |
60 // - JSWeakSet | 60 // - JSWeakSet |
61 // - JSRegExp | 61 // - JSRegExp |
62 // - JSFunction | 62 // - JSFunction |
63 // - JSGeneratorObject | 63 // - JSGeneratorObject |
64 // - JSModule | 64 // - JSModule |
65 // - GlobalObject | 65 // - JSGlobalObject |
66 // - JSGlobalObject | |
67 // - JSGlobalProxy | 66 // - JSGlobalProxy |
68 // - JSValue | 67 // - JSValue |
69 // - JSDate | 68 // - JSDate |
70 // - JSMessageObject | 69 // - JSMessageObject |
71 // - JSProxy | 70 // - JSProxy |
72 // - JSFunctionProxy | 71 // - JSFunctionProxy |
73 // - FixedArrayBase | 72 // - FixedArrayBase |
74 // - ByteArray | 73 // - ByteArray |
75 // - BytecodeArray | 74 // - BytecodeArray |
76 // - FixedArray | 75 // - FixedArray |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 | 841 |
843 class AccessorPair; | 842 class AccessorPair; |
844 class AllocationSite; | 843 class AllocationSite; |
845 class AllocationSiteCreationContext; | 844 class AllocationSiteCreationContext; |
846 class AllocationSiteUsageContext; | 845 class AllocationSiteUsageContext; |
847 class Cell; | 846 class Cell; |
848 class ConsString; | 847 class ConsString; |
849 class ElementsAccessor; | 848 class ElementsAccessor; |
850 class FixedArrayBase; | 849 class FixedArrayBase; |
851 class FunctionLiteral; | 850 class FunctionLiteral; |
852 class GlobalObject; | 851 class JSGlobalObject; |
853 class KeyAccumulator; | 852 class KeyAccumulator; |
854 class LayoutDescriptor; | 853 class LayoutDescriptor; |
855 class LiteralsArray; | 854 class LiteralsArray; |
856 class LookupIterator; | 855 class LookupIterator; |
857 class ObjectHashTable; | 856 class ObjectHashTable; |
858 class ObjectVisitor; | 857 class ObjectVisitor; |
859 class PropertyCell; | 858 class PropertyCell; |
860 class PropertyDescriptor; | 859 class PropertyDescriptor; |
861 class SafepointEntry; | 860 class SafepointEntry; |
862 class SharedFunctionInfo; | 861 class SharedFunctionInfo; |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 V(JSRegExp) \ | 985 V(JSRegExp) \ |
987 V(HashTable) \ | 986 V(HashTable) \ |
988 V(Dictionary) \ | 987 V(Dictionary) \ |
989 V(StringTable) \ | 988 V(StringTable) \ |
990 V(NormalizedMapCache) \ | 989 V(NormalizedMapCache) \ |
991 V(CompilationCacheTable) \ | 990 V(CompilationCacheTable) \ |
992 V(CodeCacheHashTable) \ | 991 V(CodeCacheHashTable) \ |
993 V(PolymorphicCodeCacheHashTable) \ | 992 V(PolymorphicCodeCacheHashTable) \ |
994 V(MapCache) \ | 993 V(MapCache) \ |
995 V(Primitive) \ | 994 V(Primitive) \ |
996 V(GlobalObject) \ | |
997 V(JSGlobalObject) \ | 995 V(JSGlobalObject) \ |
998 V(JSGlobalProxy) \ | 996 V(JSGlobalProxy) \ |
999 V(UndetectableObject) \ | 997 V(UndetectableObject) \ |
1000 V(AccessCheckNeeded) \ | 998 V(AccessCheckNeeded) \ |
1001 V(Cell) \ | 999 V(Cell) \ |
1002 V(PropertyCell) \ | 1000 V(PropertyCell) \ |
1003 V(WeakCell) \ | 1001 V(WeakCell) \ |
1004 V(ObjectHashTable) \ | 1002 V(ObjectHashTable) \ |
1005 V(WeakHashTable) \ | 1003 V(WeakHashTable) \ |
1006 V(OrderedHashTable) | 1004 V(OrderedHashTable) |
(...skipping 4921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5928 | 5926 |
5929 inline bool IsPrimitiveMap(); | 5927 inline bool IsPrimitiveMap(); |
5930 inline bool IsJSObjectMap(); | 5928 inline bool IsJSObjectMap(); |
5931 inline bool IsJSArrayMap(); | 5929 inline bool IsJSArrayMap(); |
5932 inline bool IsJSFunctionMap(); | 5930 inline bool IsJSFunctionMap(); |
5933 inline bool IsStringMap(); | 5931 inline bool IsStringMap(); |
5934 inline bool IsJSProxyMap(); | 5932 inline bool IsJSProxyMap(); |
5935 inline bool IsJSGlobalProxyMap(); | 5933 inline bool IsJSGlobalProxyMap(); |
5936 inline bool IsJSGlobalObjectMap(); | 5934 inline bool IsJSGlobalObjectMap(); |
5937 inline bool IsJSTypedArrayMap(); | 5935 inline bool IsJSTypedArrayMap(); |
5938 inline bool IsGlobalObjectMap(); | |
5939 | 5936 |
5940 inline bool CanOmitMapChecks(); | 5937 inline bool CanOmitMapChecks(); |
5941 | 5938 |
5942 static void AddDependentCode(Handle<Map> map, | 5939 static void AddDependentCode(Handle<Map> map, |
5943 DependentCode::DependencyGroup group, | 5940 DependentCode::DependencyGroup group, |
5944 Handle<Code> code); | 5941 Handle<Code> code); |
5945 | 5942 |
5946 bool IsMapInArrayPrototypeChain(); | 5943 bool IsMapInArrayPrototypeChain(); |
5947 | 5944 |
5948 static Handle<WeakCell> WeakCellForMap(Handle<Map> map); | 5945 static Handle<WeakCell> WeakCellForMap(Handle<Map> map); |
(...skipping 1485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7434 public: | 7431 public: |
7435 // [native_context]: the owner native context of this global proxy object. | 7432 // [native_context]: the owner native context of this global proxy object. |
7436 // It is null value if this object is not used by any context. | 7433 // It is null value if this object is not used by any context. |
7437 DECL_ACCESSORS(native_context, Object) | 7434 DECL_ACCESSORS(native_context, Object) |
7438 | 7435 |
7439 // [hash]: The hash code property (undefined if not initialized yet). | 7436 // [hash]: The hash code property (undefined if not initialized yet). |
7440 DECL_ACCESSORS(hash, Object) | 7437 DECL_ACCESSORS(hash, Object) |
7441 | 7438 |
7442 DECLARE_CAST(JSGlobalProxy) | 7439 DECLARE_CAST(JSGlobalProxy) |
7443 | 7440 |
7444 inline bool IsDetachedFrom(GlobalObject* global) const; | 7441 inline bool IsDetachedFrom(JSGlobalObject* global) const; |
7445 | 7442 |
7446 // Dispatched behavior. | 7443 // Dispatched behavior. |
7447 DECLARE_PRINTER(JSGlobalProxy) | 7444 DECLARE_PRINTER(JSGlobalProxy) |
7448 DECLARE_VERIFIER(JSGlobalProxy) | 7445 DECLARE_VERIFIER(JSGlobalProxy) |
7449 | 7446 |
7450 // Layout description. | 7447 // Layout description. |
7451 static const int kNativeContextOffset = JSObject::kHeaderSize; | 7448 static const int kNativeContextOffset = JSObject::kHeaderSize; |
7452 static const int kHashOffset = kNativeContextOffset + kPointerSize; | 7449 static const int kHashOffset = kNativeContextOffset + kPointerSize; |
7453 static const int kSize = kHashOffset + kPointerSize; | 7450 static const int kSize = kHashOffset + kPointerSize; |
7454 | 7451 |
7455 private: | 7452 private: |
7456 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalProxy); | 7453 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalProxy); |
7457 }; | 7454 }; |
7458 | 7455 |
7459 | 7456 |
7460 // Common super class for JavaScript global objects and the special | 7457 // JavaScript global object. |
7461 // builtins global objects. | 7458 class JSGlobalObject : public JSObject { |
7462 class GlobalObject: public JSObject { | |
7463 public: | 7459 public: |
7464 // [native context]: the natives corresponding to this global object. | 7460 // [native context]: the natives corresponding to this global object. |
7465 DECL_ACCESSORS(native_context, Context) | 7461 DECL_ACCESSORS(native_context, Context) |
7466 | 7462 |
7467 // [global proxy]: the global proxy object of the context | 7463 // [global proxy]: the global proxy object of the context |
7468 DECL_ACCESSORS(global_proxy, JSObject) | 7464 DECL_ACCESSORS(global_proxy, JSObject) |
7469 | 7465 |
7470 DECLARE_CAST(GlobalObject) | |
7471 | 7466 |
7472 static void InvalidatePropertyCell(Handle<GlobalObject> object, | 7467 static void InvalidatePropertyCell(Handle<JSGlobalObject> object, |
7473 Handle<Name> name); | 7468 Handle<Name> name); |
7474 // Ensure that the global object has a cell for the given property name. | 7469 // Ensure that the global object has a cell for the given property name. |
7475 static Handle<PropertyCell> EnsurePropertyCell(Handle<GlobalObject> global, | 7470 static Handle<PropertyCell> EnsurePropertyCell(Handle<JSGlobalObject> global, |
7476 Handle<Name> name); | 7471 Handle<Name> name); |
7477 | 7472 |
7478 // Layout description. | |
7479 static const int kNativeContextOffset = JSObject::kHeaderSize; | |
7480 static const int kGlobalProxyOffset = kNativeContextOffset + kPointerSize; | |
7481 static const int kHeaderSize = kGlobalProxyOffset + kPointerSize; | |
7482 | |
7483 private: | |
7484 DISALLOW_IMPLICIT_CONSTRUCTORS(GlobalObject); | |
7485 }; | |
7486 | |
7487 | |
7488 // JavaScript global object. | |
7489 class JSGlobalObject: public GlobalObject { | |
7490 public: | |
7491 DECLARE_CAST(JSGlobalObject) | 7473 DECLARE_CAST(JSGlobalObject) |
7492 | 7474 |
7493 inline bool IsDetached(); | 7475 inline bool IsDetached(); |
7494 | 7476 |
7495 // Dispatched behavior. | 7477 // Dispatched behavior. |
7496 DECLARE_PRINTER(JSGlobalObject) | 7478 DECLARE_PRINTER(JSGlobalObject) |
7497 DECLARE_VERIFIER(JSGlobalObject) | 7479 DECLARE_VERIFIER(JSGlobalObject) |
7498 | 7480 |
7499 // Layout description. | 7481 // Layout description. |
7500 static const int kSize = GlobalObject::kHeaderSize; | 7482 static const int kNativeContextOffset = JSObject::kHeaderSize; |
| 7483 static const int kGlobalProxyOffset = kNativeContextOffset + kPointerSize; |
| 7484 static const int kHeaderSize = kGlobalProxyOffset + kPointerSize; |
| 7485 static const int kSize = kHeaderSize; |
7501 | 7486 |
7502 private: | 7487 private: |
7503 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalObject); | 7488 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalObject); |
7504 }; | 7489 }; |
7505 | 7490 |
7506 | 7491 |
7507 // Representation for JS Wrapper objects, String, Number, Boolean, etc. | 7492 // Representation for JS Wrapper objects, String, Number, Boolean, etc. |
7508 class JSValue: public JSObject { | 7493 class JSValue: public JSObject { |
7509 public: | 7494 public: |
7510 // [value]: the object being wrapped. | 7495 // [value]: the object being wrapped. |
(...skipping 3305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10816 // (elements + properties) in the current level. | 10801 // (elements + properties) in the current level. |
10817 int levelLength_ = 0; | 10802 int levelLength_ = 0; |
10818 | 10803 |
10819 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); | 10804 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); |
10820 }; | 10805 }; |
10821 | 10806 |
10822 } // NOLINT, false-positive due to second-order macros. | 10807 } // NOLINT, false-positive due to second-order macros. |
10823 } // NOLINT, false-positive due to second-order macros. | 10808 } // NOLINT, false-positive due to second-order macros. |
10824 | 10809 |
10825 #endif // V8_OBJECTS_H_ | 10810 #endif // V8_OBJECTS_H_ |
OLD | NEW |