Skip to content

Commit d5e9fdb

Browse files
committed
optimize _MAKE_HEAP_FUNCTION for owned references
1 parent fb8d8d9 commit d5e9fdb

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

Lib/test/test_capi/test_opt.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,7 +1352,7 @@ def testfunc(n):
13521352
self.assertNotIn("_MAKE_HEAP_SAFE", uops)
13531353
self.assertIn("_YIELD_VALUE", uops)
13541354

1355-
def test_make_heap_safe_not_optimized_for_owned(self):
1355+
def test_make_heap_safe_optimized_owned(self):
13561356
def returns_owned(x):
13571357
return x + 1
13581358
def testfunc(n):
@@ -1364,7 +1364,7 @@ def testfunc(n):
13641364
self.assertEqual(res, TIER2_THRESHOLD)
13651365
self.assertIsNotNone(ex)
13661366
uops = get_opnames(ex)
1367-
self.assertIn("_MAKE_HEAP_SAFE", uops)
1367+
self.assertNotIn("_MAKE_HEAP_SAFE", uops)
13681368
self.assertIn("_RETURN_VALUE", uops)
13691369

13701370
def test_for_iter(self):

Python/optimizer_bytecodes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ dummy_func(void) {
9090

9191
op(_MAKE_HEAP_SAFE, (value -- value)) {
9292
// eliminate _MAKE_HEAP_SAFE when we *know* the value is immortal
93-
if (sym_is_immortal(PyJitRef_Unwrap(value))) {
93+
if (sym_is_immortal(PyJitRef_Unwrap(value)) || !PyJitRef_IsBorrowed(value)) {
9494
ADD_OP(_NOP, 0, 0);
9595
}
9696
value = PyJitRef_StripBorrowInfo(value);

Python/optimizer_cases.c.h

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)