Fix 'while' bytecode generation

This commit is contained in:
Ilmir Usmanov 2014-10-14 16:55:09 +04:00
parent 78367993db
commit 9be0a85c1c
3 changed files with 3 additions and 3 deletions

View File

@ -190,7 +190,7 @@ CFLAGS_WERROR ?= -Werror
CFLAGS_WFATAL_ERRORS ?= -Wfatal-errors
# Optimizations
CFLAGS_OPTIMIZE ?= -Os -flto
CFLAGS_OPTIMIZE ?= -O3 -flto
CFLAGS_NO_OPTIMIZE ?= -O0
LDFLAGS_OPTIMIZE ?=
LDFLAGS_NO_OPTIMIZE ?=

View File

@ -2847,7 +2847,7 @@ parse_while_statement (void)
STACK_PUSH (U16, OPCODE_COUNTER ());
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_rewritable_opcodes (REWRITABLE_CONTINUE, STACK_HEAD (U8, 2), STACK_HEAD (U16, 3));

View File

@ -276,7 +276,7 @@ pp_opcode (opcode_counter_t oc, opcode_t opcode, bool is_rewrite)
}
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,
opcode.data.is_false_jmp_down.opcode_2));
break;