/* Creates a stub VMString. Note we didn't initialize the * representation yet, so have to do this somewhat pokily. */ static void create_stub_VMString(MVMThreadContext *tc) { /* Need to create the REPR function table "in advance". */ const MVMREPROps *repr = MVMString_initialize(tc); /* Now we can create a type object; note we have no HOW yet, * though. */ tc->instance->VMString = repr->type_object_for(tc, NULL); }
/* Creates a stub VMString. Note we didn't initialize the * representation yet, so have to do this somewhat pokily. */ static void create_stub_VMString(MVMThreadContext *tc) { /* Need to create the REPR function table "in advance"; the * MVMString REPR specially knows not to duplicately create * this. */ MVMREPROps *repr = MVMString_initialize(tc); /* Now we can create a type object; note we have no HOW yet, * though. */ MVMSTable *st = MVM_gc_allocate_stable(tc, repr, NULL); /* REPR normally sets up size, but we'll have to do that manually * here also. */ st->size = sizeof(MVMString); /* We can now go for the type object. */ tc->instance->VMString = MVM_gc_allocate_type_object(tc, st); /* Set the WHAT in the STable we just made to point to the type * object (this is completely normal). */ st->WHAT = tc->instance->VMString; }
/* Initializes the representations registry, building up all of the various * representations. */ void MVM_repr_initialize_registry(MVMThreadContext *tc) { /* Add all core representations. (If order changed, update reprs.h IDs.) */ register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMString"), MVMString_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "VMArray"), MVMArray_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "VMHash"), MVMHash_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMCFunction"), MVMCFunction_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "KnowHOWREPR"), MVMKnowHOWREPR_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "P6opaque"), MVMP6opaque_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMCode"), MVMCode_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMOSHandle"), MVMOSHandle_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "P6int"), P6int_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "P6num"), P6num_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "Uninstantiable"), Uninstantiable_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "HashAttrStore"), HashAttrStore_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "KnowHOWAttributeREPR"), MVMKnowHOWAttributeREPR_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "P6str"), P6str_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMThread"), MVMThread_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "VMIter"), MVMIter_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMContext"), MVMContext_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "SCRef"), MVMSCRef_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "Lexotic"), MVMLexotic_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "MVMCallCapture"), MVMCallCapture_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "P6bigint"), P6bigint_initialize(tc)); register_repr(tc, MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "NFA"), MVMNFA_initialize(tc)); }