|
@@ -402,7 +402,7 @@ int hl_module_init( hl_module *m ) {
|
|
switch (t->kind) {
|
|
switch (t->kind) {
|
|
case HOBJ:
|
|
case HOBJ:
|
|
rt = hl_get_obj_rt(t);
|
|
rt = hl_get_obj_rt(t);
|
|
- v = (vdynamic*)malloc(rt->size);
|
|
|
|
|
|
+ v = (vdynamic*)hl_malloc(&m->ctx.alloc,rt->size);
|
|
v->t = t;
|
|
v->t = t;
|
|
for (j = 0; j<c->nfields; j++) {
|
|
for (j = 0; j<c->nfields; j++) {
|
|
int idx = c->fields[j];
|
|
int idx = c->fields[j];
|
|
@@ -412,11 +412,21 @@ int hl_module_init( hl_module *m ) {
|
|
case HI32:
|
|
case HI32:
|
|
*(int*)addr = m->code->ints[idx];
|
|
*(int*)addr = m->code->ints[idx];
|
|
break;
|
|
break;
|
|
|
|
+ case HBOOL:
|
|
|
|
+ *(bool*)addr = idx != 0;
|
|
|
|
+ break;
|
|
|
|
+ case HF64:
|
|
|
|
+ *(double*)addr = m->code->floats[idx];
|
|
|
|
+ break;
|
|
case HBYTES:
|
|
case HBYTES:
|
|
*(const void**)addr = hl_get_ustring(m->code, idx);
|
|
*(const void**)addr = hl_get_ustring(m->code, idx);
|
|
break;
|
|
break;
|
|
|
|
+ case HTYPE:
|
|
|
|
+ *(hl_type**)addr = m->code->types + idx;
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
- hl_fatal("assert");
|
|
|
|
|
|
+ *(void**)addr = *(void**)(m->globals_data + m->globals_indexes[idx]);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
break;
|