☠☠ backed out by 4c42035bc7f8 ☠ ☠ | |
author | Nicolas B. Pierron <nicolas.b.pierron@mozilla.com> |
Fri, 19 Jun 2015 15:17:25 +0200 | |
changeset 249771 | 0aa70076583fdd84eaf77245dc3c3108e65ba5e0 |
parent 249770 | 13a9a4428a6867e97dd8fb6c9f551ef142e58755 |
child 249772 | 478258a3ba5fd30df6ce260afd32004b4cd9f44a |
push id | 28936 |
push user | ryanvm@gmail.com |
push date | Fri, 19 Jun 2015 20:34:42 +0000 |
treeherder | mozilla-central@c319f262ce3e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bhackett |
bugs | 1173764 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/js/src/jit/BacktrackingAllocator.cpp +++ b/js/src/jit/BacktrackingAllocator.cpp @@ -1396,23 +1396,23 @@ BacktrackingAllocator::tryAllocateRegist if (!aliasedConflicting.empty()) { // One or more aliased registers is allocated to another bundle // overlapping this one. Keep track of the conflicting set, and in the // case of multiple conflicting sets keep track of the set with the // lowest maximum spill weight. if (JitSpewEnabled(JitSpew_RegAlloc)) { if (aliasedConflicting.length() == 1) { - LiveBundle* existing = aliasedConflicting[0]; + mozilla::DebugOnly<LiveBundle*> existing = aliasedConflicting[0]; JitSpew(JitSpew_RegAlloc, " %s collides with %s [weight %lu]", r.reg.name(), existing->toString(), computeSpillWeight(existing)); } else { JitSpew(JitSpew_RegAlloc, " %s collides with the following", r.reg.name()); for (size_t i = 0; i < aliasedConflicting.length(); i++) { - LiveBundle* existing = aliasedConflicting[i]; + mozilla::DebugOnly<LiveBundle*> existing = aliasedConflicting[i]; JitSpew(JitSpew_RegAlloc, " %s [weight %lu]", existing->toString(), computeSpillWeight(existing)); } } } if (conflicting.empty()) { if (!conflicting.appendAll(aliasedConflicting))
--- a/js/src/jit/BaselineBailouts.cpp +++ b/js/src/jit/BaselineBailouts.cpp @@ -1407,17 +1407,17 @@ jit::BailoutIonToBaseline(JSContext* cx, TraceLogStartEvent(logger, TraceLogger_Baseline); // The caller of the top frame must be one of the following: // IonJS - Ion calling into Ion. // BaselineStub - Baseline calling into Ion. // Entry - Interpreter or other calling into Ion. // Rectifier - Arguments rectifier calling into Ion. MOZ_ASSERT(iter.isBailoutJS()); - FrameType prevFrameType = iter.prevType(); + mozilla::DebugOnly<FrameType> prevFrameType = iter.prevType(); MOZ_ASSERT(prevFrameType == JitFrame_IonJS || prevFrameType == JitFrame_BaselineStub || prevFrameType == JitFrame_Entry || prevFrameType == JitFrame_Rectifier || prevFrameType == JitFrame_IonAccessorIC); // All incoming frames are going to look like this: //
--- a/js/src/jit/BaselineDebugModeOSR.cpp +++ b/js/src/jit/BaselineDebugModeOSR.cpp @@ -280,16 +280,17 @@ CollectInterpreterStackScripts(JSContext if (obs.shouldRecompileOrInvalidate(script)) { if (!entries.append(DebugModeOSREntry(iter.frame()->script()))) return false; } } return true; } +#ifdef DEBUG static const char* ICEntryKindToString(ICEntry::Kind kind) { switch (kind) { case ICEntry::Kind_Op: return "IC"; case ICEntry::Kind_NonOp: return "non-op IC"; @@ -304,16 +305,17 @@ ICEntryKindToString(ICEntry::Kind kind) case ICEntry::Kind_DebugPrologue: return "debug prologue"; case ICEntry::Kind_DebugEpilogue: return "debug epilogue"; default: MOZ_CRASH("bad ICEntry kind"); } } +#endif // DEBUG static void SpewPatchBaselineFrame(uint8_t* oldReturnAddress, uint8_t* newReturnAddress, JSScript* script, ICEntry::Kind frameKind, jsbytecode* pc) { JitSpew(JitSpew_BaselineDebugModeOSR, "Patch return %p -> %p on BaselineJS frame (%s:%d) from %s at %s", oldReturnAddress, newReturnAddress, script->filename(), script->lineno(),
--- a/js/src/jit/JitSpewer.h +++ b/js/src/jit/JitSpewer.h @@ -212,22 +212,27 @@ static inline Fprinter& JitSpewPrinter() class JitSpewIndent { public: explicit JitSpewIndent(JitSpewChannel channel) {} ~JitSpewIndent() {} }; -static inline void JitSpew(JitSpewChannel, const char* fmt, ...) +// The computation of some of the argument of the spewing functions might be +// costly, thus we use variaidic macros to ignore any argument of these +// functions. +static inline void JitSpewCheckArguments(JitSpewChannel channel, const char* fmt) { } -static inline void JitSpewStart(JitSpewChannel channel, const char* fmt, ...) -{ } -static inline void JitSpewCont(JitSpewChannel channel, const char* fmt, ...) -{ } + +#define JitSpewCheckExpandedArgs(channel, fmt, ...) JitSpewCheckArguments(channel, fmt) +#define JitSpew(...) JitSpewCheckExpandedArgs(__VA_ARGS__) +#define JitSpewStart(...) JitSpewCheckExpandedArgs(__VA_ARGS__) +#define JitSpewCont(...) JitSpewCheckExpandedArgs(__VA_ARGS__) + static inline void JitSpewFin(JitSpewChannel channel) { } static inline void JitSpewHeader(JitSpewChannel channel) { } static inline bool JitSpewEnabled(JitSpewChannel channel) { return false; } static inline void JitSpewVA(JitSpewChannel channel, const char* fmt, va_list ap)
--- a/js/src/jit/JitcodeMap.cpp +++ b/js/src/jit/JitcodeMap.cpp @@ -1290,17 +1290,17 @@ JitcodeRegionEntry::WriteRun(CompactBuff WriteDelta(writer, nativeDelta, bytecodeDelta); // Spew the bytecode in these ranges. if (curBytecodeOffset < nextBytecodeOffset) { JitSpewStart(JitSpew_Profiling, " OPS: "); uint32_t curBc = curBytecodeOffset; while (curBc < nextBytecodeOffset) { jsbytecode* pc = entry[i].tree->script()->offsetToPC(curBc); - JSOp op = JSOp(*pc); + mozilla::DebugOnly<JSOp> op = JSOp(*pc); JitSpewCont(JitSpew_Profiling, "%s ", js_CodeName[op]); curBc += GetBytecodeLength(pc); } JitSpewFin(JitSpew_Profiling); } spewer.spewAndAdvance(" "); curNativeOffset = nextNativeOffset;
--- a/js/src/jit/Recover.cpp +++ b/js/src/jit/Recover.cpp @@ -112,17 +112,19 @@ MResumePoint::writeRecoverData(CompactBu #endif // Test if we honor the maximum of arguments at all times. This is a sanity // check and not an algorithm limit. So check might be a bit too loose. +4 // to account for scope chain, return value, this value and maybe // arguments_object. MOZ_ASSERT(CountArgSlots(script, fun) < SNAPSHOT_MAX_NARGS + 4); +#ifdef DEBUG uint32_t implicit = StartArgSlot(script); +#endif uint32_t formalArgs = CountArgSlots(script, fun); uint32_t nallocs = formalArgs + script->nfixed() + exprStack; JitSpew(JitSpew_IonSnapshots, "Starting frame; implicit %u, formals %u, fixed %u, exprs %u", implicit, formalArgs - implicit, script->nfixed(), exprStack); uint32_t pcoff = script->pcToOffset(pc()); JitSpew(JitSpew_IonSnapshots, "Writing pc offset %u, nslots %u", pcoff, nallocs);