-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace __yk_guardcheck
with code patching
#1428
Comments
I believe we still need the global guard vector change we've discussed. Otherwise we can't lookup the correct guard of a side-trace to store any sub-side-traces inside of it. |
Basically I think we can localise all the guards into the parent |
Yeah, whether it's global or per root trace makes no huge difference. But we need to do this whether we do patching or not, I think. So it might be a nice stepping stone to give us some speedup before we do patching. |
I've also now realised that we didn't discuss getting rid of |
In
deopt.rs
we have:Lukas tasked me with looking at getting rid of this function by doing something with guards/guardinfos. On reflection, I've realised that would be pointless: we should be patching the code for guards when a side-trace is compiled, at which point the need for this function disappears entirely anyway!
This probably needs some sort of help from the (e.g. x64) code gen backend so that what is currently:
records the address of the
jne
so that later we can patch this to the equivalent of:Probably we'll need to do some sort of
nop
tricks so that we always have enough space to patch the jump, but that's a relatively minor detail.Amongst the neat properties of this change is that it should also absolve us of the need to check which side-trace we're currently executing: we just need to record the "top-level" trace we're in, and that's enough.
The text was updated successfully, but these errors were encountered: