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

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

Issue 2915793002: [api] Prototype WeakRef implementation
Patch Set: Created 3 years, 6 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/objects-printer.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 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 TYPE_CHECKER(JSPromise, JS_PROMISE_TYPE) 169 TYPE_CHECKER(JSPromise, JS_PROMISE_TYPE)
170 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE) 170 TYPE_CHECKER(JSRegExp, JS_REGEXP_TYPE)
171 TYPE_CHECKER(JSSet, JS_SET_TYPE) 171 TYPE_CHECKER(JSSet, JS_SET_TYPE)
172 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE) 172 TYPE_CHECKER(JSSetIterator, JS_SET_ITERATOR_TYPE)
173 TYPE_CHECKER(JSAsyncFromSyncIterator, JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) 173 TYPE_CHECKER(JSAsyncFromSyncIterator, JS_ASYNC_FROM_SYNC_ITERATOR_TYPE)
174 TYPE_CHECKER(JSStringIterator, JS_STRING_ITERATOR_TYPE) 174 TYPE_CHECKER(JSStringIterator, JS_STRING_ITERATOR_TYPE)
175 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE) 175 TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE)
176 TYPE_CHECKER(JSValue, JS_VALUE_TYPE) 176 TYPE_CHECKER(JSValue, JS_VALUE_TYPE)
177 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) 177 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE)
178 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE) 178 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE)
179 TYPE_CHECKER(JSWeakRef, JS_WEAK_REF_TYPE)
179 TYPE_CHECKER(Map, MAP_TYPE) 180 TYPE_CHECKER(Map, MAP_TYPE)
180 TYPE_CHECKER(MutableHeapNumber, MUTABLE_HEAP_NUMBER_TYPE) 181 TYPE_CHECKER(MutableHeapNumber, MUTABLE_HEAP_NUMBER_TYPE)
181 TYPE_CHECKER(Oddball, ODDBALL_TYPE) 182 TYPE_CHECKER(Oddball, ODDBALL_TYPE)
182 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE) 183 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE)
183 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE) 184 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE)
184 TYPE_CHECKER(SourcePositionTableWithFrameCache, TUPLE2_TYPE) 185 TYPE_CHECKER(SourcePositionTableWithFrameCache, TUPLE2_TYPE)
185 TYPE_CHECKER(Symbol, SYMBOL_TYPE) 186 TYPE_CHECKER(Symbol, SYMBOL_TYPE)
186 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE) 187 TYPE_CHECKER(TransitionArray, TRANSITION_ARRAY_TYPE)
187 TYPE_CHECKER(TypeFeedbackInfo, TUPLE3_TYPE) 188 TYPE_CHECKER(TypeFeedbackInfo, TUPLE3_TYPE)
188 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE) 189 TYPE_CHECKER(WeakCell, WEAK_CELL_TYPE)
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 363
363 bool HeapObject::IsJSProxy() const { return map()->IsJSProxyMap(); } 364 bool HeapObject::IsJSProxy() const { return map()->IsJSProxyMap(); }
364 365
365 bool HeapObject::IsJSArrayIterator() const { 366 bool HeapObject::IsJSArrayIterator() const {
366 InstanceType instance_type = map()->instance_type(); 367 InstanceType instance_type = map()->instance_type();
367 return (instance_type >= FIRST_ARRAY_ITERATOR_TYPE && 368 return (instance_type >= FIRST_ARRAY_ITERATOR_TYPE &&
368 instance_type <= LAST_ARRAY_ITERATOR_TYPE); 369 instance_type <= LAST_ARRAY_ITERATOR_TYPE);
369 } 370 }
370 371
371 bool HeapObject::IsJSWeakCollection() const { 372 bool HeapObject::IsJSWeakCollection() const {
372 return IsJSWeakMap() || IsJSWeakSet(); 373 return IsJSWeakMap() || IsJSWeakSet() || IsJSWeakRef();
373 } 374 }
374 375
375 bool HeapObject::IsJSCollection() const { return IsJSMap() || IsJSSet(); } 376 bool HeapObject::IsJSCollection() const { return IsJSMap() || IsJSSet(); }
376 377
377 bool HeapObject::IsDescriptorArray() const { return IsFixedArray(); } 378 bool HeapObject::IsDescriptorArray() const { return IsFixedArray(); }
378 379
379 bool HeapObject::IsFrameArray() const { return IsFixedArray(); } 380 bool HeapObject::IsFrameArray() const { return IsFixedArray(); }
380 381
381 bool HeapObject::IsArrayList() const { return IsFixedArray(); } 382 bool HeapObject::IsArrayList() const { return IsFixedArray(); }
382 383
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 CAST_ACCESSOR(JSSetIterator) 671 CAST_ACCESSOR(JSSetIterator)
671 CAST_ACCESSOR(JSSloppyArgumentsObject) 672 CAST_ACCESSOR(JSSloppyArgumentsObject)
672 CAST_ACCESSOR(JSAsyncFromSyncIterator) 673 CAST_ACCESSOR(JSAsyncFromSyncIterator)
673 CAST_ACCESSOR(JSStringIterator) 674 CAST_ACCESSOR(JSStringIterator)
674 CAST_ACCESSOR(JSArrayIterator) 675 CAST_ACCESSOR(JSArrayIterator)
675 CAST_ACCESSOR(JSTypedArray) 676 CAST_ACCESSOR(JSTypedArray)
676 CAST_ACCESSOR(JSValue) 677 CAST_ACCESSOR(JSValue)
677 CAST_ACCESSOR(JSWeakCollection) 678 CAST_ACCESSOR(JSWeakCollection)
678 CAST_ACCESSOR(JSWeakMap) 679 CAST_ACCESSOR(JSWeakMap)
679 CAST_ACCESSOR(JSWeakSet) 680 CAST_ACCESSOR(JSWeakSet)
681 CAST_ACCESSOR(JSWeakRef)
680 CAST_ACCESSOR(LayoutDescriptor) 682 CAST_ACCESSOR(LayoutDescriptor)
681 CAST_ACCESSOR(Map) 683 CAST_ACCESSOR(Map)
682 CAST_ACCESSOR(ModuleInfo) 684 CAST_ACCESSOR(ModuleInfo)
683 CAST_ACCESSOR(Name) 685 CAST_ACCESSOR(Name)
684 CAST_ACCESSOR(NameDictionary) 686 CAST_ACCESSOR(NameDictionary)
685 CAST_ACCESSOR(NormalizedMapCache) 687 CAST_ACCESSOR(NormalizedMapCache)
686 CAST_ACCESSOR(Object) 688 CAST_ACCESSOR(Object)
687 CAST_ACCESSOR(ObjectHashTable) 689 CAST_ACCESSOR(ObjectHashTable)
688 CAST_ACCESSOR(ObjectHashSet) 690 CAST_ACCESSOR(ObjectHashSet)
689 CAST_ACCESSOR(Oddball) 691 CAST_ACCESSOR(Oddball)
(...skipping 1439 matching lines...) Expand 10 before | Expand all | Expand 10 after
2129 case JS_MAP_TYPE: 2131 case JS_MAP_TYPE:
2130 return JSMap::kSize; 2132 return JSMap::kSize;
2131 case JS_SET_ITERATOR_TYPE: 2133 case JS_SET_ITERATOR_TYPE:
2132 return JSSetIterator::kSize; 2134 return JSSetIterator::kSize;
2133 case JS_MAP_ITERATOR_TYPE: 2135 case JS_MAP_ITERATOR_TYPE:
2134 return JSMapIterator::kSize; 2136 return JSMapIterator::kSize;
2135 case JS_WEAK_MAP_TYPE: 2137 case JS_WEAK_MAP_TYPE:
2136 return JSWeakMap::kSize; 2138 return JSWeakMap::kSize;
2137 case JS_WEAK_SET_TYPE: 2139 case JS_WEAK_SET_TYPE:
2138 return JSWeakSet::kSize; 2140 return JSWeakSet::kSize;
2141 case JS_WEAK_REF_TYPE:
2142 return JSWeakRef::kSize;
2139 case JS_PROMISE_CAPABILITY_TYPE: 2143 case JS_PROMISE_CAPABILITY_TYPE:
2140 return JSPromiseCapability::kSize; 2144 return JSPromiseCapability::kSize;
2141 case JS_PROMISE_TYPE: 2145 case JS_PROMISE_TYPE:
2142 return JSPromise::kSize; 2146 return JSPromise::kSize;
2143 case JS_REGEXP_TYPE: 2147 case JS_REGEXP_TYPE:
2144 return JSRegExp::kSize; 2148 return JSRegExp::kSize;
2145 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 2149 case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
2146 return JSObject::kHeaderSize; 2150 return JSObject::kHeaderSize;
2147 case JS_MESSAGE_OBJECT_TYPE: 2151 case JS_MESSAGE_OBJECT_TYPE:
2148 return JSMessageObject::kSize; 2152 return JSMessageObject::kSize;
(...skipping 4505 matching lines...) Expand 10 before | Expand all | Expand 10 after
6654 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(table, Object, kTableOffset) 6658 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(table, Object, kTableOffset)
6655 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(index, Object, kIndexOffset) 6659 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(index, Object, kIndexOffset)
6656 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(kind, Object, kKindOffset) 6660 ORDERED_HASH_TABLE_ITERATOR_ACCESSORS(kind, Object, kKindOffset)
6657 6661
6658 #undef ORDERED_HASH_TABLE_ITERATOR_ACCESSORS 6662 #undef ORDERED_HASH_TABLE_ITERATOR_ACCESSORS
6659 6663
6660 6664
6661 ACCESSORS(JSWeakCollection, table, Object, kTableOffset) 6665 ACCESSORS(JSWeakCollection, table, Object, kTableOffset)
6662 ACCESSORS(JSWeakCollection, next, Object, kNextOffset) 6666 ACCESSORS(JSWeakCollection, next, Object, kNextOffset)
6663 6667
6668 ACCESSORS(JSWeakRef, executor, JSFunction, kExecutorOffset)
6669 ACCESSORS(JSWeakRef, target, WeakCell, kTargetOffset)
6670 ACCESSORS(JSWeakRef, holdings, Object, kHoldingsOffset)
6671 SMI_ACCESSORS(JSWeakRef, flags, kFlagsOffset)
6672 BOOL_ACCESSORS(JSWeakRef, flags, held, kHeldBit)
6673 BOOL_ACCESSORS(JSWeakRef, flags, queued, kQueuedBit)
6664 6674
6665 Address Foreign::foreign_address() { 6675 Address Foreign::foreign_address() {
6666 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset)); 6676 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset));
6667 } 6677 }
6668 6678
6669 6679
6670 void Foreign::set_foreign_address(Address value) { 6680 void Foreign::set_foreign_address(Address value) {
6671 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value)); 6681 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value));
6672 } 6682 }
6673 6683
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
6886 Code::kHeaderSize); 6896 Code::kHeaderSize);
6887 return instruction_size() + Code::kHeaderSize; 6897 return instruction_size() + Code::kHeaderSize;
6888 } 6898 }
6889 6899
6890 6900
6891 int Code::CodeSize() { return SizeFor(body_size()); } 6901 int Code::CodeSize() { return SizeFor(body_size()); }
6892 6902
6893 6903
6894 ACCESSORS(JSArray, length, Object, kLengthOffset) 6904 ACCESSORS(JSArray, length, Object, kLengthOffset)
6895 6905
6896
6897 void* JSArrayBuffer::backing_store() const { 6906 void* JSArrayBuffer::backing_store() const {
6898 intptr_t ptr = READ_INTPTR_FIELD(this, kBackingStoreOffset); 6907 intptr_t ptr = READ_INTPTR_FIELD(this, kBackingStoreOffset);
6899 return reinterpret_cast<void*>(ptr); 6908 return reinterpret_cast<void*>(ptr);
6900 } 6909 }
6901 6910
6902 6911
6903 void JSArrayBuffer::set_backing_store(void* value, WriteBarrierMode mode) { 6912 void JSArrayBuffer::set_backing_store(void* value, WriteBarrierMode mode) {
6904 intptr_t ptr = reinterpret_cast<intptr_t>(value); 6913 intptr_t ptr = reinterpret_cast<intptr_t>(value);
6905 WRITE_INTPTR_FIELD(this, kBackingStoreOffset, ptr); 6914 WRITE_INTPTR_FIELD(this, kBackingStoreOffset, ptr);
6906 } 6915 }
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after
8375 #undef WRITE_BYTE_FIELD 8384 #undef WRITE_BYTE_FIELD
8376 #undef NOBARRIER_READ_BYTE_FIELD 8385 #undef NOBARRIER_READ_BYTE_FIELD
8377 #undef NOBARRIER_WRITE_BYTE_FIELD 8386 #undef NOBARRIER_WRITE_BYTE_FIELD
8378 8387
8379 } // namespace internal 8388 } // namespace internal
8380 } // namespace v8 8389 } // namespace v8
8381 8390
8382 #include "src/objects/object-macros-undef.h" 8391 #include "src/objects/object-macros-undef.h"
8383 8392
8384 #endif // V8_OBJECTS_INL_H_ 8393 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698