protected internal override bool NeedsBoxRetType(MethodSpec ms) { if (Opcode.GetCTFromType(ms.ReturnType) == Opcode.ct_vt) { return(true); } else { return(false); } }
/* Access to variables on the incoming stack is encoded as -address - 1 */ protected internal override Reg GetLALocation(int la_loc, int la_size, Code c) { if (Opcode.GetCTFromType(c.ret_ts) == Opcode.ct_vt) { la_loc += psize; } return(new ContentsReg { basereg = r_ebp, disp = la_loc + 2 * psize, size = la_size }); }
/* Access to variables on the incoming stack is encoded as -address - 1 */ protected internal override Reg GetLVLocation(int lv_loc, int lv_size, Code c) { if (Opcode.GetCTFromType(c.ret_ts) == Opcode.ct_vt) { lv_loc += psize; } int disp = 0; disp = -lv_size - lv_loc; return(new ContentsReg { basereg = r_ebp, disp = disp, size = lv_size }); }