зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1445181 part 3 - Use #ifdef JS_JITSPEW more to shrink opt builds a bit. r=nbp
--HG-- extra : rebase_source : 9d3f2551811d467352c5ec9e86b042722bbc18f3
This commit is contained in:
Родитель
26fbb3253a
Коммит
e3df81fe0c
|
@ -89,6 +89,7 @@ BlockMightReach(MBasicBlock* src, MBasicBlock* dest)
|
|||
static void
|
||||
IonSpewDependency(MInstruction* load, MInstruction* store, const char* verb, const char* reason)
|
||||
{
|
||||
#ifdef JS_JITSPEW
|
||||
if (!JitSpewEnabled(JitSpew_Alias))
|
||||
return;
|
||||
|
||||
|
@ -98,11 +99,13 @@ IonSpewDependency(MInstruction* load, MInstruction* store, const char* verb, con
|
|||
out.printf(" %s on store ", verb);
|
||||
store->printName(out);
|
||||
out.printf(" (%s)\n", reason);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
IonSpewAliasInfo(const char* pre, MInstruction* ins, const char* post)
|
||||
{
|
||||
#ifdef JS_JITSPEW
|
||||
if (!JitSpewEnabled(JitSpew_Alias))
|
||||
return;
|
||||
|
||||
|
@ -110,6 +113,7 @@ IonSpewAliasInfo(const char* pre, MInstruction* ins, const char* post)
|
|||
out.printf("%s ", pre);
|
||||
ins->printName(out);
|
||||
out.printf(" %s\n", post);
|
||||
#endif
|
||||
}
|
||||
|
||||
// This pass annotates every load instruction with the last store instruction
|
||||
|
@ -181,12 +185,14 @@ AliasAnalysis::analyze()
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
if (JitSpewEnabled(JitSpew_Alias)) {
|
||||
Fprinter& out = JitSpewPrinter();
|
||||
out.printf("Processing store ");
|
||||
def->printName(out);
|
||||
out.printf(" (flags %x)\n", set.flags());
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
// Find the most recent store on which this instruction depends.
|
||||
MInstruction* lastStore = firstIns;
|
||||
|
|
|
@ -5422,12 +5422,14 @@ struct ScriptCountBlockState
|
|||
|
||||
void visitInstruction(LInstruction* ins)
|
||||
{
|
||||
#ifdef JS_JITSPEW
|
||||
// Prefix stream of assembly instructions with their LIR instruction
|
||||
// name and any associated high level info.
|
||||
if (const char* extra = ins->getExtraName())
|
||||
printer.printf("[%s:%s]\n", ins->opName(), extra);
|
||||
else
|
||||
printer.printf("[%s]\n", ins->opName());
|
||||
#endif
|
||||
}
|
||||
|
||||
~ScriptCountBlockState()
|
||||
|
|
|
@ -4792,6 +4792,7 @@ jit::CreateMIRRootList(IonBuilder& builder)
|
|||
return true;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
static void
|
||||
DumpDefinition(GenericPrinter& out, MDefinition* def, size_t depth)
|
||||
{
|
||||
|
@ -4806,10 +4807,12 @@ DumpDefinition(GenericPrinter& out, MDefinition* def, size_t depth)
|
|||
out.printf(")");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
jit::DumpMIRExpressions(MIRGraph& graph)
|
||||
{
|
||||
#ifdef JS_JITSPEW
|
||||
if (!JitSpewEnabled(JitSpew_MIRExpressions))
|
||||
return;
|
||||
|
||||
|
@ -4822,4 +4825,5 @@ jit::DumpMIRExpressions(MIRGraph& graph)
|
|||
out.printf("\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ LIRGraph::noteNeedsSafepoint(LInstruction* ins)
|
|||
return safepoints_.append(ins);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
LIRGraph::dump(GenericPrinter& out)
|
||||
{
|
||||
|
@ -74,6 +75,7 @@ LIRGraph::dump()
|
|||
dump(out);
|
||||
out.finish();
|
||||
}
|
||||
#endif
|
||||
|
||||
LBlock::LBlock(MBasicBlock* from)
|
||||
: block_(from),
|
||||
|
@ -160,6 +162,7 @@ LBlock::getExitMoveGroup(TempAllocator& alloc)
|
|||
return exitMoveGroup_;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
LBlock::dump(GenericPrinter& out)
|
||||
{
|
||||
|
@ -181,6 +184,7 @@ LBlock::dump()
|
|||
dump(out);
|
||||
out.finish();
|
||||
}
|
||||
#endif
|
||||
|
||||
static size_t
|
||||
TotalOperandCount(LRecoverInfo* recoverInfo)
|
||||
|
@ -333,14 +337,15 @@ LSnapshot::rewriteRecoveredInput(LUse input)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
LNode::printName(GenericPrinter& out, Opcode op)
|
||||
{
|
||||
static const char * const names[] =
|
||||
{
|
||||
#define LIROP(x) #x,
|
||||
# define LIROP(x) #x,
|
||||
LIR_OPCODE_LIST(LIROP)
|
||||
#undef LIROP
|
||||
# undef LIROP
|
||||
};
|
||||
const char* name = names[uint32_t(op)];
|
||||
size_t len = strlen(name);
|
||||
|
@ -353,6 +358,7 @@ LNode::printName(GenericPrinter& out)
|
|||
{
|
||||
printName(out, op());
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
LAllocation::aliases(const LAllocation& other) const
|
||||
|
@ -362,8 +368,9 @@ LAllocation::aliases(const LAllocation& other) const
|
|||
return *this == other;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
static const char*
|
||||
typeName(LDefinition::Type type)
|
||||
DefTypeName(LDefinition::Type type)
|
||||
{
|
||||
switch (type) {
|
||||
case LDefinition::GENERAL: return "g";
|
||||
|
@ -394,7 +401,7 @@ LDefinition::toString() const
|
|||
if (isBogusTemp()) {
|
||||
buf = JS_smprintf("bogus");
|
||||
} else {
|
||||
buf = JS_smprintf("v%u<%s>", virtualRegister(), typeName(type()));
|
||||
buf = JS_smprintf("v%u<%s>", virtualRegister(), DefTypeName(type()));
|
||||
if (buf) {
|
||||
if (policy() == LDefinition::FIXED)
|
||||
buf = JS_sprintf_append(Move(buf), ":%s", output()->toString().get());
|
||||
|
@ -507,6 +514,7 @@ LNode::printOperands(GenericPrinter& out)
|
|||
else
|
||||
PrintOperands(out, toInstruction());
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
LInstruction::assignSnapshot(LSnapshot* snapshot)
|
||||
|
@ -578,6 +586,7 @@ GetSuccessor(const LInstruction* ins, size_t i)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
LNode::dump(GenericPrinter& out)
|
||||
{
|
||||
|
@ -643,6 +652,7 @@ LNode::getExtraName() const
|
|||
# undef LIROP
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
LInstruction::initSafepoint(TempAllocator& alloc)
|
||||
|
@ -708,20 +718,20 @@ LMoveGroup::addAfter(LAllocation from, LAllocation to, LDefinition::Type type)
|
|||
return add(from, to, type);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
LMoveGroup::printOperands(GenericPrinter& out)
|
||||
{
|
||||
for (size_t i = 0; i < numMoves(); i++) {
|
||||
const LMove& move = getMove(i);
|
||||
out.printf(" [%s -> %s", move.from().toString().get(), move.to().toString().get());
|
||||
#ifdef DEBUG
|
||||
out.printf(", %s", typeName(move.type()));
|
||||
#endif
|
||||
out.printf(", %s", DefTypeName(move.type()));
|
||||
out.printf("]");
|
||||
if (i != numMoves() - 1)
|
||||
out.printf(",");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#define LIROP(x) static_assert(!std::is_polymorphic<L##x>::value, \
|
||||
"LIR instructions should not have virtual methods");
|
||||
|
|
|
@ -187,9 +187,12 @@ class LAllocation : public TempObject
|
|||
return bits_;
|
||||
}
|
||||
|
||||
UniqueChars toString() const;
|
||||
bool aliases(const LAllocation& other) const;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
UniqueChars toString() const;
|
||||
void dump() const;
|
||||
#endif
|
||||
};
|
||||
|
||||
class LUse : public LAllocation
|
||||
|
@ -638,7 +641,9 @@ class LDefinition
|
|||
|
||||
UniqueChars toString() const;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void dump() const;
|
||||
#endif
|
||||
};
|
||||
|
||||
using LInt64Definition = LInt64Value<LDefinition>;
|
||||
|
@ -722,7 +727,9 @@ class LNode
|
|||
}
|
||||
|
||||
public:
|
||||
#ifdef JS_JITSPEW
|
||||
const char* getExtraName() const;
|
||||
#endif
|
||||
|
||||
Opcode op() const {
|
||||
return Opcode(op_);
|
||||
|
@ -774,11 +781,13 @@ class LNode
|
|||
// output register will be restored to its original value when bailing out.
|
||||
inline bool recoversInput() const;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void dump(GenericPrinter& out);
|
||||
void dump();
|
||||
static void printName(GenericPrinter& out, Opcode op);
|
||||
void printName(GenericPrinter& out);
|
||||
void printOperands(GenericPrinter& out);
|
||||
#endif
|
||||
|
||||
public:
|
||||
// Opcode testing and casts.
|
||||
|
@ -1085,8 +1094,10 @@ class LBlock
|
|||
return begin()->isGoto() && !mir()->isLoopHeader();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void dump(GenericPrinter& out);
|
||||
void dump();
|
||||
#endif
|
||||
};
|
||||
|
||||
namespace details {
|
||||
|
@ -1985,8 +1996,10 @@ class LIRGraph
|
|||
return safepoints_[i];
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void dump(GenericPrinter& out);
|
||||
void dump();
|
||||
#endif
|
||||
};
|
||||
|
||||
LAllocation::LAllocation(AnyRegister reg)
|
||||
|
|
|
@ -5189,6 +5189,7 @@ LIRGenerator::visitGetPrototypeOf(MGetPrototypeOf* ins)
|
|||
assignSafepoint(lir, ins);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
static void
|
||||
SpewResumePoint(MBasicBlock* block, MInstruction* ins, MResumePoint* resumePoint)
|
||||
{
|
||||
|
@ -5216,6 +5217,7 @@ SpewResumePoint(MBasicBlock* block, MInstruction* ins, MResumePoint* resumePoint
|
|||
out.printf("\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
LIRGenerator::visitInstructionDispatch(MInstruction* ins)
|
||||
|
@ -5289,8 +5291,10 @@ void
|
|||
LIRGenerator::updateResumeState(MInstruction* ins)
|
||||
{
|
||||
lastResumePoint_ = ins->resumePoint();
|
||||
#ifdef JS_JITSPEW
|
||||
if (JitSpewEnabled(JitSpew_IonSnapshots) && lastResumePoint_)
|
||||
SpewResumePoint(nullptr, ins, lastResumePoint_);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -5308,8 +5312,10 @@ LIRGenerator::updateResumeState(MBasicBlock* block)
|
|||
MOZ_ASSERT_IF(block->unreachable(), block->graph().osrBlock() ||
|
||||
!mir()->optimizationInfo().gvnEnabled());
|
||||
lastResumePoint_ = block->entryResumePoint();
|
||||
#ifdef JS_JITSPEW
|
||||
if (JitSpewEnabled(JitSpew_IonSnapshots) && lastResumePoint_)
|
||||
SpewResumePoint(block, nullptr, lastResumePoint_);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -71,20 +71,28 @@ CheckUsesAreFloat32Consumers(const MInstruction* ins)
|
|||
return allConsumerUses;
|
||||
}
|
||||
|
||||
void
|
||||
MDefinition::PrintOpcodeName(GenericPrinter& out, MDefinition::Opcode op)
|
||||
#ifdef JS_JITSPEW
|
||||
static const char*
|
||||
OpcodeName(MDefinition::Opcode op)
|
||||
{
|
||||
static const char * const names[] =
|
||||
static const char* const names[] =
|
||||
{
|
||||
#define NAME(x) #x,
|
||||
MIR_OPCODE_LIST(NAME)
|
||||
#undef NAME
|
||||
};
|
||||
const char* name = names[unsigned(op)];
|
||||
return names[unsigned(op)];
|
||||
}
|
||||
|
||||
void
|
||||
MDefinition::PrintOpcodeName(GenericPrinter& out, Opcode op)
|
||||
{
|
||||
const char* name = OpcodeName(op);
|
||||
size_t len = strlen(name);
|
||||
for (size_t i = 0; i < len; i++)
|
||||
out.printf("%c", tolower(name[i]));
|
||||
}
|
||||
#endif
|
||||
|
||||
static MConstant*
|
||||
EvaluateConstantOperands(TempAllocator& alloc, MBinaryInstruction* ins, bool* ptypeChange = nullptr)
|
||||
|
@ -220,12 +228,20 @@ EvaluateExactReciprocal(TempAllocator& alloc, MDiv* ins)
|
|||
return mul;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
const char*
|
||||
MDefinition::opName() const
|
||||
{
|
||||
return OpcodeName(op());
|
||||
}
|
||||
|
||||
void
|
||||
MDefinition::printName(GenericPrinter& out) const
|
||||
{
|
||||
PrintOpcodeName(out, op());
|
||||
out.printf("%u", id());
|
||||
}
|
||||
#endif
|
||||
|
||||
HashNumber
|
||||
MDefinition::valueHash() const
|
||||
|
@ -616,6 +632,7 @@ MTest::filtersUndefinedOrNull(bool trueBranch, MDefinition** subject, bool* filt
|
|||
*subject = nullptr;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MDefinition::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -680,6 +697,7 @@ MDefinition::dumpLocation() const
|
|||
dumpLocation(out);
|
||||
out.finish();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG) || defined(JS_JITSPEW)
|
||||
size_t
|
||||
|
@ -1106,6 +1124,7 @@ MConstant::congruentTo(const MDefinition* ins) const
|
|||
return ins->isConstant() && equals(ins->toConstant());
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MConstant::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -1180,6 +1199,7 @@ MConstant::printOpcode(GenericPrinter& out) const
|
|||
MOZ_CRASH("unexpected type");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
MConstant::canProduceFloat32() const
|
||||
|
@ -1759,6 +1779,7 @@ PrintOpcodeOperation(T* mir, GenericPrinter& out)
|
|||
out.printf(" (%s)", T::OperationName(mir->operation()));
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MSimdBinaryArith::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -1865,6 +1886,7 @@ void MNearbyInt::printOpcode(GenericPrinter& out) const
|
|||
}
|
||||
out.printf(" %s", roundingModeStr);
|
||||
}
|
||||
#endif
|
||||
|
||||
const char*
|
||||
MMathFunction::FunctionName(Function function)
|
||||
|
@ -1899,12 +1921,14 @@ MMathFunction::FunctionName(Function function)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MMathFunction::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
MDefinition::printOpcode(out);
|
||||
out.printf(" %s", FunctionName(function()));
|
||||
}
|
||||
#endif
|
||||
|
||||
MDefinition*
|
||||
MMathFunction::foldsTo(TempAllocator& alloc)
|
||||
|
@ -2013,6 +2037,7 @@ MAtomicIsLockFree::foldsTo(TempAllocator& alloc)
|
|||
// TRIVIAL_NEW_WRAPPERS.
|
||||
const int32_t MParameter::THIS_SLOT;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MParameter::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -2022,6 +2047,7 @@ MParameter::printOpcode(GenericPrinter& out) const
|
|||
else
|
||||
out.printf(" %d", index());
|
||||
}
|
||||
#endif
|
||||
|
||||
HashNumber
|
||||
MParameter::valueHash() const
|
||||
|
@ -2275,6 +2301,7 @@ MGoto::New(TempAllocator& alloc)
|
|||
return new(alloc) MGoto(nullptr);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MUnbox::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -2300,6 +2327,7 @@ MUnbox::printOpcode(GenericPrinter& out) const
|
|||
default: break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MDefinition*
|
||||
MUnbox::foldsTo(TempAllocator &alloc)
|
||||
|
@ -2325,6 +2353,7 @@ MUnbox::foldsTo(TempAllocator &alloc)
|
|||
return ins;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MTypeBarrier::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -2332,6 +2361,7 @@ MTypeBarrier::printOpcode(GenericPrinter& out) const
|
|||
out.printf(" ");
|
||||
getOperand(0)->printName(out);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
MTypeBarrier::congruentTo(const MDefinition* def) const
|
||||
|
@ -3159,6 +3189,7 @@ NeedNegativeZeroCheck(MDefinition* def)
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MBinaryArithInstruction::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -3191,6 +3222,7 @@ MBinaryArithInstruction::printOpcode(GenericPrinter& out) const
|
|||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MBinaryArithInstruction*
|
||||
MBinaryArithInstruction::New(TempAllocator& alloc, Opcode op,
|
||||
|
@ -4279,6 +4311,7 @@ MResumePoint::addStore(TempAllocator& alloc, MDefinition* store, const MResumePo
|
|||
stores_.push(top);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MResumePoint::dump(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -4319,6 +4352,7 @@ MResumePoint::dump() const
|
|||
dump(out);
|
||||
out.finish();
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
MResumePoint::isObservableOperand(MUse* u) const
|
||||
|
@ -5008,6 +5042,7 @@ MNot::trySpecializeFloat32(TempAllocator& alloc)
|
|||
ConvertDefinitionToDouble<0>(alloc, in, this);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MBeta::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -5016,6 +5051,7 @@ MBeta::printOpcode(GenericPrinter& out) const
|
|||
out.printf(" ");
|
||||
comparison_->dump(out);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
MCreateThisWithTemplate::canRecoverOnBailout() const
|
||||
|
@ -5484,6 +5520,7 @@ MLoadSlot::foldsTo(TempAllocator& alloc)
|
|||
return this;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void
|
||||
MLoadSlot::printOpcode(GenericPrinter& out) const
|
||||
{
|
||||
|
@ -5500,6 +5537,7 @@ MStoreSlot::printOpcode(GenericPrinter& out) const
|
|||
out.printf(" %d ", slot());
|
||||
getOperand(1)->printName(out);
|
||||
}
|
||||
#endif
|
||||
|
||||
MDefinition*
|
||||
MFunctionEnvironment::foldsTo(TempAllocator& alloc)
|
||||
|
|
|
@ -377,8 +377,10 @@ class MNode : public TempObject
|
|||
|
||||
virtual MOZ_MUST_USE bool writeRecoverData(CompactBufferWriter& writer) const;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
virtual void dump(GenericPrinter& out) const = 0;
|
||||
virtual void dump() const = 0;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
// Need visibility on getUseFor to avoid O(n^2) complexity.
|
||||
|
@ -576,8 +578,8 @@ class MDefinition : public MNode
|
|||
|
||||
Opcode op() const { return op_; }
|
||||
|
||||
virtual const char* opName() const = 0;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
const char* opName() const;
|
||||
void printName(GenericPrinter& out) const;
|
||||
static void PrintOpcodeName(GenericPrinter& out, Opcode op);
|
||||
virtual void printOpcode(GenericPrinter& out) const;
|
||||
|
@ -585,6 +587,7 @@ class MDefinition : public MNode
|
|||
void dump() const override;
|
||||
void dumpLocation(GenericPrinter& out) const;
|
||||
void dumpLocation() const;
|
||||
#endif
|
||||
|
||||
// For LICM.
|
||||
virtual bool neverHoist() const { return false; }
|
||||
|
@ -1207,10 +1210,7 @@ class MInstruction
|
|||
|
||||
#define INSTRUCTION_HEADER_WITHOUT_TYPEPOLICY(opcode) \
|
||||
static const Opcode classOpcode = Opcode::opcode; \
|
||||
using MThisOpcode = M##opcode; \
|
||||
const char* opName() const override { \
|
||||
return #opcode; \
|
||||
}
|
||||
using MThisOpcode = M##opcode;
|
||||
|
||||
#define INSTRUCTION_HEADER(opcode) \
|
||||
INSTRUCTION_HEADER_WITHOUT_TYPEPOLICY(opcode) \
|
||||
|
@ -1636,7 +1636,9 @@ class MConstant : public MNullaryInstruction
|
|||
return res;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
HashNumber valueHash() const override;
|
||||
bool congruentTo(const MDefinition* ins) const override;
|
||||
|
@ -2091,7 +2093,9 @@ class MSimdInsertElement
|
|||
return binaryCongruentTo(ins) && lane_ == ins->toSimdInsertElement()->lane();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdInsertElement)
|
||||
};
|
||||
|
@ -2421,7 +2425,9 @@ class MSimdUnaryArith
|
|||
return congruentIfOperandsEqual(ins) && ins->toSimdUnaryArith()->operation() == operation();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdUnaryArith);
|
||||
};
|
||||
|
@ -2518,7 +2524,9 @@ class MSimdBinaryComp
|
|||
sign_ == other->signedness();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdBinaryComp)
|
||||
};
|
||||
|
@ -2588,7 +2596,9 @@ class MSimdBinaryArith
|
|||
return operation_ == ins->toSimdBinaryArith()->operation();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdBinaryArith)
|
||||
};
|
||||
|
@ -2650,7 +2660,9 @@ class MSimdBinarySaturating
|
|||
sign_ == ins->toSimdBinarySaturating()->signedness();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdBinarySaturating)
|
||||
};
|
||||
|
@ -2705,7 +2717,9 @@ class MSimdBinaryBitwise
|
|||
return operation_ == ins->toSimdBinaryBitwise()->operation();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MSimdBinaryBitwise)
|
||||
};
|
||||
|
@ -2769,7 +2783,9 @@ class MSimdShift
|
|||
MOZ_CRASH("unexpected operation");
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
bool congruentTo(const MDefinition* ins) const override {
|
||||
if (!binaryCongruentTo(ins))
|
||||
|
@ -2849,8 +2865,9 @@ class MParameter : public MNullaryInstruction
|
|||
int32_t index() const {
|
||||
return index_;
|
||||
}
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
|
||||
#endif
|
||||
HashNumber valueHash() const override;
|
||||
bool congruentTo(const MDefinition* ins) const override;
|
||||
};
|
||||
|
@ -2916,7 +2933,9 @@ class MControlInstruction : public MInstruction
|
|||
return true;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
class MTableSwitch final
|
||||
|
@ -3771,7 +3790,10 @@ class MSimdBox
|
|||
return AliasSet::None();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
MOZ_MUST_USE bool writeRecoverData(CompactBufferWriter& writer) const override;
|
||||
bool canRecoverOnBailout() const override {
|
||||
return true;
|
||||
|
@ -3818,7 +3840,9 @@ class MSimdUnbox
|
|||
return AliasSet::None();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
// Creates a new derived type object. At runtime, this is just a call
|
||||
|
@ -4787,7 +4811,9 @@ class MCompare
|
|||
return AliasSet::None();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
void collectRangeInfoPreTrunc() override;
|
||||
|
||||
void trySpecializeFloat32(TempAllocator& alloc) override;
|
||||
|
@ -5001,7 +5027,9 @@ class MUnbox final : public MUnaryInstruction, public BoxInputsPolicy::Data
|
|||
AliasSet getAliasSet() const override {
|
||||
return AliasSet::None();
|
||||
}
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
void makeInfallible() {
|
||||
// Should only be called if we're already Infallible or TypeBarrier
|
||||
MOZ_ASSERT(mode() != Fallible);
|
||||
|
@ -5103,7 +5131,9 @@ class MAssertRange
|
|||
return AliasSet::None();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
// Caller-side allocation of |this| for |new|:
|
||||
|
@ -6463,7 +6493,9 @@ class MBinaryArithInstruction
|
|||
bool mustPreserveNaN() const { return mustPreserveNaN_; }
|
||||
|
||||
MDefinition* foldsTo(TempAllocator& alloc) override;
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
virtual double getIdentity() = 0;
|
||||
|
||||
|
@ -7063,7 +7095,9 @@ class MMathFunction
|
|||
|
||||
MDefinition* foldsTo(TempAllocator& alloc) override;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
static const char* FunctionName(Function function);
|
||||
|
||||
|
@ -8067,7 +8101,9 @@ class MBeta
|
|||
INSTRUCTION_HEADER(Beta)
|
||||
TRIVIAL_NEW_WRAPPERS
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
AliasSet getAliasSet() const override {
|
||||
return AliasSet::None();
|
||||
|
@ -9027,7 +9063,9 @@ class MConstantElements : public MNullaryInstruction
|
|||
return value_;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
HashNumber valueHash() const override {
|
||||
return (HashNumber)(size_t) value_.asValue();
|
||||
|
@ -10443,7 +10481,9 @@ class MLoadUnboxedScalar
|
|||
return congruentIfOperandsEqual(other);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
void computeRange(TempAllocator& alloc) override;
|
||||
|
||||
|
@ -11867,7 +11907,9 @@ class MLoadSlot
|
|||
}
|
||||
AliasType mightAlias(const MDefinition* store) const override;
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MLoadSlot)
|
||||
};
|
||||
|
@ -12036,7 +12078,10 @@ class MStoreSlot
|
|||
AliasSet getAliasSet() const override {
|
||||
return AliasSet::Store(AliasSet::DynamicSlot);
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
ALLOW_CLONE(MStoreSlot)
|
||||
};
|
||||
|
@ -12762,7 +12807,9 @@ class MNearbyInt
|
|||
ins->toNearbyInt()->roundingMode() == roundingMode_;
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
MOZ_MUST_USE bool writeRecoverData(CompactBufferWriter& writer) const override;
|
||||
|
||||
|
@ -13198,7 +13245,10 @@ class MTypeBarrier
|
|||
INSTRUCTION_HEADER(TypeBarrier)
|
||||
TRIVIAL_NEW_WRAPPERS
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
void printOpcode(GenericPrinter& out) const override;
|
||||
#endif
|
||||
|
||||
bool congruentTo(const MDefinition* def) const override;
|
||||
|
||||
AliasSet getAliasSet() const override {
|
||||
|
@ -13579,8 +13629,10 @@ class MResumePoint final :
|
|||
return stores_.end();
|
||||
}
|
||||
|
||||
#ifdef JS_JITSPEW
|
||||
virtual void dump(GenericPrinter& out) const override;
|
||||
virtual void dump() const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
class MIsCallable
|
||||
|
|
Загрузка…
Ссылка в новой задаче