Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
FPIIM-449
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/src/layout-descriptor.h b/src/layout-descriptor.h
index cc2666a..5a80e73 100644
--- a/src/layout-descriptor.h
+++ b/src/layout-descriptor.h
@@ -53,10 +53,10 @@
Handle<DescriptorArray> descriptors,
int num_descriptors);
- // Creates new layout descriptor by appending property with |details| to
- // |map|'s layout descriptor.
- static Handle<LayoutDescriptor> Append(Handle<Map> map,
- PropertyDetails details);
+ // Modifies |map|'s layout descriptor or creates a new one if necessary by
+ // appending property with |details| to it.
+ static Handle<LayoutDescriptor> ShareAppend(Handle<Map> map,
+ PropertyDetails details);
// Creates new layout descriptor by appending property with |details| to
// |map|'s layout descriptor and if it is still fast then returns it.
@@ -69,10 +69,15 @@
// tagged (FastPointerLayout).
V8_INLINE static LayoutDescriptor* FastPointerLayout();
-#ifdef DEBUG
// Check that this layout descriptor corresponds to given map.
- bool IsConsistentWithMap(Map* map);
-#endif
+ bool IsConsistentWithMap(Map* map, bool check_tail = false);
+
+ // Trims this layout descriptor to given number of descriptors. This happens
+ // only when corresponding descriptors array is trimmed.
+ // The layout descriptor could be trimmed if it was slow or it could
+ // become fast.
+ LayoutDescriptor* Trim(Heap* heap, Map* map, DescriptorArray* descriptors,
+ int num_descriptors);
#ifdef OBJECT_PRINT
// For our gdb macros, we should perhaps change these in the future.
@@ -96,6 +101,21 @@
V8_INLINE static bool InobjectUnboxedField(int inobject_properties,
PropertyDetails details);
+ // Calculates minimal layout descriptor capacity required for given
+ // |map|, |descriptors| and |num_descriptors|.
+ V8_INLINE static int CalculateCapacity(Map* map, DescriptorArray* descriptors,
+ int num_descriptors);
+
+ // Calculates the length of the slow-mode backing store array by given layout
+ // descriptor length.
+ V8_INLINE static int GetSlowModeBackingStoreLength(int length);
+
+ // Fills in clean |layout_descriptor| according to given |map|, |descriptors|
+ // and |num_descriptors|.
+ V8_INLINE static LayoutDescriptor* Initialize(
+ LayoutDescriptor* layout_descriptor, Map* map,
+ DescriptorArray* descriptors, int num_descriptors);
+
static Handle<LayoutDescriptor> EnsureCapacity(
Isolate* isolate, Handle<LayoutDescriptor> layout_descriptor,
int new_capacity);
@@ -104,9 +124,7 @@
V8_INLINE bool GetIndexes(int field_index, int* layout_word_index,
int* layout_bit_index);
- V8_INLINE MUST_USE_RESULT LayoutDescriptor* SetRawData(int field_index) {
- return SetTagged(field_index, false);
- }
+ V8_INLINE MUST_USE_RESULT LayoutDescriptor* SetRawData(int field_index);
V8_INLINE MUST_USE_RESULT LayoutDescriptor* SetTagged(int field_index,
bool tagged);
@@ -135,7 +153,7 @@
int header_size_;
LayoutDescriptor* layout_descriptor_;
};
-}
-} // namespace v8::internal
+} // namespace internal
+} // namespace v8
#endif // V8_LAYOUT_DESCRIPTOR_H_