diff options
author | Jan de Mooij <jdemooij@mozilla.com> | 2021-06-02 10:29:47 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2021-06-02 10:29:47 +0000 |
commit | 9acd98298ccadd83495fa1615573ebcca6648bae (patch) | |
tree | 629b86b40cb9145711bd9d72536dfb4d75723d06 /js/src | |
parent | ce71c0fe3f7db1fa1f054d689b7237f36d6d8266 (diff) | |
download | uxp-9acd98298ccadd83495fa1615573ebcca6648bae.tar.gz |
[js] Fix invalid early return in BaselineFrame::trace.
We were not tracing debugger environments for Baseline frames without any
local/expression slots.
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/jit/BaselineFrame.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/js/src/jit/BaselineFrame.cpp b/js/src/jit/BaselineFrame.cpp index b8c61300fc..3f00e9b36a 100644 --- a/js/src/jit/BaselineFrame.cpp +++ b/js/src/jit/BaselineFrame.cpp @@ -62,24 +62,24 @@ BaselineFrame::trace(JSTracer* trc, JitFrameIterator& frameIterator) // NB: It is possible that numValueSlots() could be zero, even if nfixed is // nonzero. This is the case if the function has an early stack check. - if (numValueSlots() == 0) - return; + if (numValueSlots > 0) { - MOZ_ASSERT(nfixed <= numValueSlots()); + MOZ_ASSERT(nfixed <= numValueSlots()); - if (nfixed == nlivefixed) { - // All locals are live. - MarkLocals(this, trc, 0, numValueSlots()); - } else { - // Mark operand stack. - MarkLocals(this, trc, nfixed, numValueSlots()); + if (nfixed == nlivefixed) { + // All locals are live. + MarkLocals(this, trc, 0, numValueSlots()); + } else { + // Mark operand stack. + MarkLocals(this, trc, nfixed, numValueSlots()); - // Clear dead block-scoped locals. - while (nfixed > nlivefixed) - unaliasedLocal(--nfixed).setUndefined(); + // Clear dead block-scoped locals. + while (nfixed > nlivefixed) + unaliasedLocal(--nfixed).setUndefined(); - // Mark live locals. - MarkLocals(this, trc, 0, nlivefixed); + // Mark live locals. + MarkLocals(this, trc, 0, nlivefixed); + } } if (script->compartment()->debugEnvs) |