Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-114058: The Tier2 Optimizer#114059

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Closed
Show file tree
Hide file tree
Changes from1 commit
Commits
Show all changes
116 commits
Select commitHold shift + click to select a range
29db898
abstract interp
Fidget-SpinnerJan 13, 2024
c1332cc
the abstract interpreter
Fidget-SpinnerJan 13, 2024
9d85c35
cleanup
Fidget-SpinnerJan 13, 2024
76cee0c
run black
Fidget-SpinnerJan 13, 2024
b71aa06
the optimizer
Fidget-SpinnerJan 14, 2024
f0e5dec
fix a whole bunch of bugs
Fidget-SpinnerJan 14, 2024
52e368f
properly handle runtime self_or_null
Fidget-SpinnerJan 14, 2024
a273a2f
fix faulty assertion
Fidget-SpinnerJan 14, 2024
60a1d79
fix build
Fidget-SpinnerJan 15, 2024
7077ad5
fix all tests except test_capi and maybe test_ctypes
Fidget-SpinnerJan 16, 2024
5169bf3
run black and re-enable tests
Fidget-SpinnerJan 16, 2024
0929bb8
📜🤖 Added by blurb_it.
blurb-it[bot]Jan 16, 2024
70ee73e
Merge remote-tracking branch 'upstream/main' into tier2_abstract_inte…
Fidget-SpinnerJan 18, 2024
7d66440
check for buffer overruns
Fidget-SpinnerJan 18, 2024
6b18e30
expand the ir
Fidget-SpinnerJan 18, 2024
4b1dff4
fix return path
Fidget-SpinnerJan 18, 2024
6a61b18
fix some refleaks
Fidget-SpinnerJan 19, 2024
9e32f75
basic value numbering
Fidget-SpinnerJan 19, 2024
119548e
force enable uops
Fidget-SpinnerJan 19, 2024
27ce303
allow more memory
Fidget-SpinnerJan 19, 2024
8915762
fix some refleaks, test value numbering
Fidget-SpinnerJan 20, 2024
0974dad
fix all the warnings
Fidget-SpinnerJan 20, 2024
c9cd8a8
fix test
Fidget-SpinnerJan 20, 2024
eb56a90
fix refleak tests
Fidget-SpinnerJan 20, 2024
c9c7854
lint
Fidget-SpinnerJan 20, 2024
3e64d1f
get rid of all compiler warnings
Fidget-SpinnerJan 20, 2024
df3b938
fix smelly
Fidget-SpinnerJan 20, 2024
81a859b
add comments, cleanup
Fidget-SpinnerJan 20, 2024
7280281
exclude abstract interp cases from C analyzer
Fidget-SpinnerJan 20, 2024
ac6e29f
fix c-globals check
Fidget-SpinnerJan 20, 2024
9e5ef68
fix refleak
Fidget-SpinnerJan 24, 2024
1f27abb
peepholing, make _CHECK_PEP_523 a guard
Fidget-SpinnerJan 24, 2024
c88a8c6
fix bug
Fidget-SpinnerJan 24, 2024
307c66f
make things const?
Fidget-SpinnerJan 24, 2024
19ce538
allow for more scratch space, but keep traces same
Fidget-SpinnerJan 24, 2024
c701581
Merge remote-tracking branch 'upstream/main' into tier2_abstract_inte…
Fidget-SpinnerJan 24, 2024
3353996
fix upstream changes
Fidget-SpinnerJan 24, 2024
543c827
apply same peephole from upstream
Fidget-SpinnerJan 24, 2024
6e55480
fix eval frame
Fidget-SpinnerJan 24, 2024
4e74c5b
use uops as IR
Fidget-SpinnerJan 25, 2024
6829844
fix error cases
Fidget-SpinnerJan 25, 2024
1de0ccb
fix leak, fix peepholer
Fidget-SpinnerJan 25, 2024
d2917b7
documentation, cleanup whitespace
Fidget-SpinnerJan 25, 2024
553ac53
reduce mem usage
Fidget-SpinnerJan 25, 2024
4555b0c
remove INIT_FAST add ignored
Fidget-SpinnerJan 25, 2024
4155d84
cleanup
Fidget-SpinnerJan 25, 2024
e48a794
Add back peephole for constants
Fidget-SpinnerJan 25, 2024
7e7ba2d
fix compiler warning
Fidget-SpinnerJan 25, 2024
9aa7ccd
cut the constant factor
Fidget-SpinnerJan 25, 2024
d3d1e60
loop peeling
Fidget-SpinnerJan 25, 2024
d8d82e0
loop unrolling done
Fidget-SpinnerJan 25, 2024
9692146
peel only a single loops
Fidget-SpinnerJan 25, 2024
fe648e2
reorder to fix macos
Fidget-SpinnerJan 25, 2024
2dc0d0c
please fix mac
Fidget-SpinnerJan 25, 2024
b132a87
fix test
Fidget-SpinnerJan 25, 2024
8a726e0
slightly reduce dispatch overhead
Fidget-SpinnerJan 25, 2024
0d9df64
fixx off-by-one error
Fidget-SpinnerJan 25, 2024
a72d6ef
peel less aggressively, clear peepholer
Fidget-SpinnerJan 26, 2024
9599113
undo loop peeling
Fidget-SpinnerJan 26, 2024
7de4b37
Revert "undo loop peeling"
Fidget-SpinnerJan 26, 2024
acc6490
add more memory for everything
Fidget-SpinnerJan 26, 2024
cf59bba
peephole on failure
Fidget-SpinnerJan 26, 2024
41882ce
add stats collection
Fidget-SpinnerJan 27, 2024
797bc1e
Revert "add more memory for everything"
Fidget-SpinnerJan 27, 2024
22da280
remove bad redefinition
Fidget-SpinnerJan 27, 2024
64fa51c
Partially address Guido's review
Fidget-SpinnerJan 28, 2024
262f978
remove sym_copy_type_number
Fidget-SpinnerJan 28, 2024
4a9e2b4
remove symbolic value, use symbolic type
Fidget-SpinnerJan 28, 2024
5868fb8
rename confusing name
Fidget-SpinnerJan 28, 2024
5a3f44f
Address Guido's review, 4x function cache
Fidget-SpinnerJan 28, 2024
f450646
loop peel more often, add stats for loop peeling
Fidget-SpinnerJan 28, 2024
d226882
Add `(void)found` to silence compiler warning on L802
gvanrossumJan 28, 2024
9a3585a
convert frame and context to non-PyObjects
Fidget-SpinnerJan 29, 2024
882b48c
add test for freed functions
Fidget-SpinnerJan 29, 2024
551466f
cleanup
Fidget-SpinnerJan 29, 2024
17a989c
general cleanups
Fidget-SpinnerJan 29, 2024
fcdc84c
make static
Fidget-SpinnerJan 29, 2024
065b8a4
add comment by Guido
Fidget-SpinnerJan 30, 2024
5be3458
Merge remote-tracking branch 'upstream/main' into tier2_abstract_inte…
Fidget-SpinnerJan 30, 2024
580dd14
fix _JUMP_ABSOLUTE
Fidget-SpinnerJan 28, 2024
d603792
remove unsued var
Fidget-SpinnerJan 30, 2024
f206bd0
use iterative instead of recursive
Fidget-SpinnerJan 30, 2024
17b4ae3
fix bad test on aarch64 linux
Fidget-SpinnerJan 30, 2024
913d95b
remove non-compliant test
Fidget-SpinnerJan 30, 2024
425b40d
fix compiler warnings
Fidget-SpinnerJan 30, 2024
2c884e2
low hanging fruit in Guido's review
Fidget-SpinnerJan 31, 2024
d7d8e8c
cleanup more
Fidget-SpinnerJan 31, 2024
47ee732
Remove abstractframe_dealloc, and frame->prev
Fidget-SpinnerJan 31, 2024
01fb224
update documentation
Fidget-SpinnerJan 31, 2024
63f8abd
remove peephole pass in happy case!
Fidget-SpinnerJan 31, 2024
784d171
bail to tier 1 on failure, remove peepholer altogether
Fidget-SpinnerJan 31, 2024
79ba2be
change error codes
Fidget-SpinnerJan 31, 2024
07ba964
Merge remote-tracking branch 'upstream/main' into tier2_abstract_inte…
Fidget-SpinnerFeb 2, 2024
50154ad
Merge remote-tracking branch 'upstream/main' into tier2_abstract_inte…
Fidget-SpinnerFeb 2, 2024
a0b58b1
Integrate the constant promoter
Fidget-SpinnerFeb 2, 2024
4573fca
fix test
Fidget-SpinnerFeb 2, 2024
2096a8a
try fix memleak?
Fidget-SpinnerFeb 2, 2024
4ad2804
Revert "try fix memleak?"
Fidget-SpinnerFeb 2, 2024
224f6b4
fix memleak for real
Fidget-SpinnerFeb 2, 2024
b784617
add more constant prop tests for promoted globals
Fidget-SpinnerFeb 2, 2024
2983553
refactor
Fidget-SpinnerFeb 2, 2024
6a6b11f
Simplify codegen -- either types or consts, not both
Fidget-SpinnerFeb 4, 2024
cfe1de0
cleanup, reduce memory usage even more
Fidget-SpinnerFeb 4, 2024
5ad6211
remove more memory allocations
Fidget-SpinnerFeb 4, 2024
73daf91
zero dynamic memory allocation
Fidget-SpinnerFeb 4, 2024
cac3616
forgot return
Fidget-SpinnerFeb 4, 2024
e7df93a
streamline frame creation
Fidget-SpinnerFeb 4, 2024
65fae9a
more cleanup
Fidget-SpinnerFeb 4, 2024
3fec959
fix bug in return code
Fidget-SpinnerFeb 4, 2024
dde7d12
fix on MSVC
Fidget-SpinnerFeb 4, 2024
04c902b
Add back constant evaluation
Fidget-SpinnerFeb 4, 2024
05e93c2
cleanup
Fidget-SpinnerFeb 4, 2024
55f9bcb
add type annotation
Fidget-SpinnerFeb 4, 2024
0726766
make const zapping more error-proof
Fidget-SpinnerFeb 4, 2024
a8adada
fix stack metadata
Fidget-SpinnerFeb 4, 2024
ab60387
address reviews
Fidget-SpinnerFeb 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
PrevPrevious commit
NextNext commit
fix compiler warnings
  • Loading branch information
@Fidget-Spinner
Fidget-Spinner committedJan 30, 2024
commit425b40d1eb594e716cddb11d373fc46879eb1cd6
7 changes: 5 additions & 2 deletionsPython/abstract_interp_cases.c.h
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

1 change: 0 additions & 1 deletionPython/optimizer_analysis.c
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -1200,7 +1200,6 @@ _Py_uop_analyze_and_optimize(
OPT_STAT_INC(optimizer_attempts);
_PyUOpInstruction *temp_writebuffer = NULL;
bool err_occurred = false;
bool done = false;

temp_writebuffer = PyMem_New(_PyUOpInstruction, buffer_size);
if (temp_writebuffer == NULL) {
Expand Down
29 changes: 13 additions & 16 deletionsTools/cases_generator/tier2_abstract_generator.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -45,6 +45,9 @@
"_CHECK_STACK_SPACE",
"_INIT_CALL_PY_EXACT_ARGS",
"_END_SEND",
"_POP_TOP",
"_NOP",
"_SWAP",
}


Expand DownExpand Up@@ -206,18 +209,15 @@ def _write_body_abstract_interp_pure_uop(
mangled_uop.stack.inputs
)

if uop.name in {"_NOP", "_SWAP", "_POP_TOP"}:
# uop is mandatory - we cannot const evaluate it
if uop.name in NO_CONST_OR_TYPE_EVALUATE:
for in_ in mangled_uop.stack.inputs:
out.emit(f"(void){in_.name};\n")
return

assert (
len(uop.stack.outputs) == 1
), f"Currently we only support 1 stack output for pure ops: {uop}"
# uop is mandatory - we cannot const evaluate it
sym = new_sym(None)
if uop.name in NO_CONST_OR_TYPE_EVALUATE:
out.emit(f"{mangled_uop.stack.outputs[0].name} = {sym}\n")
out.emit(f"if ({mangled_uop.stack.outputs[0].name} == NULL) {{ goto error; }}\n")
return

# Constant prop only handles one output, and no variadic inputs.
# Perhaps in the future we can support these.
Expand DownExpand Up@@ -246,15 +246,12 @@ def _write_body_abstract_interp_pure_uop(
out.emit(f" if (emit_const(&ctx->emitter, {const_val}, shrink_stack) < 0) {{ goto error; }}\n")
out.emit("new_inst.opcode = _NOP;\n")
out.emit("}\n")
out.emit("else {\n")
sym = new_sym(None)
out.emit(f"{mangled_uop.stack.outputs[0].name} = {sym}\n")
out.emit(f"if ({mangled_uop.stack.outputs[0].name} == NULL) {{ goto error; }}\n")
out.emit("}\n")
else:
sym = new_sym(None)
out.emit(f"{mangled_uop.stack.outputs[0].name} = {sym}\n")
out.emit(f"if ({mangled_uop.stack.outputs[0].name} == NULL) {{ goto error; }}\n")
if not mangled_uop.stack.outputs[0].peek:
out.emit("else {\n")
sym = new_sym(None)
out.emit(f"{mangled_uop.stack.outputs[0].name} = {sym}\n")
out.emit(f"if ({mangled_uop.stack.outputs[0].name} == NULL) {{ goto error; }}\n")
out.emit("}\n")

out.emit(f"if ({mangled_uop.stack.outputs[0].name} == NULL) goto error;\n")

Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp