Update assertion in compiler_addop_i()

In practice, bytecode instruction arguments are unsigned. Update the assertion
to make it more explicit that argument must be greater or equal than 0.

Rewrite also the comment.
This commit is contained in:
Victor Stinner 2016-03-01 23:34:47 +01:00
parent f2192855dd
commit 2ad474ba5e
1 changed files with 8 additions and 4 deletions

View File

@ -1163,10 +1163,14 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
struct instr *i;
int off;
/* Integer arguments are limit to 16-bit. There is an extension for 32-bit
integer arguments. */
assert((-2147483647-1) <= oparg);
assert(oparg <= 2147483647);
/* oparg value is unsigned, but a signed C int is usually used to store
it in the C code (like Python/ceval.c).
Limit to 32-bit signed C int (rather than INT_MAX) for portability.
The argument of a concrete bytecode instruction is limited to 16-bit.
EXTENDED_ARG is used for 32-bit arguments. */
assert(0 <= oparg && oparg <= 2147483647);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)