Exemple #1
0
static void KRuntimeContext_Reftrace(KonohaContext *kctx, KonohaContextVar *ctx, KObjectVisitor *visitor)
{
	KonohaStack *sp = ctx->stack->stack;
	while(sp < ctx->esp) {
		KRefTrace(sp[0].asObject);
		sp++;
	}
	KRefTrace(ctx->stack->ContextConstList);
	KRefTrace(ctx->stack->ThrownException);
}
Exemple #2
0
static void buffereventCBArg_Reftrace(KonohaContext *kctx, kObject *o, KObjectVisitor *visitor)
{
	struct buffereventCBArg *bcbarg = (struct buffereventCBArg *) o;
	enum e_buffereventCB i;
	for (i = BEV_ReadCB; i < NUM_BuffereventCB; i++){
		KRefTrace(bcbarg->kcb[i]);
	}
	KRefTrace(bcbarg->cbev);
	KRefTrace(bcbarg->arg);
}
Exemple #3
0
static void kResultSet_Reftrace(KonohaContext *kctx, kObject *p, KObjectVisitor *visitor)
{
	kResultSet *rs = (kResultSet *)p;
	KColumn *col = rs->column;
	KColumn *end = col + rs->column_size;
	while(col < end) {
		KRefTrace(col->name);
		if(KType_Is(UnboxType, col->type)) {
			KRefTrace(col->val.asObject);
		}
	}
	KRefTraceNullable(rs->connectionNULL);
}
static void Person_Reftrace(KonohaContext *kctx, kObject *o, KObjectVisitor *visitor)
{
	/* Garbage collector (GC) cannot recognize in which position of the field
	 * an object exists. The function tells to GC which object should be traced. */
	struct Person *p = (struct Person *) o;
	/* If p->some_field is Nullable, please use 
	 * KRefTraceNullable() macro instead of KRefTrace(). */
	KRefTrace(p->name);
	/* It is not necessary to trace p->age field,
	 * because p->age is not an Object */
}
Exemple #5
0
static void kThread_Reftrace(KonohaContext *kctx, kObject *o, KObjectVisitor *visitor)
{
	kThread *t = (kThread *)o;
	KRefTrace(t->func);
	//KRefTrace(t->args);
}
Exemple #6
0
static void eventCBArg_Reftrace(KonohaContext *kctx, kObject *o, KObjectVisitor *visitor)
{
	struct eventCBArg *cba = (struct eventCBArg *) o;
	KRefTrace(cba->kcb);
	KRefTrace(cba->arg);
}