Skip to content

implement non-trivial argument passing semantics #1148

@ivg

Description

@ivg

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions