tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 533148120333f8a4704b428772e9c4691b65f619
parent c58bb6926783fb78031e8b0f9d5388e48e5953be
Author: André Bargull <andre.bargull@gmail.com>
Date:   Fri, 17 Oct 2025 11:25:41 +0000

Bug 1992993 - Part 1: Fix bad implicit constructor warnings. r=spidermonkey-reviewers,iain

Make constructors `explicit` to avoid implicit constructor warnings.

Differential Revision: https://phabricator.services.mozilla.com/D267789

Diffstat:
Mjs/src/jit/loong64/Assembler-loong64.h | 14+++++++-------
Mjs/src/jit/loong64/CodeGenerator-loong64.cpp | 2+-
Mjs/src/jit/loong64/MacroAssembler-loong64.h | 2+-
Mjs/src/jit/loong64/MoveEmitter-loong64.h | 2+-
Mjs/src/jit/mips-shared/Assembler-mips-shared.h | 20++++++++++----------
Mjs/src/jit/mips-shared/CodeGenerator-mips-shared.cpp | 2+-
Mjs/src/jit/mips-shared/MacroAssembler-mips-shared.cpp | 2+-
Mjs/src/jit/mips-shared/MoveEmitter-mips-shared.h | 2+-
Mjs/src/jit/mips64/Architecture-mips64.h | 2+-
Mjs/src/jit/mips64/Assembler-mips64.h | 112++++++++++++++++++++++++++++---------------------------------------------------
Mjs/src/jit/mips64/MacroAssembler-mips64.h | 2+-
Mjs/src/jit/mips64/MoveEmitter-mips64.h | 3++-
Mjs/src/jit/riscv64/Architecture-riscv64.h | 2+-
Mjs/src/jit/riscv64/Assembler-riscv64.h | 2+-
Mjs/src/jit/riscv64/CodeGenerator-riscv64.cpp | 2+-
Mjs/src/jit/riscv64/MacroAssembler-riscv64.h | 2+-
16 files changed, 71 insertions(+), 102 deletions(-)

diff --git a/js/src/jit/loong64/Assembler-loong64.h b/js/src/jit/loong64/Assembler-loong64.h @@ -681,7 +681,7 @@ class BOffImm16 { bool isInvalid() { return data == INVALID; } Instruction* getDest(Instruction* src) const; - BOffImm16(InstImm inst); + explicit BOffImm16(InstImm inst); }; // A JOffImm26 is a 26 bit immediate that is used for unconditional jumps. @@ -723,7 +723,7 @@ class Imm16 { public: Imm16(); - Imm16(uint32_t imm) : value(imm) {} + explicit Imm16(uint32_t imm) : value(imm) {} uint32_t encode() { return value; } int32_t decodeSigned() { return value; } uint32_t decodeUnsigned() { return value; } @@ -740,7 +740,7 @@ class Imm8 { public: Imm8(); - Imm8(uint32_t imm) : value(imm) {} + explicit Imm8(uint32_t imm) : value(imm) {} uint32_t encode(uint32_t shift) { return value << shift; } int32_t decodeSigned() { return value; } uint32_t decodeUnsigned() { return value; } @@ -764,9 +764,9 @@ class Operand { int32_t offset; public: - Operand(Register reg_) : tag(REG), reg(reg_.code()) {} + MOZ_IMPLICIT Operand(Register reg_) : tag(REG), reg(reg_.code()) {} - Operand(FloatRegister freg) : tag(FREG), reg(freg.code()) {} + explicit Operand(FloatRegister freg) : tag(FREG), reg(freg.code()) {} Operand(Register base, Imm32 off) : tag(MEM), reg(base.code()), offset(off.value) {} @@ -774,7 +774,7 @@ class Operand { Operand(Register base, int32_t off) : tag(MEM), reg(base.code()), offset(off) {} - Operand(const Address& addr) + explicit Operand(const Address& addr) : tag(MEM), reg(addr.base.code()), offset(addr.offset) {} Tag getTag() const { return tag; } @@ -1526,7 +1526,7 @@ class Instruction { protected: // Standard constructor - Instruction(uint32_t data_) : data(data_) {} + explicit Instruction(uint32_t data_) : data(data_) {} // You should never create an instruction directly. You should create a // more specific instruction which will eventually call one of these // constructors for you. diff --git a/js/src/jit/loong64/CodeGenerator-loong64.cpp b/js/src/jit/loong64/CodeGenerator-loong64.cpp @@ -153,7 +153,7 @@ class js::jit::OutOfLineTableSwitch } public: - OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} + explicit OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} MTableSwitch* mir() const { return mir_; } diff --git a/js/src/jit/loong64/MacroAssembler-loong64.h b/js/src/jit/loong64/MacroAssembler-loong64.h @@ -39,7 +39,7 @@ struct ImmShiftedTag : public ImmWord { }; struct ImmTag : public Imm32 { - ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} + explicit ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} }; static const int defaultShift = 3; diff --git a/js/src/jit/loong64/MoveEmitter-loong64.h b/js/src/jit/loong64/MoveEmitter-loong64.h @@ -52,7 +52,7 @@ class MoveEmitterLOONG64 { void emit(const MoveOp& move); public: - MoveEmitterLOONG64(MacroAssembler& masm) + explicit MoveEmitterLOONG64(MacroAssembler& masm) : inCycle_(0), masm(masm), pushedAtStart_(masm.framePushed()), diff --git a/js/src/jit/mips-shared/Assembler-mips-shared.h b/js/src/jit/mips-shared/Assembler-mips-shared.h @@ -550,7 +550,7 @@ class BOffImm16 { bool isInvalid() { return data == INVALID; } Instruction* getDest(Instruction* src) const; - BOffImm16(InstImm inst); + explicit BOffImm16(InstImm inst); }; // A JOffImm26 is a 26 bit immediate that is used for unconditional jumps. @@ -592,7 +592,7 @@ class Imm16 { public: Imm16(); - Imm16(uint32_t imm) : value(imm) {} + explicit Imm16(uint32_t imm) : value(imm) {} uint32_t encode() { return value; } int32_t decodeSigned() { return value; } uint32_t decodeUnsigned() { return value; } @@ -612,7 +612,7 @@ class Imm8 { public: Imm8(); - Imm8(uint32_t imm) : value(imm) {} + explicit Imm8(uint32_t imm) : value(imm) {} uint32_t encode(uint32_t shift) { return value << shift; } int32_t decodeSigned() { return value; } uint32_t decodeUnsigned() { return value; } @@ -634,7 +634,7 @@ class GSImm13 { public: GSImm13(); - GSImm13(uint32_t imm) : value(imm & ~0xf) {} + explicit GSImm13(uint32_t imm) : value(imm & ~0xf) {} uint32_t encode(uint32_t shift) { return ((value >> 4) & 0x1ff) << shift; } int32_t decodeSigned() { return value; } uint32_t decodeUnsigned() { return value; } @@ -653,9 +653,9 @@ class Operand { int32_t offset; public: - Operand(Register reg_) : tag(REG), reg(reg_.code()) {} + explicit Operand(Register reg_) : tag(REG), reg(reg_.code()) {} - Operand(FloatRegister freg) : tag(FREG), reg(freg.code()) {} + explicit Operand(FloatRegister freg) : tag(FREG), reg(freg.code()) {} Operand(Register base, Imm32 off) : tag(MEM), reg(base.code()), offset(off.value) {} @@ -663,7 +663,7 @@ class Operand { Operand(Register base, int32_t off) : tag(MEM), reg(base.code()), offset(off) {} - Operand(const Address& addr) + explicit Operand(const Address& addr) : tag(MEM), reg(addr.base.code()), offset(addr.offset) {} Tag getTag() const { return tag; } @@ -1319,7 +1319,7 @@ class Instruction { uint32_t data; // Standard constructor - Instruction(uint32_t data_) : data(data_) {} + explicit Instruction(uint32_t data_) : data(data_) {} // You should never create an instruction directly. You should create a // more specific instruction which will eventually call one of these @@ -1443,7 +1443,7 @@ class InstImm : public Instruction { : Instruction(op | rs | cc | off.encode()) {} InstImm(OpcodeField op, Register rs, Register rt, Imm16 off) : Instruction(op | RS(rs) | RT(rt) | off.encode()) {} - InstImm(uint32_t raw) : Instruction(raw) {} + MOZ_IMPLICIT InstImm(uint32_t raw) : Instruction(raw) {} // For floating-point loads and stores. InstImm(OpcodeField op, Register rs, FloatRegister rt, Imm16 off) : Instruction(op | RS(rs) | RT(rt) | off.encode()) {} @@ -1499,7 +1499,7 @@ class InstGS : public Instruction { InstGS(OpcodeField op, Register rs, FloatRegister rt, FloatRegister rz, GSImm13 off, FunctionField ff) : Instruction(op | RS(rs) | RT(rt) | RZ(rz) | off.encode(6) | ff) {} - InstGS(uint32_t raw) : Instruction(raw) {} + explicit InstGS(uint32_t raw) : Instruction(raw) {} // For floating-point unaligned loads and stores. InstGS(OpcodeField op, Register rs, FloatRegister rt, Imm8 off, FunctionField ff) diff --git a/js/src/jit/mips-shared/CodeGenerator-mips-shared.cpp b/js/src/jit/mips-shared/CodeGenerator-mips-shared.cpp @@ -1301,7 +1301,7 @@ class js::jit::OutOfLineTableSwitch } public: - OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} + explicit OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} MTableSwitch* mir() const { return mir_; } diff --git a/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp b/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp @@ -2329,7 +2329,7 @@ void MacroAssembler::patchSub32FromMemAndBranchIfNegative(CodeOffset offset, // | | | | // 001001 rs rt imm = addiu rs, rt, imm MOZ_ASSERT(inst->extractOpcode() == ((uint32_t)op_addiu >> OpcodeShift)); - inst->setImm16(-val & 0xffff); + inst->setImm16(Imm16(-val & 0xffff)); } // ======================================================================== diff --git a/js/src/jit/mips-shared/MoveEmitter-mips-shared.h b/js/src/jit/mips-shared/MoveEmitter-mips-shared.h @@ -52,7 +52,7 @@ class MoveEmitterMIPSShared { void emit(const MoveOp& move); public: - MoveEmitterMIPSShared(MacroAssembler& masm) + explicit MoveEmitterMIPSShared(MacroAssembler& masm) : inCycle_(0), masm(masm), pushedAtStart_(masm.framePushed()), diff --git a/js/src/jit/mips64/Architecture-mips64.h b/js/src/jit/mips64/Architecture-mips64.h @@ -102,7 +102,7 @@ class FloatRegister : public FloatRegisterMIPSShared { ContentType kind_ : 3; public: - constexpr FloatRegister(uint32_t r, ContentType kind = Codes::Double) + constexpr explicit FloatRegister(uint32_t r, ContentType kind = Codes::Double) : reg_(Encoding(r)), kind_(kind) {} constexpr FloatRegister() : reg_(Encoding(FloatRegisters::invalid_freg)), kind_(Codes::Double) {} diff --git a/js/src/jit/mips64/Assembler-mips64.h b/js/src/jit/mips64/Assembler-mips64.h @@ -90,14 +90,14 @@ static constexpr Register JSReturnReg = v1; static constexpr Register JSReturnReg_Type = JSReturnReg; static constexpr Register JSReturnReg_Data = JSReturnReg; static constexpr Register64 ReturnReg64(ReturnReg); -static constexpr FloatRegister ReturnFloat32Reg = {FloatRegisters::f0, - FloatRegisters::Single}; -static constexpr FloatRegister ReturnDoubleReg = {FloatRegisters::f0, - FloatRegisters::Double}; -static constexpr FloatRegister ScratchFloat32Reg = {FloatRegisters::f23, - FloatRegisters::Single}; -static constexpr FloatRegister ScratchDoubleReg = {FloatRegisters::f23, - FloatRegisters::Double}; +static constexpr FloatRegister ReturnFloat32Reg{FloatRegisters::f0, + FloatRegisters::Single}; +static constexpr FloatRegister ReturnDoubleReg{FloatRegisters::f0, + FloatRegisters::Double}; +static constexpr FloatRegister ScratchFloat32Reg{FloatRegisters::f23, + FloatRegisters::Single}; +static constexpr FloatRegister ScratchDoubleReg{FloatRegisters::f23, + FloatRegisters::Double}; struct ScratchFloat32Scope : public AutoFloatRegisterScope { explicit ScratchFloat32Scope(MacroAssembler& masm) @@ -109,70 +109,38 @@ struct ScratchDoubleScope : public AutoFloatRegisterScope { : AutoFloatRegisterScope(masm, ScratchDoubleReg) {} }; -static constexpr FloatRegister f0 = {FloatRegisters::f0, - FloatRegisters::Double}; -static constexpr FloatRegister f1 = {FloatRegisters::f1, - FloatRegisters::Double}; -static constexpr FloatRegister f2 = {FloatRegisters::f2, - FloatRegisters::Double}; -static constexpr FloatRegister f3 = {FloatRegisters::f3, - FloatRegisters::Double}; -static constexpr FloatRegister f4 = {FloatRegisters::f4, - FloatRegisters::Double}; -static constexpr FloatRegister f5 = {FloatRegisters::f5, - FloatRegisters::Double}; -static constexpr FloatRegister f6 = {FloatRegisters::f6, - FloatRegisters::Double}; -static constexpr FloatRegister f7 = {FloatRegisters::f7, - FloatRegisters::Double}; -static constexpr FloatRegister f8 = {FloatRegisters::f8, - FloatRegisters::Double}; -static constexpr FloatRegister f9 = {FloatRegisters::f9, - FloatRegisters::Double}; -static constexpr FloatRegister f10 = {FloatRegisters::f10, - FloatRegisters::Double}; -static constexpr FloatRegister f11 = {FloatRegisters::f11, - FloatRegisters::Double}; -static constexpr FloatRegister f12 = {FloatRegisters::f12, - FloatRegisters::Double}; -static constexpr FloatRegister f13 = {FloatRegisters::f13, - FloatRegisters::Double}; -static constexpr FloatRegister f14 = {FloatRegisters::f14, - FloatRegisters::Double}; -static constexpr FloatRegister f15 = {FloatRegisters::f15, - FloatRegisters::Double}; -static constexpr FloatRegister f16 = {FloatRegisters::f16, - FloatRegisters::Double}; -static constexpr FloatRegister f17 = {FloatRegisters::f17, - FloatRegisters::Double}; -static constexpr FloatRegister f18 = {FloatRegisters::f18, - FloatRegisters::Double}; -static constexpr FloatRegister f19 = {FloatRegisters::f19, - FloatRegisters::Double}; -static constexpr FloatRegister f20 = {FloatRegisters::f20, - FloatRegisters::Double}; -static constexpr FloatRegister f21 = {FloatRegisters::f21, - FloatRegisters::Double}; -static constexpr FloatRegister f22 = {FloatRegisters::f22, - FloatRegisters::Double}; -static constexpr FloatRegister f23 = {FloatRegisters::f23, - FloatRegisters::Double}; -static constexpr FloatRegister f24 = {FloatRegisters::f24, - FloatRegisters::Double}; -static constexpr FloatRegister f25 = {FloatRegisters::f25, - FloatRegisters::Double}; -static constexpr FloatRegister f26 = {FloatRegisters::f26, - FloatRegisters::Double}; -static constexpr FloatRegister f27 = {FloatRegisters::f27, - FloatRegisters::Double}; -static constexpr FloatRegister f28 = {FloatRegisters::f28, - FloatRegisters::Double}; -static constexpr FloatRegister f29 = {FloatRegisters::f29, - FloatRegisters::Double}; -static constexpr FloatRegister f30 = {FloatRegisters::f30, - FloatRegisters::Double}; -static constexpr FloatRegister f31 = {FloatRegisters::f31, - FloatRegisters::Double}; +static constexpr FloatRegister f0{FloatRegisters::f0, FloatRegisters::Double}; +static constexpr FloatRegister f1{FloatRegisters::f1, FloatRegisters::Double}; +static constexpr FloatRegister f2{FloatRegisters::f2, FloatRegisters::Double}; +static constexpr FloatRegister f3{FloatRegisters::f3, FloatRegisters::Double}; +static constexpr FloatRegister f4{FloatRegisters::f4, FloatRegisters::Double}; +static constexpr FloatRegister f5{FloatRegisters::f5, FloatRegisters::Double}; +static constexpr FloatRegister f6{FloatRegisters::f6, FloatRegisters::Double}; +static constexpr FloatRegister f7{FloatRegisters::f7, FloatRegisters::Double}; +static constexpr FloatRegister f8{FloatRegisters::f8, FloatRegisters::Double}; +static constexpr FloatRegister f9{FloatRegisters::f9, FloatRegisters::Double}; +static constexpr FloatRegister f10{FloatRegisters::f10, FloatRegisters::Double}; +static constexpr FloatRegister f11{FloatRegisters::f11, FloatRegisters::Double}; +static constexpr FloatRegister f12{FloatRegisters::f12, FloatRegisters::Double}; +static constexpr FloatRegister f13{FloatRegisters::f13, FloatRegisters::Double}; +static constexpr FloatRegister f14{FloatRegisters::f14, FloatRegisters::Double}; +static constexpr FloatRegister f15{FloatRegisters::f15, FloatRegisters::Double}; +static constexpr FloatRegister f16{FloatRegisters::f16, FloatRegisters::Double}; +static constexpr FloatRegister f17{FloatRegisters::f17, FloatRegisters::Double}; +static constexpr FloatRegister f18{FloatRegisters::f18, FloatRegisters::Double}; +static constexpr FloatRegister f19{FloatRegisters::f19, FloatRegisters::Double}; +static constexpr FloatRegister f20{FloatRegisters::f20, FloatRegisters::Double}; +static constexpr FloatRegister f21{FloatRegisters::f21, FloatRegisters::Double}; +static constexpr FloatRegister f22{FloatRegisters::f22, FloatRegisters::Double}; +static constexpr FloatRegister f23{FloatRegisters::f23, FloatRegisters::Double}; +static constexpr FloatRegister f24{FloatRegisters::f24, FloatRegisters::Double}; +static constexpr FloatRegister f25{FloatRegisters::f25, FloatRegisters::Double}; +static constexpr FloatRegister f26{FloatRegisters::f26, FloatRegisters::Double}; +static constexpr FloatRegister f27{FloatRegisters::f27, FloatRegisters::Double}; +static constexpr FloatRegister f28{FloatRegisters::f28, FloatRegisters::Double}; +static constexpr FloatRegister f29{FloatRegisters::f29, FloatRegisters::Double}; +static constexpr FloatRegister f30{FloatRegisters::f30, FloatRegisters::Double}; +static constexpr FloatRegister f31{FloatRegisters::f31, FloatRegisters::Double}; // MIPS64 CPUs can only load multibyte data that is "naturally" // eight-byte-aligned, sp register should be sixteen-byte-aligned. diff --git a/js/src/jit/mips64/MacroAssembler-mips64.h b/js/src/jit/mips64/MacroAssembler-mips64.h @@ -27,7 +27,7 @@ struct ImmShiftedTag : public ImmWord { }; struct ImmTag : public Imm32 { - ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} + explicit ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} }; static constexpr ValueOperand JSReturnOperand{JSReturnReg}; diff --git a/js/src/jit/mips64/MoveEmitter-mips64.h b/js/src/jit/mips64/MoveEmitter-mips64.h @@ -20,7 +20,8 @@ class MoveEmitterMIPS64 : public MoveEmitterMIPSShared { MoveOp::Type type, uint32_t slot); public: - MoveEmitterMIPS64(MacroAssembler& masm) : MoveEmitterMIPSShared(masm) {} + explicit MoveEmitterMIPS64(MacroAssembler& masm) + : MoveEmitterMIPSShared(masm) {} }; typedef MoveEmitterMIPS64 MoveEmitter; diff --git a/js/src/jit/riscv64/Architecture-riscv64.h b/js/src/jit/riscv64/Architecture-riscv64.h @@ -473,7 +473,7 @@ struct FloatRegister { MOZ_ASSERT(uint32_t(encoding) < Codes::Total); } - constexpr FloatRegister(Encoding encoding) + constexpr explicit FloatRegister(Encoding encoding) : encoding_(encoding), kind_(FloatRegisters::Double), invalid_(false) { MOZ_ASSERT(uint32_t(encoding) < Codes::Total); } diff --git a/js/src/jit/riscv64/Assembler-riscv64.h b/js/src/jit/riscv64/Assembler-riscv64.h @@ -248,7 +248,7 @@ class Assembler : public AssemblerShared, Header(int size_, bool isNatural_) : size(size_), isNatural(isNatural_), ONES(0xffff) {} - Header(uint32_t data) : data(data) { + explicit Header(uint32_t data) : data(data) { static_assert(sizeof(Header) == sizeof(uint32_t)); MOZ_ASSERT(ONES == 0xffff); } diff --git a/js/src/jit/riscv64/CodeGenerator-riscv64.cpp b/js/src/jit/riscv64/CodeGenerator-riscv64.cpp @@ -152,7 +152,7 @@ class js::jit::OutOfLineTableSwitch } public: - OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} + explicit OutOfLineTableSwitch(MTableSwitch* mir) : mir_(mir) {} MTableSwitch* mir() const { return mir_; } diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.h b/js/src/jit/riscv64/MacroAssembler-riscv64.h @@ -90,7 +90,7 @@ struct ImmShiftedTag : public ImmWord { }; struct ImmTag : public Imm32 { - ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} + explicit ImmTag(JSValueTag mask) : Imm32(int32_t(mask)) {} }; class MacroAssemblerRiscv64 : public Assembler {