Example #1
0
File: ph.c Project: Rayerd/dmd
void * __cdecl ph_realloc(void *p,size_t nbytes)
{
    //dbg_printf("ph_realloc(%p,%d)\n",p,nbytes);
    if (!p)
        return ph_malloc(nbytes);
    if (!nbytes)
    {   ph_free(p);
        return NULL;
    }
    void *newp = ph_malloc(nbytes);
    if (newp)
    {   unsigned oldsize = ((unsigned *)p)[-1];
        memcpy(newp,p,oldsize);
        ph_free(p);
    }
    return newp;
}
Example #2
0
/*
 * .
 */
int main(int argc, char *argv[])
{
	PheapIndex* idx;
	Klass* klass;
	Klass* klass2;
	Symbol* symbol;
	
	idx = PheapIndex::instance();
	if (ph_isnew()) {
		klass = new Klass;
		printf("klass=%p\n", klass);
		klass2 = new Klass;
		printf("klass2=%p\n", klass2);
		char* class_name = (char*) ph_malloc(3);
		strcpy(class_name, "AB");
		klass->set_class_name(class_name);
		char* k_n = klass->get_class_name();
		printf("class name: %s\n", k_n);
		symbol = new Symbol;
		char* symbol_name = (char*) ph_malloc(3);
		strcpy(symbol_name, "BC");
		symbol->set_name(symbol_name);
		klass->set_symbol(symbol);
		idx->add_klass(class_name, klass);
		idx->add_klass(symbol_name, klass2);
		// test heap limits
		while (1) {
			ph_malloc(1024);
		}
	} else {
		klass = idx->get_class((char*)"AB");
		if (klass == NULL) printf("Klass not found!");
		char* k_n = klass->get_class_name();
		printf("class name: %s\n", k_n);
		printf("symbol name: %s\n", klass->get_symbol()->get_name());
		klass2 = idx->get_class((char*)"BC");
	}
	
	ph_close();
	
}
Example #3
0
File: ph.c Project: Rayerd/dmd
void *ph_calloc(size_t nbytes)
{   void *p;

    p = ph_malloc(nbytes);
    return p ? memset(p,0,nbytes) : p;
}