Use the stack size from the code object and the CO_MAXBLOCKS constant
from compile.h. Remove all eval stack overflow checks.
This commit is contained in:
parent
8b993a98db
commit
62f7d15d0b
@ -364,8 +364,10 @@ eval_code2(co, globals, locals,
|
|||||||
#define BASIC_PUSH(v) (*stack_pointer++ = (v))
|
#define BASIC_PUSH(v) (*stack_pointer++ = (v))
|
||||||
#define BASIC_POP() (*--stack_pointer)
|
#define BASIC_POP() (*--stack_pointer)
|
||||||
|
|
||||||
|
#if 0
|
||||||
#define CHECK_STACK(n) (STACK_LEVEL() + (n) < f->f_nvalues || \
|
#define CHECK_STACK(n) (STACK_LEVEL() + (n) < f->f_nvalues || \
|
||||||
(stack_pointer = extend_stack(f, STACK_LEVEL(), n)))
|
(stack_pointer = extend_stack(f, STACK_LEVEL(), n)))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef LLTRACE
|
#ifdef LLTRACE
|
||||||
#define PUSH(v) (BASIC_PUSH(v), lltrace && prtrace(TOP(), "push"))
|
#define PUSH(v) (BASIC_PUSH(v), lltrace && prtrace(TOP(), "push"))
|
||||||
@ -403,8 +405,8 @@ eval_code2(co, globals, locals,
|
|||||||
globals, /*globals*/
|
globals, /*globals*/
|
||||||
locals, /*locals*/
|
locals, /*locals*/
|
||||||
owner, /*owner*/
|
owner, /*owner*/
|
||||||
50, /*nvalues*/
|
co->co_stacksize, /*nvalues*/
|
||||||
20); /*nblocks*/
|
CO_MAXBLOCKS); /*nblocks*/
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -626,10 +628,12 @@ eval_code2(co, globals, locals,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CHECK_STACK
|
||||||
if (!CHECK_STACK(3)) {
|
if (!CHECK_STACK(3)) {
|
||||||
x = NULL;
|
x = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Main switch on opcode */
|
/* Main switch on opcode */
|
||||||
|
|
||||||
@ -1097,10 +1101,12 @@ eval_code2(co, globals, locals,
|
|||||||
why = WHY_EXCEPTION;
|
why = WHY_EXCEPTION;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
#ifdef CHECK_STACK
|
||||||
if (!CHECK_STACK(oparg)) {
|
if (!CHECK_STACK(oparg)) {
|
||||||
x = NULL;
|
x = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
for (; --oparg >= 0; ) {
|
for (; --oparg >= 0; ) {
|
||||||
w = GETTUPLEITEM(v, oparg);
|
w = GETTUPLEITEM(v, oparg);
|
||||||
INCREF(w);
|
INCREF(w);
|
||||||
@ -1122,10 +1128,12 @@ eval_code2(co, globals, locals,
|
|||||||
why = WHY_EXCEPTION;
|
why = WHY_EXCEPTION;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
#ifdef CHECK_STACK
|
||||||
if (!CHECK_STACK(oparg)) {
|
if (!CHECK_STACK(oparg)) {
|
||||||
x = NULL;
|
x = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
for (; --oparg >= 0; ) {
|
for (; --oparg >= 0; ) {
|
||||||
w = getlistitem(v, oparg);
|
w = getlistitem(v, oparg);
|
||||||
INCREF(w);
|
INCREF(w);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user