refactor native_stack_length
This commit is contained in:
parent
a1101296aa
commit
c3b737037a
|
@ -16,7 +16,7 @@ struct pic_cont {
|
||||||
pic_block *blk;
|
pic_block *blk;
|
||||||
|
|
||||||
char *stk_pos, *stk_ptr;
|
char *stk_pos, *stk_ptr;
|
||||||
size_t stk_len;
|
ptrdiff_t stk_len;
|
||||||
|
|
||||||
pic_value *st_ptr;
|
pic_value *st_ptr;
|
||||||
size_t sp_offset, st_len;
|
size_t sp_offset, st_len;
|
||||||
|
|
|
@ -77,7 +77,7 @@ pic_receive(pic_state *pic, size_t n, pic_value *argv)
|
||||||
static void save_cont(pic_state *, struct pic_cont **);
|
static void save_cont(pic_state *, struct pic_cont **);
|
||||||
static void restore_cont(pic_state *, struct pic_cont *);
|
static void restore_cont(pic_state *, struct pic_cont *);
|
||||||
|
|
||||||
static size_t
|
static ptrdiff_t
|
||||||
native_stack_length(pic_state *pic, char **pos)
|
native_stack_length(pic_state *pic, char **pos)
|
||||||
{
|
{
|
||||||
char t;
|
char t;
|
||||||
|
@ -87,8 +87,8 @@ native_stack_length(pic_state *pic, char **pos)
|
||||||
: pic->native_stack_start;
|
: pic->native_stack_start;
|
||||||
|
|
||||||
return (pic->native_stack_start > &t)
|
return (pic->native_stack_start > &t)
|
||||||
? (size_t)(pic->native_stack_start - &t)
|
? pic->native_stack_start - &t
|
||||||
: (size_t)(&t - pic->native_stack_start + 1);
|
: &t - pic->native_stack_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -106,6 +106,7 @@ save_cont(pic_state *pic, struct pic_cont **c)
|
||||||
cont->stk_pos = pos;
|
cont->stk_pos = pos;
|
||||||
cont->stk_ptr = pic_alloc(pic, sizeof(pic_value) * cont->stk_len);
|
cont->stk_ptr = pic_alloc(pic, sizeof(pic_value) * cont->stk_len);
|
||||||
memcpy(cont->stk_ptr, cont->stk_pos, sizeof(pic_value) * cont->stk_len);
|
memcpy(cont->stk_ptr, cont->stk_pos, sizeof(pic_value) * cont->stk_len);
|
||||||
|
assert(cont->stk_len > 0);
|
||||||
|
|
||||||
cont->sp_offset = pic->sp - pic->stbase;
|
cont->sp_offset = pic->sp - pic->stbase;
|
||||||
cont->st_len = pic->stend - pic->stbase;
|
cont->st_len = pic->stend - pic->stbase;
|
||||||
|
|
Loading…
Reference in New Issue