Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 1f656bc0b50bbc0f1ad27a19e6345ced0a244515..e35d7f4fe8701572adfc49eef39e8f5634af553b 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -1509,6 +1509,8 @@ class Object : public MaybeObject { |
return true; |
} |
+ Handle<HeapType> OptimalType(Isolate* isolate, Representation representation); |
+ |
inline MaybeObject* AllocateNewStorageFor(Heap* heap, |
Representation representation); |
@@ -2580,6 +2582,7 @@ class JSObject: public JSReceiver { |
static void GeneralizeFieldRepresentation(Handle<JSObject> object, |
int modify_index, |
Representation new_representation, |
+ Handle<HeapType> new_field_type, |
StoreMode store_mode); |
// Convert the object to use the canonical dictionary |
@@ -3405,12 +3408,14 @@ class DescriptorArray: public FixedArray { |
inline Name* GetKey(int descriptor_number); |
inline Object** GetKeySlot(int descriptor_number); |
inline Object* GetValue(int descriptor_number); |
+ inline void SetValue(int descriptor_number, Object* value); |
inline Object** GetValueSlot(int descriptor_number); |
inline Object** GetDescriptorStartSlot(int descriptor_number); |
inline Object** GetDescriptorEndSlot(int descriptor_number); |
inline PropertyDetails GetDetails(int descriptor_number); |
inline PropertyType GetType(int descriptor_number); |
inline int GetFieldIndex(int descriptor_number); |
+ inline HeapType* GetFieldType(int descriptor_number); |
inline Object* GetConstant(int descriptor_number); |
inline Object* GetCallbacksObject(int descriptor_number); |
inline AccessorDescriptor* GetCallbacks(int descriptor_number); |
@@ -3418,7 +3423,6 @@ class DescriptorArray: public FixedArray { |
inline Name* GetSortedKey(int descriptor_number); |
inline int GetSortedKeyIndex(int descriptor_number); |
inline void SetSortedKey(int pointer, int descriptor_number); |
- inline void InitializeRepresentations(Representation representation); |
inline void SetRepresentation(int descriptor_number, |
Representation representation); |
@@ -5950,6 +5954,9 @@ class DependentCode: public FixedArray { |
// Group of code that depends on global property values in property cells |
// not being changed. |
kPropertyCellChangedGroup, |
+ // Group of code that omit run-time type checks for the field(s) introduced |
+ // by this map. |
+ kFieldTypeGroup, |
// Group of code that depends on tenuring information in AllocationSites |
// not being changed. |
kAllocationSiteTenuringChangedGroup, |
@@ -6220,6 +6227,9 @@ class Map: public HeapObject { |
Map* FindRootMap(); |
Map* FindUpdatedMap(int verbatim, int length, DescriptorArray* descriptors); |
Map* FindLastMatchMap(int verbatim, int length, DescriptorArray* descriptors); |
+ Map* FindFieldOwner(int descriptor); |
+ |
+ void UpdateDescriptor(int descriptor_number, Descriptor* desc); |
inline int GetInObjectPropertyOffset(int index); |
@@ -6229,13 +6239,19 @@ class Map: public HeapObject { |
int target_number_of_fields, |
int target_inobject, |
int target_unused); |
- static Handle<Map> GeneralizeAllFieldRepresentations( |
- Handle<Map> map, |
- Representation new_representation); |
+ static Handle<Map> GeneralizeAllFieldRepresentations(Handle<Map> map); |
+ static Handle<HeapType> GeneralizeFieldType(Handle<HeapType> old_field_type, |
+ Handle<HeapType> new_field_type, |
+ Isolate* isolate) |
+ V8_WARN_UNUSED_RESULT; |
+ static void GeneralizeFieldType(Handle<Map> map, |
+ int modify_index, |
+ Handle<HeapType> new_field_type); |
static Handle<Map> GeneralizeRepresentation( |
Handle<Map> map, |
int modify_index, |
Representation new_representation, |
+ Handle<HeapType> new_field_type, |
StoreMode store_mode); |
static Handle<Map> CopyGeneralizeAllRepresentations( |
Handle<Map> map, |
@@ -6251,7 +6267,9 @@ class Map: public HeapObject { |
int descriptors, |
bool constant_to_field, |
Representation old_representation, |
- Representation new_representation); |
+ Representation new_representation, |
+ HeapType* old_field_type, |
+ HeapType* new_field_type); |
// Returns the constructor name (the name (possibly, inferred name) of the |
// function that was used to instantiate the object). |