diff --git a/js/src/jit/arm/CodeGenerator-arm.cpp b/js/src/jit/arm/CodeGenerator-arm.cpp index cda60003917..4f98765d6eb 100644 --- a/js/src/jit/arm/CodeGenerator-arm.cpp +++ b/js/src/jit/arm/CodeGenerator-arm.cpp @@ -1849,7 +1849,8 @@ CodeGeneratorARM::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins) masm.ma_mov(Imm32(0), d, NoSetCond, Assembler::AboveOrEqual); masm.ma_dataTransferN(IsLoad, size, isSigned, HeapReg, ptrReg, d, Offset, Assembler::Below); } - return masm.append(AsmJSHeapAccess(bo.getOffset())); + masm.append(AsmJSHeapAccess(bo.getOffset())); + return true; } bool @@ -1916,7 +1917,8 @@ CodeGeneratorARM::visitAsmJSStoreHeap(LAsmJSStoreHeap *ins) masm.ma_dataTransferN(IsStore, size, isSigned, HeapReg, ptrReg, ToRegister(ins->value()), Offset, Assembler::Below); } - return masm.append(AsmJSHeapAccess(bo.getOffset())); + masm.append(AsmJSHeapAccess(bo.getOffset())); + return true; } bool diff --git a/js/src/jit/arm/MacroAssembler-arm.cpp b/js/src/jit/arm/MacroAssembler-arm.cpp index 579419ca07e..12f0744a5a6 100644 --- a/js/src/jit/arm/MacroAssembler-arm.cpp +++ b/js/src/jit/arm/MacroAssembler-arm.cpp @@ -2067,7 +2067,7 @@ MacroAssemblerARMCompat::movePtr(AsmJSImmPtr imm, Register dest) else rs = L_LDR; - enoughMemory_ &= append(AsmJSAbsoluteLink(CodeOffsetLabel(nextOffset().getOffset()), imm.kind())); + append(AsmJSAbsoluteLink(CodeOffsetLabel(nextOffset().getOffset()), imm.kind())); ma_movPatchable(Imm32(-1), dest, Always, rs); } void diff --git a/js/src/jit/arm/MacroAssembler-arm.h b/js/src/jit/arm/MacroAssembler-arm.h index 1f897d68bbf..547df442b48 100644 --- a/js/src/jit/arm/MacroAssembler-arm.h +++ b/js/src/jit/arm/MacroAssembler-arm.h @@ -566,11 +566,11 @@ class MacroAssemblerARMCompat : public MacroAssemblerARM } void call(const CallSiteDesc &desc, const Register reg) { call(reg); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void call(const CallSiteDesc &desc, Label *label) { call(label); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void branch(JitCode *c) { diff --git a/js/src/jit/mips/CodeGenerator-mips.cpp b/js/src/jit/mips/CodeGenerator-mips.cpp index eff6b75825e..49fdcfc49cd 100644 --- a/js/src/jit/mips/CodeGenerator-mips.cpp +++ b/js/src/jit/mips/CodeGenerator-mips.cpp @@ -1985,7 +1985,8 @@ CodeGeneratorMIPS::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins) } masm.bind(&done); - return masm.append(AsmJSHeapAccess(bo.getOffset())); + masm.append(AsmJSHeapAccess(bo.getOffset())); + return true; } bool @@ -2061,7 +2062,8 @@ CodeGeneratorMIPS::visitAsmJSStoreHeap(LAsmJSStoreHeap *ins) } masm.bind(&rejoin); - return masm.append(AsmJSHeapAccess(bo.getOffset())); + masm.append(AsmJSHeapAccess(bo.getOffset())); + return true; } bool diff --git a/js/src/jit/mips/MacroAssembler-mips.cpp b/js/src/jit/mips/MacroAssembler-mips.cpp index ecbee71700a..3e12d94e981 100644 --- a/js/src/jit/mips/MacroAssembler-mips.cpp +++ b/js/src/jit/mips/MacroAssembler-mips.cpp @@ -1795,8 +1795,7 @@ MacroAssemblerMIPSCompat::movePtr(ImmPtr imm, Register dest) void MacroAssemblerMIPSCompat::movePtr(AsmJSImmPtr imm, Register dest) { - enoughMemory_ &= append(AsmJSAbsoluteLink(CodeOffsetLabel(nextOffset().getOffset()), - imm.kind())); + append(AsmJSAbsoluteLink(CodeOffsetLabel(nextOffset().getOffset()), imm.kind())); ma_liPatchable(dest, Imm32(-1)); } diff --git a/js/src/jit/mips/MacroAssembler-mips.h b/js/src/jit/mips/MacroAssembler-mips.h index 405e002ac66..abc2f9cf243 100644 --- a/js/src/jit/mips/MacroAssembler-mips.h +++ b/js/src/jit/mips/MacroAssembler-mips.h @@ -414,11 +414,11 @@ class MacroAssemblerMIPSCompat : public MacroAssemblerMIPS } void call(const CallSiteDesc &desc, const Register reg) { call(reg); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void call(const CallSiteDesc &desc, Label *label) { call(label); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void branch(JitCode *c) { diff --git a/js/src/jit/shared/Assembler-shared.h b/js/src/jit/shared/Assembler-shared.h index 249f311f00c..770174235fc 100644 --- a/js/src/jit/shared/Assembler-shared.h +++ b/js/src/jit/shared/Assembler-shared.h @@ -800,21 +800,22 @@ class AssemblerShared return !enoughMemory_; } - bool append(const CallSiteDesc &desc, size_t currentOffset, size_t framePushed) { + void append(const CallSiteDesc &desc, size_t currentOffset, size_t framePushed) { // framePushed does not include AsmJSFrameSize, so add it in here (see // CallSite::stackDepth). - return callsites_.append(CallSite(desc, currentOffset, framePushed + AsmJSFrameSize)); + CallSite callsite(desc, currentOffset, framePushed + AsmJSFrameSize); + enoughMemory_ &= callsites_.append(callsite); } CallSiteVector &&extractCallSites() { return Move(callsites_); } - bool append(AsmJSHeapAccess access) { return asmJSHeapAccesses_.append(access); } + void append(AsmJSHeapAccess access) { enoughMemory_ &= asmJSHeapAccesses_.append(access); } AsmJSHeapAccessVector &&extractAsmJSHeapAccesses() { return Move(asmJSHeapAccesses_); } - bool append(AsmJSGlobalAccess access) { return asmJSGlobalAccesses_.append(access); } + void append(AsmJSGlobalAccess access) { enoughMemory_ &= asmJSGlobalAccesses_.append(access); } size_t numAsmJSGlobalAccesses() const { return asmJSGlobalAccesses_.length(); } AsmJSGlobalAccess asmJSGlobalAccess(size_t i) const { return asmJSGlobalAccesses_[i]; } - bool append(AsmJSAbsoluteLink link) { return asmJSAbsoluteLinks_.append(link); } + void append(AsmJSAbsoluteLink link) { enoughMemory_ &= asmJSAbsoluteLinks_.append(link); } size_t numAsmJSAbsoluteLinks() const { return asmJSAbsoluteLinks_.length(); } AsmJSAbsoluteLink asmJSAbsoluteLink(size_t i) const { return asmJSAbsoluteLinks_[i]; } }; diff --git a/js/src/jit/shared/MacroAssembler-x86-shared.h b/js/src/jit/shared/MacroAssembler-x86-shared.h index 8d33cf52d91..a7c8236245b 100644 --- a/js/src/jit/shared/MacroAssembler-x86-shared.h +++ b/js/src/jit/shared/MacroAssembler-x86-shared.h @@ -669,11 +669,11 @@ class MacroAssemblerX86Shared : public Assembler void call(const CallSiteDesc &desc, Label *label) { call(label); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void call(const CallSiteDesc &desc, Register reg) { call(reg); - enoughMemory_ &= append(desc, currentOffset(), framePushed_); + append(desc, currentOffset(), framePushed_); } void callIon(Register callee) { call(callee); diff --git a/js/src/jit/x64/Assembler-x64.h b/js/src/jit/x64/Assembler-x64.h index 65ea7030ac3..ad9d60df275 100644 --- a/js/src/jit/x64/Assembler-x64.h +++ b/js/src/jit/x64/Assembler-x64.h @@ -545,7 +545,7 @@ class Assembler : public AssemblerX86Shared } void mov(AsmJSImmPtr imm, Register dest) { masm.movq_i64r(-1, dest.code()); - enoughMemory_ &= append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), imm.kind())); + append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), imm.kind())); } void mov(const Operand &src, Register dest) { movq(src, dest); diff --git a/js/src/jit/x64/CodeGenerator-x64.cpp b/js/src/jit/x64/CodeGenerator-x64.cpp index 059d51cdabd..578c48dda48 100644 --- a/js/src/jit/x64/CodeGenerator-x64.cpp +++ b/js/src/jit/x64/CodeGenerator-x64.cpp @@ -274,7 +274,9 @@ CodeGeneratorX64::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins) default: MOZ_ASSUME_UNREACHABLE("unexpected array type"); } uint32_t after = masm.size(); - return skipNote || masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(ins->output()))); + if (!skipNote) + masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(ins->output()))); + return true; } bool @@ -322,7 +324,9 @@ CodeGeneratorX64::visitAsmJSStoreHeap(LAsmJSStoreHeap *ins) } } uint32_t after = masm.size(); - return skipNote || masm.append(AsmJSHeapAccess(before, after)); + if (!skipNote) + masm.append(AsmJSHeapAccess(before, after)); + return true; } bool @@ -336,7 +340,8 @@ CodeGeneratorX64::visitAsmJSLoadGlobalVar(LAsmJSLoadGlobalVar *ins) else label = masm.loadRipRelativeDouble(ToFloatRegister(ins->output())); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -353,7 +358,8 @@ CodeGeneratorX64::visitAsmJSStoreGlobalVar(LAsmJSStoreGlobalVar *ins) else label = masm.storeRipRelativeDouble(ToFloatRegister(ins->value())); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -368,7 +374,8 @@ CodeGeneratorX64::visitAsmJSLoadFuncPtr(LAsmJSLoadFuncPtr *ins) CodeOffsetLabel label = masm.leaRipRelative(tmp); masm.loadPtr(Operand(tmp, index, TimesEight, 0), out); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -378,7 +385,8 @@ CodeGeneratorX64::visitAsmJSLoadFFIFunc(LAsmJSLoadFFIFunc *ins) CodeOffsetLabel label = masm.loadRipRelativeInt64(ToRegister(ins->output())); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } void diff --git a/js/src/jit/x86/Assembler-x86.h b/js/src/jit/x86/Assembler-x86.h index 0eb4dea08dd..ef313f2e61c 100644 --- a/js/src/jit/x86/Assembler-x86.h +++ b/js/src/jit/x86/Assembler-x86.h @@ -260,7 +260,7 @@ class Assembler : public AssemblerX86Shared } void mov(AsmJSImmPtr imm, Register dest) { masm.movl_i32r(-1, dest.code()); - enoughMemory_ &= append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), imm.kind())); + append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), imm.kind())); } void mov(const Operand &src, Register dest) { movl(src, dest); @@ -341,7 +341,7 @@ class Assembler : public AssemblerX86Shared } void cmpl(AsmJSAbsoluteAddress lhs, Register rhs) { masm.cmpl_rm_force32(rhs.code(), (void*)-1); - enoughMemory_ &= append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), lhs.kind())); + append(AsmJSAbsoluteLink(CodeOffsetLabel(masm.currentOffset()), lhs.kind())); } CodeOffsetLabel cmplWithPatch(Register lhs, Imm32 rhs) { masm.cmpl_ir_force32(rhs.value, lhs.code()); diff --git a/js/src/jit/x86/CodeGenerator-x86.cpp b/js/src/jit/x86/CodeGenerator-x86.cpp index ec3473f6e3f..f9b275f9131 100644 --- a/js/src/jit/x86/CodeGenerator-x86.cpp +++ b/js/src/jit/x86/CodeGenerator-x86.cpp @@ -308,7 +308,8 @@ CodeGeneratorX86::loadAndNoteViewTypeElement(ArrayBufferView::ViewType vt, const uint32_t before = masm.size(); loadViewTypeElement(vt, srcAddr, out); uint32_t after = masm.size(); - return masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(out))); + masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(out))); + return true; } bool @@ -381,7 +382,8 @@ CodeGeneratorX86::visitAsmJSLoadHeap(LAsmJSLoadHeap *ins) loadViewTypeElement(vt, srcAddr, out); uint32_t after = masm.size(); masm.bind(ool->rejoin()); - return masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(out), cmp.offset())); + masm.append(AsmJSHeapAccess(before, after, vt, ToAnyRegister(out), cmp.offset())); + return true; } bool @@ -420,14 +422,14 @@ CodeGeneratorX86::storeViewTypeElement(ArrayBufferView::ViewType vt, const LAllo } template -bool +void CodeGeneratorX86::storeAndNoteViewTypeElement(ArrayBufferView::ViewType vt, const LAllocation *value, const T &dstAddr) { uint32_t before = masm.size(); storeViewTypeElement(vt, value, dstAddr); uint32_t after = masm.size(); - return masm.append(AsmJSHeapAccess(before, after)); + masm.append(AsmJSHeapAccess(before, after)); } bool @@ -463,14 +465,17 @@ CodeGeneratorX86::visitAsmJSStoreHeap(LAsmJSStoreHeap *ins) // immediate in the instruction. This displacement will fixed up when the // base address is known during dynamic linking (AsmJSModule::initHeap). PatchedAbsoluteAddress dstAddr((void *) ptr->toConstant()->toInt32()); - return storeAndNoteViewTypeElement(vt, value, dstAddr); + storeAndNoteViewTypeElement(vt, value, dstAddr); + return true; } Register ptrReg = ToRegister(ptr); Address dstAddr(ptrReg, 0); - if (mir->skipBoundsCheck()) - return storeAndNoteViewTypeElement(vt, value, dstAddr); + if (mir->skipBoundsCheck()) { + storeAndNoteViewTypeElement(vt, value, dstAddr); + return true; + } CodeOffsetLabel cmp = masm.cmplWithPatch(ptrReg, Imm32(0)); Label rejoin; @@ -480,7 +485,8 @@ CodeGeneratorX86::visitAsmJSStoreHeap(LAsmJSStoreHeap *ins) storeViewTypeElement(vt, value, dstAddr); uint32_t after = masm.size(); masm.bind(&rejoin); - return masm.append(AsmJSHeapAccess(before, after, cmp.offset())); + masm.append(AsmJSHeapAccess(before, after, cmp.offset())); + return true; } bool @@ -498,7 +504,8 @@ CodeGeneratorX86::visitAsmJSLoadGlobalVar(LAsmJSLoadGlobalVar *ins) else label = masm.movsdWithPatch(PatchedAbsoluteAddress(), ToFloatRegister(ins->output())); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -517,7 +524,8 @@ CodeGeneratorX86::visitAsmJSStoreGlobalVar(LAsmJSStoreGlobalVar *ins) else label = masm.movsdWithPatch(ToFloatRegister(ins->value()), PatchedAbsoluteAddress()); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -529,7 +537,8 @@ CodeGeneratorX86::visitAsmJSLoadFuncPtr(LAsmJSLoadFuncPtr *ins) Register out = ToRegister(ins->output()); CodeOffsetLabel label = masm.movlWithPatch(PatchedAbsoluteAddress(), index, TimesFour, out); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } bool @@ -540,7 +549,8 @@ CodeGeneratorX86::visitAsmJSLoadFFIFunc(LAsmJSLoadFFIFunc *ins) Register out = ToRegister(ins->output()); CodeOffsetLabel label = masm.movlWithPatch(PatchedAbsoluteAddress(), out); - return masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + masm.append(AsmJSGlobalAccess(CodeOffsetLabel(label.offset()), mir->globalDataOffset())); + return true; } void diff --git a/js/src/jit/x86/CodeGenerator-x86.h b/js/src/jit/x86/CodeGenerator-x86.h index 970eb774681..0f3ccad575b 100644 --- a/js/src/jit/x86/CodeGenerator-x86.h +++ b/js/src/jit/x86/CodeGenerator-x86.h @@ -36,8 +36,8 @@ class CodeGeneratorX86 : public CodeGeneratorX86Shared void loadViewTypeElement(ArrayBufferView::ViewType vt, const T &srcAddr, const LDefinition *out); template - bool storeAndNoteViewTypeElement(ArrayBufferView::ViewType vt, const LAllocation *value, - const T &dstAddr); + void storeAndNoteViewTypeElement(ArrayBufferView::ViewType vt, const LAllocation *value, + const T &dstAddr); template void storeViewTypeElement(ArrayBufferView::ViewType vt, const LAllocation *value, const T &dstAddr);