diff options
| author | Guillaume Melquiond | 2021-03-25 12:03:40 +0100 |
|---|---|---|
| committer | Guillaume Melquiond | 2021-03-26 15:18:28 +0100 |
| commit | ae819deb38c3a962e3badf020705c3d0c6c84e67 (patch) | |
| tree | f269e1968fd1f6420b4dc459a5d6e30e6a1726d9 /kernel/vmbytecodes.ml | |
| parent | 6d7fdaf8484da81993958d339e411d8e3b1a38c1 (diff) | |
Make it more obvious when the calling convention of APPLY changes.
Despite their names, APPLY1 to APPLY4 are completely different from
APPLY(n) with n = 1 to 4. Indeed, the latter assumes that the return
address was already pushed on the stack, before the arguments were. On the
other hand, APPLY1 to APPLY4 insert the return address in the middle of
the already pushed arguments.
Diffstat (limited to 'kernel/vmbytecodes.ml')
| -rw-r--r-- | kernel/vmbytecodes.ml | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/vmbytecodes.ml b/kernel/vmbytecodes.ml index c2b087f061..1783560694 100644 --- a/kernel/vmbytecodes.ml +++ b/kernel/vmbytecodes.ml @@ -35,6 +35,7 @@ type instruction = | Kpush | Kpop of int | Kpush_retaddr of Label.t + | Kshort_apply of int | Kapply of int | Kappterm of int * int | Kreturn of int @@ -93,6 +94,7 @@ let rec pp_instr i = | Kpush -> str "push" | Kpop n -> str "pop " ++ int n | Kpush_retaddr lbl -> str "push_retaddr " ++ pp_lbl lbl + | Kshort_apply n -> str "short_apply " ++ int n | Kapply n -> str "apply " ++ int n | Kappterm(n, m) -> str "appterm " ++ int n ++ str ", " ++ int m |
