| 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 // Objects allocated in their own spaces (never in new space). | 511 // Objects allocated in their own spaces (never in new space). |
| 510 MAP_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE | 512 MAP_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE |
| 511 CODE_TYPE, | 513 CODE_TYPE, |
| 512 ODDBALL_TYPE, | 514 ODDBALL_TYPE, |
| 513 JS_GLOBAL_PROPERTY_CELL_TYPE, | 515 JS_GLOBAL_PROPERTY_CELL_TYPE, |
| 514 | 516 |
| 515 // "Data", objects that cannot contain non-map-word pointers to heap | 517 // "Data", objects that cannot contain non-map-word pointers to heap |
| 516 // objects. | 518 // objects. |
| 517 HEAP_NUMBER_TYPE, | 519 HEAP_NUMBER_TYPE, |
| 518 PROXY_TYPE, | 520 PROXY_TYPE, |
| 521 JS_PROXY_TYPE, |
| 519 BYTE_ARRAY_TYPE, | 522 BYTE_ARRAY_TYPE, |
| 520 EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE | 523 EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE |
| 521 EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, | 524 EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE, |
| 522 EXTERNAL_SHORT_ARRAY_TYPE, | 525 EXTERNAL_SHORT_ARRAY_TYPE, |
| 523 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE, | 526 EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE, |
| 524 EXTERNAL_INT_ARRAY_TYPE, | 527 EXTERNAL_INT_ARRAY_TYPE, |
| 525 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE, | 528 EXTERNAL_UNSIGNED_INT_ARRAY_TYPE, |
| 526 EXTERNAL_FLOAT_ARRAY_TYPE, | 529 EXTERNAL_FLOAT_ARRAY_TYPE, |
| 527 EXTERNAL_DOUBLE_ARRAY_TYPE, | 530 EXTERNAL_DOUBLE_ARRAY_TYPE, |
| 528 EXTERNAL_PIXEL_ARRAY_TYPE, // LAST_EXTERNAL_ARRAY_TYPE | 531 EXTERNAL_PIXEL_ARRAY_TYPE, // LAST_EXTERNAL_ARRAY_TYPE |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 V(JSFunction) \ | 719 V(JSFunction) \ |
| 717 V(Code) \ | 720 V(Code) \ |
| 718 V(Oddball) \ | 721 V(Oddball) \ |
| 719 V(SharedFunctionInfo) \ | 722 V(SharedFunctionInfo) \ |
| 720 V(JSValue) \ | 723 V(JSValue) \ |
| 721 V(JSMessageObject) \ | 724 V(JSMessageObject) \ |
| 722 V(StringWrapper) \ | 725 V(StringWrapper) \ |
| 723 V(Proxy) \ | 726 V(Proxy) \ |
| 724 V(Boolean) \ | 727 V(Boolean) \ |
| 725 V(JSArray) \ | 728 V(JSArray) \ |
| 729 V(JSProxy) \ |
| 726 V(JSRegExp) \ | 730 V(JSRegExp) \ |
| 727 V(HashTable) \ | 731 V(HashTable) \ |
| 728 V(Dictionary) \ | 732 V(Dictionary) \ |
| 729 V(SymbolTable) \ | 733 V(SymbolTable) \ |
| 730 V(JSFunctionResultCache) \ | 734 V(JSFunctionResultCache) \ |
| 731 V(NormalizedMapCache) \ | 735 V(NormalizedMapCache) \ |
| 732 V(CompilationCacheTable) \ | 736 V(CompilationCacheTable) \ |
| 733 V(CodeCacheHashTable) \ | 737 V(CodeCacheHashTable) \ |
| 734 V(MapCache) \ | 738 V(MapCache) \ |
| 735 V(Primitive) \ | 739 V(Primitive) \ |
| (...skipping 3207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3943 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, | 3947 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, |
| 3944 kPointerFieldsEndOffset, | 3948 kPointerFieldsEndOffset, |
| 3945 kSize> BodyDescriptor; | 3949 kSize> BodyDescriptor; |
| 3946 | 3950 |
| 3947 private: | 3951 private: |
| 3948 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); | 3952 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); |
| 3949 }; | 3953 }; |
| 3950 | 3954 |
| 3951 | 3955 |
| 3952 // An abstract superclass, a marker class really, for simple structure classes. | 3956 // An abstract superclass, a marker class really, for simple structure classes. |
| 3953 // It doesn't carry much functionality but allows struct classes to me | 3957 // It doesn't carry much functionality but allows struct classes to be |
| 3954 // identified in the type system. | 3958 // identified in the type system. |
| 3955 class Struct: public HeapObject { | 3959 class Struct: public HeapObject { |
| 3956 public: | 3960 public: |
| 3957 inline void InitializeBody(int object_size); | 3961 inline void InitializeBody(int object_size); |
| 3958 static inline Struct* cast(Object* that); | 3962 static inline Struct* cast(Object* that); |
| 3959 }; | 3963 }; |
| 3960 | 3964 |
| 3961 | 3965 |
| 3962 // Script describes a script which has been added to the VM. | 3966 // Script describes a script which has been added to the VM. |
| 3963 class Script: public Struct { | 3967 class Script: public Struct { |
| (...skipping 2109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6073 | 6077 |
| 6074 // Returns the isolate/heap this cell object belongs to. | 6078 // Returns the isolate/heap this cell object belongs to. |
| 6075 inline Isolate* isolate(); | 6079 inline Isolate* isolate(); |
| 6076 inline Heap* heap(); | 6080 inline Heap* heap(); |
| 6077 | 6081 |
| 6078 private: | 6082 private: |
| 6079 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); | 6083 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); |
| 6080 }; | 6084 }; |
| 6081 | 6085 |
| 6082 | 6086 |
| 6087 // The JSProxy describes EcmaScript Harmony proxies |
| 6088 class JSProxy: public HeapObject { |
| 6089 public: |
| 6090 // [handler]: The handler property. |
| 6091 DECL_ACCESSORS(handler, Object) |
| 6092 |
| 6093 // Casting. |
| 6094 static inline JSProxy* cast(Object* obj); |
| 6095 |
| 6096 // Dispatched behavior. |
| 6097 #ifdef OBJECT_PRINT |
| 6098 inline void JSProxyPrint() { |
| 6099 JSProxyPrint(stdout); |
| 6100 } |
| 6101 void JSProxyPrint(FILE* out); |
| 6102 #endif |
| 6103 #ifdef DEBUG |
| 6104 void JSProxyVerify(); |
| 6105 #endif |
| 6106 |
| 6107 // Layout description. |
| 6108 static const int kHandlerOffset = HeapObject::kHeaderSize; |
| 6109 static const int kSize = kHandlerOffset + kPointerSize; |
| 6110 |
| 6111 typedef FixedBodyDescriptor<kHandlerOffset, |
| 6112 kHandlerOffset + kPointerSize, |
| 6113 kSize> BodyDescriptor; |
| 6114 |
| 6115 private: |
| 6116 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); |
| 6117 }; |
| 6118 |
| 6119 |
| 6083 | 6120 |
| 6084 // Proxy describes objects pointing from JavaScript to C structures. | 6121 // Proxy describes objects pointing from JavaScript to C structures. |
| 6085 // Since they cannot contain references to JS HeapObjects they can be | 6122 // Since they cannot contain references to JS HeapObjects they can be |
| 6086 // placed in old_data_space. | 6123 // placed in old_data_space. |
| 6087 class Proxy: public HeapObject { | 6124 class Proxy: public HeapObject { |
| 6088 public: | 6125 public: |
| 6089 // [proxy]: field containing the address. | 6126 // [proxy]: field containing the address. |
| 6090 inline Address proxy(); | 6127 inline Address proxy(); |
| 6091 inline void set_proxy(Address value); | 6128 inline void set_proxy(Address value); |
| 6092 | 6129 |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6715 } else { | 6752 } else { |
| 6716 value &= ~(1 << bit_position); | 6753 value &= ~(1 << bit_position); |
| 6717 } | 6754 } |
| 6718 return value; | 6755 return value; |
| 6719 } | 6756 } |
| 6720 }; | 6757 }; |
| 6721 | 6758 |
| 6722 } } // namespace v8::internal | 6759 } } // namespace v8::internal |
| 6723 | 6760 |
| 6724 #endif // V8_OBJECTS_H_ | 6761 #endif // V8_OBJECTS_H_ |
| OLD | NEW |