Uh oh!
There was an error while loading. Please reload this page.
gh-100239: Handle NaN and zero division in guards - #128963
Conversation
Uh oh!
There was an error while loading. Please reload this page.
iritkatriel
commented
Jan 17, 2025
Shall we check for NaN as well? |
Eclips4
commented
Jan 17, 2025
You mean "Shall we continue with specialization if we encounter a NaN value?"? |
iritkatriel
commented
Jan 17, 2025
Yes, I guess it would be fine. Might be good to cover this in the tests though. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
iritkatriel
commented
Jan 17, 2025
Doesn't need to be in this PR, but I don't think we have a test for deoptimizing |
Co-authored-by: Tomas R. <tomas.roun8@gmail.com>
Eclips4
commented
Jan 18, 2025
Unfortunately Details==CPython3.14.0a4+ (heads/fix-zero-division-dirty:850a862a7d8, Jan182025, 13:17:14) [Clang16.0.0 (clang-1600.0.26.4)]
==macOS-15.1.1-arm64-arm-64bit-Mach-Olittle-endian==Pythonbuild: debug==cwd:/Users/eclips4/programming/programming-languages/cpython/build/test_python_worker_4826æ==CPUcount: 8==encodings: locale=UTF-8FS=utf-8==resources: alltestresourcesaredisabled, use-uoptiontounskiptestsUsingrandomseed: 5489788770:00:00loadavg: 2.19Run1testsequentiallyinasingleprocess0:00:00loadavg: 2.19 [1/1] test_opcachebeginning6repetitions. Showingnumberofleaks (. for0orless, Xfor10ormore)
123:456test_binary_op (test.test_opcache.TestSpecializer.test_binary_op) ... ok----------------------------------------------------------------------Ran1testin0.006sOKXtest_binary_op (test.test_opcache.TestSpecializer.test_binary_op) ... ok----------------------------------------------------------------------Ran1testin0.007sOKXtest_binary_op (test.test_opcache.TestSpecializer.test_binary_op) ... FAIL======================================================================FAIL: test_binary_op (test.test_opcache.TestSpecializer.test_binary_op)
----------------------------------------------------------------------Traceback (mostrecentcalllast):
File"/Users/eclips4/programming/programming-languages/cpython/Lib/test/test_opcache.py", line1405, intest_binary_opbinary_op_nan()
~~~~~~~~~~~~~^^File"/Users/eclips4/programming/programming-languages/cpython/Lib/test/test_opcache.py", line1402, inbinary_op_nanself.assert_no_opcode(compactlong_lhs, "BINARY_OP_EXTEND")
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/Users/eclips4/programming/programming-languages/cpython/Lib/test/test_opcache.py", line42, inassert_no_opcodeself.assertNotIn(opname, opnames)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^AssertionError: 'BINARY_OP_EXTEND'unexpectedlyfoundin {'RESUME_CHECK', 'RETURN_VALUE', 'POP_TOP', 'LOAD_CONST_IMMORTAL', 'BINARY_OP_EXTEND', 'LOAD_SMALL_INT', 'LOAD_FAST'}
----------------------------------------------------------------------Ran1testin0.012sFAILED (failures=1)
testtest_opcachefailedtest_opcachefailed (1failure)
==Testsresult: FAILURE==1testfailed:
test_opcacheTotalduration: 174msTotaltests: run=1 (filtered) failures=1Totaltestfiles: run=1/1 (filtered) failed=1Result: FAILUREI'm digging into what's happening. |
Eclips4
commented
Jan 18, 2025
Okay, It seems that to get de-specialization it need to "hit" more guards. I'm not sure, though, if this is right. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Eclips4
commented
Jan 19, 2025
Thank you Irit and Tomas for your review! |
…P_EXTEND` (python#128963) Co-authored-by: Tomas R. <tomas.roun8@gmail.com> Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.