| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
This is only the first step for doing `CALL` in Tier 2. The next step involves tracing into the called code object. After that we'll have to do the remaining `CALL` specialization. Finally we'll have to tweak various things like `KW_NAMES`, and possibly move the `NULL` (for method calls) *above* the callable. But those are things for future PRs. Note: this moves setting `frame->return_offset` directly in front of `DISPATCH_INLINED()`, to make it easier to move it into `_PUSH_FRAME`.
Instead, the special case is an opcode using SAVE_FRAME_STATE(). Introducing #if TIER_ONE and #if TIER_TWO so we can implement _PUSH_FRAME differently for both tiers.
Instead, we special-case SAVE_IP: - Its Tier 2 expansion sets oparg to the instruction offset - In Tier 1 it is a no-op (and skipped if present in a macro)
- This uses the function-by-version cache I just added - There's not yet a way to trace back via `RETURN_VALUE`
This should fix leaks and hopefully most failing tests.
|
At least one of the test failures (there aren't very many), in test_traceback.py, could be due to the missing _Py_EnterRecursivePy call: def test_long_context_chain(self):
def f():
try:
1/0
except:
f()
try:
f()
except RecursionError as e:
exc_obj = e
else:
self.fail("Exception not raised")Although there's probably more going on, since the bug is rather shy: I can repro it only by running the entire test_traceback.py file, not by selectively only running this one test. (Possibly because the other tests contribute to the stack overflow.) Anyway, this is enough to keep gh-107793 and gh-107925 in draft mode until I've figured out how to add the recursion checks back. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
(This is a variant of #107793 with -Xuops always enabled, to see if that would pass all tests. We should not merge this, as -Xuops is currently slower than the default interpreter.)