Skip to content

Commit

Permalink
deps: V8: cherry-pick b5939c758924
Browse files Browse the repository at this point in the history
Original commit message:

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

    This reverts commit 9d3cca1cd3ad7c6653cab1cdf111d356f33f77cd.

    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 b766299d2c382cc9817e73225bbebe29ce62b9d1
    > Port 9592b043eed86db91a441d4bf78b7f0c8c2ce4dd
    > Port d915b8d668615a7d6d75cf7a61d3ca5a3d139799
    >
    > 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/+/2196521
    Reviewed-by: Milad Farazmand <miladfar@ca.ibm.com>
    Reviewed-by: Jakob Gruber <jgruber@chromium.org>
    Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
    Cr-Commit-Position: refs/heads/master@{#67751}

Refs: v8/v8@b5939c7

PR-URL: #33702
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
  • Loading branch information
Milad Farazmand authored and codebytere committed Jun 18, 2020
1 parent 1f996b7 commit 0524c7a
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 23 deletions.
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
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

0 comments on commit 0524c7a

Please sign in to comment.