if (VM.VerifyAssertions) VM.assert(stackOffset == 0);
if (VM.VerifyAssertions) VM._assert(stackOffset == 0);
  private void genMoveParametersToRegisters (boolean hasImplicitThisArg, VM_Method m) {    // AIX computation will differ    spillOffset = STACKFRAME_HEADER_SIZE;    int gp = FIRST_VOLATILE_GPR;    int fp = FIRST_VOLATILE_FPR;    int stackOffset = m.getParameterWords()<<2;    if (hasImplicitThisArg) {      if (gp > LAST_VOLATILE_GPR) genSpillWord(stackOffset);      else asm.emitL(gp++, stackOffset, SP);    }    VM_Type [] types = m.getParameterTypes();    for (int i=0; i<types.length; i++) {      VM_Type t = types[i];      if (t.isLongType()) {	stackOffset -= 8;        if (gp > LAST_VOLATILE_GPR) genSpillDoubleword(stackOffset);	else {	  asm.emitL(gp++, stackOffset,   SP);       // lo register := lo mem (== hi order word)	  if (gp > LAST_VOLATILE_GPR) genSpillWord(stackOffset+4);	  else asm.emitL(gp++, stackOffset+4, SP);  // hi register := hi mem (== lo order word)	}      } else if (t.isFloatType()) {	stackOffset -= 4;        if (fp > LAST_VOLATILE_FPR) genSpillWord(stackOffset);	else asm.emitLFS(fp++, stackOffset, SP);      } else if (t.isDoubleType()) {	stackOffset -= 8;        if (fp > LAST_VOLATILE_FPR) genSpillDoubleword(stackOffset);	else asm.emitLFD(fp++, stackOffset, SP);      } else { // t is object, int, short, char, byte, or boolean	stackOffset -= 4;        if (gp > LAST_VOLATILE_GPR) genSpillWord(stackOffset);	else asm.emitL(gp++, stackOffset, SP);      }    }    if (VM.VerifyAssertions) VM.assert(stackOffset == 0);  }  // push return value of method "m" from register to operand stack.  private void genPopParametersAndPushReturnValue (boolean hasImplicitThisArg, VM_Method m) {    VM_Type t = m.getReturnType();    int parameterSize =       (m.getParameterWords() + (hasImplicitThisArg ? 1 : 0) ) << 2;    if (t.isVoidType()) {      if (0 < parameterSize) asm.emitCAL(SP, parameterSize, SP);    } else if (t.isLongType()) {      asm.emitST (FIRST_VOLATILE_GPR+1, parameterSize-4, SP); // hi mem := hi register (== lo word)      asm.emitSTU(FIRST_VOLATILE_GPR,   parameterSize-8, SP); // lo mem := lo register (== hi word)    } else if (t.isFloatType()) {      asm.emitSTFSU(FIRST_VOLATILE_FPR, parameterSize-4, SP);    } else if (t.isDoubleType()) {      asm.emitSTFDU(FIRST_VOLATILE_FPR, parameterSize-8, SP);    } else { // t is object, int, short, char, byte, or boolean      asm.emitSTU(FIRST_VOLATILE_GPR, parameterSize-4, SP);    }  }