StacklessのPyCFrame_Typeを登録する
slp_register_execute(PyTypeObject *t, char *name, PyFrame_ExecFunc *good, PyFrame_ExecFunc *bad)
実行時呼ばれる->run_cframe(PyFrameObject *f, int exc, PyObject *retval)
/* register the cframe exec func */ return slp_register_execute(&PyCFrame_Type, "run_cframe", run_cframe, REF_INVALID_EXEC(run_cframe));
PyTypeObject PyCFrame_Type = {
PyObject_HEAD_INIT(&PyType_Type) 0, "stackless.cframe", sizeof(PyCFrameObject), 0, (destructor)cframe_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ PyObject_GenericSetAttr, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */ 0, /* tp_doc */ (traverseproc)cframe_traverse, /* tp_traverse */ (inquiry) cframe_clear, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ cframe_methods, /* tp_methods */ cframe_memberlist, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ cframe_new, /* tp_new */ _PyObject_Del, /* tp_free */
};