Skip to content

Conversation

Fidget-Spinner
Copy link
Member

@Fidget-Spinner Fidget-Spinner commented Sep 3, 2024

This PR sets up a tier 2 partial evaluation pass' foundations. It does the following:

  1. Introduce binding-time analysis of instructions and locals.
  2. Virtualized stack values (This was why we need a local slot now to indicate if the stack value is virtualized).
  3. A new abstract interpreter -- one for partial evaluation.
  4. Symbolic stack reification -- reconstructing the stack when we need to/hit a non-static instruction.
  5. It removes most pure annotations -- we need to reimplement those in the partial evaluator for every one we introduce. Otherwise it will do arbitrary optimizations on them.

As a litmus test, it does simple dead store elimination by tracking locals. For example, the code x = x is now optimized to a nop.

This PR does not yet have full shadow stack reconstruction on side-exits. Because that first requires a principled design of side-exits. Thus after this PR lands, that needs to be worked on.

@Fidget-Spinner
Copy link
Member Author

No slowdown which is great to see. Since this pass currently does no optimizations at all https://github.com/faster-cpython/benchmarking-public/tree/main/results/bm-20240904-3.14.0a0-a6bc1a0-JIT

@Fidget-Spinner
Copy link
Member Author

Have a better plan. PR up soon!

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