123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Richard Townsend <[email protected]>
- Date: Wed, 24 Apr 2019 13:57:36 +0100
- Subject: Workaround an undefined symbol error
- Previously, builds configured with dcheck_always_on=true would error
- with messages like this in the log:
- lld-link: error: undefined symbol: public: bool __cdecl
- v8::internal::CPURegister::IsZero(void) const
- By moving some functions out of the the arm64-assembler header file,
- this error no longer seems to happen.
- diff --git a/src/codegen/arm64/assembler-arm64.cc b/src/codegen/arm64/assembler-arm64.cc
- index c3bae988f6999a44308b89b75422e2d8da61892b..eecf2352663b05a7bdefc6dc8a4aca665c703d63 100644
- --- a/src/codegen/arm64/assembler-arm64.cc
- +++ b/src/codegen/arm64/assembler-arm64.cc
- @@ -3588,6 +3588,22 @@ void Assembler::MoveWide(const Register& rd, uint64_t imm, int shift,
- ImmMoveWide(static_cast<int>(imm)) | ShiftMoveWide(shift));
- }
-
- +Instr Assembler::RmNot31(CPURegister rm) {
- + DCHECK_NE(rm.code(), kSPRegInternalCode);
- + DCHECK(!rm.IsZero());
- + return Rm(rm);
- +}
- +
- +Instr Assembler::RdSP(Register rd) {
- + DCHECK(!rd.IsZero());
- + return (rd.code() & kRegCodeMask) << Rd_offset;
- +}
- +
- +Instr Assembler::RnSP(Register rn) {
- + DCHECK(!rn.IsZero());
- + return (rn.code() & kRegCodeMask) << Rn_offset;
- +}
- +
- void Assembler::AddSub(const Register& rd, const Register& rn,
- const Operand& operand, FlagsUpdate S, AddSubOp op) {
- DCHECK_EQ(rd.SizeInBits(), rn.SizeInBits());
- diff --git a/src/codegen/arm64/assembler-arm64.h b/src/codegen/arm64/assembler-arm64.h
- index 04fbaf3fb0105ea082a09a09ac02f06f5d0c53ef..5bea3dcd328f4b94cfa9038d1216a1ebe6a17d73 100644
- --- a/src/codegen/arm64/assembler-arm64.h
- +++ b/src/codegen/arm64/assembler-arm64.h
- @@ -2103,11 +2103,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
- return rm.code() << Rm_offset;
- }
-
- - static Instr RmNot31(CPURegister rm) {
- - DCHECK_NE(rm.code(), kSPRegInternalCode);
- - DCHECK(!rm.IsZero());
- - return Rm(rm);
- - }
- + static Instr RmNot31(CPURegister rm);
-
- static Instr Ra(CPURegister ra) {
- DCHECK_NE(ra.code(), kSPRegInternalCode);
- @@ -2131,15 +2127,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
-
- // These encoding functions allow the stack pointer to be encoded, and
- // disallow the zero register.
- - static Instr RdSP(Register rd) {
- - DCHECK(!rd.IsZero());
- - return (rd.code() & kRegCodeMask) << Rd_offset;
- - }
- -
- - static Instr RnSP(Register rn) {
- - DCHECK(!rn.IsZero());
- - return (rn.code() & kRegCodeMask) << Rn_offset;
- - }
- + static Instr RdSP(Register rd);
- + static Instr RnSP(Register rn);
-
- // Flags encoding.
- inline static Instr Flags(FlagsUpdate S);
|