RESOLVED FIXED 199291
FTL keepAlive()'s patchpoint should also declare that it reads HeapRange::top().
https://bugs.webkit.org/show_bug.cgi?id=199291
Summary FTL keepAlive()'s patchpoint should also declare that it reads HeapRange::top().
Mark Lam
Reported 2019-06-27 15:13:20 PDT
The main purpose of keepAlive() is to communicate to B3 that an LValue needs to be kept alive pass the last opportunity for a GC. The only way we can get a GC is via a function call. Hence, what keepAlive() really needs to communicate is that the LValue needs to be kept alive pass the last function call. Function calls read and write HeapRange::top(). Currently, B3 does not shuffle writes. Hence, simply inserting the keepAlive() after the calls that can GC is sufficient. But to be strictly correct, keepAlive() should also declare that it reads HeapRange::top(). This will guarantee that the keepAlive patchpoint won't ever be moved before the function call should B3 gain the ability to shuffle writes in the future.
Attachments
proposed patch. (2.08 KB, patch)
2019-06-27 15:19 PDT, Mark Lam
ysuzuki: review+
Mark Lam
Comment 1 2019-06-27 15:19:04 PDT
Created attachment 373057 [details] proposed patch.
Yusuke Suzuki
Comment 2 2019-06-27 15:23:42 PDT
Comment on attachment 373057 [details] proposed patch. r=me
Filip Pizlo
Comment 3 2019-06-27 16:00:05 PDT
Comment on attachment 373057 [details] proposed patch. R=me too.
Mark Lam
Comment 4 2019-06-27 17:27:23 PDT
Thanks for the reviews. Landed in r246910: <http://trac.webkit.org/r246910>.
Radar WebKit Bug Importer
Comment 5 2019-06-27 17:31:35 PDT
Note You need to log in before you can comment on or make changes to this bug.