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 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
437 V(JS_MAP_TYPE) \ | 437 V(JS_MAP_TYPE) \ |
438 V(JS_SET_ITERATOR_TYPE) \ | 438 V(JS_SET_ITERATOR_TYPE) \ |
439 V(JS_MAP_ITERATOR_TYPE) \ | 439 V(JS_MAP_ITERATOR_TYPE) \ |
440 V(JS_WEAK_MAP_TYPE) \ | 440 V(JS_WEAK_MAP_TYPE) \ |
441 V(JS_WEAK_SET_TYPE) \ | 441 V(JS_WEAK_SET_TYPE) \ |
442 V(JS_PROMISE_TYPE) \ | 442 V(JS_PROMISE_TYPE) \ |
443 V(JS_REGEXP_TYPE) \ | 443 V(JS_REGEXP_TYPE) \ |
444 V(JS_ERROR_TYPE) \ | 444 V(JS_ERROR_TYPE) \ |
445 V(JS_STRING_ITERATOR_TYPE) \ | 445 V(JS_STRING_ITERATOR_TYPE) \ |
446 \ | 446 \ |
447 V(JS_TYPED_ARRAY_KEY_ITERATOR_TYPE) \ | |
448 V(JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE) \ | |
Benedikt Meurer
2016/10/17 04:02:42
We still need a JS_FAST_ARRAY_KEY_ITERATOR_TYPE he
caitp
2016/10/18 00:16:50
Done.
| |
449 \ | |
450 V(JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
451 V(JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
452 V(JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
453 V(JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
454 V(JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
455 V(JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
456 V(JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
457 V(JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
458 V(JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
459 \ | |
460 V(JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
461 V(JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
462 V(JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
463 V(JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
464 V(JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
465 V(JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
466 V(JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ | |
467 \ | |
468 V(JS_INT8_ARRAY_VALUE_ITERATOR_TYPE) \ | |
469 V(JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE) \ | |
470 V(JS_INT16_ARRAY_VALUE_ITERATOR_TYPE) \ | |
471 V(JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE) \ | |
472 V(JS_INT32_ARRAY_VALUE_ITERATOR_TYPE) \ | |
473 V(JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE) \ | |
474 V(JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE) \ | |
475 V(JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE) \ | |
476 V(JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE) \ | |
477 \ | |
478 V(JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ | |
479 V(JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ | |
480 V(JS_FAST_ARRAY_VALUE_ITERATOR_TYPE) \ | |
481 V(JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE) \ | |
482 V(JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ | |
483 V(JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ | |
484 V(JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE) \ | |
485 \ | |
447 V(JS_BOUND_FUNCTION_TYPE) \ | 486 V(JS_BOUND_FUNCTION_TYPE) \ |
448 V(JS_FUNCTION_TYPE) \ | 487 V(JS_FUNCTION_TYPE) \ |
449 V(DEBUG_INFO_TYPE) \ | 488 V(DEBUG_INFO_TYPE) \ |
450 V(BREAK_POINT_INFO_TYPE) | 489 V(BREAK_POINT_INFO_TYPE) |
451 | 490 |
452 // Since string types are not consecutive, this macro is used to | 491 // Since string types are not consecutive, this macro is used to |
453 // iterate over them. | 492 // iterate over them. |
454 #define STRING_TYPE_LIST(V) \ | 493 #define STRING_TYPE_LIST(V) \ |
455 V(STRING_TYPE, kVariableSizeSentinel, string, String) \ | 494 V(STRING_TYPE, kVariableSizeSentinel, string, String) \ |
456 V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string, \ | 495 V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string, \ |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
740 JS_SET_TYPE, | 779 JS_SET_TYPE, |
741 JS_MAP_TYPE, | 780 JS_MAP_TYPE, |
742 JS_SET_ITERATOR_TYPE, | 781 JS_SET_ITERATOR_TYPE, |
743 JS_MAP_ITERATOR_TYPE, | 782 JS_MAP_ITERATOR_TYPE, |
744 JS_WEAK_MAP_TYPE, | 783 JS_WEAK_MAP_TYPE, |
745 JS_WEAK_SET_TYPE, | 784 JS_WEAK_SET_TYPE, |
746 JS_PROMISE_TYPE, | 785 JS_PROMISE_TYPE, |
747 JS_REGEXP_TYPE, | 786 JS_REGEXP_TYPE, |
748 JS_ERROR_TYPE, | 787 JS_ERROR_TYPE, |
749 JS_STRING_ITERATOR_TYPE, | 788 JS_STRING_ITERATOR_TYPE, |
789 | |
790 JS_TYPED_ARRAY_KEY_ITERATOR_TYPE, | |
791 JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE, | |
792 | |
793 JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
794 JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
795 JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
796 JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
797 JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
798 JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
799 JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
800 JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
801 JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
802 | |
803 JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
804 JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
805 JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
806 JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
807 JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
808 JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
809 JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
810 | |
811 JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE, | |
812 JS_INT8_ARRAY_VALUE_ITERATOR_TYPE, | |
813 JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE, | |
814 JS_INT16_ARRAY_VALUE_ITERATOR_TYPE, | |
815 JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE, | |
816 JS_INT32_ARRAY_VALUE_ITERATOR_TYPE, | |
817 JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE, | |
818 JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE, | |
819 JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE, | |
820 | |
821 JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE, | |
822 JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE, | |
823 JS_FAST_ARRAY_VALUE_ITERATOR_TYPE, | |
824 JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE, | |
825 JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE, | |
826 JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE, | |
827 JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE, | |
828 | |
750 JS_BOUND_FUNCTION_TYPE, | 829 JS_BOUND_FUNCTION_TYPE, |
751 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE | 830 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE |
752 | 831 |
753 // Pseudo-types | 832 // Pseudo-types |
754 FIRST_TYPE = 0x0, | 833 FIRST_TYPE = 0x0, |
755 LAST_TYPE = JS_FUNCTION_TYPE, | 834 LAST_TYPE = JS_FUNCTION_TYPE, |
756 FIRST_NAME_TYPE = FIRST_TYPE, | 835 FIRST_NAME_TYPE = FIRST_TYPE, |
757 LAST_NAME_TYPE = SYMBOL_TYPE, | 836 LAST_NAME_TYPE = SYMBOL_TYPE, |
758 FIRST_UNIQUE_NAME_TYPE = INTERNALIZED_STRING_TYPE, | 837 FIRST_UNIQUE_NAME_TYPE = INTERNALIZED_STRING_TYPE, |
759 LAST_UNIQUE_NAME_TYPE = SYMBOL_TYPE, | 838 LAST_UNIQUE_NAME_TYPE = SYMBOL_TYPE, |
(...skipping 16 matching lines...) Expand all Loading... | |
776 LAST_JS_RECEIVER_TYPE = LAST_TYPE, | 855 LAST_JS_RECEIVER_TYPE = LAST_TYPE, |
777 // Boundaries for testing the types represented as JSObject | 856 // Boundaries for testing the types represented as JSObject |
778 FIRST_JS_OBJECT_TYPE = JS_GLOBAL_OBJECT_TYPE, | 857 FIRST_JS_OBJECT_TYPE = JS_GLOBAL_OBJECT_TYPE, |
779 LAST_JS_OBJECT_TYPE = LAST_TYPE, | 858 LAST_JS_OBJECT_TYPE = LAST_TYPE, |
780 // Boundary for testing JSReceivers that need special property lookup handling | 859 // Boundary for testing JSReceivers that need special property lookup handling |
781 LAST_SPECIAL_RECEIVER_TYPE = JS_SPECIAL_API_OBJECT_TYPE, | 860 LAST_SPECIAL_RECEIVER_TYPE = JS_SPECIAL_API_OBJECT_TYPE, |
782 // Boundary case for testing JSReceivers that may have elements while having | 861 // Boundary case for testing JSReceivers that may have elements while having |
783 // an empty fixed array as elements backing store. This is true for string | 862 // an empty fixed array as elements backing store. This is true for string |
784 // wrappers. | 863 // wrappers. |
785 LAST_CUSTOM_ELEMENTS_RECEIVER = JS_VALUE_TYPE, | 864 LAST_CUSTOM_ELEMENTS_RECEIVER = JS_VALUE_TYPE, |
865 | |
866 FIRST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE = JS_TYPED_ARRAY_KEY_ITERATOR_TYPE, | |
867 LAST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE = JS_TYPED_ARRAY_KEY_ITERATOR_TYPE, | |
868 FIRST_JS_ARRAY_KEY_ITERATOR_TYPE = JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE, | |
869 LAST_JS_ARRAY_KEY_ITERATOR_TYPE = JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE, | |
870 FIRST_ARRAY_KEY_ITERATOR_TYPE = FIRST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE, | |
871 LAST_ARRAY_KEY_ITERATOR_TYPE = LAST_JS_ARRAY_KEY_ITERATOR_TYPE, | |
872 | |
873 FIRST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE = | |
874 JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
875 LAST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE = | |
876 JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
877 FIRST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE = | |
878 JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
879 LAST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE = | |
880 JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
881 FIRST_ARRAY_KEY_VALUE_ITERATOR_TYPE = | |
882 FIRST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
883 LAST_ARRAY_KEY_VALUE_ITERATOR_TYPE = LAST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE, | |
884 | |
885 FIRST_JS_TYPED_ARRAY_VALUE_ITERATOR_TYPE = JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE, | |
886 LAST_JS_TYPED_ARRAY_VALUE_ITERATOR_TYPE = | |
887 JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE, | |
888 FIRST_JS_ARRAY_VALUE_ITERATOR_TYPE = JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE, | |
889 LAST_JS_ARRAY_VALUE_ITERATOR_TYPE = JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE, | |
890 FIRST_ARRAY_VALUE_ITERATOR_TYPE = FIRST_JS_TYPED_ARRAY_VALUE_ITERATOR_TYPE, | |
891 LAST_ARRAY_VALUE_ITERATOR_TYPE = LAST_JS_ARRAY_VALUE_ITERATOR_TYPE, | |
892 | |
893 FIRST_ARRAY_ITERATOR_TYPE = FIRST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE, | |
894 LAST_ARRAY_ITERATOR_TYPE = LAST_ARRAY_VALUE_ITERATOR_TYPE, | |
786 }; | 895 }; |
787 | 896 |
788 STATIC_ASSERT(JS_OBJECT_TYPE == Internals::kJSObjectType); | 897 STATIC_ASSERT(JS_OBJECT_TYPE == Internals::kJSObjectType); |
789 STATIC_ASSERT(JS_API_OBJECT_TYPE == Internals::kJSApiObjectType); | 898 STATIC_ASSERT(JS_API_OBJECT_TYPE == Internals::kJSApiObjectType); |
790 STATIC_ASSERT(FIRST_NONSTRING_TYPE == Internals::kFirstNonstringType); | 899 STATIC_ASSERT(FIRST_NONSTRING_TYPE == Internals::kFirstNonstringType); |
791 STATIC_ASSERT(ODDBALL_TYPE == Internals::kOddballType); | 900 STATIC_ASSERT(ODDBALL_TYPE == Internals::kOddballType); |
792 STATIC_ASSERT(FOREIGN_TYPE == Internals::kForeignType); | 901 STATIC_ASSERT(FOREIGN_TYPE == Internals::kForeignType); |
793 | 902 |
794 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, | 903 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, |
795 InstanceType instance_type); | 904 InstanceType instance_type); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1021 V(JSDate) \ | 1130 V(JSDate) \ |
1022 V(JSMessageObject) \ | 1131 V(JSMessageObject) \ |
1023 V(StringWrapper) \ | 1132 V(StringWrapper) \ |
1024 V(Foreign) \ | 1133 V(Foreign) \ |
1025 V(Boolean) \ | 1134 V(Boolean) \ |
1026 V(JSArray) \ | 1135 V(JSArray) \ |
1027 V(JSArrayBuffer) \ | 1136 V(JSArrayBuffer) \ |
1028 V(JSArrayBufferView) \ | 1137 V(JSArrayBufferView) \ |
1029 V(JSCollection) \ | 1138 V(JSCollection) \ |
1030 V(JSTypedArray) \ | 1139 V(JSTypedArray) \ |
1140 V(JSArrayIterator) \ | |
1031 V(JSDataView) \ | 1141 V(JSDataView) \ |
1032 V(JSProxy) \ | 1142 V(JSProxy) \ |
1033 V(JSError) \ | 1143 V(JSError) \ |
1034 V(JSPromise) \ | 1144 V(JSPromise) \ |
1035 V(JSStringIterator) \ | 1145 V(JSStringIterator) \ |
1036 V(JSSet) \ | 1146 V(JSSet) \ |
1037 V(JSMap) \ | 1147 V(JSMap) \ |
1038 V(JSSetIterator) \ | 1148 V(JSSetIterator) \ |
1039 V(JSMapIterator) \ | 1149 V(JSMapIterator) \ |
1040 V(JSWeakCollection) \ | 1150 V(JSWeakCollection) \ |
(...skipping 9466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10507 static void Clear(Handle<JSMap> map); | 10617 static void Clear(Handle<JSMap> map); |
10508 | 10618 |
10509 // Dispatched behavior. | 10619 // Dispatched behavior. |
10510 DECLARE_PRINTER(JSMap) | 10620 DECLARE_PRINTER(JSMap) |
10511 DECLARE_VERIFIER(JSMap) | 10621 DECLARE_VERIFIER(JSMap) |
10512 | 10622 |
10513 private: | 10623 private: |
10514 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap); | 10624 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap); |
10515 }; | 10625 }; |
10516 | 10626 |
10627 class JSArrayIterator : public JSObject { | |
10628 public: | |
10629 DECLARE_PRINTER(JSArrayIterator) | |
10630 DECLARE_VERIFIER(JSArrayIterator) | |
10631 | |
10632 DECLARE_CAST(JSArrayIterator) | |
10633 | |
10634 // [object]: the [[IteratedObject]] internal field. | |
10635 DECL_ACCESSORS(object, Object) | |
10636 | |
10637 // [index]: The [[ArrayIteratorNextIndex]] internal field. | |
10638 DECL_ACCESSORS(index, Object) | |
10639 | |
10640 // [map]: The Map of the [[IteratedObject]] field at the time the iterator is | |
10641 // allocated. | |
10642 DECL_ACCESSORS(object_map, Object) | |
10643 | |
10644 static const int kIteratedObjectOffset = JSObject::kHeaderSize; | |
10645 static const int kNextIndexOffset = kIteratedObjectOffset + kPointerSize; | |
10646 static const int kIteratedObjectMapOffset = kNextIndexOffset + kPointerSize; | |
10647 static const int kSize = kIteratedObjectMapOffset + kPointerSize; | |
10648 | |
10649 private: | |
10650 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayIterator); | |
10651 }; | |
10652 | |
10517 class JSStringIterator : public JSObject { | 10653 class JSStringIterator : public JSObject { |
10518 public: | 10654 public: |
10519 // Dispatched behavior. | 10655 // Dispatched behavior. |
10520 DECLARE_PRINTER(JSStringIterator) | 10656 DECLARE_PRINTER(JSStringIterator) |
10521 DECLARE_VERIFIER(JSStringIterator) | 10657 DECLARE_VERIFIER(JSStringIterator) |
10522 | 10658 |
10523 DECLARE_CAST(JSStringIterator) | 10659 DECLARE_CAST(JSStringIterator) |
10524 | 10660 |
10525 // [string]: the [[IteratedString]] internal field. | 10661 // [string]: the [[IteratedString]] internal field. |
10526 DECL_ACCESSORS(string, String) | 10662 DECL_ACCESSORS(string, String) |
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
11607 } | 11743 } |
11608 return value; | 11744 return value; |
11609 } | 11745 } |
11610 }; | 11746 }; |
11611 | 11747 |
11612 | 11748 |
11613 } // NOLINT, false-positive due to second-order macros. | 11749 } // NOLINT, false-positive due to second-order macros. |
11614 } // NOLINT, false-positive due to second-order macros. | 11750 } // NOLINT, false-positive due to second-order macros. |
11615 | 11751 |
11616 #endif // V8_OBJECTS_H_ | 11752 #endif // V8_OBJECTS_H_ |
OLD | NEW |