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

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

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: latest round 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
« no previous file with comments | « src/objects-debug.cc ('k') | src/runtime/runtime-array.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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::IsJSArrayIterator() const {
694 InstanceType instance_type = map()->instance_type();
695 return (instance_type >= FIRST_ARRAY_ITERATOR_TYPE &&
696 instance_type <= LAST_ARRAY_ITERATOR_TYPE);
697 }
698
693 TYPE_CHECKER(JSSet, JS_SET_TYPE) 699 TYPE_CHECKER(JSSet, JS_SET_TYPE)
694 TYPE_CHECKER(JSMap, JS_MAP_TYPE) 700 TYPE_CHECKER(JSMap, JS_MAP_TYPE)
695 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE) 701 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE)
696 TYPE_CHECKER(JSMapIterator, JS_MAP_ITERATOR_TYPE) 702 TYPE_CHECKER(JSMapIterator, JS_MAP_ITERATOR_TYPE)
697 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) 703 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE)
698 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) 704 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE)
699 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) 705 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE)
700 TYPE_CHECKER(Map, MAP_TYPE) 706 TYPE_CHECKER(Map, MAP_TYPE)
701 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE) 707 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE)
702 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE) 708 TYPE_CHECKER(WeakFixedArray, FIXED_ARRAY_TYPE)
(...skipping 2628 matching lines...) Expand 10 before | Expand all | Expand 10 after
3331 CAST_ACCESSOR(JSMessageObject) 3337 CAST_ACCESSOR(JSMessageObject)
3332 CAST_ACCESSOR(JSModuleNamespace) 3338 CAST_ACCESSOR(JSModuleNamespace)
3333 CAST_ACCESSOR(JSFixedArrayIterator) 3339 CAST_ACCESSOR(JSFixedArrayIterator)
3334 CAST_ACCESSOR(JSObject) 3340 CAST_ACCESSOR(JSObject)
3335 CAST_ACCESSOR(JSProxy) 3341 CAST_ACCESSOR(JSProxy)
3336 CAST_ACCESSOR(JSReceiver) 3342 CAST_ACCESSOR(JSReceiver)
3337 CAST_ACCESSOR(JSRegExp) 3343 CAST_ACCESSOR(JSRegExp)
3338 CAST_ACCESSOR(JSSet) 3344 CAST_ACCESSOR(JSSet)
3339 CAST_ACCESSOR(JSSetIterator) 3345 CAST_ACCESSOR(JSSetIterator)
3340 CAST_ACCESSOR(JSStringIterator) 3346 CAST_ACCESSOR(JSStringIterator)
3347 CAST_ACCESSOR(JSArrayIterator)
3341 CAST_ACCESSOR(JSTypedArray) 3348 CAST_ACCESSOR(JSTypedArray)
3342 CAST_ACCESSOR(JSValue) 3349 CAST_ACCESSOR(JSValue)
3343 CAST_ACCESSOR(JSWeakCollection) 3350 CAST_ACCESSOR(JSWeakCollection)
3344 CAST_ACCESSOR(JSWeakMap) 3351 CAST_ACCESSOR(JSWeakMap)
3345 CAST_ACCESSOR(JSWeakSet) 3352 CAST_ACCESSOR(JSWeakSet)
3346 CAST_ACCESSOR(LayoutDescriptor) 3353 CAST_ACCESSOR(LayoutDescriptor)
3347 CAST_ACCESSOR(Map) 3354 CAST_ACCESSOR(Map)
3348 CAST_ACCESSOR(ModuleInfoEntry) 3355 CAST_ACCESSOR(ModuleInfoEntry)
3349 CAST_ACCESSOR(ModuleInfo) 3356 CAST_ACCESSOR(ModuleInfo)
3350 CAST_ACCESSOR(Name) 3357 CAST_ACCESSOR(Name)
(...skipping 4999 matching lines...) Expand 10 before | Expand all | Expand 10 after
8350 entry_storage->set(0, *key, SKIP_WRITE_BARRIER); 8357 entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
8351 entry_storage->set(1, *value, SKIP_WRITE_BARRIER); 8358 entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
8352 } 8359 }
8353 return isolate->factory()->NewJSArrayWithElements(entry_storage, 8360 return isolate->factory()->NewJSArrayWithElements(entry_storage,
8354 FAST_ELEMENTS, 2); 8361 FAST_ELEMENTS, 2);
8355 } 8362 }
8356 8363
8357 ACCESSORS(JSIteratorResult, value, Object, kValueOffset) 8364 ACCESSORS(JSIteratorResult, value, Object, kValueOffset)
8358 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset) 8365 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset)
8359 8366
8367 ACCESSORS(JSArrayIterator, object, Object, kIteratedObjectOffset)
8368 ACCESSORS(JSArrayIterator, index, Object, kNextIndexOffset)
8369 ACCESSORS(JSArrayIterator, object_map, Object, kIteratedObjectMapOffset)
8370
8360 ACCESSORS(JSStringIterator, string, String, kStringOffset) 8371 ACCESSORS(JSStringIterator, string, String, kStringOffset)
8361 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset) 8372 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)
8362 8373
8363 #undef TYPE_CHECKER 8374 #undef TYPE_CHECKER
8364 #undef CAST_ACCESSOR 8375 #undef CAST_ACCESSOR
8365 #undef INT_ACCESSORS 8376 #undef INT_ACCESSORS
8366 #undef ACCESSORS 8377 #undef ACCESSORS
8367 #undef SMI_ACCESSORS 8378 #undef SMI_ACCESSORS
8368 #undef SYNCHRONIZED_SMI_ACCESSORS 8379 #undef SYNCHRONIZED_SMI_ACCESSORS
8369 #undef NOBARRIER_SMI_ACCESSORS 8380 #undef NOBARRIER_SMI_ACCESSORS
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8403 #undef WRITE_INT64_FIELD 8414 #undef WRITE_INT64_FIELD
8404 #undef READ_BYTE_FIELD 8415 #undef READ_BYTE_FIELD
8405 #undef WRITE_BYTE_FIELD 8416 #undef WRITE_BYTE_FIELD
8406 #undef NOBARRIER_READ_BYTE_FIELD 8417 #undef NOBARRIER_READ_BYTE_FIELD
8407 #undef NOBARRIER_WRITE_BYTE_FIELD 8418 #undef NOBARRIER_WRITE_BYTE_FIELD
8408 8419
8409 } // namespace internal 8420 } // namespace internal
8410 } // namespace v8 8421 } // namespace v8
8411 8422
8412 #endif // V8_OBJECTS_INL_H_ 8423 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « 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