static KMETHOD KMethodFunc_UnboxPrototypeSetter(KonohaContext *kctx, KonohaStack *sfp) { kMethod *mtd = sfp[K_MTDIDX].calledMethod; ksymbol_t key = (ksymbol_t)mtd->delta; kParam *pa = kMethod_GetParam(mtd); KLIB kObjectProto_SetUnboxValue(kctx, sfp[0].asObject, key, pa->paramtypeItems[0].typeAttr, sfp[1].unboxValue); KReturnUnboxValue(sfp[1].unboxValue); }
// @SmartReturn void Object.set(Symbol symbol, Object value) static KMETHOD Prototype_SetObject(KonohaContext *kctx, KonohaStack *sfp) { ksymbol_t symbol = (ksymbol_t)sfp[1].intValue; KClass *c = kObject_class(sfp[2].asObject); if(KClass_Is(UnboxType, c)) { KLIB kObjectProto_SetUnboxValue(kctx, sfp[0].asObject, symbol, c->typeId, kObject_Unbox(sfp[2].asObject)); } else { KLIB kObjectProto_SetObject(kctx, sfp[0].asObject, symbol, c->typeId, sfp[2].asObject); } }
static void kUntypedNode_SetLabelBlock(KonohaContext *kctx, kUntypedNode *node, ksymbol_t label, bblock_t labelId) { KLIB kObjectProto_SetUnboxValue(kctx, node, label, KType_Int, labelId); }
static void kNode_SetLabelNode(KonohaContext *kctx, kNode *stmt, ksymbol_t label, bblock_t labelId) { KLIB kObjectProto_SetUnboxValue(kctx, stmt, label, KType_Int, labelId); }
// @SmartReturn void Object.set(Symbol symbol, int value) static KMETHOD Prototype_SetInt(KonohaContext *kctx, KonohaStack *sfp) { ksymbol_t symbol = (ksymbol_t)sfp[1].intValue; KLIB kObjectProto_SetUnboxValue(kctx, sfp[0].asObject, symbol, KType_Int, sfp[2].unboxValue); }
static void kNode_SetLabelBlock(KonohaContext *kctx, kNode *stmt, ksymbol_t label, Block *block) { KLIB kObjectProto_SetUnboxValue(kctx, stmt, label, KType_Int, (uintptr_t) block); }