[x86/Linux] Create minimal frame for funclets#9245
Conversation
|
\CC @seanshpark @wateret |
|
@dotnet-bot test Windows_NT x64 Release Priority 1 Build and Test please |
|
@dotnet/jit-contrib Please take a look. |
|
@jkotas @BruceForstall Please take a look. |
|
Is this needed to make something work, or are you just fixing TODO? We are not consistent between platforms ... but the preferred funclet convention is that the funclet does not need to save any calllee saved registers; and that the exception handling subsystem restores them before calling the funclet to what they were when the control left the function originally. |
|
I currently have no issue related with callee-saved registers. I just want to fix TODO before starting PSPSym-related fixes. For that purpose, it seems that EBP should be stored/restored, but I'm not sure about other callee saved registers. I just mimic the corresponding code in AMD64. |
|
It would be useful to have a comment like the one above the amd64 version of You need to determine what the register convention is for the EH subsystem, as @jkotas says. This will affect register liveness into and out of funclets. Currently, we kill all registers, and local vars need to get reloaded from the stack. We use the PSPSym because we can't trust that the frame pointer is re-established to what the parent frame had. If the EH subsystem can guarantee it gets re-established, you wouldn't need that. |
|
@jkotas @BruceForstall Thank you for comments. It would be better to consider this issue when we consider PSPSym-related issues. I'll create another PR when we are ready later. |
This commit makes each funclet to have minimal frame.