You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Basically when we start tracing, if we bump into another trace tree, we nest that trace tree into our current trace by treating it as a _EXIT_TRACE, instead of tracing through it.
This idea is not new. One of the original authors of production tracing JITs (Andreas Gal) pointed this out in their blog:
At inner loop n = 16, Trace is created for inner loop of 64.
At outer loop n = 16, Trace is created for outer loop of 32 that projects into loop of 64.
This isn't ideal because now the outer loop creates a trace that never stays in tier 2 for long. It always exits at the end of each iteration.
Instead what we could do is nest the trace trees.
Sub-issue to #621
Basically when we start tracing, if we bump into another trace tree, we nest that trace tree into our current trace by treating it as a _EXIT_TRACE, instead of tracing through it.
This idea is not new. One of the original authors of production tracing JITs (Andreas Gal) pointed this out in their blog:
https://andreasgal.com/2008/08/22/tracing-the-web/ (See section on "Trace Trees and Nested Trace Trees")
Consider the following loop:
Right now this happens:
This isn't ideal because now the outer loop creates a trace that never stays in tier 2 for long. It always exits at the end of each iteration.
Instead what we could do is nest the trace trees.
For inspection, this is the trace output I get:
The text was updated successfully, but these errors were encountered: