summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/bc0.h4
-rw-r--r--py/emitbc.c2
-rw-r--r--py/showbc.c4
-rw-r--r--py/vm.c8
-rwxr-xr-xtools/mpy-tool.py6
5 files changed, 11 insertions, 13 deletions
diff --git a/py/bc0.h b/py/bc0.h
index 50c4954b0..a4a0acf93 100644
--- a/py/bc0.h
+++ b/py/bc0.h
@@ -117,8 +117,8 @@
#define MP_BC_JUMP (MP_BC_BASE_JUMP_E + 0x02) // signed relative bytecode offset
#define MP_BC_POP_JUMP_IF_TRUE (MP_BC_BASE_JUMP_E + 0x03) // signed relative bytecode offset
#define MP_BC_POP_JUMP_IF_FALSE (MP_BC_BASE_JUMP_E + 0x04) // signed relative bytecode offset
-#define MP_BC_JUMP_IF_TRUE_OR_POP (MP_BC_BASE_JUMP_E + 0x05) // signed relative bytecode offset
-#define MP_BC_JUMP_IF_FALSE_OR_POP (MP_BC_BASE_JUMP_E + 0x06) // signed relative bytecode offset
+#define MP_BC_JUMP_IF_TRUE_OR_POP (MP_BC_BASE_JUMP_E + 0x05) // unsigned relative bytecode offset
+#define MP_BC_JUMP_IF_FALSE_OR_POP (MP_BC_BASE_JUMP_E + 0x06) // unsigned relative bytecode offset
#define MP_BC_SETUP_WITH (MP_BC_BASE_JUMP_E + 0x07) // unsigned relative bytecode offset
#define MP_BC_SETUP_EXCEPT (MP_BC_BASE_JUMP_E + 0x08) // unsigned relative bytecode offset
#define MP_BC_SETUP_FINALLY (MP_BC_BASE_JUMP_E + 0x09) // unsigned relative bytecode offset
diff --git a/py/emitbc.c b/py/emitbc.c
index 90ab6c0a9..1f5cd9d32 100644
--- a/py/emitbc.c
+++ b/py/emitbc.c
@@ -224,7 +224,7 @@ STATIC void emit_write_bytecode_byte_label(emit_t *emit, int stack_adj, byte b1,
mp_emit_bc_adjust_stack_size(emit, stack_adj);
// Determine if the jump offset is signed or unsigned, based on the opcode.
- const bool is_signed = b1 <= MP_BC_JUMP_IF_FALSE_OR_POP;
+ const bool is_signed = b1 <= MP_BC_POP_JUMP_IF_FALSE;
// Default to a 2-byte encoding (the largest) with an unknown jump offset.
unsigned int jump_encoding_size = 1;
diff --git a/py/showbc.c b/py/showbc.c
index 178fa451a..f9c334b93 100644
--- a/py/showbc.c
+++ b/py/showbc.c
@@ -338,12 +338,12 @@ const byte *mp_bytecode_print_str(const mp_print_t *print, const byte *ip_start,
break;
case MP_BC_JUMP_IF_TRUE_OR_POP:
- DECODE_SLABEL;
+ DECODE_ULABEL;
mp_printf(print, "JUMP_IF_TRUE_OR_POP " UINT_FMT, (mp_uint_t)(ip + unum - ip_start));
break;
case MP_BC_JUMP_IF_FALSE_OR_POP:
- DECODE_SLABEL;
+ DECODE_ULABEL;
mp_printf(print, "JUMP_IF_FALSE_OR_POP " UINT_FMT, (mp_uint_t)(ip + unum - ip_start));
break;
diff --git a/py/vm.c b/py/vm.c
index 990009c00..50da90e7d 100644
--- a/py/vm.c
+++ b/py/vm.c
@@ -560,9 +560,9 @@ dispatch_loop:
}
ENTRY(MP_BC_JUMP_IF_TRUE_OR_POP): {
- DECODE_SLABEL;
+ DECODE_ULABEL;
if (mp_obj_is_true(TOP())) {
- ip += slab;
+ ip += ulab;
} else {
sp--;
}
@@ -570,11 +570,11 @@ dispatch_loop:
}
ENTRY(MP_BC_JUMP_IF_FALSE_OR_POP): {
- DECODE_SLABEL;
+ DECODE_ULABEL;
if (mp_obj_is_true(TOP())) {
sp--;
} else {
- ip += slab;
+ ip += ulab;
}
DISPATCH_WITH_PEND_EXC_CHECK();
}
diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index 1ce301ab9..84c09a0c6 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -246,8 +246,8 @@ class Opcodes:
MP_BC_JUMP = (MP_BC_BASE_JUMP_E + 0x02) # signed relative bytecode offset
MP_BC_POP_JUMP_IF_TRUE = (MP_BC_BASE_JUMP_E + 0x03) # signed relative bytecode offset
MP_BC_POP_JUMP_IF_FALSE = (MP_BC_BASE_JUMP_E + 0x04) # signed relative bytecode offset
- MP_BC_JUMP_IF_TRUE_OR_POP = (MP_BC_BASE_JUMP_E + 0x05) # signed relative bytecode offset
- MP_BC_JUMP_IF_FALSE_OR_POP = (MP_BC_BASE_JUMP_E + 0x06) # signed relative bytecode offset
+ MP_BC_JUMP_IF_TRUE_OR_POP = (MP_BC_BASE_JUMP_E + 0x05) # unsigned relative bytecode offset
+ MP_BC_JUMP_IF_FALSE_OR_POP = (MP_BC_BASE_JUMP_E + 0x06) # unsigned relative bytecode offset
MP_BC_SETUP_WITH = (MP_BC_BASE_JUMP_E + 0x07) # unsigned relative bytecode offset
MP_BC_SETUP_EXCEPT = (MP_BC_BASE_JUMP_E + 0x08) # unsigned relative bytecode offset
MP_BC_SETUP_FINALLY = (MP_BC_BASE_JUMP_E + 0x09) # unsigned relative bytecode offset
@@ -295,8 +295,6 @@ class Opcodes:
MP_BC_JUMP,
MP_BC_POP_JUMP_IF_TRUE,
MP_BC_POP_JUMP_IF_FALSE,
- MP_BC_JUMP_IF_TRUE_OR_POP,
- MP_BC_JUMP_IF_FALSE_OR_POP,
)
# Create a dict mapping opcode value to opcode name.