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:
Jan de Mooij 2018-03-13 19:01:21 +01:00
Родитель 26fbb3253a
Коммит e3df81fe0c
8 изменённых файлов: 150 добавлений и 19 удалений

Просмотреть файл

@ -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