OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 // - SeqAsciiString | 83 // - SeqAsciiString |
84 // - SeqTwoByteString | 84 // - SeqTwoByteString |
85 // - ConsString | 85 // - ConsString |
86 // - ExternalString | 86 // - ExternalString |
87 // - ExternalAsciiString | 87 // - ExternalAsciiString |
88 // - ExternalTwoByteString | 88 // - ExternalTwoByteString |
89 // - HeapNumber | 89 // - HeapNumber |
90 // - Code | 90 // - Code |
91 // - Map | 91 // - Map |
92 // - Oddball | 92 // - Oddball |
| 93 // - JSProxy |
93 // - Proxy | 94 // - Proxy |
94 // - SharedFunctionInfo | 95 // - SharedFunctionInfo |
95 // - Struct | 96 // - Struct |
96 // - AccessorInfo | 97 // - AccessorInfo |
97 // - AccessCheckInfo | 98 // - AccessCheckInfo |
98 // - InterceptorInfo | 99 // - InterceptorInfo |
99 // - CallHandlerInfo | 100 // - CallHandlerInfo |
100 // - TemplateInfo | 101 // - TemplateInfo |
101 // - FunctionTemplateInfo | 102 // - FunctionTemplateInfo |
102 // - ObjectTemplateInfo | 103 // - ObjectTemplateInfo |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 V(EXTERNAL_STRING_WITH_ASCII_DATA_TYPE) \ | 281 V(EXTERNAL_STRING_WITH_ASCII_DATA_TYPE) \ |
281 V(EXTERNAL_ASCII_STRING_TYPE) \ | 282 V(EXTERNAL_ASCII_STRING_TYPE) \ |
282 V(PRIVATE_EXTERNAL_ASCII_STRING_TYPE) \ | 283 V(PRIVATE_EXTERNAL_ASCII_STRING_TYPE) \ |
283 \ | 284 \ |
284 V(MAP_TYPE) \ | 285 V(MAP_TYPE) \ |
285 V(CODE_TYPE) \ | 286 V(CODE_TYPE) \ |
286 V(ODDBALL_TYPE) \ | 287 V(ODDBALL_TYPE) \ |
287 V(JS_GLOBAL_PROPERTY_CELL_TYPE) \ | 288 V(JS_GLOBAL_PROPERTY_CELL_TYPE) \ |
288 \ | 289 \ |
289 V(HEAP_NUMBER_TYPE) \ | 290 V(HEAP_NUMBER_TYPE) \ |
| 291 V(JS_PROXY_TYPE) \ |
290 V(PROXY_TYPE) \ | 292 V(PROXY_TYPE) \ |
291 V(BYTE_ARRAY_TYPE) \ | 293 V(BYTE_ARRAY_TYPE) \ |
292 /* Note: the order of these external array */ \ | 294 /* Note: the order of these external array */ \ |
293 /* types is relied upon in */ \ | 295 /* types is relied upon in */ \ |
294 /* Object::IsExternalArray(). */ \ | 296 /* Object::IsExternalArray(). */ \ |
295 V(EXTERNAL_BYTE_ARRAY_TYPE) \ | 297 V(EXTERNAL_BYTE_ARRAY_TYPE) \ |
296 V(EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) \ | 298 V(EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE) \ |
297 V(EXTERNAL_SHORT_ARRAY_TYPE) \ | 299 V(EXTERNAL_SHORT_ARRAY_TYPE) \ |
298 V(EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) \ | 300 V(EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE) \ |
299 V(EXTERNAL_INT_ARRAY_TYPE) \ | 301 V(EXTERNAL_INT_ARRAY_TYPE) \ |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 // Objects allocated in their own spaces (never in new space). | 510 // Objects allocated in their own spaces (never in new space). |
509 MAP_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE | 511 MAP_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE |
510 CODE_TYPE, | 512 CODE_TYPE, |
511 ODDBALL_TYPE, | 513 ODDBALL_TYPE, |
512 JS_GLOBAL_PROPERTY_CELL_TYPE, | 514 JS_GLOBAL_PROPERTY_CELL_TYPE, |
513 | 515 |
514 // "Data", objects that cannot contain non-map-word pointers to heap | 516 // "Data", objects that cannot contain non-map-word pointers to heap |
515 // objects. | 517 // objects. |
516 HEAP_NUMBER_TYPE, | 518 HEAP_NUMBER_TYPE, |
517 PROXY_TYPE, | 519 PROXY_TYPE, |
| 520 JS_PROXY_TYPE, |
518 BYTE_ARRAY_TYPE, | 521 BYTE_ARRAY_TYPE, |
519 EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE | 522 EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE |
520 EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, | 523 EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, |
521 EXTERNAL_SHORT_ARRAY_TYPE, | 524 EXTERNAL_SHORT_ARRAY_TYPE, |
522 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE, | 525 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE, |
523 EXTERNAL_INT_ARRAY_TYPE, | 526 EXTERNAL_INT_ARRAY_TYPE, |
524 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE, | 527 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE, |
525 EXTERNAL_FLOAT_ARRAY_TYPE, | 528 EXTERNAL_FLOAT_ARRAY_TYPE, |
526 EXTERNAL_DOUBLE_ARRAY_TYPE, | 529 EXTERNAL_DOUBLE_ARRAY_TYPE, |
527 EXTERNAL_PIXEL_ARRAY_TYPE, // LAST_EXTERNAL_ARRAY_TYPE | 530 EXTERNAL_PIXEL_ARRAY_TYPE, // LAST_EXTERNAL_ARRAY_TYPE |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 V(JSFunction) \ | 716 V(JSFunction) \ |
714 V(Code) \ | 717 V(Code) \ |
715 V(Oddball) \ | 718 V(Oddball) \ |
716 V(SharedFunctionInfo) \ | 719 V(SharedFunctionInfo) \ |
717 V(JSValue) \ | 720 V(JSValue) \ |
718 V(JSMessageObject) \ | 721 V(JSMessageObject) \ |
719 V(StringWrapper) \ | 722 V(StringWrapper) \ |
720 V(Proxy) \ | 723 V(Proxy) \ |
721 V(Boolean) \ | 724 V(Boolean) \ |
722 V(JSArray) \ | 725 V(JSArray) \ |
| 726 V(JSProxy) \ |
723 V(JSRegExp) \ | 727 V(JSRegExp) \ |
724 V(HashTable) \ | 728 V(HashTable) \ |
725 V(Dictionary) \ | 729 V(Dictionary) \ |
726 V(SymbolTable) \ | 730 V(SymbolTable) \ |
727 V(JSFunctionResultCache) \ | 731 V(JSFunctionResultCache) \ |
728 V(NormalizedMapCache) \ | 732 V(NormalizedMapCache) \ |
729 V(CompilationCacheTable) \ | 733 V(CompilationCacheTable) \ |
730 V(CodeCacheHashTable) \ | 734 V(CodeCacheHashTable) \ |
731 V(MapCache) \ | 735 V(MapCache) \ |
732 V(Primitive) \ | 736 V(Primitive) \ |
(...skipping 3207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3940 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, | 3944 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, |
3941 kPointerFieldsEndOffset, | 3945 kPointerFieldsEndOffset, |
3942 kSize> BodyDescriptor; | 3946 kSize> BodyDescriptor; |
3943 | 3947 |
3944 private: | 3948 private: |
3945 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); | 3949 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); |
3946 }; | 3950 }; |
3947 | 3951 |
3948 | 3952 |
3949 // An abstract superclass, a marker class really, for simple structure classes. | 3953 // An abstract superclass, a marker class really, for simple structure classes. |
3950 // It doesn't carry much functionality but allows struct classes to me | 3954 // It doesn't carry much functionality but allows struct classes to be |
3951 // identified in the type system. | 3955 // identified in the type system. |
3952 class Struct: public HeapObject { | 3956 class Struct: public HeapObject { |
3953 public: | 3957 public: |
3954 inline void InitializeBody(int object_size); | 3958 inline void InitializeBody(int object_size); |
3955 static inline Struct* cast(Object* that); | 3959 static inline Struct* cast(Object* that); |
3956 }; | 3960 }; |
3957 | 3961 |
3958 | 3962 |
3959 // Script describes a script which has been added to the VM. | 3963 // Script describes a script which has been added to the VM. |
3960 class Script: public Struct { | 3964 class Script: public Struct { |
(...skipping 2109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6070 | 6074 |
6071 // Returns the isolate/heap this cell object belongs to. | 6075 // Returns the isolate/heap this cell object belongs to. |
6072 inline Isolate* isolate(); | 6076 inline Isolate* isolate(); |
6073 inline Heap* heap(); | 6077 inline Heap* heap(); |
6074 | 6078 |
6075 private: | 6079 private: |
6076 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); | 6080 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); |
6077 }; | 6081 }; |
6078 | 6082 |
6079 | 6083 |
| 6084 // The JSProxy describes EcmaScript Harmony proxies |
| 6085 class JSProxy: public HeapObject { |
| 6086 public: |
| 6087 // [handler]: The handler property. |
| 6088 DECL_ACCESSORS(handler, Object) |
| 6089 |
| 6090 // Casting. |
| 6091 static inline JSProxy* cast(Object* obj); |
| 6092 |
| 6093 // Dispatched behavior. |
| 6094 #ifdef OBJECT_PRINT |
| 6095 inline void JSProxyPrint() { |
| 6096 JSProxyPrint(stdout); |
| 6097 } |
| 6098 void JSProxyPrint(FILE* out); |
| 6099 #endif |
| 6100 #ifdef DEBUG |
| 6101 void JSProxyVerify(); |
| 6102 #endif |
| 6103 |
| 6104 // Layout description. |
| 6105 static const int kHandlerOffset = HeapObject::kHeaderSize; |
| 6106 static const int kSize = kHandlerOffset + kPointerSize; |
| 6107 |
| 6108 typedef FixedBodyDescriptor<kHandlerOffset, |
| 6109 kHandlerOffset + kPointerSize, |
| 6110 kSize> BodyDescriptor; |
| 6111 |
| 6112 private: |
| 6113 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); |
| 6114 }; |
| 6115 |
| 6116 |
6080 | 6117 |
6081 // Proxy describes objects pointing from JavaScript to C structures. | 6118 // Proxy describes objects pointing from JavaScript to C structures. |
6082 // Since they cannot contain references to JS HeapObjects they can be | 6119 // Since they cannot contain references to JS HeapObjects they can be |
6083 // placed in old_data_space. | 6120 // placed in old_data_space. |
6084 class Proxy: public HeapObject { | 6121 class Proxy: public HeapObject { |
6085 public: | 6122 public: |
6086 // [proxy]: field containing the address. | 6123 // [proxy]: field containing the address. |
6087 inline Address proxy(); | 6124 inline Address proxy(); |
6088 inline void set_proxy(Address value); | 6125 inline void set_proxy(Address value); |
6089 | 6126 |
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6712 } else { | 6749 } else { |
6713 value &= ~(1 << bit_position); | 6750 value &= ~(1 << bit_position); |
6714 } | 6751 } |
6715 return value; | 6752 return value; |
6716 } | 6753 } |
6717 }; | 6754 }; |
6718 | 6755 |
6719 } } // namespace v8::internal | 6756 } } // namespace v8::internal |
6720 | 6757 |
6721 #endif // V8_OBJECTS_H_ | 6758 #endif // V8_OBJECTS_H_ |
OLD | NEW |