|
37 | 37 | #define COMP_SETCOMP 2
|
38 | 38 | #define COMP_DICTCOMP 3
|
39 | 39 |
|
40 |
| -/* A soft limit for stack use, to avoid excessive |
41 |
| - * memory use for large constants, etc. |
42 |
| - * |
43 |
| - * The value 30 is plucked out of thin air. |
44 |
| - * Code that could use more stack than this is |
45 |
| - * rare, so the exact value is unimportant. |
46 |
| - */ |
47 |
| -#define STACK_USE_GUIDELINE 30 |
48 |
| - |
49 | 40 | #undef SUCCESS
|
50 | 41 | #undef ERROR
|
51 | 42 | #define SUCCESS 0
|
@@ -3209,7 +3200,7 @@ starunpack_helper_impl(compiler *c, location loc,
|
3209 | 3200 | int build, int add, int extend, int tuple)
|
3210 | 3201 | {
|
3211 | 3202 | Py_ssize_t n = asdl_seq_LEN(elts);
|
3212 |
| - int big = n + pushed + (injected_arg ? 1 : 0) > STACK_USE_GUIDELINE; |
| 3203 | + int big = n + pushed + (injected_arg ? 1 : 0) > _PY_STACK_USE_GUIDELINE; |
3213 | 3204 | int seen_star = 0;
|
3214 | 3205 | for (Py_ssize_t i = 0; i < n; i++) {
|
3215 | 3206 | expr_ty elt = asdl_seq_GET(elts, i);
|
@@ -3364,7 +3355,7 @@ static int
|
3364 | 3355 | codegen_subdict(compiler *c, expr_ty e, Py_ssize_t begin, Py_ssize_t end)
|
3365 | 3356 | {
|
3366 | 3357 | Py_ssize_t i, n = end - begin;
|
3367 |
| - int big = n*2 > STACK_USE_GUIDELINE; |
| 3358 | + int big = n*2 > _PY_STACK_USE_GUIDELINE; |
3368 | 3359 | location loc = LOC(e);
|
3369 | 3360 | if (big) {
|
3370 | 3361 | ADDOP_I(c, loc, BUILD_MAP, 0);
|
@@ -3411,7 +3402,7 @@ codegen_dict(compiler *c, expr_ty e)
|
3411 | 3402 | ADDOP_I(c, loc, DICT_UPDATE, 1);
|
3412 | 3403 | }
|
3413 | 3404 | else {
|
3414 |
| - if (elements*2 > STACK_USE_GUIDELINE) { |
| 3405 | + if (elements*2 > _PY_STACK_USE_GUIDELINE) { |
3415 | 3406 | RETURN_IF_ERROR(codegen_subdict(c, e, i - elements, i + 1));
|
3416 | 3407 | if (have_dict) {
|
3417 | 3408 | ADDOP_I(c, loc, DICT_UPDATE, 1);
|
@@ -3752,7 +3743,7 @@ maybe_optimize_method_call(compiler *c, expr_ty e)
|
3752 | 3743 | /* Check that there aren't too many arguments */
|
3753 | 3744 | argsl = asdl_seq_LEN(args);
|
3754 | 3745 | kwdsl = asdl_seq_LEN(kwds);
|
3755 |
| - if (argsl + kwdsl + (kwdsl != 0) >= STACK_USE_GUIDELINE) { |
| 3746 | + if (argsl + kwdsl + (kwdsl != 0) >= _PY_STACK_USE_GUIDELINE) { |
3756 | 3747 | return 0;
|
3757 | 3748 | }
|
3758 | 3749 | /* Check that there are no *varargs types of arguments. */
|
@@ -3849,7 +3840,7 @@ codegen_joined_str(compiler *c, expr_ty e)
|
3849 | 3840 | {
|
3850 | 3841 | location loc = LOC(e);
|
3851 | 3842 | Py_ssize_t value_count = asdl_seq_LEN(e->v.JoinedStr.values);
|
3852 |
| - if (value_count > STACK_USE_GUIDELINE) { |
| 3843 | + if (value_count > _PY_STACK_USE_GUIDELINE) { |
3853 | 3844 | _Py_DECLARE_STR(empty, "");
|
3854 | 3845 | ADDOP_LOAD_CONST_NEW(c, loc, Py_NewRef(&_Py_STR(empty)));
|
3855 | 3846 | ADDOP_NAME(c, loc, LOAD_METHOD, &_Py_ID(join), names);
|
@@ -3928,7 +3919,7 @@ codegen_subkwargs(compiler *c, location loc,
|
3928 | 3919 | Py_ssize_t i, n = end - begin;
|
3929 | 3920 | keyword_ty kw;
|
3930 | 3921 | assert(n > 0);
|
3931 |
| - int big = n*2 > STACK_USE_GUIDELINE; |
| 3922 | + int big = n*2 > _PY_STACK_USE_GUIDELINE; |
3932 | 3923 | if (big) {
|
3933 | 3924 | ADDOP_I(c, NO_LOCATION, BUILD_MAP, 0);
|
3934 | 3925 | }
|
@@ -3981,7 +3972,7 @@ codegen_call_helper_impl(compiler *c, location loc,
|
3981 | 3972 | nelts = asdl_seq_LEN(args);
|
3982 | 3973 | nkwelts = asdl_seq_LEN(keywords);
|
3983 | 3974 |
|
3984 |
| - if (nelts + nkwelts*2 > STACK_USE_GUIDELINE) { |
| 3975 | + if (nelts + nkwelts*2 > _PY_STACK_USE_GUIDELINE) { |
3985 | 3976 | goto ex_call;
|
3986 | 3977 | }
|
3987 | 3978 | for (i = 0; i < nelts; i++) {
|
|
0 commit comments