change ways of stack operation (no longer push dummy object at first)
This commit is contained in:
parent
a93c3caabf
commit
e42eb5acd5
|
@ -28,7 +28,6 @@ pic_open()
|
||||||
/* prepare VM stack */
|
/* prepare VM stack */
|
||||||
pic->stbase = pic->sp = (pic_value *)malloc(sizeof(pic_value) * 1024);
|
pic->stbase = pic->sp = (pic_value *)malloc(sizeof(pic_value) * 1024);
|
||||||
pic->stend = pic->stbase + 1024;
|
pic->stend = pic->stbase + 1024;
|
||||||
*pic->sp = pic_undef_value(); /* push dummy object */
|
|
||||||
|
|
||||||
/* memory heap */
|
/* memory heap */
|
||||||
pic->heap = (struct heap_page *)malloc(sizeof(struct heap_page));
|
pic->heap = (struct heap_page *)malloc(sizeof(struct heap_page));
|
||||||
|
|
6
src/vm.c
6
src/vm.c
|
@ -82,7 +82,7 @@ pic_get_args(pic_state *pic, const char *format, ...)
|
||||||
pic_value *p;
|
pic_value *p;
|
||||||
|
|
||||||
p = va_arg(ap, pic_value*);
|
p = va_arg(ap, pic_value*);
|
||||||
*p = *pic->sp--;
|
*p = *--pic->sp;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -305,8 +305,8 @@ pic_codegen(pic_state *pic, pic_value obj, struct pic_env *env)
|
||||||
#define JUMP break
|
#define JUMP break
|
||||||
#define VM_LOOP_END } }
|
#define VM_LOOP_END } }
|
||||||
|
|
||||||
#define PUSH(v) do { pic_value v__ = (v); *++pic->sp = v__; } while (0)
|
#define PUSH(v) (*pic->sp++ = (v))
|
||||||
#define POP() (*pic->sp--)
|
#define POP() (*--pic->sp)
|
||||||
|
|
||||||
pic_value
|
pic_value
|
||||||
pic_run(pic_state *pic, struct pic_proc *proc, pic_value args)
|
pic_run(pic_state *pic, struct pic_proc *proc, pic_value args)
|
||||||
|
|
Loading…
Reference in New Issue