Uh oh!
There was an error while loading. Please reload this page.
GH-137573: Check C stack depth before stack allocating JIT optimizer struct - #137676
GH-137573: Check C stack depth before stack allocating JIT optimizer struct#137676markshannon wants to merge 4 commits into
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Fidget-Spinner
commented
Aug 12, 2025
Just so I'm clear: you plan to move this to the thread state later but only on main right? So that we don't change the struct layout in an rc for 3.14? |
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Fidget-Spinner
commented
Aug 13, 2025
Can you please add a |
markshannon
commented
Aug 13, 2025
Yes, but not in this PR as it seems unrelated |
markshannon
commented
Aug 13, 2025
Yes, that's the plan. |
| OPT_STAT_INC(optimizer_attempts); | ||
| /* Make sure we have enough C stack space for the optimizer */ | ||
| int margin = 1 + sizeof(JitOptContext)/_PyOS_STACK_MARGIN_BYTES; | ||
| if (_Py_ReachedRecursionLimitWithMargin(_PyThreadState_GET(), margin)) { |
There was a problem hiding this comment.
To work properly, the optimize_uops function or this function must be marked Py_NO_INLINE as well.
Otherwise, the compiler can just inline the functions and hoist the alloca above the check, making the check useless.
markshannon
commented
Sep 18, 2025
We've already started moving the buffers to the heap, so this won't be needed. |
Uh oh!
There was an error while loading. Please reload this page.