-
Notifications
You must be signed in to change notification settings - Fork 281
Description
As #1147 shows we have a long-standing problem with argument passing semantics and we can have cases when the values passed to the call-return method are not the values that are used by the actual binary code.
We have two places in the Primus code where values produced by the body of functions are reflected back to the physical locations used by the binary code. The first place is the Primus Lisp interpreter, where the problem is limited (we support some argument passing semantics, but obviously not all). The other place left unattended for a long time and it wasn't supporting any argument passing except passing directly through a register.
The task is to unify this code and implement more (see also this commit). It should be basically the responsibility of the interpreter (not Lisp interpreter) that the values stored in the arguments are the values that affect the binary code.