Unified pc and err of mrb_callinfo

This enhances self-containment.

- Changed the `mrb_callinfo::pc` field to point to itself.
  Previously it indicated the return destination of the previous call level.
  `mrb_callinfo::pc` will now hold the address to its own `proc->body.irep->iseq`.
- Removed `mrb_callinfo::err` field.
  This is because `mrb_callinfo::pc - 1` is semantically the same as the previous `err`.
- The `pc0` and `pc_save` variables in `mrb_vm_exec()` are no longer needed and have been deleted.
- It removes the argument because `cipush()` doesn't need to save the previous `pc`.
This commit is contained in:
dearblue
2021-01-10 10:50:22 +09:00
parent 16baea0677
commit ced89c25ff
5 changed files with 45 additions and 61 deletions
+1 -2
View File
@@ -152,8 +152,7 @@ typedef struct {
mrb_sym mid;
const struct RProc *proc;
mrb_value *stack;
const mrb_code *pc; /* return address */
const mrb_code *err; /* error position */
const mrb_code *pc; /* current address on iseq of this proc */
int16_t argc;
int16_t acc;
union {