diff --git a/common.gypi b/common.gypi index 4459d4f9d923f3..84914640271fb1 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,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.5', + 'v8_embedder_string': '-node.6', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/arm64/macro-assembler-arm64.cc b/deps/v8/src/arm64/macro-assembler-arm64.cc index f10ddceab528c0..4e697a759408d6 100644 --- a/deps/v8/src/arm64/macro-assembler-arm64.cc +++ b/deps/v8/src/arm64/macro-assembler-arm64.cc @@ -1958,6 +1958,15 @@ void TurboAssembler::Call(Handle code, RelocInfo::Mode rmode) { #endif } +void TurboAssembler::Call(ExternalReference target) { + UseScratchRegisterScope temps(this); + Register temp = temps.AcquireX(); + // Immediate is in charge of setting the relocation mode to + // EXTERNAL_REFERENCE. + Ldr(temp, Immediate(target)); + Call(temp); +} + int TurboAssembler::CallSize(Register target) { USE(target); return kInstructionSize; @@ -3399,7 +3408,7 @@ void TurboAssembler::CallPrintf(int arg_count, const CPURegister* args) { dc32(arg_pattern_list); // kPrintfArgPatternListOffset } #else - Call(FUNCTION_ADDR(printf), RelocInfo::EXTERNAL_REFERENCE); + Call(ExternalReference::printf_function(isolate())); #endif } diff --git a/deps/v8/src/arm64/macro-assembler-arm64.h b/deps/v8/src/arm64/macro-assembler-arm64.h index 170266ca9dd919..4a542c022198fd 100644 --- a/deps/v8/src/arm64/macro-assembler-arm64.h +++ b/deps/v8/src/arm64/macro-assembler-arm64.h @@ -884,6 +884,7 @@ class TurboAssembler : public Assembler { void Call(Label* target); void Call(Address target, RelocInfo::Mode rmode); void Call(Handle code, RelocInfo::Mode rmode = RelocInfo::CODE_TARGET); + void Call(ExternalReference target); void CallForDeoptimization(Address target, RelocInfo::Mode rmode) { Call(target, rmode); diff --git a/deps/v8/src/assembler.cc b/deps/v8/src/assembler.cc index b36c4941294a6c..6851868ba168ab 100644 --- a/deps/v8/src/assembler.cc +++ b/deps/v8/src/assembler.cc @@ -1397,6 +1397,10 @@ ExternalReference ExternalReference::libc_memset_function(Isolate* isolate) { return ExternalReference(Redirect(isolate, FUNCTION_ADDR(libc_memset))); } +ExternalReference ExternalReference::printf_function(Isolate* isolate) { + return ExternalReference(Redirect(isolate, FUNCTION_ADDR(std::printf))); +} + template ExternalReference ExternalReference::search_string_raw(Isolate* isolate) { auto f = SearchStringRaw; diff --git a/deps/v8/src/assembler.h b/deps/v8/src/assembler.h index 2ebe88d534d2de..4a56019cd68cbb 100644 --- a/deps/v8/src/assembler.h +++ b/deps/v8/src/assembler.h @@ -969,6 +969,8 @@ class ExternalReference BASE_EMBEDDED { static ExternalReference libc_memmove_function(Isolate* isolate); static ExternalReference libc_memset_function(Isolate* isolate); + static ExternalReference printf_function(Isolate* isolate); + static ExternalReference try_internalize_string_function(Isolate* isolate); static ExternalReference check_object_type(Isolate* isolate); diff --git a/deps/v8/src/external-reference-table.cc b/deps/v8/src/external-reference-table.cc index eeb668a25f2881..bcc46e0477762f 100644 --- a/deps/v8/src/external-reference-table.cc +++ b/deps/v8/src/external-reference-table.cc @@ -241,6 +241,7 @@ void ExternalReferenceTable::AddReferences(Isolate* isolate) { "libc_memmove"); Add(ExternalReference::libc_memset_function(isolate).address(), "libc_memset"); + Add(ExternalReference::printf_function(isolate).address(), "printf"); Add(ExternalReference::try_internalize_string_function(isolate).address(), "try_internalize_string_function"); Add(ExternalReference::check_object_type(isolate).address(),