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
It turns out that for many reasons, it would be nice to have basic blocks in our SSA and represent loops more explicitly. For instance a nice optimization is to unroll the outer loop for just one iteration and this gives you substantial type information that you can use going into next loop if you can for instance prove that a phi node is always of a certain type.
Additionally this sets us up later for adding branches for 50/50 cases that are not handled well by the naive tracing we do now. Lastly this also sets us up for TraceMonkey style trace appending where traces are stored for each branch and then they are periodically recompiled.
This is also what we need to handle tail calls as well.
The text was updated successfully, but these errors were encountered:
It turns out that for many reasons, it would be nice to have basic blocks in our SSA and represent loops more explicitly. For instance a nice optimization is to unroll the outer loop for just one iteration and this gives you substantial type information that you can use going into next loop if you can for instance prove that a phi node is always of a certain type.
Additionally this sets us up later for adding branches for 50/50 cases that are not handled well by the naive tracing we do now. Lastly this also sets us up for TraceMonkey style trace appending where traces are stored for each branch and then they are periodically recompiled.
This is also what we need to handle tail calls as well.
The text was updated successfully, but these errors were encountered: