static void ExprStmt_asm(KonohaContext *kctx, kStmt *stmt, int shift, int espidx) { kExpr *expr = (kExpr*)kStmt_getObjectNULL(kctx, stmt, KW_ExprPattern); if(IS_Expr(expr)) { EXPR_asm(kctx, stmt, espidx, expr, shift, espidx); } }
static void ReturnStmt_asm(KonohaContext *kctx, kStmt *stmt, int shift, int espidx) { kExpr *expr = (kExpr*)kStmt_getObjectNULL(kctx, stmt, KW_ExprPattern); if(expr != NULL && IS_Expr(expr) && expr->ty != TY_void) { EXPR_asm(kctx, stmt, K_RTNIDX, expr, shift, espidx); } ASM_JMP(kctx, ctxcode->lbEND); // RET }
static void ErrStmt_asm(KonohaContext *kctx, kStmt *stmt, int shift, int espidx) { kString *msg = (kString*)kStmt_getObjectNULL(kctx, stmt, KW_ERR); DBG_ASSERT(IS_String(msg)); ASM(ERROR, stmt->uline, msg); }
static void DumpVisitor_visitErrStmt(KonohaContext *kctx, IRBuilder *self, kStmt *stmt) { emit_string(S_text(kStmt_getObjectNULL(kctx, stmt, KW_ERR)), "", "", DUMPER(self)->indent); }