OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 3226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3237 static inline int GetValueOffset(int descriptor_number); | 3237 static inline int GetValueOffset(int descriptor_number); |
3238 inline Object** GetDescriptorStartSlot(int descriptor_number); | 3238 inline Object** GetDescriptorStartSlot(int descriptor_number); |
3239 inline Object** GetDescriptorEndSlot(int descriptor_number); | 3239 inline Object** GetDescriptorEndSlot(int descriptor_number); |
3240 inline PropertyDetails GetDetails(int descriptor_number); | 3240 inline PropertyDetails GetDetails(int descriptor_number); |
3241 inline int GetFieldIndex(int descriptor_number); | 3241 inline int GetFieldIndex(int descriptor_number); |
3242 inline FieldType* GetFieldType(int descriptor_number); | 3242 inline FieldType* GetFieldType(int descriptor_number); |
3243 | 3243 |
3244 inline Name* GetSortedKey(int descriptor_number); | 3244 inline Name* GetSortedKey(int descriptor_number); |
3245 inline int GetSortedKeyIndex(int descriptor_number); | 3245 inline int GetSortedKeyIndex(int descriptor_number); |
3246 inline void SetSortedKey(int pointer, int descriptor_number); | 3246 inline void SetSortedKey(int pointer, int descriptor_number); |
3247 inline void SetRepresentation(int descriptor_number, | |
3248 Representation representation); | |
3249 | 3247 |
3250 // Accessor for complete descriptor. | 3248 // Accessor for complete descriptor. |
3251 inline void Get(int descriptor_number, Descriptor* desc); | 3249 inline void Get(int descriptor_number, Descriptor* desc); |
3252 inline void Set(int descriptor_number, Descriptor* desc); | 3250 inline void Set(int descriptor_number, Descriptor* desc); |
3253 inline void Set(int descriptor_number, Name* key, Object* value, | 3251 inline void Set(int descriptor_number, Name* key, Object* value, |
3254 PropertyDetails details); | 3252 PropertyDetails details); |
3255 void Replace(int descriptor_number, Descriptor* descriptor); | 3253 void Replace(int descriptor_number, Descriptor* descriptor); |
3256 | 3254 |
| 3255 // Generalizes representation and field type of all field descriptors. |
| 3256 void GeneralizeAllFields(); |
| 3257 |
3257 // Append automatically sets the enumeration index. This should only be used | 3258 // Append automatically sets the enumeration index. This should only be used |
3258 // to add descriptors in bulk at the end, followed by sorting the descriptor | 3259 // to add descriptors in bulk at the end, followed by sorting the descriptor |
3259 // array. | 3260 // array. |
3260 inline void Append(Descriptor* desc); | 3261 inline void Append(Descriptor* desc); |
3261 | 3262 |
3262 static Handle<DescriptorArray> CopyUpTo(Handle<DescriptorArray> desc, | 3263 static Handle<DescriptorArray> CopyUpTo(Handle<DescriptorArray> desc, |
3263 int enumeration_index, | 3264 int enumeration_index, |
3264 int slack = 0); | 3265 int slack = 0); |
3265 | 3266 |
3266 static Handle<DescriptorArray> CopyUpToAddAttributes( | 3267 static Handle<DescriptorArray> CopyUpToAddAttributes( |
(...skipping 2763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6030 inline int GetInObjectPropertyOffset(int index); | 6031 inline int GetInObjectPropertyOffset(int index); |
6031 | 6032 |
6032 int NumberOfFields(); | 6033 int NumberOfFields(); |
6033 | 6034 |
6034 // TODO(ishell): candidate with JSObject::MigrateToMap(). | 6035 // TODO(ishell): candidate with JSObject::MigrateToMap(). |
6035 bool InstancesNeedRewriting(Map* target); | 6036 bool InstancesNeedRewriting(Map* target); |
6036 bool InstancesNeedRewriting(Map* target, int target_number_of_fields, | 6037 bool InstancesNeedRewriting(Map* target, int target_number_of_fields, |
6037 int target_inobject, int target_unused, | 6038 int target_inobject, int target_unused, |
6038 int* old_number_of_fields); | 6039 int* old_number_of_fields); |
6039 // TODO(ishell): moveit! | 6040 // TODO(ishell): moveit! |
6040 static Handle<Map> GeneralizeAllFieldRepresentations(Handle<Map> map); | 6041 static Handle<Map> GeneralizeAllFields(Handle<Map> map); |
6041 MUST_USE_RESULT static Handle<FieldType> GeneralizeFieldType( | 6042 MUST_USE_RESULT static Handle<FieldType> GeneralizeFieldType( |
6042 Representation rep1, Handle<FieldType> type1, Representation rep2, | 6043 Representation rep1, Handle<FieldType> type1, Representation rep2, |
6043 Handle<FieldType> type2, Isolate* isolate); | 6044 Handle<FieldType> type2, Isolate* isolate); |
6044 static void GeneralizeField(Handle<Map> map, int modify_index, | 6045 static void GeneralizeField(Handle<Map> map, int modify_index, |
6045 Representation new_representation, | 6046 Representation new_representation, |
6046 Handle<FieldType> new_field_type); | 6047 Handle<FieldType> new_field_type); |
6047 | 6048 |
6048 static Handle<Map> ReconfigureProperty(Handle<Map> map, int modify_index, | 6049 static Handle<Map> ReconfigureProperty(Handle<Map> map, int modify_index, |
6049 PropertyKind new_kind, | 6050 PropertyKind new_kind, |
6050 PropertyAttributes new_attributes, | 6051 PropertyAttributes new_attributes, |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6489 int index, | 6490 int index, |
6490 TransitionFlag flag); | 6491 TransitionFlag flag); |
6491 static MUST_USE_RESULT MaybeHandle<Map> TryReconfigureExistingProperty( | 6492 static MUST_USE_RESULT MaybeHandle<Map> TryReconfigureExistingProperty( |
6492 Handle<Map> map, int descriptor, PropertyKind kind, | 6493 Handle<Map> map, int descriptor, PropertyKind kind, |
6493 PropertyAttributes attributes, const char** reason); | 6494 PropertyAttributes attributes, const char** reason); |
6494 | 6495 |
6495 static Handle<Map> CopyNormalized(Handle<Map> map, | 6496 static Handle<Map> CopyNormalized(Handle<Map> map, |
6496 PropertyNormalizationMode mode); | 6497 PropertyNormalizationMode mode); |
6497 | 6498 |
6498 // TODO(ishell): Move to MapUpdater. | 6499 // TODO(ishell): Move to MapUpdater. |
6499 static Handle<Map> CopyGeneralizeAllRepresentations( | 6500 static Handle<Map> CopyGeneralizeAllFields( |
6500 Handle<Map> map, ElementsKind elements_kind, int modify_index, | 6501 Handle<Map> map, ElementsKind elements_kind, int modify_index, |
6501 StoreMode store_mode, PropertyKind kind, PropertyAttributes attributes, | 6502 StoreMode store_mode, PropertyKind kind, PropertyAttributes attributes, |
6502 const char* reason); | 6503 const char* reason); |
6503 | 6504 |
6504 // Fires when the layout of an object with a leaf map changes. | 6505 // Fires when the layout of an object with a leaf map changes. |
6505 // This includes adding transitions to the leaf map or changing | 6506 // This includes adding transitions to the leaf map or changing |
6506 // the descriptor array. | 6507 // the descriptor array. |
6507 inline void NotifyLeafMapLayoutChange(); | 6508 inline void NotifyLeafMapLayoutChange(); |
6508 | 6509 |
6509 void DeprecateTransitionTree(); | 6510 void DeprecateTransitionTree(); |
(...skipping 5140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11650 } | 11651 } |
11651 }; | 11652 }; |
11652 | 11653 |
11653 | 11654 |
11654 } // NOLINT, false-positive due to second-order macros. | 11655 } // NOLINT, false-positive due to second-order macros. |
11655 } // NOLINT, false-positive due to second-order macros. | 11656 } // NOLINT, false-positive due to second-order macros. |
11656 | 11657 |
11657 #include "src/objects/object-macros-undef.h" | 11658 #include "src/objects/object-macros-undef.h" |
11658 | 11659 |
11659 #endif // V8_OBJECTS_H_ | 11660 #endif // V8_OBJECTS_H_ |
OLD | NEW |