public class MethodInstr : IInstr {
private PEAPI.MethodOp op;
- private IMethodRef operand;
+ private BaseMethodRef operand;
- public MethodInstr (PEAPI.MethodOp op, IMethodRef operand)
+ public MethodInstr (PEAPI.MethodOp op, BaseMethodRef operand, Location loc)
+ : base (loc)
{
this.op = op;
this.operand = operand;
+
+ if (op == PEAPI.MethodOp.newobj || op == PEAPI.MethodOp.callvirt)
+ operand.CallConv |= PEAPI.CallConv.Instance;
}
- public void Emit (CodeGen code_gen, PEAPI.CILInstructions cil)
+ public override void Emit (CodeGen code_gen, MethodDef meth,
+ PEAPI.CILInstructions cil)
{
operand.Resolve (code_gen);
cil.MethInst (op, operand.PeapiMethod);