Closed Bug 991820 Opened 10 years ago Closed 10 years ago

Compiling baseline during incremental GC slices disable large Ion compilations.

Categories

(Core :: JavaScript Engine: JIT, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1018363

People

(Reporter: nbp, Unassigned)

References

(Blocks 1 open bug)

Details

On a device with parallel compilation enabled (multiple cores), we might disable large Ion compilation for all functions baseline-compiled in between GC slices.

When we are in a GC slice, we are no longer running off-main-thread compilations[1], and are thus reducing the limit for compiling scripts[2].  This implies that we would skip any Ion compilation[2], which is interpreted by baseline as a way to disable the increment of the UseCount[3].

This issue can hit us on FirefoxOS and Android devices with multiple cores, where Incremental GCs are still the default.

[1] http://dxr.mozilla.org/mozilla-central/source/js/src/jit/Ion.cpp#1700
[2] http://dxr.mozilla.org/mozilla-central/source/js/src/jit/Ion.cpp#1962
[3] http://dxr.mozilla.org/mozilla-central/source/js/src/jit/Ion.cpp#1980,
    http://dxr.mozilla.org/mozilla-central/source/js/src/jit/BaselineCompiler.cpp#618
Blocks: 897962
I failed to see how this would happen? We are indeed returning Method_Skipped in those cases. But Baseline just notices that and carries on until the next time we do the UseCountFallback and try again that time. If we are done with IGC, we will start compiling that script offthread. Right?

Note: I tried to follow the path using the linenumbers, what was a pain, since they all have moved. So I used "http://hg.mozilla.org/mozilla-central/annotate/2ec0a91f244f/js/src/jit/XXX". Now I could not find the correct BaselineCompiler.cpp#618 though? So maybe that's the reason I'm saying this.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.