Skip to content

Commit 06247eb

Browse files
committed
Merge branch 'main' into to_bool_specialization
2 parents c64d69d + f2c7c0d commit 06247eb

8 files changed

Lines changed: 1213 additions & 1067 deletions

File tree

Include/internal/pycore_uop_ids.h

Lines changed: 1037 additions & 1032 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/internal/pycore_uop_metadata.h

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_ctypes/_ctypes.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2225,6 +2225,7 @@ c_void_p_from_param_impl(PyObject *type, PyTypeObject *cls, PyObject *value)
22252225
static int
22262226
set_stginfo_ffi_type_pointer(StgInfo *stginfo, struct fielddesc *fmt)
22272227
{
2228+
#if defined(_Py_FFI_SUPPORT_C_COMPLEX)
22282229
if (!fmt->pffi_type->elements) {
22292230
stginfo->ffi_type_pointer = *fmt->pffi_type;
22302231
}
@@ -2244,6 +2245,10 @@ set_stginfo_ffi_type_pointer(StgInfo *stginfo, struct fielddesc *fmt)
22442245
memcpy(stginfo->ffi_type_pointer.elements,
22452246
fmt->pffi_type->elements, els_size);
22462247
}
2248+
#else
2249+
assert(!fmt->pffi_type->elements);
2250+
stginfo->ffi_type_pointer = *fmt->pffi_type;
2251+
#endif
22472252
return 0;
22482253
}
22492254

Python/bytecodes.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6129,6 +6129,13 @@ dummy_func(
61296129
value = PyStackRef_FromPyObjectBorrow(ptr);
61306130
}
61316131

6132+
tier2 pure op(_RROT_3, (bottom, middle, top -- bottom, middle, top)) {
6133+
_PyStackRef temp = top;
6134+
top = middle;
6135+
middle = bottom;
6136+
bottom = temp;
6137+
}
6138+
61326139
tier2 op(_START_EXECUTOR, (executor/4 --)) {
61336140
#ifndef _Py_JIT
61346141
assert(current_executor == (_PyExecutorObject*)executor);

Python/executor_cases.c.h

Lines changed: 96 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/optimizer_bytecodes.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,13 @@ dummy_func(void) {
998998
assert(oparg >= 2);
999999
}
10001000

1001+
op(_RROT_3, (bottom, middle, top -- bottom, middle, top)) {
1002+
JitOptRef temp = top;
1003+
top = middle;
1004+
middle = bottom;
1005+
bottom = temp;
1006+
}
1007+
10011008
op(_LOAD_ATTR_INSTANCE_VALUE, (offset/1, owner -- attr, o)) {
10021009
attr = sym_new_not_null(ctx);
10031010
(void)offset;

Python/optimizer_cases.c.h

Lines changed: 39 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Tools/cases_generator/optimizer_generator.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,7 @@ def replace_opcode_if_evaluates_pure(
258258
# usually for binary ops with passthrough references
259259
2: [("_LOAD_CONST_INLINE_BORROW",
260260
"0, (uintptr_t)result"),
261-
("_SWAP", "3, 0"),
262-
("_SWAP", "2, 0")],
261+
("_RROT_3", "0, 0")],
263262
},
264263
}
265264

0 commit comments

Comments
 (0)