static void hookup_prim(STATE, Symbol* meth, Symbol* prim) { MethodTable* tbl = G(rubinius)->metaclass(state)->method_table(); Executable* oc = Executable::allocate(state, Qnil); oc->primitive(state, prim); assert(oc->resolve_primitive(state)); tbl->store(state, meth, oc, G(sym_public)); }
void System::attach_primitive(STATE, Module* mod, bool meta, Symbol* name, Symbol* prim) { MethodTable* tbl; if(meta) { tbl = mod->singleton_class(state)->method_table(); } else { tbl = mod->method_table(); } Executable* oc = Executable::allocate(state, Qnil); oc->primitive(state, prim); oc->resolve_primitive(state); tbl->store(state, name, oc, G(sym_public)); }