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

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

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: fix JSArrayIteratorVerify() 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::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 4994 matching lines...) Expand 10 before | Expand all | Expand 10 after
8345 entry_storage->set(0, *key, SKIP_WRITE_BARRIER); 8352 entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
8346 entry_storage->set(1, *value, SKIP_WRITE_BARRIER); 8353 entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
8347 } 8354 }
8348 return isolate->factory()->NewJSArrayWithElements(entry_storage, 8355 return isolate->factory()->NewJSArrayWithElements(entry_storage,
8349 FAST_ELEMENTS, 2); 8356 FAST_ELEMENTS, 2);
8350 } 8357 }
8351 8358
8352 ACCESSORS(JSIteratorResult, value, Object, kValueOffset) 8359 ACCESSORS(JSIteratorResult, value, Object, kValueOffset)
8353 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset) 8360 ACCESSORS(JSIteratorResult, done, Object, kDoneOffset)
8354 8361
8362 ACCESSORS(JSArrayIterator, object, Object, kIteratedObjectOffset)
8363 ACCESSORS(JSArrayIterator, index, Object, kNextIndexOffset)
8364 ACCESSORS(JSArrayIterator, object_map, Object, kIteratedObjectMapOffset)
8365
8355 ACCESSORS(JSStringIterator, string, String, kStringOffset) 8366 ACCESSORS(JSStringIterator, string, String, kStringOffset)
8356 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset) 8367 SMI_ACCESSORS(JSStringIterator, index, kNextIndexOffset)
8357 8368
8358 #undef TYPE_CHECKER 8369 #undef TYPE_CHECKER
8359 #undef CAST_ACCESSOR 8370 #undef CAST_ACCESSOR
8360 #undef INT_ACCESSORS 8371 #undef INT_ACCESSORS
8361 #undef ACCESSORS 8372 #undef ACCESSORS
8362 #undef SMI_ACCESSORS 8373 #undef SMI_ACCESSORS
8363 #undef SYNCHRONIZED_SMI_ACCESSORS 8374 #undef SYNCHRONIZED_SMI_ACCESSORS
8364 #undef NOBARRIER_SMI_ACCESSORS 8375 #undef NOBARRIER_SMI_ACCESSORS
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8398 #undef WRITE_INT64_FIELD 8409 #undef WRITE_INT64_FIELD
8399 #undef READ_BYTE_FIELD 8410 #undef READ_BYTE_FIELD
8400 #undef WRITE_BYTE_FIELD 8411 #undef WRITE_BYTE_FIELD
8401 #undef NOBARRIER_READ_BYTE_FIELD 8412 #undef NOBARRIER_READ_BYTE_FIELD
8402 #undef NOBARRIER_WRITE_BYTE_FIELD 8413 #undef NOBARRIER_WRITE_BYTE_FIELD
8403 8414
8404 } // namespace internal 8415 } // namespace internal
8405 } // namespace v8 8416 } // namespace v8
8406 8417
8407 #endif // V8_OBJECTS_INL_H_ 8418 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/objects.h ('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