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 0551877403175d71bc55553a630847334eab8516..6550a53f2660553d71a10ac103e1b724dcab3a20 100644
- --- a/src/codegen/arm64/assembler-arm64.cc
- +++ b/src/codegen/arm64/assembler-arm64.cc
- @@ -3629,6 +3629,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 aa2ffb26cdfc24ef4282e34208575399ab3cb27a..6284ca4046e910362e1647c04b130de06cab163a 100644
- --- a/src/codegen/arm64/assembler-arm64.h
- +++ b/src/codegen/arm64/assembler-arm64.h
- @@ -2117,11 +2117,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);
- @@ -2145,15 +2141,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);
|