Skip to content

IGNORE: Return uops forever #107927

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 36 commits into from
Closed

Conversation

gvanrossum
Copy link
Member

@gvanrossum gvanrossum commented Aug 14, 2023

(This is a variant of #107925 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.)

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.
Macros not using oparg should have a format starting with IX, not IB.
This corrects the metadata for a bunch of specializations, e.g.
BINARY_OP_MULTIPLY_INT (which never looks at oparg).
@gvanrossum gvanrossum force-pushed the return-uops-forever branch from 4680e58 to 01fcab9 Compare August 15, 2023 21:50
@gvanrossum gvanrossum force-pushed the return-uops-forever branch from 01fcab9 to f2586c1 Compare August 15, 2023 23:57
@gvanrossum gvanrossum force-pushed the return-uops-forever branch from f2586c1 to 9e56d19 Compare August 16, 2023 01:48
@gvanrossum gvanrossum closed this Aug 16, 2023
@gvanrossum gvanrossum deleted the return-uops-forever branch August 17, 2023 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant