| Index: src/transitions.h
|
| diff --git a/src/transitions.h b/src/transitions.h
|
| index 57f32535a5a01ebd938ca80513e4ddfe86fa3ea2..d0d761b5de367de35a60bb7694398f007a400120 100644
|
| --- a/src/transitions.h
|
| +++ b/src/transitions.h
|
| @@ -41,8 +41,11 @@ namespace internal {
|
| // TransitionArrays are fixed arrays used to hold map transitions for property,
|
| // constant, and element changes.
|
| // The format of the these objects is:
|
| -// [0] Elements transition
|
| -// [1] First transition
|
| +// [0] Descriptor array
|
| +// [1] Undefined or back pointer map
|
| +// [2] Smi(0) or elements transition map
|
| +// [3] Smi(0) or fixed array of prototype transitions
|
| +// [4] First transition
|
| // [length() - kTransitionSize] Last transition
|
| class TransitionArray: public FixedArray {
|
| public:
|
| @@ -63,6 +66,16 @@ class TransitionArray: public FixedArray {
|
| inline bool HasElementsTransition();
|
| inline void ClearElementsTransition();
|
|
|
| + inline DescriptorArray* descriptors();
|
| + inline void set_descriptors(DescriptorArray* descriptors,
|
| + WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
|
| + inline Object** GetDescriptorsSlot();
|
| +
|
| + inline Object* back_pointer_storage();
|
| + inline void set_back_pointer_storage(
|
| + Object* back_pointer,
|
| + WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
|
| +
|
| inline FixedArray* GetPrototypeTransitions();
|
| inline void SetPrototypeTransitions(
|
| FixedArray* prototype_transitions,
|
| @@ -106,15 +119,20 @@ class TransitionArray: public FixedArray {
|
| // Constant for denoting key was not found.
|
| static const int kNotFound = -1;
|
|
|
| - static const int kElementsTransitionIndex = 0;
|
| - static const int kPrototypeTransitionsIndex = 1;
|
| - static const int kFirstIndex = 2;
|
| + static const int kDescriptorsIndex = 0;
|
| + static const int kBackPointerStorageIndex = 1;
|
| + static const int kElementsTransitionIndex = 2;
|
| + static const int kPrototypeTransitionsIndex = 3;
|
| + static const int kFirstIndex = 4;
|
|
|
| // Layout transition array header.
|
| - static const int kElementsTransitionOffset = FixedArray::kHeaderSize;
|
| + static const int kDescriptorsOffset = FixedArray::kHeaderSize;
|
| + static const int kBackPointerStorageOffset = kDescriptorsOffset +
|
| + kPointerSize;
|
| + static const int kElementsTransitionOffset = kBackPointerStorageOffset +
|
| + kPointerSize;
|
| static const int kPrototypeTransitionsOffset = kElementsTransitionOffset +
|
| kPointerSize;
|
| - static const int kFirstOffset = kPrototypeTransitionsOffset + kPointerSize;
|
|
|
| // Layout of map transition.
|
| static const int kTransitionKey = 0;
|
|
|