sml_intinf_t * sml_intinf_new() { sml_intinf_t *obj; assert(sml_saved()); obj = sml_alloc(sizeof(sml_intinf_t)); OBJ_HEADER(obj) = OBJ_HEADER_WORD(OBJTYPE_INTINF, sizeof(sml_intinf_t)); sml_set_finalizer(obj, intinf_free); sml_intinf_init(obj); return obj; }
void * sml_record_alloc(size_t payload_size) { void *obj; size_t bitmap_size; ASSERT(((unsigned int)payload_size & OBJ_SIZE_MASK) == payload_size); payload_size = ALIGNSIZE(payload_size, sizeof(void*)); bitmap_size = OBJ_BITMAPS_LEN(payload_size) * SIZEOF_BITMAP; obj = sml_alloc(payload_size + bitmap_size, sml_load_frame_pointer()); OBJ_HEADER(obj) = OBJ_HEADER_WORD(OBJTYPE_RECORD, payload_size); ASSERT(OBJ_SIZE(obj) == payload_size); ASSERT(OBJ_TYPE(obj) == OBJTYPE_RECORD); ASSERT(OBJ_GC1(obj) == 0 && OBJ_GC2(obj) == 0); return obj; }
void * sml_obj_alloc(unsigned int objtype, size_t payload_size) { void *obj; ASSERT(((unsigned int)payload_size & OBJ_SIZE_MASK) == payload_size); obj = sml_alloc(payload_size, sml_load_frame_pointer()); OBJ_HEADER(obj) = OBJ_HEADER_WORD(objtype, payload_size); ASSERT(OBJ_SIZE(obj) == payload_size); ASSERT(OBJ_TYPE(obj) == OBJTYPE_UNBOXED_VECTOR || OBJ_TYPE(obj) == OBJTYPE_BOXED_VECTOR || OBJ_TYPE(obj) == OBJTYPE_UNBOXED_ARRAY || OBJ_TYPE(obj) == OBJTYPE_BOXED_ARRAY); ASSERT(OBJ_GC1(obj) == 0 && OBJ_GC2(obj) == 0); return obj; }
void * sml_obj_alloc(unsigned int objtype, size_t payload_size) { void *obj; assert(sml_saved()); assert(((unsigned int)payload_size & OBJ_SIZE_MASK) == payload_size); obj = sml_alloc(payload_size); OBJ_HEADER(obj) = OBJ_HEADER_WORD(objtype, payload_size); assert(OBJ_SIZE(obj) == payload_size); assert(OBJ_TYPE(obj) == OBJTYPE_UNBOXED_VECTOR || OBJ_TYPE(obj) == OBJTYPE_BOXED_VECTOR || OBJ_TYPE(obj) == OBJTYPE_UNBOXED_ARRAY || OBJ_TYPE(obj) == OBJTYPE_BOXED_ARRAY || OBJ_TYPE(obj) == OBJTYPE_INTINF); return obj; }