Psyduck - 可達鴨 之 鴨力山大2


Server : LiteSpeed
System : Linux premium217.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : alloknri ( 880)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /opt/alt/python313/include/python3.13/internal/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python313/include/python3.13/internal/pycore_call.h
#ifndef Py_INTERNAL_CALL_H
#define Py_INTERNAL_CALL_H
#ifdef __cplusplus
extern "C" {
#endif

#ifndef Py_BUILD_CORE
#  error "this header requires Py_BUILD_CORE define"
#endif

#include "pycore_identifier.h"    // _Py_Identifier
#include "pycore_pystate.h"       // _PyThreadState_GET()

/* Suggested size (number of positional arguments) for arrays of PyObject*
   allocated on a C stack to avoid allocating memory on the heap memory. Such
   array is used to pass positional arguments to call functions of the
   PyObject_Vectorcall() family.

   The size is chosen to not abuse the C stack and so limit the risk of stack
   overflow. The size is also chosen to allow using the small stack for most
   function calls of the Python standard library. On 64-bit CPU, it allocates
   40 bytes on the stack. */
#define _PY_FASTCALL_SMALL_STACK 5


// Export for 'math' shared extension, used via _PyObject_VectorcallTstate()
// static inline function.
PyAPI_FUNC(PyObject*) _Py_CheckFunctionResult(
    PyThreadState *tstate,
    PyObject *callable,
    PyObject *result,
    const char *where);

extern PyObject* _PyObject_Call_Prepend(
    PyThreadState *tstate,
    PyObject *callable,
    PyObject *obj,
    PyObject *args,
    PyObject *kwargs);

extern PyObject* _PyObject_VectorcallDictTstate(
    PyThreadState *tstate,
    PyObject *callable,
    PyObject *const *args,
    size_t nargsf,
    PyObject *kwargs);

extern PyObject* _PyObject_Call(
    PyThreadState *tstate,
    PyObject *callable,
    PyObject *args,
    PyObject *kwargs);

extern PyObject * _PyObject_CallMethodFormat(
    PyThreadState *tstate,
    PyObject *callable,
    const char *format,
    ...);

// Export for 'array' shared extension
PyAPI_FUNC(PyObject*) _PyObject_CallMethod(
    PyObject *obj,
    PyObject *name,
    const char *format, ...);

extern PyObject* _PyObject_CallMethodIdObjArgs(
    PyObject *obj,
    _Py_Identifier *name,
    ...);

static inline PyObject *
_PyObject_VectorcallMethodId(
    _Py_Identifier *name, PyObject *const *args,
    size_t nargsf, PyObject *kwnames)
{
    PyObject *oname = _PyUnicode_FromId(name); /* borrowed */
    if (!oname) {
        return _Py_NULL;
    }
    return PyObject_VectorcallMethod(oname, args, nargsf, kwnames);
}

static inline PyObject *
_PyObject_CallMethodIdNoArgs(PyObject *self, _Py_Identifier *name)
{
    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
    return _PyObject_VectorcallMethodId(name, &self, nargsf, _Py_NULL);
}

static inline PyObject *
_PyObject_CallMethodIdOneArg(PyObject *self, _Py_Identifier *name, PyObject *arg)
{
    PyObject *args[2] = {self, arg};
    size_t nargsf = 2 | PY_VECTORCALL_ARGUMENTS_OFFSET;
    assert(arg != NULL);
    return _PyObject_VectorcallMethodId(name, args, nargsf, _Py_NULL);
}


/* === Vectorcall protocol (PEP 590) ============================= */

// Call callable using tp_call. Arguments are like PyObject_Vectorcall(),
// except that nargs is plainly the number of arguments without flags.
//
// Export for 'math' shared extension, used via _PyObject_VectorcallTstate()
// static inline function.
PyAPI_FUNC(PyObject*) _PyObject_MakeTpCall(
    PyThreadState *tstate,
    PyObject *callable,
    PyObject *const *args, Py_ssize_t nargs,
    PyObject *keywords);

// Static inline variant of public PyVectorcall_Function().
static inline vectorcallfunc
_PyVectorcall_FunctionInline(PyObject *callable)
{
    assert(callable != NULL);

    PyTypeObject *tp = Py_TYPE(callable);
    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
        return NULL;
    }
    assert(PyCallable_Check(callable));

    Py_ssize_t offset = tp->tp_vectorcall_offset;
    assert(offset > 0);

    vectorcallfunc ptr;
    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
    return ptr;
}


/* Call the callable object 'callable' with the "vectorcall" calling
   convention.

   args is a C array for positional arguments.

   nargsf is the number of positional arguments plus optionally the flag
   PY_VECTORCALL_ARGUMENTS_OFFSET which means that the caller is allowed to
   modify args[-1].

   kwnames is a tuple of keyword names. The values of the keyword arguments
   are stored in "args" after the positional arguments (note that the number
   of keyword arguments does not change nargsf). kwnames can also be NULL if
   there are no keyword arguments.

   keywords must only contain strings and all keys must be unique.

   Return the result on success. Raise an exception and return NULL on
   error. */
static inline PyObject *
_PyObject_VectorcallTstate(PyThreadState *tstate, PyObject *callable,
                           PyObject *const *args, size_t nargsf,
                           PyObject *kwnames)
{
    vectorcallfunc func;
    PyObject *res;

    assert(kwnames == NULL || PyTuple_Check(kwnames));
    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);

    func = _PyVectorcall_FunctionInline(callable);
    if (func == NULL) {
        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
    }
    res = func(callable, args, nargsf, kwnames);
    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
}


static inline PyObject *
_PyObject_CallNoArgsTstate(PyThreadState *tstate, PyObject *func) {
    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
}


// Private static inline function variant of public PyObject_CallNoArgs()
static inline PyObject *
_PyObject_CallNoArgs(PyObject *func) {
    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
    PyThreadState *tstate = _PyThreadState_GET();
    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
}


extern PyObject *const *
_PyStack_UnpackDict(PyThreadState *tstate,
    PyObject *const *args, Py_ssize_t nargs,
    PyObject *kwargs, PyObject **p_kwnames);

extern void _PyStack_UnpackDict_Free(
    PyObject *const *stack,
    Py_ssize_t nargs,
    PyObject *kwnames);

extern void _PyStack_UnpackDict_FreeNoDecRef(
    PyObject *const *stack,
    PyObject *kwnames);

#ifdef __cplusplus
}
#endif
#endif /* !Py_INTERNAL_CALL_H */
Name
Size
Permissions
Options
mimalloc
--
drwxr-xr-x
pycore_abstract.h
1.87 KB
-rw-r--r--
pycore_asdl.h
2.964 KB
-rw-r--r--
pycore_ast.h
30.781 KB
-rw-r--r--
pycore_ast_state.h
6.62 KB
-rw-r--r--
pycore_atexit.h
1.399 KB
-rw-r--r--
pycore_backoff.h
3.811 KB
-rw-r--r--
pycore_bitutils.h
5.885 KB
-rw-r--r--
pycore_blocks_output_buffer.h
8.566 KB
-rw-r--r--
pycore_brc.h
2.053 KB
-rw-r--r--
pycore_bytes_methods.h
3.841 KB
-rw-r--r--
pycore_bytesobject.h
4.979 KB
-rw-r--r--
pycore_call.h
5.991 KB
-rw-r--r--
pycore_capsule.h
0.388 KB
-rw-r--r--
pycore_cell.h
1.032 KB
-rw-r--r--
pycore_ceval.h
10.9 KB
-rw-r--r--
pycore_ceval_state.h
3.829 KB
-rw-r--r--
pycore_code.h
19.398 KB
-rw-r--r--
pycore_codecs.h
2.407 KB
-rw-r--r--
pycore_compile.h
3.662 KB
-rw-r--r--
pycore_complexobject.h
0.574 KB
-rw-r--r--
pycore_condvar.h
2.641 KB
-rw-r--r--
pycore_context.h
1.154 KB
-rw-r--r--
pycore_critical_section.h
7.781 KB
-rw-r--r--
pycore_crossinterp.h
11.844 KB
-rw-r--r--
pycore_descrobject.h
0.53 KB
-rw-r--r--
pycore_dict.h
11.977 KB
-rw-r--r--
pycore_dict_state.h
0.715 KB
-rw-r--r--
pycore_dtoa.h
1.687 KB
-rw-r--r--
pycore_emscripten_signal.h
0.669 KB
-rw-r--r--
pycore_emscripten_trampoline.h
3.105 KB
-rw-r--r--
pycore_exceptions.h
0.879 KB
-rw-r--r--
pycore_faulthandler.h
2.192 KB
-rw-r--r--
pycore_fileutils.h
9.246 KB
-rw-r--r--
pycore_fileutils_windows.h
2.649 KB
-rw-r--r--
pycore_floatobject.h
1.46 KB
-rw-r--r--
pycore_flowgraph.h
1.454 KB
-rw-r--r--
pycore_format.h
0.469 KB
-rw-r--r--
pycore_frame.h
10.62 KB
-rw-r--r--
pycore_freelist.h
4.697 KB
-rw-r--r--
pycore_function.h
1.502 KB
-rw-r--r--
pycore_gc.h
12.663 KB
-rw-r--r--
pycore_genobject.h
0.839 KB
-rw-r--r--
pycore_getopt.h
0.479 KB
-rw-r--r--
pycore_gil.h
2.145 KB
-rw-r--r--
pycore_global_objects.h
3.018 KB
-rw-r--r--
pycore_global_objects_fini_generated.h
115.043 KB
-rw-r--r--
pycore_global_strings.h
26.08 KB
-rw-r--r--
pycore_hamt.h
3.654 KB
-rw-r--r--
pycore_hashtable.h
4.259 KB
-rw-r--r--
pycore_identifier.h
0.503 KB
-rw-r--r--
pycore_import.h
7.55 KB
-rw-r--r--
pycore_importdl.h
3.96 KB
-rw-r--r--
pycore_initconfig.h
6.226 KB
-rw-r--r--
pycore_instruction_sequence.h
2.11 KB
-rw-r--r--
pycore_instruments.h
2.276 KB
-rw-r--r--
pycore_interp.h
14.71 KB
-rw-r--r--
pycore_intrinsics.h
1.715 KB
-rw-r--r--
pycore_jit.h
0.515 KB
-rw-r--r--
pycore_list.h
1.815 KB
-rw-r--r--
pycore_llist.h
2.363 KB
-rw-r--r--
pycore_lock.h
8.338 KB
-rw-r--r--
pycore_long.h
9.732 KB
-rw-r--r--
pycore_memoryobject.h
0.417 KB
-rw-r--r--
pycore_mimalloc.h
1.599 KB
-rw-r--r--
pycore_modsupport.h
3.272 KB
-rw-r--r--
pycore_moduleobject.h
1.535 KB
-rw-r--r--
pycore_namespace.h
0.425 KB
-rw-r--r--
pycore_object.h
27.28 KB
-rw-r--r--
pycore_object_alloc.h
2.125 KB
-rw-r--r--
pycore_object_stack.h
2.328 KB
-rw-r--r--
pycore_object_state.h
0.92 KB
-rw-r--r--
pycore_obmalloc.h
26.775 KB
-rw-r--r--
pycore_obmalloc_init.h
1.89 KB
-rw-r--r--
pycore_opcode_metadata.h
82.736 KB
-rw-r--r--
pycore_opcode_utils.h
2.072 KB
-rw-r--r--
pycore_optimizer.h
8.108 KB
-rw-r--r--
pycore_parking_lot.h
3.272 KB
-rw-r--r--
pycore_parser.h
2.04 KB
-rw-r--r--
pycore_pathconfig.h
0.643 KB
-rw-r--r--
pycore_pyarena.h
2.795 KB
-rw-r--r--
pycore_pyatomic_ft_wrappers.h
7.867 KB
-rw-r--r--
pycore_pybuffer.h
0.498 KB
-rw-r--r--
pycore_pyerrors.h
4.844 KB
-rw-r--r--
pycore_pyhash.h
2.747 KB
-rw-r--r--
pycore_pylifecycle.h
4.36 KB
-rw-r--r--
pycore_pymath.h
8.398 KB
-rw-r--r--
pycore_pymem.h
4.367 KB
-rw-r--r--
pycore_pymem_init.h
3.438 KB
-rw-r--r--
pycore_pystate.h
9.73 KB
-rw-r--r--
pycore_pystats.h
0.41 KB
-rw-r--r--
pycore_pythonrun.h
0.74 KB
-rw-r--r--
pycore_pythread.h
5.304 KB
-rw-r--r--
pycore_qsbr.h
4.812 KB
-rw-r--r--
pycore_range.h
0.338 KB
-rw-r--r--
pycore_runtime.h
12.856 KB
-rw-r--r--
pycore_runtime_init.h
12.739 KB
-rw-r--r--
pycore_runtime_init_generated.h
45.723 KB
-rw-r--r--
pycore_semaphore.h
1.69 KB
-rw-r--r--
pycore_setobject.h
0.929 KB
-rw-r--r--
pycore_signal.h
2.862 KB
-rw-r--r--
pycore_sliceobject.h
0.36 KB
-rw-r--r--
pycore_stackref.h
5.064 KB
-rw-r--r--
pycore_strhex.h
0.989 KB
-rw-r--r--
pycore_structseq.h
0.94 KB
-rw-r--r--
pycore_symtable.h
8.468 KB
-rw-r--r--
pycore_sysmodule.h
1.149 KB
-rw-r--r--
pycore_time.h
11.518 KB
-rw-r--r--
pycore_token.h
2.931 KB
-rw-r--r--
pycore_traceback.h
3.544 KB
-rw-r--r--
pycore_tracemalloc.h
4.427 KB
-rw-r--r--
pycore_tstate.h
1.322 KB
-rw-r--r--
pycore_tuple.h
0.801 KB
-rw-r--r--
pycore_typeobject.h
8.669 KB
-rw-r--r--
pycore_typevarobject.h
0.902 KB
-rw-r--r--
pycore_ucnhash.h
0.936 KB
-rw-r--r--
pycore_unicodeobject.h
12.959 KB
-rw-r--r--
pycore_unicodeobject_generated.h
129.043 KB
-rw-r--r--
pycore_unionobject.h
0.725 KB
-rw-r--r--
pycore_uop_ids.h
10.026 KB
-rw-r--r--
pycore_uop_metadata.h
38.544 KB
-rw-r--r--
pycore_warnings.h
0.82 KB
-rw-r--r--
pycore_weakref.h
3.253 KB
-rw-r--r--