Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/objects.h

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: rebase and get tests passing Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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) \
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
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
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
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) \
1141 V(JSTypedArrayIterator) \
1031 V(JSDataView) \ 1142 V(JSDataView) \
1032 V(JSProxy) \ 1143 V(JSProxy) \
1033 V(JSError) \ 1144 V(JSError) \
1034 V(JSPromise) \ 1145 V(JSPromise) \
1035 V(JSStringIterator) \ 1146 V(JSStringIterator) \
1036 V(JSSet) \ 1147 V(JSSet) \
1037 V(JSMap) \ 1148 V(JSMap) \
1038 V(JSSetIterator) \ 1149 V(JSSetIterator) \
1039 V(JSMapIterator) \ 1150 V(JSMapIterator) \
1040 V(JSWeakCollection) \ 1151 V(JSWeakCollection) \
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 // The Heap the object was allocated in. Used also to access Isolate. 1728 // The Heap the object was allocated in. Used also to access Isolate.
1618 inline Heap* GetHeap() const; 1729 inline Heap* GetHeap() const;
1619 1730
1620 // Convenience method to get current isolate. 1731 // Convenience method to get current isolate.
1621 inline Isolate* GetIsolate() const; 1732 inline Isolate* GetIsolate() const;
1622 1733
1623 #define IS_TYPE_FUNCTION_DECL(Type) INLINE(bool Is##Type() const); 1734 #define IS_TYPE_FUNCTION_DECL(Type) INLINE(bool Is##Type() const);
1624 HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL) 1735 HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL)
1625 #undef IS_TYPE_FUNCTION_DECL 1736 #undef IS_TYPE_FUNCTION_DECL
1626 1737
1738 // Helpers
1739 INLINE(bool IsJSTypedArrayKeyIterator() const);
1740 INLINE(bool IsJSTypedArrayValueIterator() const);
1741 INLINE(bool IsJSTypedArrayKeyValueIterator() const);
1742 INLINE(bool IsJSArrayKeyIterator() const);
1743 INLINE(bool IsJSArrayValueIterator() const);
1744 INLINE(bool IsJSArrayKeyValueIterator() const);
1745
1627 #define IS_TYPE_FUNCTION_DECL(Type, Value) \ 1746 #define IS_TYPE_FUNCTION_DECL(Type, Value) \
1628 INLINE(bool Is##Type(Isolate* isolate) const); 1747 INLINE(bool Is##Type(Isolate* isolate) const);
1629 ODDBALL_LIST(IS_TYPE_FUNCTION_DECL) 1748 ODDBALL_LIST(IS_TYPE_FUNCTION_DECL)
1630 #undef IS_TYPE_FUNCTION_DECL 1749 #undef IS_TYPE_FUNCTION_DECL
1631 1750
1632 #define DECLARE_STRUCT_PREDICATE(NAME, Name, name) \ 1751 #define DECLARE_STRUCT_PREDICATE(NAME, Name, name) \
1633 INLINE(bool Is##Name() const); 1752 INLINE(bool Is##Name() const);
1634 STRUCT_LIST(DECLARE_STRUCT_PREDICATE) 1753 STRUCT_LIST(DECLARE_STRUCT_PREDICATE)
1635 #undef DECLARE_STRUCT_PREDICATE 1754 #undef DECLARE_STRUCT_PREDICATE
1636 1755
(...skipping 8870 matching lines...) Expand 10 before | Expand all | Expand 10 after
10507 static void Clear(Handle<JSMap> map); 10626 static void Clear(Handle<JSMap> map);
10508 10627
10509 // Dispatched behavior. 10628 // Dispatched behavior.
10510 DECLARE_PRINTER(JSMap) 10629 DECLARE_PRINTER(JSMap)
10511 DECLARE_VERIFIER(JSMap) 10630 DECLARE_VERIFIER(JSMap)
10512 10631
10513 private: 10632 private:
10514 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap); 10633 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap);
10515 }; 10634 };
10516 10635
10636 class JSTypedArrayIterator : public JSObject {
10637 public:
10638 DECLARE_PRINTER(JSTypedArrayIterator)
10639 DECLARE_VERIFIER(JSTypedArrayIterator)
10640
10641 DECLARE_CAST(JSTypedArrayIterator)
10642
10643 // [object]: the [[IteratedObject]] internal field.
10644 DECL_ACCESSORS(object, Object)
10645
10646 // [index]: The [[ArrayIteratorNextIndex]] internal field. Always an Smi for
10647 // TypedArrays.
10648 DECL_INT_ACCESSORS(index)
10649
10650 static const int kIteratedObjectOffset = JSObject::kHeaderSize;
10651 static const int kNextIndexOffset = kIteratedObjectOffset + kPointerSize;
10652 static const int kSize = kNextIndexOffset + kPointerSize;
10653
10654 private:
10655 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArrayIterator);
10656 };
10657
10658 class JSArrayIterator : public JSObject {
10659 public:
10660 DECLARE_PRINTER(JSArrayIterator)
10661 DECLARE_VERIFIER(JSArrayIterator)
10662
10663 DECLARE_CAST(JSArrayIterator)
10664
10665 // [object]: the [[IteratedObject]] internal field.
10666 DECL_ACCESSORS(object, Object)
10667
10668 // [index]: The [[ArrayIteratorNextIndex]] internal field.
10669 DECL_ACCESSORS(index, Object)
10670
10671 // [map]: The Map of the [[IteratedObject]] field at the time the iterator is
10672 // allocated.
10673 DECL_ACCESSORS(map, Map)
10674
10675 static const int kIteratedObjectOffset = JSObject::kHeaderSize;
10676 static const int kNextIndexOffset = kIteratedObjectOffset + kPointerSize;
10677 static const int kIteratedObjectMapOffset = kNextIndexOffset + kPointerSize;
10678 static const int kSize = kIteratedObjectMapOffset + kPointerSize;
10679
10680 private:
10681 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayIterator);
10682 };
10683
10517 class JSStringIterator : public JSObject { 10684 class JSStringIterator : public JSObject {
10518 public: 10685 public:
10519 // Dispatched behavior. 10686 // Dispatched behavior.
10520 DECLARE_PRINTER(JSStringIterator) 10687 DECLARE_PRINTER(JSStringIterator)
10521 DECLARE_VERIFIER(JSStringIterator) 10688 DECLARE_VERIFIER(JSStringIterator)
10522 10689
10523 DECLARE_CAST(JSStringIterator) 10690 DECLARE_CAST(JSStringIterator)
10524 10691
10525 // [string]: the [[IteratedString]] internal field. 10692 // [string]: the [[IteratedString]] internal field.
10526 DECL_ACCESSORS(string, String) 10693 DECL_ACCESSORS(string, String)
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after
11607 } 11774 }
11608 return value; 11775 return value;
11609 } 11776 }
11610 }; 11777 };
11611 11778
11612 11779
11613 } // NOLINT, false-positive due to second-order macros. 11780 } // NOLINT, false-positive due to second-order macros.
11614 } // NOLINT, false-positive due to second-order macros. 11781 } // NOLINT, false-positive due to second-order macros.
11615 11782
11616 #endif // V8_OBJECTS_H_ 11783 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698