Skip to content
This repository has been archived by the owner on Apr 11, 2019. It is now read-only.

fundecl.funbody.live does not capture all of the live registers #8

Open
kayceesrk opened this issue Feb 12, 2016 · 0 comments
Open

Comments

@kayceesrk
Copy link
Member

In the native-code backend, at entry to functions a stack overflow check is inserted [0]. If the stack needs to be reallocated, a frame table entry with the live registers at this point is created so that the GC may find them. Surprisingly, fundecl.funbody.live does not seem to capture all of the live registers. Currently, all the function arguments are considered to be live, some of which may be immediate values. If fundecl.funbody.live is used for the frame table entry, camlp4 fails to build with 4.02.2+effects. This behavior needs to be examined closely and a unit test needs to be created. Until then, all the function arguments are considered live. Relevant commits are 046de6d, 607bc18, 7be5024.

[0] https://github.com/ocamllabs/ocaml-effects/blob/4.02.2+effects/asmcomp/amd64/emit.mlp#L931-L938

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant