Make DFG to FTL OSR entry code more sane by removing bad RELEASE_ASSERTS and making...
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jun 2018 08:44:59 +0000 (08:44 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jun 2018 08:44:59 +0000 (08:44 +0000)
commitcf885ff64c53807fa2be1ec0eb6c12d1913e262b
treef836e493dd59a8fdfe793c75690b34c8fc1f1de5
parent757fbad9e76080630221de6f345dadad19f769bf
Make DFG to FTL OSR entry code more sane by removing bad RELEASE_ASSERTS and making it trigger compiles in outer loops before inner ones
https://bugs.webkit.org/show_bug.cgi?id=186218
<rdar://problem/38449540>

Reviewed by Filip Pizlo.

JSTests:

* stress/dont-crash-ftl-osr-entry.js: Added.

Source/JavaScriptCore:

This patch makes tierUpCommon a tad bit more sane. There are a few things
that I did:
- There were a few release asserts that were crashing. Those release asserts
were incorrect. They were making assumptions about how the code and data
structures were ordered that were wrong. This patch removes them. The code
was using the loop hierarchy vector to make assumptions about which loop we
were currently executing in, which is incorrect. The only information that
can be used about where we're currently executing is the bytecode index we're
at.
- This makes it so that we go back to trying to compile outer loops before
inner loops. JF accidentally reverted this behavior that Ben implemented.
JF made it so that we just compiled the inner most loop. I make this
functionality work by first triggering a compile for the outer most loop
that the code is currently executing in and that can perform OSR entry.
However, some programs can get stuck in inner loops. The code works by
progressively asking inner loops to compile if program execution has not
yet reached an outer loop.

* dfg/DFGOperations.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232578 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JSTests/ChangeLog
JSTests/stress/dont-crash-ftl-osr-entry.js [new file with mode: 0644]
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/dfg/DFGOperations.cpp