mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-25 06:28:30 +00:00
#596: M1618131+M1618880 (consolidated) (non-debug portions)
This commit is contained in:
parent
11a28b361d
commit
114bbdfd03
@ -2904,10 +2904,11 @@ InvalidateActivation(FreeOp* fop, const JitActivationIterator& activations, bool
|
||||
type = "Baseline";
|
||||
else if (it.isBailoutJS())
|
||||
type = "Bailing";
|
||||
JSScript* script = it.maybeForwardedScript();
|
||||
JitSpew(JitSpew_IonInvalidate,
|
||||
"#%d %s JS frame @ %p, %s:%" PRIuSIZE " (fun: %p, script: %p, pc %p)",
|
||||
frameno, type, it.fp(), it.script()->maybeForwardedFilename(),
|
||||
it.script()->lineno(), it.maybeCallee(), (JSScript*)it.script(),
|
||||
frameno, type, it.fp(), script->maybeForwardedFilename(),
|
||||
script->lineno(), it.maybeCallee(), script,
|
||||
it.returnAddressToFp());
|
||||
break;
|
||||
}
|
||||
@ -2953,7 +2954,7 @@ InvalidateActivation(FreeOp* fop, const JitActivationIterator& activations, bool
|
||||
if (!calledFromLinkStub && it.checkInvalidation())
|
||||
continue;
|
||||
|
||||
JSScript* script = it.script();
|
||||
JSScript* script = it.maybeForwardedScript();
|
||||
if (!script->hasIonScript())
|
||||
continue;
|
||||
|
||||
|
@ -204,6 +204,7 @@ class JitFrameIterator
|
||||
JSFunction* maybeCallee() const;
|
||||
unsigned numActualArgs() const;
|
||||
JSScript* script() const;
|
||||
JSScript* maybeForwardedScript() const;
|
||||
void baselineScriptAndPc(JSScript** scriptRes, jsbytecode** pcRes) const;
|
||||
Value* actualArgs() const;
|
||||
|
||||
|
@ -221,6 +221,31 @@ JitFrameIterator::script() const
|
||||
return script;
|
||||
}
|
||||
|
||||
JSScript*
|
||||
MaybeForwardedScriptFromCalleeToken(CalleeToken token) {
|
||||
switch (GetCalleeTokenTag(token)) {
|
||||
case CalleeToken_Script:
|
||||
return MaybeForwarded(CalleeTokenToScript(token));
|
||||
case CalleeToken_Function:
|
||||
case CalleeToken_FunctionConstructing: {
|
||||
JSFunction* fun = MaybeForwarded(CalleeTokenToFunction(token));
|
||||
return MaybeForwarded(fun)->nonLazyScript();
|
||||
}
|
||||
}
|
||||
MOZ_CRASH("invalid callee token tag");
|
||||
}
|
||||
|
||||
JSScript*
|
||||
JitFrameIterator::maybeForwardedScript() const
|
||||
{
|
||||
MOZ_ASSERT(isScripted());
|
||||
if (isBaselineJS())
|
||||
return MaybeForwardedScriptFromCalleeToken(baselineFrame()->calleeToken());
|
||||
JSScript* script = MaybeForwardedScriptFromCalleeToken(calleeToken());
|
||||
MOZ_ASSERT(script);
|
||||
return script;
|
||||
}
|
||||
|
||||
void
|
||||
JitFrameIterator::baselineScriptAndPc(JSScript** scriptRes, jsbytecode** pcRes) const
|
||||
{
|
||||
|
@ -88,6 +88,8 @@ ScriptFromCalleeToken(CalleeToken token)
|
||||
MOZ_CRASH("invalid callee token tag");
|
||||
}
|
||||
|
||||
JSScript* MaybeForwardedScriptFromCalleeToken(CalleeToken token);
|
||||
|
||||
// In between every two frames lies a small header describing both frames. This
|
||||
// header, minimally, contains a returnAddress word and a descriptor word. The
|
||||
// descriptor describes the size and type of the previous frame, whereas the
|
||||
|
Loading…
Reference in New Issue
Block a user