Fix 'while' bytecode generation
This commit is contained in:
+1
-1
@@ -190,7 +190,7 @@ CFLAGS_WERROR ?= -Werror
|
|||||||
CFLAGS_WFATAL_ERRORS ?= -Wfatal-errors
|
CFLAGS_WFATAL_ERRORS ?= -Wfatal-errors
|
||||||
|
|
||||||
# Optimizations
|
# Optimizations
|
||||||
CFLAGS_OPTIMIZE ?= -Os -flto
|
CFLAGS_OPTIMIZE ?= -O3 -flto
|
||||||
CFLAGS_NO_OPTIMIZE ?= -O0
|
CFLAGS_NO_OPTIMIZE ?= -O0
|
||||||
LDFLAGS_OPTIMIZE ?=
|
LDFLAGS_OPTIMIZE ?=
|
||||||
LDFLAGS_NO_OPTIMIZE ?=
|
LDFLAGS_NO_OPTIMIZE ?=
|
||||||
|
|||||||
@@ -2847,7 +2847,7 @@ parse_while_statement (void)
|
|||||||
|
|
||||||
STACK_PUSH (U16, OPCODE_COUNTER ());
|
STACK_PUSH (U16, OPCODE_COUNTER ());
|
||||||
DUMP_OPCODE_2 (jmp_up, INVALID_VALUE, INVALID_VALUE);
|
DUMP_OPCODE_2 (jmp_up, INVALID_VALUE, INVALID_VALUE);
|
||||||
REWRITE_JMP (STACK_TOP (U16), jmp_up, OPCODE_COUNTER () - STACK_HEAD (U16, 3));
|
REWRITE_JMP (STACK_TOP (U16), jmp_up, STACK_TOP (U16) - STACK_HEAD (U16, 3));
|
||||||
REWRITE_COND_JMP (STACK_HEAD (U16, 2), is_false_jmp_down, OPCODE_COUNTER () - STACK_HEAD (U16, 2));
|
REWRITE_COND_JMP (STACK_HEAD (U16, 2), is_false_jmp_down, OPCODE_COUNTER () - STACK_HEAD (U16, 2));
|
||||||
|
|
||||||
rewrite_rewritable_opcodes (REWRITABLE_CONTINUE, STACK_HEAD (U8, 2), STACK_HEAD (U16, 3));
|
rewrite_rewritable_opcodes (REWRITABLE_CONTINUE, STACK_HEAD (U8, 2), STACK_HEAD (U16, 3));
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ pp_opcode (opcode_counter_t oc, opcode_t opcode, bool is_rewrite)
|
|||||||
}
|
}
|
||||||
case NAME_TO_ID (is_false_jmp_down):
|
case NAME_TO_ID (is_false_jmp_down):
|
||||||
{
|
{
|
||||||
pp_printf ("if (%s) goto %d;", opcode.data.is_false_jmp_down.value,
|
pp_printf ("if (%s == false) goto %d;", opcode.data.is_false_jmp_down.value,
|
||||||
oc + calc_opcode_counter_from_idx_idx (opcode.data.is_false_jmp_down.opcode_1,
|
oc + calc_opcode_counter_from_idx_idx (opcode.data.is_false_jmp_down.opcode_1,
|
||||||
opcode.data.is_false_jmp_down.opcode_2));
|
opcode.data.is_false_jmp_down.opcode_2));
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user