Lines Matching defs:pObj

83 static _PyTime_t CallExternalTimer(ProfilerObject *pObj)
85 PyObject *o = _PyObject_CallNoArgs(pObj->externalTimer);
87 PyErr_WriteUnraisable(pObj->externalTimer);
93 if (pObj->externalTimerUnit > 0.0) {
106 PyErr_WriteUnraisable(pObj->externalTimer);
113 call_timer(ProfilerObject *pObj)
115 if (pObj->externalTimer != NULL) {
116 return CallExternalTimer(pObj);
197 newProfilerEntry(ProfilerObject *pObj, void *key, PyObject *userObj)
202 pObj->flags |= POF_NOMEMORY;
209 pObj->flags |= POF_NOMEMORY;
220 RotatingTree_Add(&pObj->profilerEntries, &self->header);
225 getEntry(ProfilerObject *pObj, void *key)
227 return (ProfilerEntry*) RotatingTree_Get(&pObj->profilerEntries, key);
231 getSubEntry(ProfilerObject *pObj, ProfilerEntry *caller, ProfilerEntry* entry)
238 newSubEntry(ProfilerObject *pObj, ProfilerEntry *caller, ProfilerEntry* entry)
243 pObj->flags |= POF_NOMEMORY;
272 static void clearEntries(ProfilerObject *pObj)
274 RotatingTree_Enum(pObj->profilerEntries, freeEntry, NULL);
275 pObj->profilerEntries = EMPTY_ROTATING_TREE;
277 if (pObj->currentProfilerContext) {
278 PyMem_Free(pObj->currentProfilerContext);
279 pObj->currentProfilerContext = NULL;
281 while (pObj->freelistProfilerContext) {
282 ProfilerContext *c = pObj->freelistProfilerContext;
283 pObj->freelistProfilerContext = c->previous;
286 pObj->freelistProfilerContext = NULL;
290 initContext(ProfilerObject *pObj, ProfilerContext *self, ProfilerEntry *entry)
294 self->previous = pObj->currentProfilerContext;
295 pObj->currentProfilerContext = self;
297 if ((pObj->flags & POF_SUBCALLS) && self->previous) {
300 ProfilerSubEntry *subentry = getSubEntry(pObj, caller, entry);
302 subentry = newSubEntry(pObj, caller, entry);
306 self->t0 = call_timer(pObj);
310 Stop(ProfilerObject *pObj, ProfilerContext *self, ProfilerEntry *entry)
312 _PyTime_t tt = call_timer(pObj) - self->t0;
316 pObj->currentProfilerContext = self->previous;
323 if ((pObj->flags & POF_SUBCALLS) && self->previous) {
326 ProfilerSubEntry *subentry = getSubEntry(pObj, caller, entry);
343 ProfilerObject *pObj = (ProfilerObject*)self;
356 profEntry = getEntry(pObj, key);
358 profEntry = newProfilerEntry(pObj, key, userObj);
363 pContext = pObj->freelistProfilerContext;
365 pObj->freelistProfilerContext = pContext->previous;
372 pObj->flags |= POF_NOMEMORY;
376 initContext(pObj, pContext, profEntry);
386 ProfilerObject *pObj = (ProfilerObject*)self;
390 pContext = pObj->currentProfilerContext;
393 profEntry = getEntry(pObj, key);
395 Stop(pObj, pContext, profEntry);
398 pObj->currentProfilerContext = pContext->previous;
401 pContext->previous = pObj->freelistProfilerContext;
402 pObj->freelistProfilerContext = pContext;
464 pending_exception(ProfilerObject *pObj)
466 if (pObj->flags & POF_NOMEMORY) {
467 pObj->flags -= POF_NOMEMORY;
637 setSubcalls(ProfilerObject *pObj, int nvalue)
640 pObj->flags &= ~POF_SUBCALLS;
642 pObj->flags |= POF_SUBCALLS;
647 setBuiltins(ProfilerObject *pObj, int nvalue)
650 pObj->flags &= ~POF_BUILTINS;
652 pObj->flags |= POF_BUILTINS;
690 flush_unmatched(ProfilerObject *pObj)
692 while (pObj->currentProfilerContext) {
693 ProfilerContext *pContext = pObj->currentProfilerContext;
696 Stop(pObj, pContext, profEntry);
698 pObj->currentProfilerContext = pContext->previous;
734 profiler_clear(ProfilerObject *pObj, PyObject* noarg)
736 clearEntries(pObj);
767 profiler_init(ProfilerObject *pObj, PyObject *args, PyObject *kw)
781 if (setSubcalls(pObj, subcalls) < 0 || setBuiltins(pObj, builtins) < 0)
783 pObj->externalTimerUnit = timeunit;
785 Py_XSETREF(pObj->externalTimer, timer);