示例#1
0
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);
	}
}
示例#2
0
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
}
示例#3
0
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);
}
示例#4
0
static void DumpVisitor_visitErrStmt(KonohaContext *kctx, IRBuilder *self, kStmt *stmt)
{
	emit_string(S_text(kStmt_getObjectNULL(kctx, stmt, KW_ERR)), "", "", DUMPER(self)->indent);
}