mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-08 13:37:35 +02:00
Don't backtrack to remove bytecode if we're in aligned mode.
This commit is contained in:
parent
213af9c098
commit
6dfc5e9cfd
1 changed files with 3 additions and 0 deletions
3
vm.c
3
vm.c
|
@ -163,6 +163,7 @@ static void generate_lit (sexp ctx, sexp value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generate_drop_prev (sexp ctx, sexp prev) {
|
static void generate_drop_prev (sexp ctx, sexp prev) {
|
||||||
|
#if ! SEXP_USE_ALIGNED_BYTECODE
|
||||||
if ((sexp_pairp(prev) && sexp_opcodep(sexp_car(prev))
|
if ((sexp_pairp(prev) && sexp_opcodep(sexp_car(prev))
|
||||||
&& ((sexp_opcode_return_type(sexp_car(prev)) == SEXP_VOID
|
&& ((sexp_opcode_return_type(sexp_car(prev)) == SEXP_VOID
|
||||||
&& sexp_opcode_class(sexp_car(prev)) != SEXP_OPC_FOREIGN)
|
&& sexp_opcode_class(sexp_car(prev)) != SEXP_OPC_FOREIGN)
|
||||||
|
@ -170,6 +171,7 @@ static void generate_drop_prev (sexp ctx, sexp prev) {
|
||||||
|| sexp_setp(prev) || sexp_litp(prev) || prev == SEXP_VOID)
|
|| sexp_setp(prev) || sexp_litp(prev) || prev == SEXP_VOID)
|
||||||
sexp_inc_context_pos(ctx, -(1 + sizeof(sexp)));
|
sexp_inc_context_pos(ctx, -(1 + sizeof(sexp)));
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
sexp_emit(ctx, SEXP_OP_DROP);
|
sexp_emit(ctx, SEXP_OP_DROP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,6 +488,7 @@ static void generate_tail_jump (sexp ctx, sexp name, sexp loc, sexp lam, sexp ap
|
||||||
|
|
||||||
/* drop the current result and jump */
|
/* drop the current result and jump */
|
||||||
sexp_emit(ctx, SEXP_OP_JUMP);
|
sexp_emit(ctx, SEXP_OP_JUMP);
|
||||||
|
sexp_context_align_pos(ctx);
|
||||||
sexp_emit_word(ctx, (sexp_uint_t) (-sexp_unbox_fixnum(sexp_context_pos(ctx)) +
|
sexp_emit_word(ctx, (sexp_uint_t) (-sexp_unbox_fixnum(sexp_context_pos(ctx)) +
|
||||||
(sexp_pairp(sexp_lambda_locals(lam))
|
(sexp_pairp(sexp_lambda_locals(lam))
|
||||||
? 1 + sizeof(sexp) : 0)));
|
? 1 + sizeof(sexp) : 0)));
|
||||||
|
|
Loading…
Add table
Reference in a new issue