Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index 2cdfad6fb2c1b4f7d2bf4c024781aac82dedb31c..9b9a902c9011046ae32db9cfff0cd299f31756be 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -1863,7 +1863,7 @@ void FixedArray::set_unchecked(Heap* heap, |
| void FixedArray::set_null_unchecked(Heap* heap, int index) { |
| ASSERT(index >= 0 && index < this->length()); |
| - ASSERT(!HEAP->InNewSpace(heap->null_value())); |
| + ASSERT(!heap->InNewSpace(heap->null_value())); |
| WRITE_FIELD(this, kHeaderSize + index * kPointerSize, heap->null_value()); |
| } |
| @@ -1976,6 +1976,17 @@ String* DescriptorArray::GetKey(int descriptor_number) { |
| } |
| +void DescriptorArray::SetKeyUnchecked(Heap* heap, |
| + int descriptor_number, |
| + String* key) { |
| + ASSERT(descriptor_number < number_of_descriptors()); |
| + set_unchecked(heap, |
| + ToKeyIndex(descriptor_number), |
| + key, |
| + UPDATE_WRITE_BARRIER); |
| +} |
| + |
| + |
| Object** DescriptorArray::GetValueSlot(int descriptor_number) { |
| ASSERT(descriptor_number < number_of_descriptors()); |
| return HeapObject::RawField( |
| @@ -1990,12 +2001,24 @@ Object* DescriptorArray::GetValue(int descriptor_number) { |
| } |
| -void DescriptorArray::SetNullValueUnchecked(int descriptor_number, Heap* heap) { |
| +void DescriptorArray::SetNullValueUnchecked(Heap* heap, int descriptor_number) { |
| ASSERT(descriptor_number < number_of_descriptors()); |
| set_null_unchecked(heap, ToValueIndex(descriptor_number)); |
| } |
| + |
| +void DescriptorArray::SetValueUnchecked(Heap* heap, |
| + int descriptor_number, |
| + Object* value) { |
| + ASSERT(descriptor_number < number_of_descriptors()); |
| + set_unchecked(heap, |
| + ToValueIndex(descriptor_number), |
| + value, |
| + UPDATE_WRITE_BARRIER); |
| +} |
| + |
| + |
| PropertyDetails DescriptorArray::GetDetails(int descriptor_number) { |
| ASSERT(descriptor_number < number_of_descriptors()); |
| Object* details = get(ToDetailsIndex(descriptor_number)); |
| @@ -2059,19 +2082,16 @@ bool DescriptorArray::IsTransitionOnly(int descriptor_number) { |
| case CONSTANT_FUNCTION: |
| case HANDLER: |
| case INTERCEPTOR: |
| - case NULL_DESCRIPTOR: |
| return false; |
| + case NONEXISTENT: |
| + UNREACHABLE(); |
| + break; |
| } |
| UNREACHABLE(); // Keep the compiler happy. |
| return false; |
| } |
| -bool DescriptorArray::IsNullDescriptor(int descriptor_number) { |
| - return GetType(descriptor_number) == NULL_DESCRIPTOR; |
| -} |
| - |
| - |
| void DescriptorArray::Get(int descriptor_number, Descriptor* desc) { |
| desc->Init(GetKey(descriptor_number), |
| GetValue(descriptor_number), |
| @@ -3464,10 +3484,22 @@ int Map::bit_field3() { |
| } |
| +void Map::SetOwnBitField3(int value) { |
|
Michael Starzinger
2012/06/25 11:21:57
That method name is mighty confusing! Is should ac
Toon Verwaest
2012/06/25 12:20:48
Done.
|
| +#ifdef DEBUG |
| + Object* object = READ_FIELD(this, kInstanceDescriptorsOrBitField3Offset); |
| + if (!object->IsSmi()) { |
| + ZapInstanceDescriptors(); |
| + } |
| +#endif |
| + WRITE_FIELD(this, |
| + kInstanceDescriptorsOrBitField3Offset, |
| + Smi::FromInt(value)); |
| +} |
| + |
| + |
| void Map::set_bit_field3(int value) { |
| ASSERT(Smi::IsValid(value)); |
| - Object* object = READ_FIELD(this, |
| - kInstanceDescriptorsOrBitField3Offset); |
| + Object* object = READ_FIELD(this, kInstanceDescriptorsOrBitField3Offset); |
| if (object->IsSmi()) { |
| WRITE_FIELD(this, |
| kInstanceDescriptorsOrBitField3Offset, |