[embed handlers] Avoid jump tables in bytecode handlers

Since jump tables cannot be embedded, prevent their generation for
bytecode handlers. This allows the remaining 7 bytecode handlers to be
marked isolate independent.

Bug: v8:8068
Change-Id: I3a4a6e6530fd1c585558a0d44bd429f572318b57
Reviewed-on: https://chromium-review.googlesource.com/1196509
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55523}
This commit is contained in:
Dan Elphick 2018-08-30 12:18:44 +01:00 committed by Commit Bot
parent 2616df737d
commit ab37324c52
2 changed files with 1 additions and 13 deletions

View File

@ -316,18 +316,6 @@ bool Builtins::IsIsolateIndependent(int index) {
DCHECK(IsBuiltinId(index));
#ifndef V8_TARGET_ARCH_IA32
switch (index) {
// The following bytecode handlers do not yet support being embedded as they
// use internal references.
#ifdef V8_EMBEDDED_BYTECODE_HANDLERS
case kInvokeIntrinsicHandler:
case kInvokeIntrinsicWideHandler:
case kInvokeIntrinsicExtraWideHandler:
case kTestInHandler:
case kTestInWideHandler:
case kTestInExtraWideHandler:
case kTestTypeOfHandler:
#endif // V8_EMBEDDED_BYTECODE_HANDLERS
// TODO(jgruber): There's currently two blockers for moving
// InterpreterEntryTrampoline into the binary:
// 1. InterpreterEnterBytecode calculates a pointer into the middle of

View File

@ -61,7 +61,7 @@ OptimizedCompilationInfo::OptimizedCompilationInfo(
PassesFilter(debug_name, CStrVector(FLAG_trace_turbo_filter)));
// Embedded builtins don't support embedded absolute code addresses, so we
// cannot use jump tables.
if (code_kind != Code::BUILTIN) {
if (code_kind != Code::BUILTIN && code_kind != Code::BYTECODE_HANDLER) {
SetFlag(kSwitchJumpTableEnabled);
}
}