예제 #1
0
static int
size_gvars(HashT *vars)
{
    int		sz = sizeof(int);	/* for nvars */
    int		hval;

    if (vars) {
	for (hval = 0; hval < vars->size; hval++) {
	    sz += size_vars(vars->table[hval]);
	}
    }
    return sz;
}
예제 #2
0
파일: dbpack.c 프로젝트: braddr/cold
Int size_object(Obj *obj, int memory_size)
{
    Int size = 0;

    size = size_list(obj->parents, memory_size);
    size += size_list(obj->children, memory_size);
    size += size_vars(obj, memory_size);
    size += size_methods(obj, memory_size);

    if (!memory_size)
        size += size_ident(obj->objname, memory_size);

    if (memory_size) {
        size += sizeof(Obj);
    }

    return size;
}
예제 #3
0
static int
size_methods(HashT *methods)
{
    int		hval, sz = sizeof(int);		/* for nmethods */
    Method	*m;

    if (methods) {
	for (hval = 0; hval < methods->size; hval++) {
	    for (m = (Method *) methods->table[hval]; m; m = m->next) {
		sz += sizeof(m->name);
		sz += sizeof(unsigned char);	/* for blocked flag */
		sz += sizeof(m->ninst) + m->ninst * sizeof(Inst);
		sz += sizeof(int);	/* for nvars */
		sz += NERRS * sizeof(enum eh) + size_vars(m->vars);
	    }
	}
    }
    return sz;
}