Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Fix a long standing bug for AMD64 with very large frames and using a scratch register. #484

Merged
merged 1 commit into from
Mar 18, 2015

Conversation

LLITCHEV
Copy link

When having a really large frame the code for generating funclet prolog
expects to have RAX being used as initReg. For AMD64 the RBP is being
pushed and then used as scratch (and passed as initReg.) This was causing
the assert to trigger.
Added code to handle properly use of RBP on AMD64 and also modified the
assert to properly allow RAX and RBP as initReg.

@LLITCHEV
Copy link
Author

@BruceForstall @CarolEidt @schellap
Please take a look when you get a chance.

// cmp rax, -frameSize 6
// jge loop 2
//
// For AMD64 using RAX

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean "For AMD64 NOT using RAX"

@BruceForstall
Copy link

LGTM

When having a really large frame the code for generating funclet prolog
expects to have RAX being used as initReg. For AMD64 the RBP is being
pushed and then used as scratch (and passed as initReg.) This was causing
the assert to trigger.
Added code to handle properly use of RBP on AMD64 and also modified the
assert to properly allow RAX and RBP as initReg.
@CarolEidt
Copy link

LGTM

LLITCHEV added a commit that referenced this pull request Mar 18, 2015
Fix a long standing bug for AMD64 with very large frames and using a scratch register.
@LLITCHEV LLITCHEV merged commit 667a12e into dotnet:master Mar 18, 2015
@LLITCHEV LLITCHEV deleted the work2 branch March 19, 2015 20:00
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants