asm.emitMOV_Reg_RegDisp(S0, JTOC, VM_Entrypoints.the_boot_recordField.getOffsetAsInt()); asm.emitCALL_RegDisp(S0, VM_Entrypoints.sysDoubleToLongIPField.getOffsetAsInt());
asm.emitMOV_Reg_RegDisp(S0, JTOC, VM_Entrypoints.the_boot_recordField.getOffset()); asm.emitCALL_RegDisp(S0, VM_Entrypoints.sysDoubleToLongIPField.getOffset());
  protected final void emit_d2l() {    // (1) save RVM nonvolatiles    int numNonVols = NONVOLATILE_GPRS.length;    for (int i = 0; i<numNonVols; i++) {      asm.emitPUSH_Reg(NONVOLATILE_GPRS[i]);    }    // (2) Push args to C function (reversed)    asm.emitPUSH_RegDisp(SP, numNonVols*WORDSIZE+4);    asm.emitPUSH_RegDisp(SP, numNonVols*WORDSIZE+4);    // (3) invoke C function through bootrecord    asm.emitMOV_Reg_RegDisp(S0, JTOC, VM_Entrypoints.the_boot_recordField.getOffsetAsInt());    asm.emitCALL_RegDisp(S0, VM_Entrypoints.sysDoubleToLongIPField.getOffsetAsInt());    // (4) pop arguments    asm.emitPOP_Reg(S0);    asm.emitPOP_Reg(S0);    // (5) restore RVM nonvolatiles    for (int i = numNonVols-1; i >=0; i--) {      asm.emitPOP_Reg(NONVOLATILE_GPRS[i]);    }    // (6) put result on expression stack    asm.emitMOV_RegDisp_Reg(SP, 4, T1);    asm.emitMOV_RegDisp_Reg(SP, 0, T0);  }