Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 2 additions & 10 deletions pyo3-ffi/src/abstract_.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,13 @@ extern "C" {
...
) -> *mut PyObject;

#[cfg(not(Py_3_13))]
#[cfg(PyPy)]
#[cfg_attr(PyPy, link_name = "_PyPyObject_CallFunction_SizeT")]
pub fn _PyObject_CallFunction_SizeT(
pub(crate) fn _PyObject_CallFunction_SizeT(
callable_object: *mut PyObject,
format: *const c_char,
...
) -> *mut PyObject;
#[cfg(not(Py_3_13))]
#[cfg_attr(PyPy, link_name = "_PyPyObject_CallMethod_SizeT")]
pub fn _PyObject_CallMethod_SizeT(
o: *mut PyObject,
method: *const c_char,
format: *const c_char,
...
) -> *mut PyObject;

#[cfg_attr(PyPy, link_name = "PyPyObject_CallFunctionObjArgs")]
pub fn PyObject_CallFunctionObjArgs(callable: *mut PyObject, ...) -> *mut PyObject;
Expand Down
61 changes: 8 additions & 53 deletions pyo3-ffi/src/cpython/abstract_.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,22 @@ use crate::{
#[cfg(Py_3_8)]
use libc::size_t;

extern "C" {
#[cfg(all(Py_3_8, not(any(PyPy, GraalPy))))]
pub fn _PyStack_AsDict(values: *const *mut PyObject, kwnames: *mut PyObject) -> *mut PyObject;
}
// skipped private _PyStack_AsDict

#[cfg(all(Py_3_8, not(any(PyPy, GraalPy))))]
const _PY_FASTCALL_SMALL_STACK: size_t = 5;

extern "C" {
#[cfg(all(Py_3_8, not(PyPy)))]
pub fn _Py_CheckFunctionResult(
fn _Py_CheckFunctionResult(
tstate: *mut PyThreadState,
callable: *mut PyObject,
result: *mut PyObject,
where_: *const c_char,
) -> *mut PyObject;

#[cfg(all(Py_3_8, not(PyPy)))]
pub fn _PyObject_MakeTpCall(
fn _PyObject_MakeTpCall(
tstate: *mut PyThreadState,
callable: *mut PyObject,
args: *const *mut PyObject,
Expand Down Expand Up @@ -69,7 +66,7 @@ pub unsafe fn PyVectorcall_Function(callable: *mut PyObject) -> Option<vectorcal

#[cfg(all(Py_3_8, not(PyPy)))]
#[inline(always)]
pub unsafe fn _PyObject_VectorcallTstate(
unsafe fn _PyObject_VectorcallTstate(
tstate: *mut PyThreadState,
callable: *mut PyObject,
args: *const *mut PyObject,
Expand Down Expand Up @@ -127,44 +124,9 @@ extern "C" {
) -> *mut PyObject;
}

#[cfg(all(Py_3_8, not(any(PyPy, GraalPy))))]
#[inline(always)]
pub unsafe fn _PyObject_FastCallTstate(
tstate: *mut PyThreadState,
func: *mut PyObject,
args: *const *mut PyObject,
nargs: Py_ssize_t,
) -> *mut PyObject {
_PyObject_VectorcallTstate(tstate, func, args, nargs as size_t, std::ptr::null_mut())
}

#[cfg(all(Py_3_8, not(any(PyPy, GraalPy))))]
#[inline(always)]
pub unsafe fn _PyObject_FastCall(
func: *mut PyObject,
args: *const *mut PyObject,
nargs: Py_ssize_t,
) -> *mut PyObject {
_PyObject_FastCallTstate(PyThreadState_GET(), func, args, nargs)
}

#[cfg(all(Py_3_8, not(PyPy)))]
#[inline(always)]
pub unsafe fn _PyObject_CallNoArg(func: *mut PyObject) -> *mut PyObject {
_PyObject_VectorcallTstate(
PyThreadState_GET(),
func,
std::ptr::null_mut(),
0,
std::ptr::null_mut(),
)
}

extern "C" {
#[cfg(PyPy)]
#[link_name = "_PyPyObject_CallNoArg"]
pub fn _PyObject_CallNoArg(func: *mut PyObject) -> *mut PyObject;
}
// skipped private _PyObject_FastCallTstate
// skipped private _PyObject_FastCall
// skipped private _PyObject_CallNoArg

#[cfg(all(Py_3_8, not(PyPy)))]
#[inline(always)]
Expand Down Expand Up @@ -290,14 +252,7 @@ pub const PY_ITERSEARCH_COUNT: c_int = 1;
pub const PY_ITERSEARCH_INDEX: c_int = 2;
pub const PY_ITERSEARCH_CONTAINS: c_int = 3;

extern "C" {
#[cfg(not(any(PyPy, GraalPy)))]
pub fn _PySequence_IterSearch(
seq: *mut PyObject,
obj: *mut PyObject,
operation: c_int,
) -> Py_ssize_t;
}
// skipped private _PySequence_IterSearch

// skipped _PyObject_RealIsInstance
// skipped _PyObject_RealIsSubclass
Expand Down
7 changes: 1 addition & 6 deletions pyo3-ffi/src/cpython/bytesobject.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
use crate::object::*;
use crate::Py_ssize_t;
#[cfg(not(Py_LIMITED_API))]
use std::ffi::c_char;
use std::ffi::c_int;

#[cfg(not(any(PyPy, GraalPy, Py_LIMITED_API)))]
#[repr(C)]
Expand All @@ -19,10 +17,7 @@ pub struct PyBytesObject {
#[cfg(any(PyPy, GraalPy, Py_LIMITED_API))]
opaque_struct!(pub PyBytesObject);

extern "C" {
#[cfg_attr(PyPy, link_name = "_PyPyBytes_Resize")]
pub fn _PyBytes_Resize(bytes: *mut *mut PyObject, newsize: Py_ssize_t) -> c_int;
}
// skipped private _PyBytes_Resize

#[cfg(not(Py_LIMITED_API))]
#[inline]
Expand Down
16 changes: 4 additions & 12 deletions pyo3-ffi/src/cpython/ceval.rs
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
use crate::cpython::pystate::Py_tracefunc;
use crate::object::{freefunc, PyObject};
use std::ffi::c_int;
use crate::object::PyObject;

extern "C" {
// skipped non-limited _PyEval_CallTracing
// skipped private _PyEval_CallTracing

#[cfg(not(Py_3_11))]
pub fn _PyEval_EvalFrameDefault(arg1: *mut crate::PyFrameObject, exc: c_int) -> *mut PyObject;
// skipped private _PyEval_EvalFrameDefault

#[cfg(Py_3_11)]
pub fn _PyEval_EvalFrameDefault(
tstate: *mut crate::PyThreadState,
frame: *mut crate::_PyInterpreterFrame,
exc: c_int,
) -> *mut crate::PyObject;
// skipped private _PyEval_RequestCodeExtraIndex

pub fn _PyEval_RequestCodeExtraIndex(func: freefunc) -> c_int;
pub fn PyEval_SetProfile(trace_func: Option<Py_tracefunc>, arg1: *mut PyObject);
pub fn PyEval_SetTrace(trace_func: Option<Py_tracefunc>, arg1: *mut PyObject);
}
9 changes: 3 additions & 6 deletions pyo3-ffi/src/cpython/code.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,7 @@ extern "C" {
names: *mut PyObject,
lnotab: *mut PyObject,
) -> *mut PyObject;
pub fn _PyCode_GetExtra(
code: *mut PyObject,
index: Py_ssize_t,
extra: *const *mut c_void,
) -> c_int;
pub fn _PyCode_SetExtra(code: *mut PyObject, index: Py_ssize_t, extra: *mut c_void) -> c_int;

// skipped private _Py_GetExtra
// skipped private _Py_SetExtra
}
28 changes: 4 additions & 24 deletions pyo3-ffi/src/cpython/dictobject.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use crate::object::*;
use crate::pyport::Py_ssize_t;
use std::ffi::c_int;

opaque_struct!(pub PyDictKeysObject);

Expand Down Expand Up @@ -33,25 +32,14 @@ extern "C" {
// skipped _PyDict_GetItemIdWithError
// skipped _PyDict_GetItemStringWithError
// skipped PyDict_SetDefault
pub fn _PyDict_SetItem_KnownHash(
mp: *mut PyObject,
key: *mut PyObject,
item: *mut PyObject,
hash: crate::Py_hash_t,
) -> c_int;
// skipped private _PyDict_SetItem_KnownHash
// skipped _PyDict_DelItem_KnownHash
// skipped _PyDict_DelItemIf
// skipped _PyDict_NewKeysForClass
pub fn _PyDict_Next(
mp: *mut PyObject,
pos: *mut Py_ssize_t,
key: *mut *mut PyObject,
value: *mut *mut PyObject,
hash: *mut crate::Py_hash_t,
) -> c_int;
// skipped _PyDict_Next
// skipped PyDict_GET_SIZE
// skipped _PyDict_ContainsId
pub fn _PyDict_NewPresized(minused: Py_ssize_t) -> *mut PyObject;
// skipped _PyDict_NewPresized
// skipped _PyDict_MaybeUntrack
// skipped _PyDict_HasOnlyStringKeys
// skipped _PyDict_KeysSize
Expand All @@ -71,13 +59,5 @@ extern "C" {
// skipped _PyDictView_New
// skipped _PyDictView_Intersect

#[cfg(Py_3_10)]
pub fn _PyDict_Contains_KnownHash(
op: *mut PyObject,
key: *mut PyObject,
hash: crate::Py_hash_t,
) -> c_int;

#[cfg(not(Py_3_10))]
pub fn _PyDict_Contains(mp: *mut PyObject, key: *mut PyObject, hash: Py_ssize_t) -> c_int;
// skipped _PyDict_Contains_KnownHash
}
27 changes: 7 additions & 20 deletions pyo3-ffi/src/cpython/import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,14 @@ use std::ffi::{c_char, c_int};
// skipped PyInit__imp

extern "C" {
pub fn _PyImport_IsInitialized(state: *mut PyInterpreterState) -> c_int;
// skipped private _PyImport_IsInitialized
// skipped _PyImport_GetModuleId
pub fn _PyImport_SetModule(name: *mut PyObject, module: *mut PyObject) -> c_int;
pub fn _PyImport_SetModuleString(name: *const c_char, module: *mut PyObject) -> c_int;
pub fn _PyImport_AcquireLock();
pub fn _PyImport_ReleaseLock() -> c_int;
#[cfg(not(Py_3_9))]
pub fn _PyImport_FindBuiltin(name: *const c_char, modules: *mut PyObject) -> *mut PyObject;
#[cfg(not(Py_3_11))]
pub fn _PyImport_FindExtensionObject(a: *mut PyObject, b: *mut PyObject) -> *mut PyObject;
pub fn _PyImport_FixupBuiltin(
module: *mut PyObject,
name: *const c_char,
modules: *mut PyObject,
) -> c_int;
pub fn _PyImport_FixupExtensionObject(
a: *mut PyObject,
b: *mut PyObject,
c: *mut PyObject,
d: *mut PyObject,
) -> c_int;
// skipped private _PyImport_SetModule
// skipped private _PyImport_SetModuleString
// skipped private _PyImport_AcquireLock
// skipped private _PyImport_ReleaseLock
// skipped private _PyImport_FixupBuiltin
// skipped private _PyImport_FixupExtensionObject
}

#[cfg(not(PyPy))]
Expand Down
4 changes: 2 additions & 2 deletions pyo3-ffi/src/cpython/initconfig.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::ffi::{c_char, c_int, c_ulong};

#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum _PyStatus_TYPE {
enum _PyStatus_TYPE {
_PyStatus_TYPE_OK = 0,
_PyStatus_TYPE_ERROR = 1,
_PyStatus_TYPE_EXIT = 2,
Expand All @@ -15,7 +15,7 @@ pub enum _PyStatus_TYPE {
#[repr(C)]
#[derive(Copy, Clone)]
pub struct PyStatus {
pub _type: _PyStatus_TYPE,
_type: _PyStatus_TYPE,
pub func: *const c_char,
pub err_msg: *const c_char,
pub exitcode: c_int,
Expand Down
11 changes: 0 additions & 11 deletions pyo3-ffi/src/cpython/objimpl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@ use crate::object::*;
// skipped _PyObject_SIZE
// skipped _PyObject_VAR_SIZE

#[cfg(not(Py_3_11))]
extern "C" {
pub fn _Py_GetAllocatedBlocks() -> crate::Py_ssize_t;
}

#[cfg(not(any(PyPy, GraalPy)))]
#[repr(C)]
#[derive(Copy, Clone)]
Expand Down Expand Up @@ -52,12 +47,6 @@ pub unsafe fn PyObject_IS_GC(o: *mut PyObject) -> c_int {
}) as c_int
}

#[cfg(not(Py_3_11))]
extern "C" {
pub fn _PyObject_GC_Malloc(size: size_t) -> *mut PyObject;
pub fn _PyObject_GC_Calloc(size: size_t) -> *mut PyObject;
}

#[inline]
pub unsafe fn PyType_SUPPORTS_WEAKREFS(t: *mut PyTypeObject) -> c_int {
((*t).tp_weaklistoffset > 0) as c_int
Expand Down
4 changes: 1 addition & 3 deletions pyo3-ffi/src/cpython/pyframe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ use std::ffi::c_char;
use std::ffi::c_int;
use std::ptr::addr_of_mut;

// NB used in `_PyEval_EvalFrameDefault`, maybe we remove this too.
#[cfg(all(Py_3_11, not(PyPy)))]
opaque_struct!(pub _PyInterpreterFrame);
// skipped private _PyInterpreterFrame

#[cfg_attr(windows, link(name = "pythonXY"))]
extern "C" {
Expand Down
30 changes: 3 additions & 27 deletions pyo3-ffi/src/cpython/pystate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,33 +70,9 @@ extern "C" {
pub fn PyThreadState_DeleteCurrent();
}

#[cfg(all(Py_3_9, not(any(Py_3_11, PyPy))))]
pub type _PyFrameEvalFunction = extern "C" fn(
*mut crate::PyThreadState,
*mut crate::PyFrameObject,
c_int,
) -> *mut crate::object::PyObject;

#[cfg(all(Py_3_11, not(PyPy)))]
pub type _PyFrameEvalFunction = extern "C" fn(
*mut crate::PyThreadState,
*mut crate::_PyInterpreterFrame,
c_int,
) -> *mut crate::object::PyObject;

#[cfg(all(Py_3_9, not(PyPy)))]
extern "C" {
/// Get the frame evaluation function.
pub fn _PyInterpreterState_GetEvalFrameFunc(
interp: *mut PyInterpreterState,
) -> _PyFrameEvalFunction;

///Set the frame evaluation function.
pub fn _PyInterpreterState_SetEvalFrameFunc(
interp: *mut PyInterpreterState,
eval_frame: _PyFrameEvalFunction,
);
}
// skipped private _PyFrameEvalFunction
// skipped private _PyInterpreterState_GetEvalFrameFunc
// skipped private _PyInterpreterState_SetEvalFrameFunc

// skipped _PyInterpreterState_GetConfig
// skipped _PyInterpreterState_GetConfigCopy
Expand Down
6 changes: 3 additions & 3 deletions pyo3-ffi/src/cpython/pythonrun.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use std::ffi::{c_char, c_int};

extern "C" {
pub fn PyRun_SimpleStringFlags(arg1: *const c_char, arg2: *mut PyCompilerFlags) -> c_int;
pub fn _PyRun_SimpleFileObject(
fn _PyRun_SimpleFileObject(
fp: *mut FILE,
filename: *mut PyObject,
closeit: c_int,
Expand All @@ -21,7 +21,7 @@ extern "C" {
closeit: c_int,
flags: *mut PyCompilerFlags,
) -> c_int;
pub fn _PyRun_AnyFileObject(
fn _PyRun_AnyFileObject(
fp: *mut FILE,
filename: *mut PyObject,
closeit: c_int,
Expand All @@ -48,7 +48,7 @@ extern "C" {
filename: *const c_char,
flags: *mut PyCompilerFlags,
) -> c_int;
pub fn _PyRun_InteractiveLoopObject(
fn _PyRun_InteractiveLoopObject(
fp: *mut FILE,
filename: *mut PyObject,
flags: *mut PyCompilerFlags,
Expand Down
Loading
Loading