static void rewrite_obj_return(MVMThreadContext *tc, MVMSpeshGraph *g, MVMSpeshBB *return_bb, MVMSpeshIns *return_ins, MVMSpeshBB *invoke_bb, MVMSpeshIns *invoke_ins) { switch (invoke_ins->info->opcode) { case MVM_OP_invoke_v: MVM_spesh_manipulate_delete_ins(tc, g, return_bb, return_ins); break; case MVM_OP_invoke_o: return_to_set(tc, g, return_ins, invoke_ins->operands[0]); break; default: MVM_oops(tc, "Spesh inline: unhandled case of return_o"); } }
static void rewrite_str_return(MVMThreadContext *tc, MVMSpeshGraph *g, MVMSpeshBB *return_bb, MVMSpeshIns *return_ins, MVMSpeshBB *invoke_bb, MVMSpeshIns *invoke_ins) { switch (invoke_ins->info->opcode) { case MVM_OP_invoke_v: MVM_spesh_manipulate_delete_ins(tc, g, return_bb, return_ins); break; case MVM_OP_invoke_s: return_to_set(tc, g, return_ins, invoke_ins->operands[0]); break; case MVM_OP_invoke_o: return_to_box(tc, g, return_bb, return_ins, invoke_ins->operands[0], MVM_OP_hllboxtype_s, MVM_OP_box_s); break; default: MVM_exception_throw_adhoc(tc, "Spesh inline: unhandled case of return_s"); } }