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

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

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: revert unneeded prologue.js changes 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 2584 matching lines...) Expand 10 before | Expand all | Expand 10 after
3287 CAST_ACCESSOR(JSMessageObject) 3329 CAST_ACCESSOR(JSMessageObject)
3288 CAST_ACCESSOR(JSModuleNamespace) 3330 CAST_ACCESSOR(JSModuleNamespace)
3289 CAST_ACCESSOR(JSFixedArrayIterator) 3331 CAST_ACCESSOR(JSFixedArrayIterator)
3290 CAST_ACCESSOR(JSObject) 3332 CAST_ACCESSOR(JSObject)
3291 CAST_ACCESSOR(JSProxy) 3333 CAST_ACCESSOR(JSProxy)
3292 CAST_ACCESSOR(JSReceiver) 3334 CAST_ACCESSOR(JSReceiver)
3293 CAST_ACCESSOR(JSRegExp) 3335 CAST_ACCESSOR(JSRegExp)
3294 CAST_ACCESSOR(JSSet) 3336 CAST_ACCESSOR(JSSet)
3295 CAST_ACCESSOR(JSSetIterator) 3337 CAST_ACCESSOR(JSSetIterator)
3296 CAST_ACCESSOR(JSStringIterator) 3338 CAST_ACCESSOR(JSStringIterator)
3339 CAST_ACCESSOR(JSTypedArrayIterator)
3340 CAST_ACCESSOR(JSArrayIterator)
3297 CAST_ACCESSOR(JSTypedArray) 3341 CAST_ACCESSOR(JSTypedArray)
3298 CAST_ACCESSOR(JSValue) 3342 CAST_ACCESSOR(JSValue)
3299 CAST_ACCESSOR(JSWeakCollection) 3343 CAST_ACCESSOR(JSWeakCollection)
3300 CAST_ACCESSOR(JSWeakMap) 3344 CAST_ACCESSOR(JSWeakMap)
3301 CAST_ACCESSOR(JSWeakSet) 3345 CAST_ACCESSOR(JSWeakSet)
3302 CAST_ACCESSOR(LayoutDescriptor) 3346 CAST_ACCESSOR(LayoutDescriptor)
3303 CAST_ACCESSOR(Map) 3347 CAST_ACCESSOR(Map)
3304 CAST_ACCESSOR(ModuleInfoEntry) 3348 CAST_ACCESSOR(ModuleInfoEntry)
3305 CAST_ACCESSOR(ModuleInfo) 3349 CAST_ACCESSOR(ModuleInfo)
3306 CAST_ACCESSOR(Name) 3350 CAST_ACCESSOR(Name)
(...skipping 4993 matching lines...) Expand 10 before | Expand all | Expand 10 after
8300 entry_storage->set(0, *key, SKIP_WRITE_BARRIER); 8344 entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
8301 entry_storage->set(1, *value, SKIP_WRITE_BARRIER); 8345 entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
8302 } 8346 }
8303 return isolate->factory()->NewJSArrayWithElements(entry_storage, 8347 return isolate->factory()->NewJSArrayWithElements(entry_storage,
8304 FAST_ELEMENTS, 2); 8348 FAST_ELEMENTS, 2);
8305 } 8349 }
8306 8350
8307 ACCESSORS(JSIteratorResult, value, Object, kValueOffset) 8351 ACCESSORS(JSIteratorResult, value, Object, kValueOffset)
8308 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset) 8352 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset)
8309 8353
8354 ACCESSORS(JSTypedArrayIterator, object, Object, kIteratedObjectOffset)
8355 SMI_ACCESSORS(JSTypedArrayIterator, index, kNextIndexOffset)
8356
8357 ACCESSORS(JSArrayIterator, object, Object, kIteratedObjectOffset)
8358 ACCESSORS(JSArrayIterator, index, Object, kNextIndexOffset)
8359 ACCESSORS(JSArrayIterator, map, Map, kIteratedObjectMapOffset)
8360
8310 ACCESSORS(JSStringIterator, string, String, kStringOffset) 8361 ACCESSORS(JSStringIterator, string, String, kStringOffset)
8311 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset) 8362 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)
8312 8363
8313 #undef TYPE_CHECKER 8364 #undef TYPE_CHECKER
8314 #undef CAST_ACCESSOR 8365 #undef CAST_ACCESSOR
8315 #undef INT_ACCESSORS 8366 #undef INT_ACCESSORS
8316 #undef ACCESSORS 8367 #undef ACCESSORS
8317 #undef SMI_ACCESSORS 8368 #undef SMI_ACCESSORS
8318 #undef SYNCHRONIZED_SMI_ACCESSORS 8369 #undef SYNCHRONIZED_SMI_ACCESSORS
8319 #undef NOBARRIER_SMI_ACCESSORS 8370 #undef NOBARRIER_SMI_ACCESSORS
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8353 #undef WRITE_INT64_FIELD 8404 #undef WRITE_INT64_FIELD
8354 #undef READ_BYTE_FIELD 8405 #undef READ_BYTE_FIELD
8355 #undef WRITE_BYTE_FIELD 8406 #undef WRITE_BYTE_FIELD
8356 #undef NOBARRIER_READ_BYTE_FIELD 8407 #undef NOBARRIER_READ_BYTE_FIELD
8357 #undef NOBARRIER_WRITE_BYTE_FIELD 8408 #undef NOBARRIER_WRITE_BYTE_FIELD
8358 8409
8359 } // namespace internal 8410 } // namespace internal
8360 } // namespace v8 8411 } // namespace v8
8361 8412
8362 #endif // V8_OBJECTS_INL_H_ 8413 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | src/runtime/runtime-array.cc » ('j') | test/test262/test262.status » ('J')

Powered by Google App Engine
This is Rietveld 408576698