diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-12-04 08:20:37 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-12-06 15:23:33 +0100 |
commit | 9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3 (patch) | |
tree | 2b0c843168dafb939d8df8a15b2aa72b76dee51d /deps/v8/src/builtins/setup-builtins-internal.cc | |
parent | b8fbe69db1292307adb2c2b2e0d5ef48c4ab2faf (diff) | |
download | android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.gz android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.bz2 android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.zip |
deps: update V8 to 7.1.302.28
PR-URL: https://github.com/nodejs/node/pull/23423
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/builtins/setup-builtins-internal.cc')
-rw-r--r-- | deps/v8/src/builtins/setup-builtins-internal.cc | 64 |
1 files changed, 37 insertions, 27 deletions
diff --git a/deps/v8/src/builtins/setup-builtins-internal.cc b/deps/v8/src/builtins/setup-builtins-internal.cc index 93a2b8b5f3..630473f407 100644 --- a/deps/v8/src/builtins/setup-builtins-internal.cc +++ b/deps/v8/src/builtins/setup-builtins-internal.cc @@ -12,6 +12,7 @@ #include "src/interface-descriptors.h" #include "src/interpreter/bytecodes.h" #include "src/interpreter/interpreter-generator.h" +#include "src/interpreter/interpreter.h" #include "src/isolate.h" #include "src/objects-inl.h" #include "src/objects/shared-function-info.h" @@ -26,6 +27,7 @@ BUILTIN_LIST_C(FORWARD_DECLARE) #undef FORWARD_DECLARE namespace { + void PostBuildProfileAndTracing(Isolate* isolate, Code* code, const char* name) { PROFILE(isolate, CodeCreateEvent(CodeEventListener::BUILTIN_TAG, @@ -48,10 +50,11 @@ AssemblerOptions BuiltinAssemblerOptions(Isolate* isolate, return options; } - CodeRange* code_range = isolate->heap()->memory_allocator()->code_range(); + const base::AddressRegion& code_range = + isolate->heap()->memory_allocator()->code_range(); bool pc_relative_calls_fit_in_code_range = - code_range->valid() && - code_range->size() <= kMaxPCRelativeCodeRangeInMB * MB; + !code_range.is_empty() && + code_range.size() <= kMaxPCRelativeCodeRangeInMB * MB; options.isolate_independent_code = true; options.use_pc_relative_calls_and_jumps = pc_relative_calls_fit_in_code_range; @@ -180,6 +183,7 @@ Code* BuildWithCodeStubAssemblerCS(Isolate* isolate, int32_t builtin_index, PostBuildProfileAndTracing(isolate, *code, name); return *code; } + } // anonymous namespace // static @@ -246,26 +250,36 @@ void SetupIsolateDelegate::ReplacePlaceholders(Isolate* isolate) { } } -#ifdef V8_EMBEDDED_BYTECODE_HANDLERS namespace { + Code* GenerateBytecodeHandler(Isolate* isolate, int builtin_index, - const char* name, interpreter::Bytecode bytecode, - interpreter::OperandScale operand_scale) { - if (!interpreter::Bytecodes::BytecodeHasHandler(bytecode, operand_scale)) { - // TODO(v8:8068): Consider returning something else to avoid placeholders - // being serialized with the snapshot. - return nullptr; - } + const char* name, + interpreter::OperandScale operand_scale, + interpreter::Bytecode bytecode) { + DCHECK(interpreter::Bytecodes::BytecodeHasHandler(bytecode, operand_scale)); Handle<Code> code = interpreter::GenerateBytecodeHandler( - isolate, bytecode, operand_scale, builtin_index); + isolate, bytecode, operand_scale, builtin_index, + BuiltinAssemblerOptions(isolate, builtin_index)); PostBuildProfileAndTracing(isolate, *code, name); return *code; } + +Code* GenerateLazyBytecodeHandler(Isolate* isolate, int builtin_index, + const char* name, + interpreter::OperandScale operand_scale) { + Handle<Code> code = interpreter::GenerateDeserializeLazyHandler( + isolate, operand_scale, builtin_index, + BuiltinAssemblerOptions(isolate, builtin_index)); + + PostBuildProfileAndTracing(isolate, *code, name); + + return *code; +} + } // namespace -#endif // static void SetupIsolateDelegate::SetupBuiltinsInternal(Isolate* isolate) { @@ -309,19 +323,15 @@ void SetupIsolateDelegate::SetupBuiltinsInternal(Isolate* isolate) { CallDescriptors::InterfaceDescriptor, #Name, 1); \ AddBuiltin(builtins, index++, code); -#define BUILD_BCH_WITH_SCALE(Code, Scale) \ +#define BUILD_BCH(Name, OperandScale, Bytecode) \ code = GenerateBytecodeHandler(isolate, index, Builtins::name(index), \ - interpreter::Bytecode::k##Code, \ - interpreter::OperandScale::k##Scale); \ - if (code) { \ - AddBuiltin(builtins, index, code); \ - } \ - ++index; - -#define BUILD_BCH(Code, ...) \ - BUILD_BCH_WITH_SCALE(Code, Single) \ - BUILD_BCH_WITH_SCALE(Code, Double) \ - BUILD_BCH_WITH_SCALE(Code, Quadruple) + OperandScale, Bytecode); \ + AddBuiltin(builtins, index++, code); + +#define BUILD_DLH(Name, OperandScale) \ + code = GenerateLazyBytecodeHandler(isolate, index, Builtins::name(index), \ + OperandScale); \ + AddBuiltin(builtins, index++, code); #define BUILD_ASM(Name) \ code = BuildWithMacroAssembler(isolate, index, Builtins::Generate_##Name, \ @@ -329,7 +339,7 @@ void SetupIsolateDelegate::SetupBuiltinsInternal(Isolate* isolate) { AddBuiltin(builtins, index++, code); BUILTIN_LIST(BUILD_CPP, BUILD_API, BUILD_TFJ, BUILD_TFC, BUILD_TFS, BUILD_TFH, - BUILD_BCH, BUILD_ASM); + BUILD_BCH, BUILD_DLH, BUILD_ASM); #undef BUILD_CPP #undef BUILD_API @@ -338,7 +348,7 @@ void SetupIsolateDelegate::SetupBuiltinsInternal(Isolate* isolate) { #undef BUILD_TFS #undef BUILD_TFH #undef BUILD_BCH -#undef BUILD_BCH_WITH_SCALE +#undef BUILD_DLH #undef BUILD_ASM CHECK_EQ(Builtins::builtin_count, index); |