Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 544443866efc52a82fdb20f9b84db8540c1334fb..270ca9eec2cdae3bc09a7e65c7a628de71d8903e 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -1923,24 +1923,46 @@ int DescriptorArray::SearchWithCache(String* name) { |
} |
+Object** DescriptorArray::GetKeySlot(int descriptor_number) { |
+ ASSERT(descriptor_number < number_of_descriptors()); |
+ return HeapObject::RawField( |
+ reinterpret_cast<HeapObject*>(this), |
+ OffsetOfElementAt(ToKeyIndex(descriptor_number))); |
+} |
+ |
String* DescriptorArray::GetKey(int descriptor_number) { |
ASSERT(descriptor_number < number_of_descriptors()); |
return String::cast(get(ToKeyIndex(descriptor_number))); |
} |
+Object** DescriptorArray::GetValueSlot(int descriptor_number) { |
Florian Schneider
2012/05/22 16:53:09
Two empty lines between function definitions.
|
+ ASSERT(descriptor_number < number_of_descriptors()); |
+ return HeapObject::RawField( |
+ reinterpret_cast<HeapObject*>(this), |
+ OffsetOfElementAt(ToValueIndex(descriptor_number))); |
+} |
Object* DescriptorArray::GetValue(int descriptor_number) { |
Florian Schneider
2012/05/22 16:53:09
Two empty lines between function definitions. Here
|
ASSERT(descriptor_number < number_of_descriptors()); |
- return GetContentArray()->get(ToValueIndex(descriptor_number)); |
+ return get(ToValueIndex(descriptor_number)); |
} |
+void DescriptorArray::SetNullValueUnchecked(int descriptor_number, Heap* heap) { |
+ ASSERT(descriptor_number < number_of_descriptors()); |
+ ASSERT(!HEAP->InNewSpace(heap->null_value())); |
+ set_null_unchecked(heap, ToValueIndex(descriptor_number)); |
+} |
PropertyDetails DescriptorArray::GetDetails(int descriptor_number) { |
ASSERT(descriptor_number < number_of_descriptors()); |
- Object* details = GetContentArray()->get(ToDetailsIndex(descriptor_number)); |
+ Object* details = get(ToDetailsIndex(descriptor_number)); |
return PropertyDetails(Smi::cast(details)); |
} |
+void DescriptorArray::SetDetailsUnchecked(int descriptor_number, Smi* value) { |
+ ASSERT(descriptor_number < number_of_descriptors()); |
+ set_unchecked(ToDetailsIndex(descriptor_number), value); |
+} |
PropertyType DescriptorArray::GetType(int descriptor_number) { |
return GetDetails(descriptor_number).type(); |
@@ -2022,11 +2044,10 @@ void DescriptorArray::Set(int descriptor_number, |
NoIncrementalWriteBarrierSet(this, |
ToKeyIndex(descriptor_number), |
desc->GetKey()); |
- FixedArray* content_array = GetContentArray(); |
- NoIncrementalWriteBarrierSet(content_array, |
+ NoIncrementalWriteBarrierSet(this, |
ToValueIndex(descriptor_number), |
desc->GetValue()); |
- NoIncrementalWriteBarrierSet(content_array, |
+ NoIncrementalWriteBarrierSet(this, |
ToDetailsIndex(descriptor_number), |
desc->GetDetails().AsSmi()); |
} |
@@ -2035,11 +2056,10 @@ void DescriptorArray::Set(int descriptor_number, |
void DescriptorArray::NoIncrementalWriteBarrierSwapDescriptors( |
int first, int second) { |
NoIncrementalWriteBarrierSwap(this, ToKeyIndex(first), ToKeyIndex(second)); |
- FixedArray* content_array = GetContentArray(); |
- NoIncrementalWriteBarrierSwap(content_array, |
+ NoIncrementalWriteBarrierSwap(this, |
ToValueIndex(first), |
ToValueIndex(second)); |
- NoIncrementalWriteBarrierSwap(content_array, |
+ NoIncrementalWriteBarrierSwap(this, |
ToDetailsIndex(first), |
ToDetailsIndex(second)); |
} |
@@ -2050,7 +2070,6 @@ DescriptorArray::WhitenessWitness::WhitenessWitness(DescriptorArray* array) |
marking_->EnterNoMarkingScope(); |
if (array->number_of_descriptors() > 0) { |
ASSERT(Marking::Color(array) == Marking::WHITE_OBJECT); |
- ASSERT(Marking::Color(array->GetContentArray()) == Marking::WHITE_OBJECT); |
} |
} |