slightly more code for goto handling
This commit is contained in:
parent
299faf4a87
commit
5ef1c3b989
@ -6683,14 +6683,12 @@ static int compile_goto_statement (moo_t* moo)
|
|||||||
moo_copy_oochars (nptr, target->ptr, target->len);
|
moo_copy_oochars (nptr, target->ptr, target->len);
|
||||||
nptr[target->len] = '\0';
|
nptr[target->len] = '\0';
|
||||||
|
|
||||||
#if 0
|
_goto->ip = cc->mth.code.len;
|
||||||
if (add_to_oow_pool(moo, &cc->mth._goto->target_ip_pool, cc->mth.code.len) <= -1 ||
|
if (emit_single_param_instruction(moo, BCODE_JUMP_FORWARD_0, MAX_CODE_JUMP, TOKEN_LOC(moo)) <= -1)
|
||||||
emit_single_param_instruction(moo, BCODE_JUMP_FORWARD_0, MAX_CODE_JUMP, srcloc) <= -1)
|
|
||||||
{
|
{
|
||||||
moo_freemem (moo, _goto);
|
moo_freemem (moo, _goto);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
_goto->next = cc->mth._goto;
|
_goto->next = cc->mth._goto;
|
||||||
cc->mth._goto = _goto;
|
cc->mth._goto = _goto;
|
||||||
|
@ -403,18 +403,18 @@ struct moo_loop_t
|
|||||||
typedef struct moo_label_t moo_label_t;
|
typedef struct moo_label_t moo_label_t;
|
||||||
struct moo_label_t
|
struct moo_label_t
|
||||||
{
|
{
|
||||||
moo_ooch_t* name;
|
|
||||||
moo_oow_t level;
|
moo_oow_t level;
|
||||||
moo_label_t* next;
|
moo_label_t* next;
|
||||||
|
/* ... label name at the back ... */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct moo_goto_t moo_goto_t;
|
typedef struct moo_goto_t moo_goto_t;
|
||||||
struct moo_goto_t
|
struct moo_goto_t
|
||||||
{
|
{
|
||||||
moo_ooch_t* target_name;
|
|
||||||
moo_oow_t level;
|
moo_oow_t level;
|
||||||
moo_oow_t ip;
|
moo_oow_t ip;
|
||||||
moo_goto_t* next;
|
moo_goto_t* next;
|
||||||
|
/* ... target label name at the back ... */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct moo_oopbuf_t moo_oopbuf_t;
|
typedef struct moo_oopbuf_t moo_oopbuf_t;
|
||||||
|
Loading…
Reference in New Issue
Block a user