| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8c88400 commit bd27ce6
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2755,6 +2755,21 @@ def testfunc(n): | |||
| 2755 | 2755 | self.assertNotIn("_GUARD_TOS_INT", uops) | |
| 2756 | 2756 | self.assertIn("_POP_TOP_NOP", uops) | |
| 2757 | 2757 | ||
| 2758 | + def test_check_is_not_py_callable(self): | ||
| 2759 | + def testfunc(n): | ||
| 2760 | + total = 0 | ||
| 2761 | + f = len | ||
| 2762 | + xs = (1, 2, 3) | ||
| 2763 | + for _ in range(n): | ||
| 2764 | + total += f(xs) | ||
| 2765 | + return total | ||
| 2766 | + | ||
| 2767 | + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) | ||
| 2768 | + self.assertEqual(res, 3 * TIER2_THRESHOLD) | ||
| 2769 | + self.assertIsNotNone(ex) | ||
| 2770 | + uops = get_opnames(ex) | ||
| 2771 | + self.assertNotIn("_CHECK_IS_NOT_PY_CALLABLE", uops) | ||
| 2772 | + | ||
| 2758 | 2773 | def test_call_len_string(self): | |
| 2759 | 2774 | def testfunc(n): | |
| 2760 | 2775 | for _ in range(n): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1217,6 +1217,13 @@ dummy_func(void) { | |||
| 1217 | 1217 | (void)framesize; | |
| 1218 | 1218 | } | |
| 1219 | 1219 | ||
| 1220 | + op(_CHECK_IS_NOT_PY_CALLABLE, (callable, unused, unused[oparg] -- callable, unused, unused[oparg])) { | ||
| 1221 | + PyTypeObject *type = sym_get_type(callable); | ||
| 1222 | + if (type && type != &PyFunction_Type && type != &PyMethod_Type) { | ||
| 1223 | + ADD_OP(_NOP, 0, 0); | ||
| 1224 | + } | ||
| 1225 | + } | ||
| 1226 | + | ||
| 1220 | 1227 | op(_PUSH_FRAME, (new_frame -- )) { | |
| 1221 | 1228 | SYNC_SP(); | |
| 1222 | 1229 | if (!CURRENT_FRAME_IS_INIT_SHIM()) { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments