| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 62 //         - JSRegExp | 62 //         - JSRegExp | 
| 63 //         - JSFunction | 63 //         - JSFunction | 
| 64 //         - JSGeneratorObject | 64 //         - JSGeneratorObject | 
| 65 //         - JSModule | 65 //         - JSModule | 
| 66 //         - JSGlobalObject | 66 //         - JSGlobalObject | 
| 67 //         - JSGlobalProxy | 67 //         - JSGlobalProxy | 
| 68 //         - JSValue | 68 //         - JSValue | 
| 69 //           - JSDate | 69 //           - JSDate | 
| 70 //         - JSMessageObject | 70 //         - JSMessageObject | 
| 71 //       - JSProxy | 71 //       - JSProxy | 
| 72 //         - JSFunctionProxy |  | 
| 73 //     - FixedArrayBase | 72 //     - FixedArrayBase | 
| 74 //       - ByteArray | 73 //       - ByteArray | 
| 75 //       - BytecodeArray | 74 //       - BytecodeArray | 
| 76 //       - FixedArray | 75 //       - FixedArray | 
| 77 //         - DescriptorArray | 76 //         - DescriptorArray | 
| 78 //         - LiteralsArray | 77 //         - LiteralsArray | 
| 79 //         - BindingsArray | 78 //         - BindingsArray | 
| 80 //         - HashTable | 79 //         - HashTable | 
| 81 //           - Dictionary | 80 //           - Dictionary | 
| 82 //           - StringTable | 81 //           - StringTable | 
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 431   V(JS_MAP_TYPE)                                                \ | 430   V(JS_MAP_TYPE)                                                \ | 
| 432   V(JS_SET_ITERATOR_TYPE)                                       \ | 431   V(JS_SET_ITERATOR_TYPE)                                       \ | 
| 433   V(JS_MAP_ITERATOR_TYPE)                                       \ | 432   V(JS_MAP_ITERATOR_TYPE)                                       \ | 
| 434   V(JS_ITERATOR_RESULT_TYPE)                                    \ | 433   V(JS_ITERATOR_RESULT_TYPE)                                    \ | 
| 435   V(JS_WEAK_MAP_TYPE)                                           \ | 434   V(JS_WEAK_MAP_TYPE)                                           \ | 
| 436   V(JS_WEAK_SET_TYPE)                                           \ | 435   V(JS_WEAK_SET_TYPE)                                           \ | 
| 437   V(JS_PROMISE_TYPE)                                            \ | 436   V(JS_PROMISE_TYPE)                                            \ | 
| 438   V(JS_REGEXP_TYPE)                                             \ | 437   V(JS_REGEXP_TYPE)                                             \ | 
| 439                                                                 \ | 438                                                                 \ | 
| 440   V(JS_FUNCTION_TYPE)                                           \ | 439   V(JS_FUNCTION_TYPE)                                           \ | 
| 441   V(JS_FUNCTION_PROXY_TYPE)                                     \ |  | 
| 442   V(DEBUG_INFO_TYPE)                                            \ | 440   V(DEBUG_INFO_TYPE)                                            \ | 
| 443   V(BREAK_POINT_INFO_TYPE) | 441   V(BREAK_POINT_INFO_TYPE) | 
| 444 | 442 | 
| 445 | 443 | 
| 446 // Since string types are not consecutive, this macro is used to | 444 // Since string types are not consecutive, this macro is used to | 
| 447 // iterate over them. | 445 // iterate over them. | 
| 448 #define STRING_TYPE_LIST(V)                                                   \ | 446 #define STRING_TYPE_LIST(V)                                                   \ | 
| 449   V(STRING_TYPE, kVariableSizeSentinel, string, String)                       \ | 447   V(STRING_TYPE, kVariableSizeSentinel, string, String)                       \ | 
| 450   V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string,             \ | 448   V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string,             \ | 
| 451     OneByteString)                                                            \ | 449     OneByteString)                                                            \ | 
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 702   CELL_TYPE, | 700   CELL_TYPE, | 
| 703   WEAK_CELL_TYPE, | 701   WEAK_CELL_TYPE, | 
| 704   PROPERTY_CELL_TYPE, | 702   PROPERTY_CELL_TYPE, | 
| 705   PROTOTYPE_INFO_TYPE, | 703   PROTOTYPE_INFO_TYPE, | 
| 706   SLOPPY_BLOCK_WITH_EVAL_CONTEXT_EXTENSION_TYPE, | 704   SLOPPY_BLOCK_WITH_EVAL_CONTEXT_EXTENSION_TYPE, | 
| 707 | 705 | 
| 708   // All the following types are subtypes of JSReceiver, which corresponds to | 706   // All the following types are subtypes of JSReceiver, which corresponds to | 
| 709   // objects in the JS sense. The first and the last type in this range are | 707   // objects in the JS sense. The first and the last type in this range are | 
| 710   // the two forms of function. This organization enables using the same | 708   // the two forms of function. This organization enables using the same | 
| 711   // compares for checking the JS_RECEIVER and the NONCALLABLE_JS_OBJECT range. | 709   // compares for checking the JS_RECEIVER and the NONCALLABLE_JS_OBJECT range. | 
| 712   JS_FUNCTION_PROXY_TYPE,  // FIRST_JS_RECEIVER_TYPE, FIRST_JS_PROXY_TYPE | 710   JS_PROXY_TYPE,  // FIRST_JS_RECEIVER_TYPE | 
| 713   JS_PROXY_TYPE,           // LAST_JS_PROXY_TYPE | 711   JS_VALUE_TYPE,  // FIRST_JS_OBJECT_TYPE | 
| 714   JS_VALUE_TYPE,           // FIRST_JS_OBJECT_TYPE |  | 
| 715   JS_MESSAGE_OBJECT_TYPE, | 712   JS_MESSAGE_OBJECT_TYPE, | 
| 716   JS_DATE_TYPE, | 713   JS_DATE_TYPE, | 
| 717   JS_OBJECT_TYPE, | 714   JS_OBJECT_TYPE, | 
| 718   JS_CONTEXT_EXTENSION_OBJECT_TYPE, | 715   JS_CONTEXT_EXTENSION_OBJECT_TYPE, | 
| 719   JS_GENERATOR_OBJECT_TYPE, | 716   JS_GENERATOR_OBJECT_TYPE, | 
| 720   JS_MODULE_TYPE, | 717   JS_MODULE_TYPE, | 
| 721   JS_GLOBAL_OBJECT_TYPE, | 718   JS_GLOBAL_OBJECT_TYPE, | 
| 722   JS_GLOBAL_PROXY_TYPE, | 719   JS_GLOBAL_PROXY_TYPE, | 
| 723   JS_ARRAY_TYPE, | 720   JS_ARRAY_TYPE, | 
| 724   JS_ARRAY_BUFFER_TYPE, | 721   JS_ARRAY_BUFFER_TYPE, | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 748   // Boundaries for testing for a fixed typed array. | 745   // Boundaries for testing for a fixed typed array. | 
| 749   FIRST_FIXED_TYPED_ARRAY_TYPE = FIXED_INT8_ARRAY_TYPE, | 746   FIRST_FIXED_TYPED_ARRAY_TYPE = FIXED_INT8_ARRAY_TYPE, | 
| 750   LAST_FIXED_TYPED_ARRAY_TYPE = FIXED_UINT8_CLAMPED_ARRAY_TYPE, | 747   LAST_FIXED_TYPED_ARRAY_TYPE = FIXED_UINT8_CLAMPED_ARRAY_TYPE, | 
| 751   // Boundary for promotion to old space. | 748   // Boundary for promotion to old space. | 
| 752   LAST_DATA_TYPE = FILLER_TYPE, | 749   LAST_DATA_TYPE = FILLER_TYPE, | 
| 753   // Boundary for objects represented as JSReceiver (i.e. JSObject or JSProxy). | 750   // Boundary for objects represented as JSReceiver (i.e. JSObject or JSProxy). | 
| 754   // Note that there is no range for JSObject or JSProxy, since their subtypes | 751   // Note that there is no range for JSObject or JSProxy, since their subtypes | 
| 755   // are not continuous in this enum! The enum ranges instead reflect the | 752   // are not continuous in this enum! The enum ranges instead reflect the | 
| 756   // external class names, where proxies are treated as either ordinary objects, | 753   // external class names, where proxies are treated as either ordinary objects, | 
| 757   // or functions. | 754   // or functions. | 
| 758   FIRST_JS_RECEIVER_TYPE = JS_FUNCTION_PROXY_TYPE, | 755   FIRST_JS_RECEIVER_TYPE = JS_PROXY_TYPE, | 
| 759   LAST_JS_RECEIVER_TYPE = LAST_TYPE, | 756   LAST_JS_RECEIVER_TYPE = LAST_TYPE, | 
| 760   // Boundaries for testing the types represented as JSObject | 757   // Boundaries for testing the types represented as JSObject | 
| 761   FIRST_JS_OBJECT_TYPE = JS_VALUE_TYPE, | 758   FIRST_JS_OBJECT_TYPE = JS_VALUE_TYPE, | 
| 762   LAST_JS_OBJECT_TYPE = LAST_TYPE, | 759   LAST_JS_OBJECT_TYPE = LAST_TYPE, | 
| 763   // Boundaries for testing the types represented as JSProxy |  | 
| 764   FIRST_JS_PROXY_TYPE = JS_FUNCTION_PROXY_TYPE, |  | 
| 765   LAST_JS_PROXY_TYPE = JS_PROXY_TYPE, |  | 
| 766   // | 760   // | 
| 767   FIRST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_PROXY_TYPE, | 761   FIRST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_VALUE_TYPE, | 
| 768   LAST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_REGEXP_TYPE, | 762   LAST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_REGEXP_TYPE, | 
| 769   // Note that the types for which typeof is "function" are not continuous. | 763   // Note that the types for which typeof is "function" are not continuous. | 
| 770   // Define this so that we can put assertions on discrete checks. | 764   // Define this so that we can put assertions on discrete checks. | 
| 771   NUM_OF_CALLABLE_SPEC_OBJECT_TYPES = 2 | 765   NUM_OF_CALLABLE_SPEC_OBJECT_TYPES = 2 | 
| 772 }; | 766 }; | 
| 773 | 767 | 
| 774 STATIC_ASSERT(JS_OBJECT_TYPE == Internals::kJSObjectType); | 768 STATIC_ASSERT(JS_OBJECT_TYPE == Internals::kJSObjectType); | 
| 775 STATIC_ASSERT(FIRST_NONSTRING_TYPE == Internals::kFirstNonstringType); | 769 STATIC_ASSERT(FIRST_NONSTRING_TYPE == Internals::kFirstNonstringType); | 
| 776 STATIC_ASSERT(ODDBALL_TYPE == Internals::kOddballType); | 770 STATIC_ASSERT(ODDBALL_TYPE == Internals::kOddballType); | 
| 777 STATIC_ASSERT(FOREIGN_TYPE == Internals::kForeignType); | 771 STATIC_ASSERT(FOREIGN_TYPE == Internals::kForeignType); | 
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 963   V(JSMessageObject)               \ | 957   V(JSMessageObject)               \ | 
| 964   V(StringWrapper)                 \ | 958   V(StringWrapper)                 \ | 
| 965   V(Foreign)                       \ | 959   V(Foreign)                       \ | 
| 966   V(Boolean)                       \ | 960   V(Boolean)                       \ | 
| 967   V(JSArray)                       \ | 961   V(JSArray)                       \ | 
| 968   V(JSArrayBuffer)                 \ | 962   V(JSArrayBuffer)                 \ | 
| 969   V(JSArrayBufferView)             \ | 963   V(JSArrayBufferView)             \ | 
| 970   V(JSTypedArray)                  \ | 964   V(JSTypedArray)                  \ | 
| 971   V(JSDataView)                    \ | 965   V(JSDataView)                    \ | 
| 972   V(JSProxy)                       \ | 966   V(JSProxy)                       \ | 
| 973   V(JSFunctionProxy)               \ |  | 
| 974   V(JSSet)                         \ | 967   V(JSSet)                         \ | 
| 975   V(JSMap)                         \ | 968   V(JSMap)                         \ | 
| 976   V(JSSetIterator)                 \ | 969   V(JSSetIterator)                 \ | 
| 977   V(JSMapIterator)                 \ | 970   V(JSMapIterator)                 \ | 
| 978   V(JSIteratorResult)              \ | 971   V(JSIteratorResult)              \ | 
| 979   V(JSWeakCollection)              \ | 972   V(JSWeakCollection)              \ | 
| 980   V(JSWeakMap)                     \ | 973   V(JSWeakMap)                     \ | 
| 981   V(JSWeakSet)                     \ | 974   V(JSWeakSet)                     \ | 
| 982   V(JSRegExp)                      \ | 975   V(JSRegExp)                      \ | 
| 983   V(HashTable)                     \ | 976   V(HashTable)                     \ | 
| (...skipping 8604 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 9588   // Invoke a trap by name. If the trap does not exist on this's handler, | 9581   // Invoke a trap by name. If the trap does not exist on this's handler, | 
| 9589   // but derived_trap is non-NULL, invoke that instead.  May cause GC. | 9582   // but derived_trap is non-NULL, invoke that instead.  May cause GC. | 
| 9590   MUST_USE_RESULT static MaybeHandle<Object> CallTrap( | 9583   MUST_USE_RESULT static MaybeHandle<Object> CallTrap( | 
| 9591       Handle<JSProxy> proxy, const char* name, Handle<Object> derived_trap, | 9584       Handle<JSProxy> proxy, const char* name, Handle<Object> derived_trap, | 
| 9592       int argc, Handle<Object> args[]); | 9585       int argc, Handle<Object> args[]); | 
| 9593 | 9586 | 
| 9594   DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); | 9587   DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); | 
| 9595 }; | 9588 }; | 
| 9596 | 9589 | 
| 9597 | 9590 | 
| 9598 class JSFunctionProxy: public JSProxy { |  | 
| 9599  public: |  | 
| 9600   // [call_trap]: The call trap. |  | 
| 9601   DECL_ACCESSORS(call_trap, JSReceiver) |  | 
| 9602 |  | 
| 9603   // [construct_trap]: The construct trap. |  | 
| 9604   DECL_ACCESSORS(construct_trap, Object) |  | 
| 9605 |  | 
| 9606   DECLARE_CAST(JSFunctionProxy) |  | 
| 9607 |  | 
| 9608   // Dispatched behavior. |  | 
| 9609   DECLARE_PRINTER(JSFunctionProxy) |  | 
| 9610   DECLARE_VERIFIER(JSFunctionProxy) |  | 
| 9611 |  | 
| 9612   // Layout description. |  | 
| 9613   static const int kCallTrapOffset = JSProxy::kSize; |  | 
| 9614   static const int kConstructTrapOffset = kCallTrapOffset + kPointerSize; |  | 
| 9615   static const int kSize = kConstructTrapOffset + kPointerSize; |  | 
| 9616 |  | 
| 9617   typedef FixedBodyDescriptor<kTargetOffset, kSize, kSize> BodyDescriptor; |  | 
| 9618 |  | 
| 9619  private: |  | 
| 9620   DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunctionProxy); |  | 
| 9621 }; |  | 
| 9622 |  | 
| 9623 |  | 
| 9624 class JSCollection : public JSObject { | 9591 class JSCollection : public JSObject { | 
| 9625  public: | 9592  public: | 
| 9626   // [table]: the backing hash table | 9593   // [table]: the backing hash table | 
| 9627   DECL_ACCESSORS(table, Object) | 9594   DECL_ACCESSORS(table, Object) | 
| 9628 | 9595 | 
| 9629   static const int kTableOffset = JSObject::kHeaderSize; | 9596   static const int kTableOffset = JSObject::kHeaderSize; | 
| 9630   static const int kSize = kTableOffset + kPointerSize; | 9597   static const int kSize = kTableOffset + kPointerSize; | 
| 9631 | 9598 | 
| 9632  private: | 9599  private: | 
| 9633   DISALLOW_IMPLICIT_CONSTRUCTORS(JSCollection); | 9600   DISALLOW_IMPLICIT_CONSTRUCTORS(JSCollection); | 
| (...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10716     } | 10683     } | 
| 10717     return value; | 10684     return value; | 
| 10718   } | 10685   } | 
| 10719 }; | 10686 }; | 
| 10720 | 10687 | 
| 10721 | 10688 | 
| 10722 }  // NOLINT, false-positive due to second-order macros. | 10689 }  // NOLINT, false-positive due to second-order macros. | 
| 10723 }  // NOLINT, false-positive due to second-order macros. | 10690 }  // NOLINT, false-positive due to second-order macros. | 
| 10724 | 10691 | 
| 10725 #endif  // V8_OBJECTS_H_ | 10692 #endif  // V8_OBJECTS_H_ | 
| OLD | NEW | 
|---|