| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index f5b8ab67f5204a1e033d7ac58121e2ba812ded5e..076368830a934e3fa16080923443d16f75e1c225 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -2453,6 +2453,7 @@ class DescriptorArray: public FixedArray {
|
| // Accessors for fetching instance descriptor at descriptor number.
|
| inline String* GetKey(int descriptor_number);
|
| inline Object* GetValue(int descriptor_number);
|
| + inline Object** GetValueSlot(int descriptor_number);
|
| inline PropertyDetails GetDetails(int descriptor_number);
|
| inline PropertyType GetType(int descriptor_number);
|
| inline int GetFieldIndex(int descriptor_number);
|
| @@ -2463,6 +2464,14 @@ class DescriptorArray: public FixedArray {
|
| inline bool IsTransitionOnly(int descriptor_number);
|
| inline bool IsNullDescriptor(int descriptor_number);
|
|
|
| + // WhitenessWitness is used to prove that a specific 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 a descriptor array. By
|
| + // allocating a witness, incremental marking is globally disabled. The witness
|
| + // is then passed along wherever needed to statically prove that the
|
| + // descriptor array is known to be white.
|
| class WhitenessWitness {
|
| public:
|
| inline explicit WhitenessWitness(DescriptorArray* array);
|
| @@ -2591,6 +2600,8 @@ class DescriptorArray: public FixedArray {
|
| static const int kMaxNumberOfDescriptors = 1024 + 512;
|
|
|
| private:
|
| + friend class IntrusiveMapTransitionIterator;
|
| +
|
| // An entry in a DescriptorArray, represented as an (array, index) pair.
|
| class Entry {
|
| public:
|
| @@ -2629,6 +2640,7 @@ class DescriptorArray: public FixedArray {
|
| FixedArray* GetContentArray() {
|
| return FixedArray::cast(get(kContentArrayIndex));
|
| }
|
| +
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(DescriptorArray);
|
| };
|
|
|
|
|