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 6406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6417 } | 6417 } |
6418 | 6418 |
6419 | 6419 |
6420 void JSArrayBuffer::set_backing_store(void* value, WriteBarrierMode mode) { | 6420 void JSArrayBuffer::set_backing_store(void* value, WriteBarrierMode mode) { |
6421 intptr_t ptr = reinterpret_cast<intptr_t>(value); | 6421 intptr_t ptr = reinterpret_cast<intptr_t>(value); |
6422 WRITE_INTPTR_FIELD(this, kBackingStoreOffset, ptr); | 6422 WRITE_INTPTR_FIELD(this, kBackingStoreOffset, ptr); |
6423 } | 6423 } |
6424 | 6424 |
6425 | 6425 |
6426 ACCESSORS(JSArrayBuffer, byte_length, Object, kByteLengthOffset) | 6426 ACCESSORS(JSArrayBuffer, byte_length, Object, kByteLengthOffset) |
6427 ACCESSORS_TO_SMI(JSArrayBuffer, flag, kFlagOffset) | |
6428 | 6427 |
6429 | 6428 |
6430 bool JSArrayBuffer::is_external() { | 6429 void JSArrayBuffer::set_bit_field(uint32_t bits) { |
6431 return BooleanBit::get(flag(), kIsExternalBit); | 6430 if (kInt32Size != kPointerSize) { |
| 6431 WRITE_UINT32_FIELD(this, kBitFieldOffset + kInt32Size, 0); |
| 6432 } |
| 6433 WRITE_UINT32_FIELD(this, kBitFieldOffset, bits); |
6432 } | 6434 } |
6433 | 6435 |
6434 | 6436 |
| 6437 uint32_t JSArrayBuffer::bit_field() const { |
| 6438 return READ_UINT32_FIELD(this, kBitFieldOffset); |
| 6439 } |
| 6440 |
| 6441 |
| 6442 bool JSArrayBuffer::is_external() { return IsExternal::decode(bit_field()); } |
| 6443 |
| 6444 |
6435 void JSArrayBuffer::set_is_external(bool value) { | 6445 void JSArrayBuffer::set_is_external(bool value) { |
6436 set_flag(BooleanBit::set(flag(), kIsExternalBit, value)); | 6446 set_bit_field(IsExternal::update(bit_field(), value)); |
6437 } | 6447 } |
6438 | 6448 |
6439 | 6449 |
6440 bool JSArrayBuffer::should_be_freed() { | 6450 bool JSArrayBuffer::should_be_freed() { |
6441 return BooleanBit::get(flag(), kShouldBeFreed); | 6451 return ShouldBeFreed::decode(bit_field()); |
6442 } | 6452 } |
6443 | 6453 |
6444 | 6454 |
6445 void JSArrayBuffer::set_should_be_freed(bool value) { | 6455 void JSArrayBuffer::set_should_be_freed(bool value) { |
6446 set_flag(BooleanBit::set(flag(), kShouldBeFreed, value)); | 6456 set_bit_field(ShouldBeFreed::update(bit_field(), value)); |
6447 } | 6457 } |
6448 | 6458 |
6449 | 6459 |
6450 bool JSArrayBuffer::is_neuterable() { | 6460 bool JSArrayBuffer::is_neuterable() { |
6451 return BooleanBit::get(flag(), kIsNeuterableBit); | 6461 return IsNeuterable::decode(bit_field()); |
6452 } | 6462 } |
6453 | 6463 |
6454 | 6464 |
6455 void JSArrayBuffer::set_is_neuterable(bool value) { | 6465 void JSArrayBuffer::set_is_neuterable(bool value) { |
6456 set_flag(BooleanBit::set(flag(), kIsNeuterableBit, value)); | 6466 set_bit_field(IsNeuterable::update(bit_field(), value)); |
6457 } | 6467 } |
6458 | 6468 |
6459 | 6469 |
6460 bool JSArrayBuffer::was_neutered() { | 6470 bool JSArrayBuffer::was_neutered() { return WasNeutered::decode(bit_field()); } |
6461 return BooleanBit::get(flag(), kWasNeuteredBit); | 6471 |
| 6472 |
| 6473 void JSArrayBuffer::set_was_neutered(bool value) { |
| 6474 set_bit_field(WasNeutered::update(bit_field(), value)); |
6462 } | 6475 } |
6463 | 6476 |
6464 | 6477 |
6465 void JSArrayBuffer::set_was_neutered(bool value) { | |
6466 set_flag(BooleanBit::set(flag(), kWasNeuteredBit, value)); | |
6467 } | |
6468 | |
6469 | |
6470 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) | 6478 ACCESSORS(JSArrayBuffer, weak_next, Object, kWeakNextOffset) |
6471 | 6479 |
6472 | 6480 |
6473 Object* JSArrayBufferView::byte_offset() const { | 6481 Object* JSArrayBufferView::byte_offset() const { |
6474 if (WasNeutered()) return Smi::FromInt(0); | 6482 if (WasNeutered()) return Smi::FromInt(0); |
6475 return Object::cast(READ_FIELD(this, kByteOffsetOffset)); | 6483 return Object::cast(READ_FIELD(this, kByteOffsetOffset)); |
6476 } | 6484 } |
6477 | 6485 |
6478 | 6486 |
6479 void JSArrayBufferView::set_byte_offset(Object* value, WriteBarrierMode mode) { | 6487 void JSArrayBufferView::set_byte_offset(Object* value, WriteBarrierMode mode) { |
(...skipping 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7603 #undef READ_SHORT_FIELD | 7611 #undef READ_SHORT_FIELD |
7604 #undef WRITE_SHORT_FIELD | 7612 #undef WRITE_SHORT_FIELD |
7605 #undef READ_BYTE_FIELD | 7613 #undef READ_BYTE_FIELD |
7606 #undef WRITE_BYTE_FIELD | 7614 #undef WRITE_BYTE_FIELD |
7607 #undef NOBARRIER_READ_BYTE_FIELD | 7615 #undef NOBARRIER_READ_BYTE_FIELD |
7608 #undef NOBARRIER_WRITE_BYTE_FIELD | 7616 #undef NOBARRIER_WRITE_BYTE_FIELD |
7609 | 7617 |
7610 } } // namespace v8::internal | 7618 } } // namespace v8::internal |
7611 | 7619 |
7612 #endif // V8_OBJECTS_INL_H_ | 7620 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |