Commit b5939c75 authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

Revert "s390: [arm] Add missing RELATIVE_CODE_TARGET iteration"

This reverts commit 9d3cca1c.

Reason for revert: Only the test needs to be skipped on s390. Refer to this: https://crrev.com/c/1981505

Original change's description:
> s390: [arm] Add missing RELATIVE_CODE_TARGET iteration
> 
> Port b766299d
> Port 9592b043
> Port d915b8d6
> 
> Original Commit Message:
> 
>     Code object iteration was missing logic for RELATIVE_CODE_TARGET
>     reloc entries. Garbage collection could thus miss objects that were
>     referenced only as targets of pc-relative calls or jumps.
> 
>     RELATIVE_CODE_TARGETs are only used on arm, mips, and s390 and only
>     at mksnapshot-time.
> 
>     This exposed another issue in that the interpreter entry trampoline
>     copy we generate for profiling *did* contain relative calls in
>     runtime-accessible code. This is a problem, since code space on arm is,
>     by default, too large to be fully addressable through pc-relative
>     calls. This CL thus also disables the related
>     FLAG_interpreted_frames_native_stack feature on arm.
> 
>     objects.
> 
> R=​jgruber@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
> BUG=
> LOG=N
> 
> Change-Id: Ifbcaed98d90a2730f0d6a8a7d32c621dab1ff5b2
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2087693
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
> Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
> Cr-Commit-Position: refs/heads/master@{#66644}

TBR=michael_dawson@ca.ibm.com,mlippautz@chromium.org,jyan@ca.ibm.com,jgruber@chromium.org,joransiu@ca.ibm.com,miladfar@ca.ibm.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Id645a9def23d278235ff77f25249d2187e8105ca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196521Reviewed-by: 's avatarMilad Farazmand <miladfar@ca.ibm.com>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#67751}
parent 75b30281
......@@ -3361,15 +3361,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
......@@ -3444,11 +3444,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();
......
......@@ -1655,8 +1655,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 "
......
......@@ -192,12 +192,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());
......@@ -217,7 +217,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
......@@ -257,7 +257,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,
......@@ -302,11 +302,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();
......
......@@ -5042,7 +5042,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;
......@@ -5064,7 +5064,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;
......
......@@ -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;
......@@ -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;
......@@ -755,7 +755,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;
......@@ -805,7 +805,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();
......
......@@ -1663,7 +1663,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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment