| OLD | NEW |
| 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 3316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3327 CAST_ACCESSOR(ExternalTwoByteString) | 3327 CAST_ACCESSOR(ExternalTwoByteString) |
| 3328 CAST_ACCESSOR(ExternalUint16Array) | 3328 CAST_ACCESSOR(ExternalUint16Array) |
| 3329 CAST_ACCESSOR(ExternalUint32Array) | 3329 CAST_ACCESSOR(ExternalUint32Array) |
| 3330 CAST_ACCESSOR(ExternalUint8Array) | 3330 CAST_ACCESSOR(ExternalUint8Array) |
| 3331 CAST_ACCESSOR(ExternalUint8ClampedArray) | 3331 CAST_ACCESSOR(ExternalUint8ClampedArray) |
| 3332 CAST_ACCESSOR(FixedArray) | 3332 CAST_ACCESSOR(FixedArray) |
| 3333 CAST_ACCESSOR(FixedArrayBase) | 3333 CAST_ACCESSOR(FixedArrayBase) |
| 3334 CAST_ACCESSOR(FixedDoubleArray) | 3334 CAST_ACCESSOR(FixedDoubleArray) |
| 3335 CAST_ACCESSOR(FixedTypedArrayBase) | 3335 CAST_ACCESSOR(FixedTypedArrayBase) |
| 3336 CAST_ACCESSOR(Foreign) | 3336 CAST_ACCESSOR(Foreign) |
| 3337 CAST_ACCESSOR(FreeSpace) |
| 3337 CAST_ACCESSOR(GlobalObject) | 3338 CAST_ACCESSOR(GlobalObject) |
| 3338 CAST_ACCESSOR(HeapObject) | 3339 CAST_ACCESSOR(HeapObject) |
| 3339 CAST_ACCESSOR(JSArray) | 3340 CAST_ACCESSOR(JSArray) |
| 3340 CAST_ACCESSOR(JSArrayBuffer) | 3341 CAST_ACCESSOR(JSArrayBuffer) |
| 3341 CAST_ACCESSOR(JSArrayBufferView) | 3342 CAST_ACCESSOR(JSArrayBufferView) |
| 3342 CAST_ACCESSOR(JSBuiltinsObject) | 3343 CAST_ACCESSOR(JSBuiltinsObject) |
| 3343 CAST_ACCESSOR(JSDataView) | 3344 CAST_ACCESSOR(JSDataView) |
| 3344 CAST_ACCESSOR(JSDate) | 3345 CAST_ACCESSOR(JSDate) |
| 3345 CAST_ACCESSOR(JSFunction) | 3346 CAST_ACCESSOR(JSFunction) |
| 3346 CAST_ACCESSOR(JSFunctionProxy) | 3347 CAST_ACCESSOR(JSFunctionProxy) |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3435 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) | 3436 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) |
| 3436 SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) | 3437 SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) |
| 3437 | 3438 |
| 3438 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) | 3439 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) |
| 3439 NOBARRIER_SMI_ACCESSORS(FreeSpace, size, kSizeOffset) | 3440 NOBARRIER_SMI_ACCESSORS(FreeSpace, size, kSizeOffset) |
| 3440 | 3441 |
| 3441 SMI_ACCESSORS(String, length, kLengthOffset) | 3442 SMI_ACCESSORS(String, length, kLengthOffset) |
| 3442 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset) | 3443 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset) |
| 3443 | 3444 |
| 3444 | 3445 |
| 3445 FreeSpace* FreeSpace::next() { | |
| 3446 DCHECK(map() == GetHeap()->raw_unchecked_free_space_map() || | |
| 3447 (!GetHeap()->deserialization_complete() && map() == NULL)); | |
| 3448 DCHECK_LE(kNextOffset + kPointerSize, nobarrier_size()); | |
| 3449 return reinterpret_cast<FreeSpace*>( | |
| 3450 Memory::Address_at(address() + kNextOffset)); | |
| 3451 } | |
| 3452 | |
| 3453 | |
| 3454 FreeSpace** FreeSpace::next_address() { | |
| 3455 DCHECK(map() == GetHeap()->raw_unchecked_free_space_map() || | |
| 3456 (!GetHeap()->deserialization_complete() && map() == NULL)); | |
| 3457 DCHECK_LE(kNextOffset + kPointerSize, nobarrier_size()); | |
| 3458 return reinterpret_cast<FreeSpace**>(address() + kNextOffset); | |
| 3459 } | |
| 3460 | |
| 3461 | |
| 3462 void FreeSpace::set_next(FreeSpace* next) { | |
| 3463 DCHECK(map() == GetHeap()->raw_unchecked_free_space_map() || | |
| 3464 (!GetHeap()->deserialization_complete() && map() == NULL)); | |
| 3465 DCHECK_LE(kNextOffset + kPointerSize, nobarrier_size()); | |
| 3466 base::NoBarrier_Store( | |
| 3467 reinterpret_cast<base::AtomicWord*>(address() + kNextOffset), | |
| 3468 reinterpret_cast<base::AtomicWord>(next)); | |
| 3469 } | |
| 3470 | |
| 3471 | |
| 3472 FreeSpace* FreeSpace::cast(HeapObject* o) { | |
| 3473 SLOW_DCHECK(!o->GetHeap()->deserialization_complete() || o->IsFreeSpace()); | |
| 3474 return reinterpret_cast<FreeSpace*>(o); | |
| 3475 } | |
| 3476 | |
| 3477 | |
| 3478 uint32_t Name::hash_field() { | 3446 uint32_t Name::hash_field() { |
| 3479 return READ_UINT32_FIELD(this, kHashFieldOffset); | 3447 return READ_UINT32_FIELD(this, kHashFieldOffset); |
| 3480 } | 3448 } |
| 3481 | 3449 |
| 3482 | 3450 |
| 3483 void Name::set_hash_field(uint32_t value) { | 3451 void Name::set_hash_field(uint32_t value) { |
| 3484 WRITE_UINT32_FIELD(this, kHashFieldOffset, value); | 3452 WRITE_UINT32_FIELD(this, kHashFieldOffset, value); |
| 3485 #if V8_HOST_ARCH_64_BIT | 3453 #if V8_HOST_ARCH_64_BIT |
| 3486 #if V8_TARGET_LITTLE_ENDIAN | 3454 #if V8_TARGET_LITTLE_ENDIAN |
| 3487 WRITE_UINT32_FIELD(this, kHashFieldSlot + kIntSize, 0); | 3455 WRITE_UINT32_FIELD(this, kHashFieldSlot + kIntSize, 0); |
| (...skipping 4062 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7550 #undef READ_SHORT_FIELD | 7518 #undef READ_SHORT_FIELD |
| 7551 #undef WRITE_SHORT_FIELD | 7519 #undef WRITE_SHORT_FIELD |
| 7552 #undef READ_BYTE_FIELD | 7520 #undef READ_BYTE_FIELD |
| 7553 #undef WRITE_BYTE_FIELD | 7521 #undef WRITE_BYTE_FIELD |
| 7554 #undef NOBARRIER_READ_BYTE_FIELD | 7522 #undef NOBARRIER_READ_BYTE_FIELD |
| 7555 #undef NOBARRIER_WRITE_BYTE_FIELD | 7523 #undef NOBARRIER_WRITE_BYTE_FIELD |
| 7556 | 7524 |
| 7557 } } // namespace v8::internal | 7525 } } // namespace v8::internal |
| 7558 | 7526 |
| 7559 #endif // V8_OBJECTS_INL_H_ | 7527 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |