OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 }; | 163 }; |
164 | 164 |
165 | 165 |
166 // Indicates whether a get method should implicitly create the object looked up. | 166 // Indicates whether a get method should implicitly create the object looked up. |
167 enum CreationFlag { | 167 enum CreationFlag { |
168 ALLOW_CREATION, | 168 ALLOW_CREATION, |
169 OMIT_CREATION | 169 OMIT_CREATION |
170 }; | 170 }; |
171 | 171 |
172 | 172 |
173 // Indicates whether the search function should expect a sorted or an unsorted | |
174 // array as input. | |
175 enum SearchMode { | |
176 EXPECT_SORTED, | |
177 EXPECT_UNSORTED | |
178 }; | |
179 | |
180 | |
181 // Indicates whether transitions can be added to a source map or not. | 173 // Indicates whether transitions can be added to a source map or not. |
182 enum TransitionFlag { | 174 enum TransitionFlag { |
183 INSERT_TRANSITION, | 175 INSERT_TRANSITION, |
184 OMIT_TRANSITION | 176 OMIT_TRANSITION |
185 }; | 177 }; |
186 | 178 |
187 | 179 |
188 // Instance size sentinel for objects of variable size. | 180 // Instance size sentinel for objects of variable size. |
189 const int kVariableSizeSentinel = 0; | 181 const int kVariableSizeSentinel = 0; |
190 | 182 |
(...skipping 2386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2577 enum SharedMode { | 2569 enum SharedMode { |
2578 MAY_BE_SHARED, | 2570 MAY_BE_SHARED, |
2579 CANNOT_BE_SHARED | 2571 CANNOT_BE_SHARED |
2580 }; | 2572 }; |
2581 | 2573 |
2582 // Return a copy of the array with all transitions and null descriptors | 2574 // Return a copy of the array with all transitions and null descriptors |
2583 // removed. Return a Failure object in case of an allocation failure. | 2575 // removed. Return a Failure object in case of an allocation failure. |
2584 MUST_USE_RESULT MaybeObject* Copy(SharedMode shared_mode); | 2576 MUST_USE_RESULT MaybeObject* Copy(SharedMode shared_mode); |
2585 | 2577 |
2586 // Sort the instance descriptors by the hash codes of their keys. | 2578 // Sort the instance descriptors by the hash codes of their keys. |
2587 // Does not check for duplicates. | |
2588 void SortUnchecked(const WhitenessWitness&); | |
2589 | |
2590 // Sort the instance descriptors by the hash codes of their keys. | |
2591 // Checks the result for duplicates. | |
2592 void Sort(const WhitenessWitness&); | 2579 void Sort(const WhitenessWitness&); |
2593 | 2580 |
2594 // Search the instance descriptors for given name. | 2581 // Search the instance descriptors for given name. |
2595 INLINE(int Search(String* name)); | 2582 INLINE(int Search(String* name)); |
2596 | 2583 |
2597 // As the above, but uses DescriptorLookupCache and updates it when | 2584 // As the above, but uses DescriptorLookupCache and updates it when |
2598 // necessary. | 2585 // necessary. |
2599 INLINE(int SearchWithCache(String* name)); | 2586 INLINE(int SearchWithCache(String* name)); |
2600 | 2587 |
2601 // Tells whether the name is present int the array. | 2588 // Tells whether the name is present int the array. |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2707 | 2694 |
2708 // Swap first and second descriptor. | 2695 // Swap first and second descriptor. |
2709 inline void NoIncrementalWriteBarrierSwapDescriptors( | 2696 inline void NoIncrementalWriteBarrierSwapDescriptors( |
2710 int first, int second); | 2697 int first, int second); |
2711 | 2698 |
2712 DISALLOW_IMPLICIT_CONSTRUCTORS(DescriptorArray); | 2699 DISALLOW_IMPLICIT_CONSTRUCTORS(DescriptorArray); |
2713 }; | 2700 }; |
2714 | 2701 |
2715 | 2702 |
2716 template<typename T> | 2703 template<typename T> |
2717 inline int LinearSearch(T* array, SearchMode mode, String* name, int len); | 2704 inline int LinearSearch(T* array, String* name, int len); |
2718 | 2705 |
2719 | 2706 |
2720 template<typename T> | 2707 template<typename T> |
2721 inline int Search(T* array, String* name); | 2708 inline int Search(T* array, String* name); |
2722 | 2709 |
2723 | 2710 |
2724 // HashTable is a subclass of FixedArray that implements a hash table | 2711 // HashTable is a subclass of FixedArray that implements a hash table |
2725 // that uses open addressing and quadratic probing. | 2712 // that uses open addressing and quadratic probing. |
2726 // | 2713 // |
2727 // In order for the quadratic probing to work, elements that have not | 2714 // In order for the quadratic probing to work, elements that have not |
(...skipping 2120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4848 // [prototype]: implicit prototype object. | 4835 // [prototype]: implicit prototype object. |
4849 DECL_ACCESSORS(prototype, Object) | 4836 DECL_ACCESSORS(prototype, Object) |
4850 | 4837 |
4851 // [constructor]: points back to the function responsible for this map. | 4838 // [constructor]: points back to the function responsible for this map. |
4852 DECL_ACCESSORS(constructor, Object) | 4839 DECL_ACCESSORS(constructor, Object) |
4853 | 4840 |
4854 inline JSFunction* unchecked_constructor(); | 4841 inline JSFunction* unchecked_constructor(); |
4855 | 4842 |
4856 // [instance descriptors]: describes the object. | 4843 // [instance descriptors]: describes the object. |
4857 DECL_ACCESSORS(instance_descriptors, DescriptorArray) | 4844 DECL_ACCESSORS(instance_descriptors, DescriptorArray) |
| 4845 inline void InitializeDescriptors(DescriptorArray* descriptors); |
4858 | 4846 |
4859 // Should only be called to clear a descriptor array that was only used to | 4847 // Should only be called to clear a descriptor array that was only used to |
4860 // store transitions and does not contain any live transitions anymore. | 4848 // store transitions and does not contain any live transitions anymore. |
4861 inline void ClearDescriptorArray(Heap* heap, WriteBarrierMode mode); | 4849 inline void ClearDescriptorArray(Heap* heap, WriteBarrierMode mode); |
4862 | 4850 |
4863 // [stub cache]: contains stubs compiled for this map. | 4851 // [stub cache]: contains stubs compiled for this map. |
4864 DECL_ACCESSORS(code_cache, Object) | 4852 DECL_ACCESSORS(code_cache, Object) |
4865 | 4853 |
4866 // [back pointer]: points back to the parent map from which a transition | 4854 // [back pointer]: points back to the parent map from which a transition |
4867 // leads to this map. The field overlaps with prototype transitions and the | 4855 // leads to this map. The field overlaps with prototype transitions and the |
(...skipping 4028 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8896 } else { | 8884 } else { |
8897 value &= ~(1 << bit_position); | 8885 value &= ~(1 << bit_position); |
8898 } | 8886 } |
8899 return value; | 8887 return value; |
8900 } | 8888 } |
8901 }; | 8889 }; |
8902 | 8890 |
8903 } } // namespace v8::internal | 8891 } } // namespace v8::internal |
8904 | 8892 |
8905 #endif // V8_OBJECTS_H_ | 8893 #endif // V8_OBJECTS_H_ |
OLD | NEW |