deps: patch V8 to 9.5.172.25 · nodejs/node@5bef743 · GitHub
Skip to content

Commit 5bef743

Browse files
committed
deps: patch V8 to 9.5.172.25
Refs: v8/v8@9.5.172.21...9.5.172.25 PR-URL: #40604 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent d97872d commit 5bef743

8 files changed

Lines changed: 75 additions & 12 deletions

File tree

deps/v8/include/v8-version.h

Lines changed: 1 addition & 1 deletion

deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,8 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
343343
__ CallRecordWriteStubSaveRegisters(object_, scratch1_,
344344
remembered_set_action, save_fp_mode,
345345
StubCallMode::kCallWasmRuntimeStub);
346-
} else {
347346
#endif // V8_ENABLE_WEBASSEMBLY
347+
} else {
348348
__ CallRecordWriteStubSaveRegisters(object_, scratch1_,
349349
remembered_set_action, save_fp_mode);
350350
}

deps/v8/src/execution/isolate-inl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ bool Isolate::has_pending_message() {
5050
}
5151

5252
Object Isolate::pending_exception() {
53-
DCHECK(has_pending_exception());
53+
CHECK(has_pending_exception());
5454
DCHECK(!thread_local_top()->pending_exception_.IsException(this));
5555
return thread_local_top()->pending_exception_;
5656
}

deps/v8/src/heap/cppgc/marker.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ void MarkerBase::EnterAtomicPause(MarkingConfig::StackState stack_state) {
243243
}
244244
config_.stack_state = stack_state;
245245
config_.marking_type = MarkingConfig::MarkingType::kAtomic;
246+
mutator_marking_state_.set_in_atomic_pause();
246247

247248
// Lock guards against changes to {Weak}CrossThreadPersistent handles, that
248249
// may conflict with marking. E.g., a WeakCrossThreadPersistent may be

deps/v8/src/heap/cppgc/marking-state.h

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "include/cppgc/trace-trait.h"
1111
#include "include/cppgc/visitor.h"
12+
#include "src/base/logging.h"
1213
#include "src/heap/cppgc/compaction-worklists.h"
1314
#include "src/heap/cppgc/globals.h"
1415
#include "src/heap/cppgc/heap-object-header.h"
@@ -123,6 +124,8 @@ class MarkingStateBase {
123124
discovered_new_ephemeron_pairs_ = false;
124125
}
125126

127+
void set_in_atomic_pause() { in_atomic_pause_ = true; }
128+
126129
protected:
127130
inline void MarkAndPush(HeapObjectHeader&, TraceDescriptor);
128131

@@ -160,6 +163,7 @@ class MarkingStateBase {
160163
size_t marked_bytes_ = 0;
161164
bool in_ephemeron_processing_ = false;
162165
bool discovered_new_ephemeron_pairs_ = false;
166+
bool in_atomic_pause_ = false;
163167
};
164168

165169
MarkingStateBase::MarkingStateBase(HeapBase& heap,
@@ -300,12 +304,19 @@ void MarkingStateBase::ProcessEphemeron(const void* key, const void* value,
300304
// would break the main marking loop.
301305
DCHECK(!in_ephemeron_processing_);
302306
in_ephemeron_processing_ = true;
303-
// Filter out already marked keys. The write barrier for WeakMember
304-
// ensures that any newly set value after this point is kept alive and does
305-
// not require the callback.
306-
if (!HeapObjectHeader::FromObject(key)
307-
.IsInConstruction<AccessMode::kAtomic>() &&
308-
HeapObjectHeader::FromObject(key).IsMarked<AccessMode::kAtomic>()) {
307+
// Keys are considered live even in incremental/concurrent marking settings
308+
// because the write barrier for WeakMember ensures that any newly set value
309+
// after this point is kept alive and does not require the callback.
310+
const bool key_in_construction =
311+
HeapObjectHeader::FromObject(key).IsInConstruction<AccessMode::kAtomic>();
312+
const bool key_considered_as_live =
313+
key_in_construction
314+
? in_atomic_pause_
315+
: HeapObjectHeader::FromObject(key).IsMarked<AccessMode::kAtomic>();
316+
DCHECK_IMPLIES(
317+
key_in_construction && in_atomic_pause_,
318+
HeapObjectHeader::FromObject(key).IsMarked<AccessMode::kAtomic>());
319+
if (key_considered_as_live) {
309320
if (value_desc.base_object_payload) {
310321
MarkAndPush(value_desc.base_object_payload, value_desc);
311322
} else {

deps/v8/src/ic/accessor-assembler.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -846,8 +846,8 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase(
846846
Comment("module export");
847847
TNode<UintPtrT> index =
848848
DecodeWord<LoadHandler::ExportsIndexBits>(handler_word);
849-
TNode<Module> module = LoadObjectField<Module>(
850-
CAST(p->receiver()), JSModuleNamespace::kModuleOffset);
849+
TNode<Module> module =
850+
LoadObjectField<Module>(CAST(holder), JSModuleNamespace::kModuleOffset);
851851
TNode<ObjectHashTable> exports =
852852
LoadObjectField<ObjectHashTable>(module, Module::kExportsOffset);
853853
TNode<Cell> cell = CAST(LoadFixedArrayElement(exports, index));

deps/v8/src/ic/ic.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,13 @@ Handle<Object> LoadIC::ComputeHandler(LookupIterator* lookup) {
989989
// We found the accessor, so the entry must exist.
990990
DCHECK(entry.is_found());
991991
int index = ObjectHashTable::EntryToValueIndex(entry);
992-
return LoadHandler::LoadModuleExport(isolate(), index);
992+
Handle<Smi> smi_handler =
993+
LoadHandler::LoadModuleExport(isolate(), index);
994+
if (holder_is_lookup_start_object) {
995+
return smi_handler;
996+
}
997+
return LoadHandler::LoadFromPrototype(isolate(), map, holder,
998+
smi_handler);
993999
}
9941000

9951001
Handle<Object> accessors = lookup->GetAccessors();

deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc

Lines changed: 45 additions & 0 deletions

0 commit comments

Comments
 (0)