|
|
- Description: upstream mips fix
- Origin: https://github.com/nodejs/node/issues/31118
- Last-Update: 2020-05-30
-
- --- a/deps/v8/AUTHORS
- +++ b/deps/v8/AUTHORS
- @@ -106,6 +106,7 @@
- James M Snell <jasnell@gmail.com>
- Jianghua Yang <jianghua.yjh@alibaba-inc.com>
- Jiawen Geng <technicalcute@gmail.com>
- +Jiaxun Yang <jiaxun.yang@flygoat.com>
- Joel Stanley <joel@jms.id.au>
- Johan Bergström <johan@bergstroem.nu>
- Jonathan Liu <net147@gmail.com>
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.cc
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.cc
- @@ -94,10 +94,6 @@
-
- void PlatformEmbeddedFileWriterAIX::DeclareFunctionEnd(const char* name) {}
-
- -int PlatformEmbeddedFileWriterAIX::HexLiteral(uint64_t value) {
- - return fprintf(fp_, "0x%" PRIx64, value);
- -}
- -
- void PlatformEmbeddedFileWriterAIX::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterAIX::DeclareExternalFilename(
- @@ -120,12 +116,6 @@
- return kLong;
- }
-
- -int PlatformEmbeddedFileWriterAIX::WriteByteChunk(const uint8_t* data) {
- - DCHECK_EQ(ByteChunkDataDirective(), kLong);
- - const uint32_t* long_ptr = reinterpret_cast<const uint32_t*>(data);
- - return HexLiteral(*long_ptr);
- -}
- -
- #undef SYMBOL_PREFIX
-
- } // namespace internal
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.h
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.h
- @@ -37,8 +37,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
- - int HexLiteral(uint64_t value) override;
- -
- void Comment(const char* string) override;
-
- void FilePrologue() override;
- @@ -48,7 +46,6 @@
- int IndentedDataDirective(DataDirective directive) override;
-
- DataDirective ByteChunkDataDirective() const override;
- - int WriteByteChunk(const uint8_t* data) override;
-
- private:
- void DeclareSymbolGlobal(const char* name);
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.cc
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.cc
- @@ -24,6 +24,10 @@
- }
- }
-
- +int PlatformEmbeddedFileWriterBase::HexLiteral(uint64_t value) {
- + return fprintf(fp_, "0x%" PRIx64, value);
- +}
- +
- int DataDirectiveSize(DataDirective directive) {
- switch (directive) {
- case kByte:
- @@ -39,24 +43,37 @@
- }
-
- int PlatformEmbeddedFileWriterBase::WriteByteChunk(const uint8_t* data) {
- - DCHECK_EQ(ByteChunkDataDirective(), kOcta);
- -
- - static constexpr size_t kSize = kInt64Size;
- -
- - uint64_t part1, part2;
- - // Use memcpy for the reads since {data} is not guaranteed to be aligned.
- + size_t kSize = DataDirectiveSize(ByteChunkDataDirective());
- + size_t kHalfSize = kSize / 2;
- + uint64_t high = 0, low = 0;
- +
- + switch (kSize) {
- + case 1:
- + low = *data;
- + break;
- + case 4:
- + low = *reinterpret_cast<const uint32_t*>(data);
- + break;
- + case 8:
- + low = *reinterpret_cast<const uint64_t*>(data);
- + break;
- + case 16:
- #ifdef V8_TARGET_BIG_ENDIAN
- - memcpy(&part1, data, kSize);
- - memcpy(&part2, data + kSize, kSize);
- + memcpy(&high, data, kHalfSize);
- + memcpy(&low, data + kHalfSize, kHalfSize);
- #else
- - memcpy(&part1, data + kSize, kSize);
- - memcpy(&part2, data, kSize);
- + memcpy(&high, data + kHalfSize, kHalfSize);
- + memcpy(&low, data, kHalfSize);
- #endif // V8_TARGET_BIG_ENDIAN
- + break;
- + default:
- + UNREACHABLE();
- + }
-
- - if (part1 != 0) {
- - return fprintf(fp(), "0x%" PRIx64 "%016" PRIx64, part1, part2);
- + if (high != 0) {
- + return fprintf(fp(), "0x%" PRIx64 "%016" PRIx64, high, low);
- } else {
- - return fprintf(fp(), "0x%" PRIx64, part2);
- + return fprintf(fp(), "0x%" PRIx64, low);
- }
- }
-
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.h
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.h
- @@ -67,7 +67,7 @@
- virtual void DeclareFunctionEnd(const char* name) = 0;
-
- // Returns the number of printed characters.
- - virtual int HexLiteral(uint64_t value) = 0;
- + virtual int HexLiteral(uint64_t value);
-
- virtual void Comment(const char* string) = 0;
- virtual void Newline() { fprintf(fp_, "\n"); }
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc
- @@ -112,10 +112,6 @@
-
- void PlatformEmbeddedFileWriterGeneric::DeclareFunctionEnd(const char* name) {}
-
- -int PlatformEmbeddedFileWriterGeneric::HexLiteral(uint64_t value) {
- - return fprintf(fp_, "0x%" PRIx64, value);
- -}
- -
- void PlatformEmbeddedFileWriterGeneric::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterGeneric::DeclareExternalFilename(
- @@ -142,6 +138,18 @@
- return fprintf(fp_, " %s ", DirectiveAsString(directive));
- }
-
- +DataDirective PlatformEmbeddedFileWriterGeneric::ByteChunkDataDirective()
- + const {
- +#if defined(V8_TARGET_ARCH_MIPS) || defined(V8_TARGET_ARCH_MIPS64)
- + // MIPS uses a fixed 4 byte instruction set, using .long
- + // to prevent any unnecessary padding.
- + return kLong;
- +#else
- + // Other ISAs just listen to the base
- + return PlatformEmbeddedFileWriterBase::ByteChunkDataDirective();
- +#endif
- +}
- +
- #undef SYMBOL_PREFIX
-
- } // namespace internal
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.h
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.h
- @@ -39,8 +39,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
- - int HexLiteral(uint64_t value) override;
- -
- void Comment(const char* string) override;
-
- void FilePrologue() override;
- @@ -49,6 +47,8 @@
-
- int IndentedDataDirective(DataDirective directive) override;
-
- + DataDirective ByteChunkDataDirective() const override;
- +
- private:
- void DeclareSymbolGlobal(const char* name);
-
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
- @@ -87,10 +87,6 @@
-
- void PlatformEmbeddedFileWriterMac::DeclareFunctionEnd(const char* name) {}
-
- -int PlatformEmbeddedFileWriterMac::HexLiteral(uint64_t value) {
- - return fprintf(fp_, "0x%" PRIx64, value);
- -}
- -
- void PlatformEmbeddedFileWriterMac::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterMac::DeclareExternalFilename(
- --- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
- +++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
- @@ -37,8 +37,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
- - int HexLiteral(uint64_t value) override;
- -
- void Comment(const char* string) override;
-
- void FilePrologue() override;
|