Chromium Code Reviews| Index: src/objects.h |
| diff --git a/src/objects.h b/src/objects.h |
| index c8b275397370d3eb842332a0e5a0e5957ff3678f..9ab95592bda4621c71166888cde40751e94091c2 100644 |
| --- a/src/objects.h |
| +++ b/src/objects.h |
| @@ -3347,23 +3347,6 @@ class ConstantPoolArray: public FixedArrayBase { |
| // [2 + number of descriptors * kDescriptorSize]: start of slack |
| class DescriptorArray: public FixedArray { |
| public: |
| - // WhitenessWitness is used to prove that a descriptor array is white |
| - // (unmarked), so incremental write barriers can be skipped because the |
| - // marking invariant cannot be broken and slots pointing into evacuation |
| - // candidates will be discovered when the object is scanned. A witness is |
| - // always stack-allocated right after creating an array. By allocating a |
| - // witness, incremental marking is globally disabled. The witness is then |
| - // passed along wherever needed to statically prove that the array is known to |
| - // be white. |
| - class WhitenessWitness { |
| - public: |
| - inline explicit WhitenessWitness(FixedArray* array); |
| - inline ~WhitenessWitness(); |
| - |
| - private: |
| - IncrementalMarking* marking_; |
| - }; |
| - |
| // Returns true for both shared empty_descriptor_array and for smis, which the |
| // map uses to encode additional bit fields when the descriptor array is not |
| // yet used. |
| @@ -3453,15 +3436,12 @@ class DescriptorArray: public FixedArray { |
| // Accessor for complete descriptor. |
| inline void Get(int descriptor_number, Descriptor* desc); |
| - inline void Set(int descriptor_number, |
| - Descriptor* desc, |
| - const WhitenessWitness&); |
| + inline void Set(int descriptor_number, Descriptor* desc); |
| void Replace(int descriptor_number, Descriptor* descriptor); |
| // Append automatically sets the enumeration index. This should only be used |
| // to add descriptors in bulk at the end, followed by sorting the descriptor |
| // array. |
| - inline void Append(Descriptor* desc, const WhitenessWitness&); |
| inline void Append(Descriptor* desc); |
| static Handle<DescriptorArray> Merge(Handle<Map> left_map, |
| @@ -3556,6 +3536,23 @@ class DescriptorArray: public FixedArray { |
| } |
| private: |
| + // WhitenessWitness is used to prove that a descriptor array is white |
| + // (unmarked), so incremental write barriers can be skipped because the |
| + // marking invariant cannot be broken and slots pointing into evacuation |
| + // candidates will be discovered when the object is scanned. A witness is |
| + // always stack-allocated right after creating an array. By allocating a |
| + // witness, incremental marking is globally disabled. The witness is then |
| + // passed along wherever needed to statically prove that the array is known to |
| + // be white. |
| + class WhitenessWitness { |
| + public: |
| + inline explicit WhitenessWitness(FixedArray* array); |
|
Toon Verwaest
2014/04/11 10:37:59
DescriptorArray* descriptors?
mvstanton
2014/04/11 11:25:20
Sure.
|
| + inline ~WhitenessWitness(); |
| + |
| + private: |
| + IncrementalMarking* marking_; |
| + }; |
| + |
| // An entry in a DescriptorArray, represented as an (array, index) pair. |
| class Entry { |
| public: |
| @@ -3595,7 +3592,11 @@ class DescriptorArray: public FixedArray { |
| DescriptorArray* src, |
| const WhitenessWitness&); |
| - inline void Set(int descriptor_number, Descriptor* desc); |
| + inline void Set(int descriptor_number, |
| + Descriptor* desc, |
| + const WhitenessWitness&); |
| + |
| + inline void Append(Descriptor* desc, const WhitenessWitness&); |
| // Swap first and second descriptor. |
| inline void SwapSortedKeys(int first, int second); |
| @@ -4098,9 +4099,9 @@ class NameDictionary: public Dictionary<NameDictionaryShape, Name*> { |
| Handle<NameDictionary> dictionary); |
| // For transforming properties of a JSObject. |
| - MUST_USE_RESULT MaybeObject* TransformPropertiesToFastFor( |
| - JSObject* obj, |
| - int unused_property_fields); |
| + static void TransformPropertiesToFastFor(Handle<NameDictionary> dictionary, |
| + Handle<JSObject> obj, |
| + int unused_property_fields); |
| // Find entry for key, otherwise return kNotFound. Optimized version of |
| // HashTable::FindEntry. |
| @@ -6395,7 +6396,6 @@ class Map: public HeapObject { |
| static Handle<Map> RawCopy(Handle<Map> map, int instance_size); |
| MUST_USE_RESULT MaybeObject* RawCopy(int instance_size); |
| static Handle<Map> CopyDropDescriptors(Handle<Map> map); |
| - MUST_USE_RESULT MaybeObject* CopyDropDescriptors(); |
| static Handle<Map> CopyReplaceDescriptors( |
| Handle<Map> map, |
| Handle<DescriptorArray> descriptors, |
| @@ -6439,8 +6439,7 @@ class Map: public HeapObject { |
| PropertyNormalizationMode mode, |
| NormalizedMapSharingMode sharing); |
| - inline void AppendDescriptor(Descriptor* desc, |
| - const DescriptorArray::WhitenessWitness&); |
| + inline void AppendDescriptor(Descriptor* desc); |
| // Returns a copy of the map, with all transitions dropped from the |
| // instance descriptors. |