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

Side by Side Diff: src/objects-inl.h

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: V1 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 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 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 return map()->instance_type() >= FIRST_JS_RECEIVER_TYPE; 683 return map()->instance_type() >= FIRST_JS_RECEIVER_TYPE;
684 } 684 }
685 685
686 bool HeapObject::IsJSObject() const { 686 bool HeapObject::IsJSObject() const {
687 STATIC_ASSERT(LAST_JS_OBJECT_TYPE == LAST_TYPE); 687 STATIC_ASSERT(LAST_JS_OBJECT_TYPE == LAST_TYPE);
688 return map()->IsJSObjectMap(); 688 return map()->IsJSObjectMap();
689 } 689 }
690 690
691 bool HeapObject::IsJSProxy() const { return map()->IsJSProxyMap(); } 691 bool HeapObject::IsJSProxy() const { return map()->IsJSProxyMap(); }
692 692
693 bool HeapObject::IsJSTypedArrayKeyIterator() const {
694 return map()->instance_type() == JS_TYPED_ARRAY_KEY_ITERATOR_TYPE;
695 }
696
697 bool HeapObject::IsJSTypedArrayValueIterator() const {
698 InstanceType instance_type = map()->instance_type();
699 return instance_type >= FIRST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE &&
700 instance_type <= LAST_JS_TYPED_ARRAY_KEY_ITERATOR_TYPE;
701 }
702
703 bool HeapObject::IsJSTypedArrayKeyValueIterator() const {
704 InstanceType instance_type = map()->instance_type();
705 return instance_type >= FIRST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE &&
706 instance_type <= LAST_JS_TYPED_ARRAY_KEY_VALUE_ITERATOR_TYPE;
707 }
708
709 bool HeapObject::IsJSTypedArrayIterator() const {
710 return (IsJSTypedArrayKeyIterator() || IsJSTypedArrayValueIterator() ||
711 IsJSTypedArrayKeyValueIterator());
712 }
713
714 bool HeapObject::IsJSArrayKeyIterator() const {
715 return map()->instance_type() == JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE;
716 }
717
718 bool HeapObject::IsJSArrayValueIterator() const {
719 InstanceType instance_type = map()->instance_type();
720 return instance_type >= FIRST_JS_ARRAY_VALUE_ITERATOR_TYPE &&
721 instance_type <= LAST_JS_ARRAY_VALUE_ITERATOR_TYPE;
722 }
723
724 bool HeapObject::IsJSArrayKeyValueIterator() const {
725 InstanceType instance_type = map()->instance_type();
726 return instance_type >= FIRST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE &&
727 instance_type <= LAST_JS_ARRAY_KEY_VALUE_ITERATOR_TYPE;
728 }
729
730 bool HeapObject::IsJSArrayIterator() const {
731 return (IsJSArrayKeyIterator() || IsJSArrayValueIterator() ||
732 IsJSArrayKeyValueIterator());
733 }
734
693 TYPE_CHECKER(JSSet, JS_SET_TYPE) 735 TYPE_CHECKER(JSSet, JS_SET_TYPE)
694 TYPE_CHECKER(JSMap, JS_MAP_TYPE) 736 TYPE_CHECKER(JSMap, JS_MAP_TYPE)
695 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE) 737 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE)
696 TYPE_CHECKER(JSMapIterator, JS_MAP_ITERATOR_TYPE) 738 TYPE_CHECKER(JSMapIterator, JS_MAP_ITERATOR_TYPE)
697 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) 739 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE)
698 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) 740 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE)
699 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) 741 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE)
700 TYPE_CHECKER(Map, MAP_TYPE) 742 TYPE_CHECKER(Map, MAP_TYPE)
701 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE) 743 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE)
702 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) 744 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE)
(...skipping 2580 matching lines...) Expand 10 before | Expand all | Expand 10 after
3283 CAST_ACCESSOR(JSMapIterator) 3325 CAST_ACCESSOR(JSMapIterator)
3284 CAST_ACCESSOR(JSMessageObject) 3326 CAST_ACCESSOR(JSMessageObject)
3285 CAST_ACCESSOR(JSModuleNamespace) 3327 CAST_ACCESSOR(JSModuleNamespace)
3286 CAST_ACCESSOR(JSObject) 3328 CAST_ACCESSOR(JSObject)
3287 CAST_ACCESSOR(JSProxy) 3329 CAST_ACCESSOR(JSProxy)
3288 CAST_ACCESSOR(JSReceiver) 3330 CAST_ACCESSOR(JSReceiver)
3289 CAST_ACCESSOR(JSRegExp) 3331 CAST_ACCESSOR(JSRegExp)
3290 CAST_ACCESSOR(JSSet) 3332 CAST_ACCESSOR(JSSet)
3291 CAST_ACCESSOR(JSSetIterator) 3333 CAST_ACCESSOR(JSSetIterator)
3292 CAST_ACCESSOR(JSStringIterator) 3334 CAST_ACCESSOR(JSStringIterator)
3335 CAST_ACCESSOR(JSTypedArrayIterator)
3336 CAST_ACCESSOR(JSArrayIterator)
3293 CAST_ACCESSOR(JSTypedArray) 3337 CAST_ACCESSOR(JSTypedArray)
3294 CAST_ACCESSOR(JSValue) 3338 CAST_ACCESSOR(JSValue)
3295 CAST_ACCESSOR(JSWeakCollection) 3339 CAST_ACCESSOR(JSWeakCollection)
3296 CAST_ACCESSOR(JSWeakMap) 3340 CAST_ACCESSOR(JSWeakMap)
3297 CAST_ACCESSOR(JSWeakSet) 3341 CAST_ACCESSOR(JSWeakSet)
3298 CAST_ACCESSOR(LayoutDescriptor) 3342 CAST_ACCESSOR(LayoutDescriptor)
3299 CAST_ACCESSOR(Map) 3343 CAST_ACCESSOR(Map)
3300 CAST_ACCESSOR(ModuleInfoEntry) 3344 CAST_ACCESSOR(ModuleInfoEntry)
3301 CAST_ACCESSOR(ModuleInfo) 3345 CAST_ACCESSOR(ModuleInfo)
3302 CAST_ACCESSOR(Name) 3346 CAST_ACCESSOR(Name)
(...skipping 4974 matching lines...) Expand 10 before | Expand all | Expand 10 after
8277 entry_storage->set(0, *key, SKIP_WRITE_BARRIER); 8321 entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
8278 entry_storage->set(1, *value, SKIP_WRITE_BARRIER); 8322 entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
8279 } 8323 }
8280 return isolate->factory()->NewJSArrayWithElements(entry_storage, 8324 return isolate->factory()->NewJSArrayWithElements(entry_storage,
8281 FAST_ELEMENTS, 2); 8325 FAST_ELEMENTS, 2);
8282 } 8326 }
8283 8327
8284 ACCESSORS(JSIteratorResult, value, Object, kValueOffset) 8328 ACCESSORS(JSIteratorResult, value, Object, kValueOffset)
8285 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset) 8329 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset)
8286 8330
8331 ACCESSORS(JSTypedArrayIterator, object, Object, kIteratedObjectOffset)
8332 SMI_ACCESSORS(JSTypedArrayIterator, index, kNextIndexOffset)
8333
8334 ACCESSORS(JSArrayIterator, object, Object, kIteratedObjectOffset)
8335 ACCESSORS(JSArrayIterator, index, Object, kNextIndexOffset)
8336 ACCESSORS(JSArrayIterator, map, Map, kIteratedObjectMapOffset)
8337
8287 ACCESSORS(JSStringIterator, string, String, kStringOffset) 8338 ACCESSORS(JSStringIterator, string, String, kStringOffset)
8288 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset) 8339 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)
8289 8340
8290 #undef TYPE_CHECKER 8341 #undef TYPE_CHECKER
8291 #undef CAST_ACCESSOR 8342 #undef CAST_ACCESSOR
8292 #undef INT_ACCESSORS 8343 #undef INT_ACCESSORS
8293 #undef ACCESSORS 8344 #undef ACCESSORS
8294 #undef SMI_ACCESSORS 8345 #undef SMI_ACCESSORS
8295 #undef SYNCHRONIZED_SMI_ACCESSORS 8346 #undef SYNCHRONIZED_SMI_ACCESSORS
8296 #undef NOBARRIER_SMI_ACCESSORS 8347 #undef NOBARRIER_SMI_ACCESSORS
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8330 #undef WRITE_INT64_FIELD 8381 #undef WRITE_INT64_FIELD
8331 #undef READ_BYTE_FIELD 8382 #undef READ_BYTE_FIELD
8332 #undef WRITE_BYTE_FIELD 8383 #undef WRITE_BYTE_FIELD
8333 #undef NOBARRIER_READ_BYTE_FIELD 8384 #undef NOBARRIER_READ_BYTE_FIELD
8334 #undef NOBARRIER_WRITE_BYTE_FIELD 8385 #undef NOBARRIER_WRITE_BYTE_FIELD
8335 8386
8336 } // namespace internal 8387 } // namespace internal
8337 } // namespace v8 8388 } // namespace v8
8338 8389
8339 #endif // V8_OBJECTS_INL_H_ 8390 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/bootstrapper.cc ('K') | « src/objects-debug.cc ('k') | src/runtime/runtime-array.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698