-
-
Notifications
You must be signed in to change notification settings - Fork 34.6k
gh-139109: A new tracing JIT compiler frontend for CPython #140310
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
Merged
Merged
Changes from 1 commit
Commits
Show all changes
196 commits
Select commit
Hold shift + click to select a range
795ef49
Basic trace recording
Fidget-Spinner 40bf6c1
WIP generators
Fidget-Spinner 13188a9
refactor to translate on the go
Fidget-Spinner e63de39
working python startup
Fidget-Spinner fba9d2d
fix a bug with specializzation
Fidget-Spinner 7192671
Fully working bm_generators
Fidget-Spinner 07542dd
fix jit build
Fidget-Spinner 021fc44
Fix exception tracing
Fidget-Spinner f886c43
Fix jump tracing
Fidget-Spinner 3066963
Fix handling of ENTER_EXECUTOR
Fidget-Spinner 20b283b
Fix ENTER_EXECUTOR bug
Fidget-Spinner 36554a5
Fix over-tracing bug
Fidget-Spinner 92bba64
fix JIT + debug builds
Fidget-Spinner 2e3ddc1
Fix double-initialization
Fidget-Spinner aada168
fix exception bug
Fidget-Spinner 7b5c655
Fix dispatch_inlined
Fidget-Spinner 3e9f782
Fix handling of EXTENDED_ARG
Fidget-Spinner 9a66605
Fix chain depth bug
Fidget-Spinner 108ab7f
remove printf
Fidget-Spinner fac8c74
fix problem with jumping labels
Fidget-Spinner fd3bb48
Point to previous executor when side-exiting
Fidget-Spinner 96b7bb2
Fix progress needed and warmup
Fidget-Spinner 396818b
Fix unsupported opcode bug, turn off optimizer again
Fidget-Spinner 57f417e
fix branch tracing
Fidget-Spinner 2c603cc
fix branch prediction for real
Fidget-Spinner 02f1fb4
fix non-sstandard C
Fidget-Spinner dc414a3
Track from JUMP_BACKWARD rather than FOR_ITER
Fidget-Spinner 0ffc2dd
Fix bug where code/func get freed halfway
Fidget-Spinner 2032b9c
add back replaced, move jit tracing env var to
Fidget-Spinner 299a068
Handle recursive tracing and CALL_ALLOC_AND_ENTER_INIT
Fidget-Spinner 8e0fb21
Fix recursive tracing and dynamic exits
Fidget-Spinner 95eee89
Fix handling of EXTENDED_ARG
Fidget-Spinner 6936a38
Just punt on large opargs for now
Fidget-Spinner a274451
cleanup a little
Fidget-Spinner f55129e
fix recursive tracing
Fidget-Spinner 71bd27b
comment out debugging
Fidget-Spinner e834c88
Delete out.txt
Fidget-Spinner cae8f10
patch the graphviz dump
Fidget-Spinner 39bc819
fix bug with predicted stuff
Fidget-Spinner ff92937
Properly record the predicted ops
Fidget-Spinner 2589eb0
Re-enable the optimizer
Fidget-Spinner a2e92a6
Delete hello.gvz
Fidget-Spinner cbb3ad2
turn off optimizer again (for now)
Fidget-Spinner 9910b65
Turn off optimizer for real, trace through init
Fidget-Spinner 5102ab6
fix a few tests and their exposed bugs
Fidget-Spinner c0c14b4
Restore the optimizer fully
Fidget-Spinner 7d4f866
invalidate freed code/function objects used for global promotion
Fidget-Spinner 1981f50
Fix tracing
Fidget-Spinner b879dab
fix tracing completely
Fidget-Spinner 093578c
Separate the tracer out into its own file
Fidget-Spinner d114944
Cleanup, bugfixes to sys trace
Fidget-Spinner e50ff65
Whole test suite passing
Fidget-Spinner 54f6cd6
Remove unused buffer
Fidget-Spinner e3f18e6
Cleanup warnings
Fidget-Spinner 608772f
refactor a little
Fidget-Spinner 1872715
Cleanup
Fidget-Spinner 460fb39
📜🤖 Added by blurb_it.
blurb-it[bot] 8d6f1db
Merge remote-tracking branch 'upstream/main' into tracing_jit
Fidget-Spinner a8762c2
Disable windows CI for now, simplify
Fidget-Spinner 72c2242
restore non-jit builds
Fidget-Spinner d76dc85
make mypy happy
Fidget-Spinner 87c0b72
fix linter and mypy?
Fidget-Spinner 24cd7f9
more cleanup to fix CI
Fidget-Spinner 8ae2e4c
Merge remote-tracking branch 'upstream/main' into tracing_jit
Fidget-Spinner f38ef69
Fix lltrace on jit debug builds
Fidget-Spinner 960d647
Turn off tracing on dynamic exit
Fidget-Spinner 1798ab1
Fix _CHECK_PERIODIC insertion
Fidget-Spinner 681485f
Increase uop length to compensate
Fidget-Spinner 9bb03a8
Handle EXTENDED_ARG
Fidget-Spinner 4b26cde
Handle unstable branches
Fidget-Spinner d820e22
Don't JIT short traces except if they end in a loop
Fidget-Spinner 00c81fa
revert last 2 changes
Fidget-Spinner ba64a5b
Support BINARY_OP_INPLACE_ADD_UNICODE
Fidget-Spinner b00252e
Trace through BINARY_OP_SUBSCR_GETITEM
Fidget-Spinner 754b3b7
Close loops
Fidget-Spinner 6045a67
Specialize on deopt when tracing
Fidget-Spinner ec2971f
make mypy happy
Fidget-Spinner d49e367
remedies against trace explosion
Fidget-Spinner 55892a4
lint
Fidget-Spinner dd0e16f
Fix a bug with where the executors get inserted during EXTENDED_ARG
Fidget-Spinner d18c1a1
Revert remedies against trace explosion
Fidget-Spinner 7d17741
First half of reviews
Fidget-Spinner 8ebb6cb
Fix naming of things
Fidget-Spinner c23e591
restore optimizer code
Fidget-Spinner a62fe40
Clean up macros
Fidget-Spinner e4f1624
Clean up the cases generator
Fidget-Spinner a7fcf24
Close loops properly, don't trace into nested loops
Fidget-Spinner eb73378
fix test
Fidget-Spinner 2b5fe3a
debug changes
Fidget-Spinner 3385420
add comment to CI
Fidget-Spinner cedd7af
Rewrite the tracing JIT to use a common opcode handler
Fidget-Spinner 676faf8
Fix ifdefs
Fidget-Spinner cdcce30
Address review of macros
Fidget-Spinner 1a3f129
fix a tracing bug, ifdef out code
Fidget-Spinner e8fff00
fix JIT builds
Fidget-Spinner 7b2a8ca
regen frozenmain
Fidget-Spinner abb1757
fix build on non-JIT
Fidget-Spinner 0fee4e9
fix pystats jit build
Fidget-Spinner ccc7893
Merge remote-tracking branch 'upstream/main' into tracing_jit
Fidget-Spinner eb970e0
specialization and deopt fixes
Fidget-Spinner abecfd6
fix test
Fidget-Spinner 8aeabd5
disable tracing on FT
Fidget-Spinner 6bd1541
Fix FT
Fidget-Spinner a53ca1d
Emit RECORD_DYNAMIC_JUMP_TAKEN automatically
Fidget-Spinner ce66f3b
Remove TIER2_STORE_IP
Fidget-Spinner 5733455
make mypy happy
Fidget-Spinner 4aab2df
Move specializing ddetection to specialize inst
Fidget-Spinner ab7527c
Fix the counters
Fidget-Spinner 7e7b240
fix windows builds
Fidget-Spinner 4a4a31f
Support underflow and yield value in the optimizer
Fidget-Spinner 72e1738
fix
Fidget-Spinner 5e17707
Fix a bug with ENTER_EXECUTOR linking
Fidget-Spinner 1e132f0
up the trace length
Fidget-Spinner bf17539
Change the backoffs to fix nqueens
Fidget-Spinner 7ab76a8
fix no-opt JIT
Fidget-Spinner 86ab7f1
Fix a test
Fidget-Spinner 5f39672
fix up gitattributes
Fidget-Spinner 440ad03
address review
Fidget-Spinner 9cc7999
Address Chris' review
Fidget-Spinner 4b4e857
Address Kumar's review
Fidget-Spinner a5d918e
Change RECORD_PREVIOUS_INST to a label to save an opcode
Fidget-Spinner d601256
fix some formatting
Fidget-Spinner 425fd51
fix cg builds, invalidate executors on function deallocation
Fidget-Spinner 1f8c3df
Differentiate the two dependencies
Fidget-Spinner bdd2123
Stop recursive traces
Fidget-Spinner 5f4f310
fix backoff
Fidget-Spinner b5a9b07
Merge remote-tracking branch 'upstream/main' into tracing_jit
Fidget-Spinner 8adaf4d
merge from upstream
Fidget-Spinner e918cb2
Move unpredictable jump detection to the cases generator
Fidget-Spinner e9e2bb9
Sink LOAD_IP into guards
Fidget-Spinner 01c2d73
fix backoff counters
Fidget-Spinner 1d3aed1
properly restore exponential backoffs
Fidget-Spinner 7bfac26
fix test
Fidget-Spinner ac0711d
fix backoff for previous exits
Fidget-Spinner da66058
remove faulty assertion
Fidget-Spinner 692a992
Fix INTERPRETER_EXIT tracing
Fidget-Spinner 84ee07b
Add _GUARD_IP autogenerator
Fidget-Spinner 72368ed
make windows happy
Fidget-Spinner 8e62fd1
Remove check on RESUME
Fidget-Spinner 92cc140
cleanup
Fidget-Spinner af9ea57
Remove dynamic exit for _FOR_ITER_TIER_TWO
Fidget-Spinner 3ed1402
Remove bytecode object for ceval.c
Fidget-Spinner 0a1bad2
fix mypy
Fidget-Spinner 0498568
regen global objects
Fidget-Spinner d44ca1e
Merge remote-tracking branch 'origin/main' into tracing_jit
Fidget-Spinner 2dbc291
fix C analyzer
Fidget-Spinner 82ec8f1
convert spaces to tabs
Fidget-Spinner f526688
Fix a bug in not setting executors
Fidget-Spinner c78a4e6
Revert "Fix a bug in not setting executors"
Fidget-Spinner aa92d84
cold dynamic executors
Fidget-Spinner 253f230
fix frame owned by interp
Fidget-Spinner ffa2b72
Use a different chain depth for dynamic exits
Fidget-Spinner 897edf5
remove two chain depths
Fidget-Spinner 1ef4a37
Make sure we don't reenter executors when guard exec ip fails
Fidget-Spinner 0e92118
remove dynamic tracing for now
Fidget-Spinner c75d91c
Don't limit control-flow exits
Fidget-Spinner bf1ddab
fix assertion
Fidget-Spinner a64215d
Remove _DYNAMIC_EXIT jumping for now.
Fidget-Spinner da5e7b7
reduce diff
Fidget-Spinner 83c85c3
rework ad-hoc generation of guards
Fidget-Spinner 6c77ee3
fix jit builds
Fidget-Spinner 3fd3ab5
more future-proofing
Fidget-Spinner 6429b2f
lint
Fidget-Spinner 5cfc7a9
special case first instr properly
Fidget-Spinner c5de275
move strange control flow detection up
Fidget-Spinner b7b3c23
move code to correcdt places
Fidget-Spinner cda3dce
fix a bug where we point FOR_ITER_TIER_TWO
Fidget-Spinner 3f212a4
cleanup
Fidget-Spinner 4f29dd3
Partially address review
Fidget-Spinner 5af4b0a
remove nedsguardip table
Fidget-Spinner 46c079a
Cleanup cases generator
Fidget-Spinner 4aeb4ab
massive refactoring of the struct
Fidget-Spinner fe3a6a1
massive refactoring 2
Fidget-Spinner 10fa14a
reduce diff
Fidget-Spinner 0f978c4
fix windows
Fidget-Spinner 3c80446
make mypy happy
Fidget-Spinner aaf6873
Move to thread state
Fidget-Spinner 547f587
Update optimizer.c
Fidget-Spinner a55d766
Update generated_cases.c.h
Fidget-Spinner 278bbe6
Support __init__ in the optimizer
Fidget-Spinner f547880
Fix a few perf regressions due to tracing thru optimizer
Fidget-Spinner 7e2bc1d
Some fixups
Fidget-Spinner fa3e285
Clean up labels
Fidget-Spinner 251e19e
fix TC
Fidget-Spinner 08ec600
Remove specialize_counter
Fidget-Spinner f7c26d4
rename jit_state to jit_tracer_state
Fidget-Spinner ae1d6fe
Restore a test, address review
Fidget-Spinner 0658f1b
remove CALL_LIST_APPEND fix
Fidget-Spinner f8a764a
fix JIT builds
Fidget-Spinner b72ab8b
Address review
Fidget-Spinner 8993e6c
Merge remote-tracking branch 'upstream/main' into tracing_jit
Fidget-Spinner fa45ae8
add stats, document
Fidget-Spinner 308ccc0
Fix off-by-one
Fidget-Spinner 33cf287
address review
Fidget-Spinner 3163d9b
Fix a bug in dependencies detected by CI
Fidget-Spinner 658fd98
add code object only after we add to trace
Fidget-Spinner File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Don't JIT short traces except if they end in a loop
- Loading branch information
commit d820e22378966553002e718930c77c1edfa50997
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.