| Index: src/transitions.h
|
| diff --git a/src/transitions.h b/src/transitions.h
|
| index c5f9a30018a16cf02006c49a9cedb644ac3e7986..ef74b4df8bb84039fae8291c3d3fffc66ab15a2c 100644
|
| --- a/src/transitions.h
|
| +++ b/src/transitions.h
|
| @@ -98,9 +98,17 @@ class TransitionArray: public FixedArray {
|
| static Handle<TransitionArray> Insert(Handle<Map> map, Handle<Name> name,
|
| Handle<Map> target,
|
| SimpleTransitionFlag flag);
|
| + // Search a transition for a given type, property name and attributes.
|
| + int Search(PropertyType type, Name* name, PropertyAttributes attributes,
|
| + int* out_insertion_index = NULL);
|
| +
|
| + // Search a non-property transition (like elements kind, observe or frozen
|
| + // transitions).
|
| + inline int SearchSpecial(Symbol* symbol, int* out_insertion_index = NULL) {
|
| + return SearchName(symbol, out_insertion_index);
|
| + }
|
|
|
| - // Search a transition for a given property name.
|
| - inline int Search(Name* name, int* out_insertion_index = NULL);
|
| + static inline PropertyDetails GetTargetDetails(Name* name, Map* target);
|
|
|
| // Allocates a TransitionArray.
|
| static Handle<TransitionArray> Allocate(Isolate* isolate,
|
| @@ -167,6 +175,10 @@ class TransitionArray: public FixedArray {
|
| bool IsSortedNoDuplicates(int valid_entries = -1);
|
| bool IsConsistentWithBackPointers(Map* current_map);
|
| bool IsEqualTo(TransitionArray* other);
|
| +
|
| + // Returns true for a non-property transitions like elements kind, observed
|
| + // or frozen transitions.
|
| + static inline bool IsSpecialTransition(Name* name);
|
| #endif
|
|
|
| // The maximum number of transitions we want in a transition array (should
|
| @@ -202,6 +214,31 @@ class TransitionArray: public FixedArray {
|
| Handle<Map> target,
|
| SimpleTransitionFlag flag);
|
|
|
| + // Search a first transition for a given property name.
|
| + inline int SearchName(Name* name, int* out_insertion_index = NULL);
|
| + int SearchDetails(int transition, PropertyType type,
|
| + PropertyAttributes attributes, int* out_insertion_index);
|
| +
|
| + // Compares two tuples <key, is_data_property, attributes>, returns -1 if
|
| + // tuple1 is "less" than tuple2, 0 if tuple1 equal to tuple2 and 1 otherwise.
|
| + static inline int CompareKeys(Name* key1, uint32_t hash1,
|
| + bool is_data_property1,
|
| + PropertyAttributes attributes1, Name* key2,
|
| + uint32_t hash2, bool is_data_property2,
|
| + PropertyAttributes attributes2);
|
| +
|
| + // Compares keys, returns -1 if key1 is "less" than key2,
|
| + // 0 if key1 equal to key2 and 1 otherwise.
|
| + static inline int CompareNames(Name* key1, uint32_t hash1, Name* key2,
|
| + uint32_t hash2);
|
| +
|
| + // Compares two details, returns -1 if details1 is "less" than details2,
|
| + // 0 if details1 equal to details2 and 1 otherwise.
|
| + static inline int CompareDetails(bool is_data_property1,
|
| + PropertyAttributes attributes1,
|
| + bool is_data_property2,
|
| + PropertyAttributes attributes2);
|
| +
|
| inline void NoIncrementalWriteBarrierSet(int transition_number,
|
| Name* key,
|
| Map* target);
|
|
|