コード例 #1
0
ファイル: _lsprof.c プロジェクト: andrcmdr/unladen-swallow
static ProfilerEntry*
newProfilerEntry(ProfilerObject *pObj, void *key, PyObject *userObj)
{
	ProfilerEntry *self;
	self = (ProfilerEntry*) malloc(sizeof(ProfilerEntry));
	if (self == NULL) {
		pObj->flags |= POF_NOMEMORY;
		return NULL;
	}
	userObj = normalizeUserObj(userObj);
	if (userObj == NULL) {
		PyErr_Clear();
		free(self);
		pObj->flags |= POF_NOMEMORY;
		return NULL;
	}
	self->header.key = key;
	self->userObj = userObj;
	self->tt = 0;
	self->it = 0;
	self->callcount = 0;
	self->recursivecallcount = 0;
	self->recursionLevel = 0;
	self->calls = EMPTY_ROTATING_TREE;
	RotatingTree_Add(&pObj->profilerEntries, &self->header);
	return self;
}
コード例 #2
0
ファイル: _lsprof.c プロジェクト: herenowcoder/stackless
static void
SelectStackByKey(ProfilerObject *pObj, void *key)
{
    ProfilerStack *old = pObj->currentProfilerStack;
    ProfilerStack *stack;

    if (old) {
        if (old->header.key == key)
            return;
        old->t0 = pObj->currentTime;
    }
    stack = (ProfilerStack*)RotatingTree_Get(&pObj->profilerStacks, key);
    if (stack) {
        if (stack->currentProfilerContext)
            stack->currentProfilerContext->paused += pObj->currentTime - stack->t0;
    }
    else {
        stack = (ProfilerStack*) malloc(sizeof(ProfilerStack));
        if (stack != NULL) {
            stack->currentProfilerContext = NULL;
            stack->header.key = key;
            RotatingTree_Add(&pObj->profilerStacks, (rotating_node_t*)stack);
            ++pObj->nProfilerStacks;
        }
    }
    pObj->currentProfilerStack = stack;
}
コード例 #3
0
ファイル: _lsprof.c プロジェクト: andrcmdr/unladen-swallow
static ProfilerSubEntry *
newSubEntry(ProfilerObject *pObj,  ProfilerEntry *caller, ProfilerEntry* entry)
{
	ProfilerSubEntry *self;
	self = (ProfilerSubEntry*) malloc(sizeof(ProfilerSubEntry));
	if (self == NULL) {
		pObj->flags |= POF_NOMEMORY;
		return NULL;
	}
	self->header.key = (void *)entry;
	self->tt = 0;
	self->it = 0;
	self->callcount = 0;
	self->recursivecallcount = 0;
	self->recursionLevel = 0;
	RotatingTree_Add(&caller->calls, &self->header);
	return self;
}