VM_Entrypoints.hiddenSignatureIdField.getOffsetAsInt(),
VM_Entrypoints.hiddenSignatureIdField.getOffset(),
  private static void callExpand(OPT_Instruction call, OPT_IR ir) {    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    boolean isSysCall = call.operator() == IA32_SYSCALL;    // 0. Handle the parameters    int parameterBytes = isSysCall ? expandParametersToSysCall(call,ir) :       expandParametersToCall(call,ir);    // 1. Clear the floating-point stack if dirty.    if (call.operator != CALL_SAVE_VOLATILE) {      int FPRRegisterParams= countFPRParams(call);      FPRRegisterParams = Math.min(FPRRegisterParams,                                    phys.getNumberOfFPRParams());      call.insertBefore(MIR_UnaryNoRes.create(IA32_FCLEAR,                                              IC(FPRRegisterParams)));    }        // 2. Move the return value into a register    expandResultOfCall(call,ir);        // 3. If this is an interface invocation, set up the hidden parameter    //    in the processor object to hold the interface signature id.    if (VM.BuildForIMTInterfaceInvocation) {      if (MIR_Call.hasMethod(call)) {        OPT_MethodOperand mo = MIR_Call.getMethod(call);        if (mo.isInterface()) {          VM_InterfaceMethodSignature sig = VM_InterfaceMethodSignature.findOrCreate(mo.getMemberRef());          OPT_MemoryOperand M = OPT_MemoryOperand.BD(R(phys.getPR()),                                                      VM_Entrypoints.hiddenSignatureIdField.getOffsetAsInt(),                                                      (byte)WORDSIZE, null, null);          call.insertBefore(MIR_Move.create(IA32_MOV,M,IC(sig.getId())));        }      }    }    // 4. ESP must be parameterBytes before call, will be at either parameterBytes    //    or 0 afterwards depending on whether or it is an RVM method or a sysCall.    call.insertBefore(MIR_UnaryNoRes.create(REQUIRE_ESP, IC(parameterBytes)));    call.insertAfter(MIR_UnaryNoRes.create(ADVISE_ESP, IC(isSysCall?parameterBytes:0)));  }