diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 46fd905b3ce07b..09afd6248c377f 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 7 #define V8_MINOR_VERSION 8 #define V8_BUILD_NUMBER 279 -#define V8_PATCH_LEVEL 12 +#define V8_PATCH_LEVEL 14 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/heap/heap.cc b/deps/v8/src/heap/heap.cc index 51f300b577fc50..ff3b34cfb4f29b 100644 --- a/deps/v8/src/heap/heap.cc +++ b/deps/v8/src/heap/heap.cc @@ -3397,10 +3397,6 @@ void Heap::NotifyObjectLayoutChange(HeapObject object, int size, ->RegisterObjectWithInvalidatedSlots(object, size); } } - if (MayContainRecordedSlots(object)) { - MemoryChunk::FromHeapObject(object) - ->RegisterObjectWithInvalidatedSlots(object, size); - } #ifdef VERIFY_HEAP if (FLAG_verify_heap) { DCHECK(pending_layout_change_object_.is_null()); diff --git a/deps/v8/src/heap/mark-compact.cc b/deps/v8/src/heap/mark-compact.cc index e763d02e9f7c01..f7067a60ea225d 100644 --- a/deps/v8/src/heap/mark-compact.cc +++ b/deps/v8/src/heap/mark-compact.cc @@ -3419,18 +3419,7 @@ class RememberedSetUpdatingItem : public UpdatingItem { SlotSet::PREFREE_EMPTY_BUCKETS); } - if (chunk_->invalidated_slots() != nullptr) { -#ifdef DEBUG - for (auto object_size : *chunk_->invalidated_slots()) { - HeapObject object = object_size.first; - int size = object_size.second; - DCHECK_LE(object.SizeFromMap(object.map()), size); - } -#endif - // The invalidated slots are not needed after old-to-new slots were - // processed. - chunk_->ReleaseInvalidatedSlots(); - } + DCHECK_NULL(chunk_->invalidated_slots()); if ((updating_mode_ == RememberedSetUpdatingMode::ALL) && (chunk_->slot_set() != nullptr)) { diff --git a/deps/v8/src/heap/scavenger.cc b/deps/v8/src/heap/scavenger.cc index e08717ac279de7..7d56882953e6f5 100644 --- a/deps/v8/src/heap/scavenger.cc +++ b/deps/v8/src/heap/scavenger.cc @@ -439,18 +439,7 @@ void Scavenger::ScavengePage(MemoryChunk* page) { }, SlotSet::KEEP_EMPTY_BUCKETS); - if (page->invalidated_slots() != nullptr) { -#ifdef DEBUG - for (auto object_size : *page->invalidated_slots()) { - HeapObject object = object_size.first; - int size = object_size.second; - DCHECK_LE(object.SizeFromMap(object.map()), size); - } -#endif - // The invalidated slots are not needed after old-to-new slots were - // processed. - page->ReleaseInvalidatedSlots(); - } + DCHECK_NULL(page->invalidated_slots()); RememberedSet::IterateTyped( page, [=](SlotType type, Address addr) { diff --git a/deps/v8/src/ic/ic.cc b/deps/v8/src/ic/ic.cc index 3c8d1ea58280fb..54f4be7a221ee7 100644 --- a/deps/v8/src/ic/ic.cc +++ b/deps/v8/src/ic/ic.cc @@ -4,6 +4,7 @@ #include "src/ic/ic.h" +#include "include/v8config.h" #include "src/api/api-arguments-inl.h" #include "src/api/api.h" #include "src/ast/ast.h" @@ -651,6 +652,10 @@ void IC::PatchCache(Handle name, const MaybeObjectHandle& handler) { } } +#if defined(__clang__) && defined(V8_OS_WIN) +// Force function alignment to work around CPU bug: https://crbug.com/968683 +__attribute__((__aligned__(32))) +#endif void LoadIC::UpdateCaches(LookupIterator* lookup) { Handle code; if (lookup->state() == LookupIterator::ACCESS_CHECK) { diff --git a/deps/v8/src/objects/lookup.cc b/deps/v8/src/objects/lookup.cc index 445d0815f32659..4646b71a9ecdb1 100644 --- a/deps/v8/src/objects/lookup.cc +++ b/deps/v8/src/objects/lookup.cc @@ -4,6 +4,7 @@ #include "src/objects/lookup.h" +#include "include/v8config.h" #include "src/deoptimizer/deoptimizer.h" #include "src/execution/isolate-inl.h" #include "src/execution/protectors-inl.h" @@ -978,7 +979,12 @@ Handle LookupIterator::GetFieldOwnerMap() const { isolate_); } -FieldIndex LookupIterator::GetFieldIndex() const { +#if defined(__clang__) && defined(V8_OS_WIN) +// Force function alignment to work around CPU bug: https://crbug.com/968683 +__attribute__((__aligned__(32))) +#endif +FieldIndex +LookupIterator::GetFieldIndex() const { DCHECK(has_property_); DCHECK(holder_->HasFastProperties(isolate_)); DCHECK_EQ(kField, property_details_.location());