Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: V8: re-enable interpreted frames native stack on S390 #33702

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.17',
'v8_embedder_string': '-node.19',

##### V8 defaults for Node.js #####

Expand Down
16 changes: 8 additions & 8 deletions deps/v8/src/execution/isolate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3431,15 +3431,15 @@ bool Isolate::Init(ReadOnlyDeserializer* read_only_deserializer,

setup_delegate_->SetupBuiltins(this);

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
// Store the interpreter entry trampoline on the root list. It is used as a
// template for further copies that may later be created to help profile
// interpreted code.
// We currently cannot do this on above architectures due to
// RELATIVE_CODE_TARGETs assuming that all possible Code targets may be
// addressed with an int24 offset, effectively limiting code space size to
// 32MB. We can guarantee this at mksnapshot-time, but not at runtime. See
// also: https://crbug.com/v8/8713.
// We currently cannot do this on arm due to RELATIVE_CODE_TARGETs
// assuming that all possible Code targets may be addressed with an int24
// offset, effectively limiting code space size to 32MB. We can guarantee
// this at mksnapshot-time, but not at runtime.
// See also: https://crbug.com/v8/8713.
heap_.SetInterpreterEntryTrampolineForProfiling(
heap_.builtin(Builtins::kInterpreterEntryTrampoline));
#endif
Expand Down Expand Up @@ -3514,11 +3514,11 @@ bool Isolate::Init(ReadOnlyDeserializer* read_only_deserializer,
}
#endif // DEBUG

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
// The IET for profiling should always be a full on-heap Code object.
DCHECK(!Code::cast(heap_.interpreter_entry_trampoline_for_profiling())
.is_off_heap_trampoline());
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

if (FLAG_print_builtin_code) builtins()->PrintBuiltinCode();
if (FLAG_print_builtin_size) builtins()->PrintBuiltinSize();
Expand Down
4 changes: 2 additions & 2 deletions deps/v8/src/flags/flag-definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -1625,8 +1625,8 @@ DEFINE_BOOL(vtune_prof_annotate_wasm, false,

DEFINE_BOOL(win64_unwinding_info, true, "Enable unwinding info for Windows/x64")

#if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_S390X)
// Unsupported on above architectures. See https://crbug.com/v8/8713.
#ifdef V8_TARGET_ARCH_ARM
// Unsupported on arm. See https://crbug.com/v8/8713.
DEFINE_BOOL_READONLY(
interpreted_frames_native_stack, false,
"Show interpreted frames on the native stack (useful for external "
Expand Down
12 changes: 6 additions & 6 deletions deps/v8/src/snapshot/code-serializer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -190,12 +190,12 @@ void CodeSerializer::SerializeObject(HeapObject obj) {
// bytecode array stored within the InterpreterData, which is the important
// information. On deserialization we'll create our code objects again, if
// --interpreted-frames-native-stack is on. See v8:9122 for more context
#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
if (V8_UNLIKELY(FLAG_interpreted_frames_native_stack) &&
obj.IsInterpreterData()) {
obj = InterpreterData::cast(obj).bytecode_array();
}
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

// Past this point we should not see any (context-specific) maps anymore.
CHECK(!obj.IsMap());
Expand All @@ -215,7 +215,7 @@ void CodeSerializer::SerializeGeneric(HeapObject heap_object) {
serializer.Serialize();
}

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
// NOTE(mmarchini): when FLAG_interpreted_frames_native_stack is on, we want to
// create duplicates of InterpreterEntryTrampoline for the deserialized
// functions, otherwise we'll call the builtin IET for those functions (which
Expand Down Expand Up @@ -255,7 +255,7 @@ void CreateInterpreterDataForDeserializedCode(Isolate* isolate,
column_num));
}
}
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
Isolate* isolate, ScriptData* cached_data, Handle<String> source,
Expand Down Expand Up @@ -301,11 +301,11 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
isolate->is_profiling() ||
isolate->code_event_dispatcher()->IsListeningToCodeEvents();

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
if (V8_UNLIKELY(FLAG_interpreted_frames_native_stack))
CreateInterpreterDataForDeserializedCode(isolate, result,
log_code_creation);
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

bool needs_source_positions = isolate->NeedsSourcePositionsForProfiling();

Expand Down
1 change: 1 addition & 0 deletions deps/v8/test/cctest/cctest.status
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@
'test-log/LogInterpretedFramesNativeStack': [SKIP],
'test-log/LogInterpretedFramesNativeStackWithSerialization': [SKIP],
'test-serialize/CodeSerializerOnePlusOneWithInterpretedFramesNativeStack': [SKIP],
'test-interpreter/InterpreterWithNativeStack': [SKIP],

# Crashes on native arm.
'test-macro-assembler-arm/ExtractLane': [PASS, ['arch == arm and not simulator_run', SKIP]],
Expand Down
4 changes: 2 additions & 2 deletions deps/v8/test/cctest/interpreter/test-interpreter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5029,7 +5029,7 @@ TEST(InterpreterGenerators) {
}
}

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
TEST(InterpreterWithNativeStack) {
i::FLAG_interpreted_frames_native_stack = true;

Expand All @@ -5051,7 +5051,7 @@ TEST(InterpreterWithNativeStack) {
CHECK(code.is_interpreter_trampoline_builtin());
CHECK_NE(code.address(), interpreter_entry_trampoline->address());
}
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

TEST(InterpreterGetBytecodeHandler) {
HandleAndZoneScope handles;
Expand Down
8 changes: 4 additions & 4 deletions deps/v8/test/cctest/test-log.cc
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ UNINITIALIZED_TEST(LogAll) {
isolate->Dispose();
}

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
UNINITIALIZED_TEST(LogInterpretedFramesNativeStack) {
SETUP_FLAGS();
i::FLAG_interpreted_frames_native_stack = true;
Expand Down Expand Up @@ -650,7 +650,7 @@ UNINITIALIZED_TEST(LogInterpretedFramesNativeStackWithSerialization) {
} while (!has_cache);
delete cache;
}
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

UNINITIALIZED_TEST(ExternalCodeEventListener) {
i::FLAG_log = false;
Expand Down Expand Up @@ -753,7 +753,7 @@ UNINITIALIZED_TEST(ExternalCodeEventListenerInnerFunctions) {
isolate2->Dispose();
}

#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
UNINITIALIZED_TEST(ExternalCodeEventListenerWithInterpretedFramesNativeStack) {
i::FLAG_log = false;
i::FLAG_prof = false;
Expand Down Expand Up @@ -803,7 +803,7 @@ UNINITIALIZED_TEST(ExternalCodeEventListenerWithInterpretedFramesNativeStack) {
}
isolate->Dispose();
}
#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_S390X
#endif // V8_TARGET_ARCH_ARM

UNINITIALIZED_TEST(TraceMaps) {
SETUP_FLAGS();
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/test/cctest/test-serialize.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1672,7 +1672,7 @@ void TestCodeSerializerOnePlusOneImpl(bool verify_builtins_count = true) {
TEST(CodeSerializerOnePlusOne) { TestCodeSerializerOnePlusOneImpl(); }

// See bug v8:9122
#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_S390X)
#ifndef V8_TARGET_ARCH_ARM
TEST(CodeSerializerOnePlusOneWithInterpretedFramesNativeStack) {
FLAG_interpreted_frames_native_stack = true;
// We pass false because this test will create IET copies (which are
Expand Down