GuardedBinary.getClearVal1(s), GuardedBinary.getClearVal2(s)); OPT_CallingConvention.expandSysCall(s, ir); } break;
val1, val2); OPT_CallingConvention.expandSysCall(s, ir); } break;   case FLOAT_REM_opcode: case DOUBLE_REM_opcode: {    OPT_Operand val1 = ensureRegister(Binary.getClearVal1(s), s, ir); OPT_Operand val2 = ensureRegister(Binary.getClearVal2(s), s, ir); CallSpecial.mutate2(s, SYSCALL, Binary.getClearResult(s), null, new OPT_SysMethodOperand(VM_Entrypoints.sysDoubleRemainderIPField), val1, val2); OPT_CallingConvention.expandSysCall(s, ir); } break;
    final void perform (OPT_IR ir) {      for (OPT_Instruction s = ir.firstInstructionInCodeOrder(); s != 	     null; s = s.nextInstructionInCodeOrder()) {        switch (s.getOpcode()) {	case ARRAYLENGTH_opcode:	  {	    if (VM.BuildForRealtimeGC) {	    //-#if RVM_WITH_REALTIME_GC		VM_SegmentedArray.optArrayLength(ir,s);	    //-#endif	    }	    else 		// array_ref[VM_ObjectModel.getArrayLengthOffset()] contains the length		Load.mutate(s, INT_LOAD, GuardedUnary.getClearResult(s), 			    GuardedUnary.getClearVal(s),                            I(VM_ObjectModel.getArrayLengthOffset()), 			    new OPT_LocationOperand(), 			    GuardedUnary.getClearGuard(s));	  }	  break;	case GET_OBJ_TIB_opcode:	  {	    VM_ObjectModel.lowerGET_OBJ_TIB(s, ir);	  }	  break;	  //-#if RVM_WITH_REALTIME_GC	case GET_OBJ_RAW_opcode:	  {	    OPT_Operand address = GuardedUnary.getClearVal(s);	    Load.mutate(s, INT_LOAD, GuardedUnary.getClearResult(s), 			address, I(OBJECT_REDIRECT_OFFSET), OPT_LocationOperand.createRedirection(),			GetField.getClearGuard(s));	  }	  break;	  //-#endif	case GET_CLASS_TIB_opcode:	  {	    OPT_TypeOperand type = (OPT_TypeOperand)Unary.getVal(s);	    int offset = type.type.getTibOffset();	    Load.mutate(s, INT_LOAD, Unary.getClearResult(s), 			ir.regpool.makeJTOCOp(ir,s), 			I(offset), new OPT_LocationOperand(offset));	  }	  break;	case GET_TYPE_FROM_TIB_opcode:	  {	    // TODO: Valid location operand?	    Load.mutate(s, INT_LOAD, Unary.getClearResult(s), 			Unary.getClearVal(s), 			I(TIB_TYPE_INDEX << 2), null);	  }	  break;	case GET_SUPERCLASS_IDS_FROM_TIB_opcode:	  {	    // TODO: Valid location operand?	    Load.mutate(s, INT_LOAD, Unary.getClearResult(s), 			Unary.getClearVal(s), 			I(TIB_SUPERCLASS_IDS_INDEX << 2), null);	  }	  break;	case GET_DOES_IMPLEMENT_FROM_TIB_opcode:	  {	    // TODO: Valid location operand?	    Load.mutate(s, INT_LOAD, Unary.getClearResult(s), 			Unary.getClearVal(s), 			I(TIB_DOES_IMPLEMENT_INDEX << 2), null);	  }	  break;	case GET_ARRAY_ELEMENT_TIB_FROM_TIB_opcode:	  {	    // TODO: Valid location operand?	    Load.mutate(s, INT_LOAD, Unary.getClearResult(s), 			Unary.getClearVal(s), 			I(TIB_ARRAY_ELEMENT_TIB_INDEX << 2), null);	  }	  break;	case LONG_DIV_opcode:	  {	    CallSpecial.mutate2(s, SYSCALL, 				GuardedBinary.getClearResult(s), 				null, 				new OPT_SysMethodOperand(VM_Entrypoints.sysLongDivideIPField), 				GuardedBinary.getClearVal1(s), 				GuardedBinary.getClearVal2(s));	    OPT_CallingConvention.expandSysCall(s, ir);	  }	  break;	case LONG_REM_opcode:	  {	    CallSpecial.mutate2(s, SYSCALL, 				GuardedBinary.getClearResult(s), 				null, 				new OPT_SysMethodOperand(VM_Entrypoints.sysLongRemainderIPField), 				GuardedBinary.getClearVal1(s), 				GuardedBinary.getClearVal2(s));	    OPT_CallingConvention.expandSysCall(s, ir);	  }	  break;	  	case LONG_2FLOAT_opcode:	  { 	    if (VM.BuildForPowerPC) {	      CallSpecial.mutate1(s, SYSCALL,				  Unary.getClearResult(s),				  null,				  new OPT_SysMethodOperand(VM_Entrypoints.sysLongToFloatIPField),				  Unary.getClearVal(s));	      OPT_CallingConvention.expandSysCall(s, ir);	    }	  }	  break;	  	case LONG_2DOUBLE_opcode:	  { 	    if (VM.BuildForPowerPC) {	      CallSpecial.mutate1(s, SYSCALL,				  Unary.getClearResult(s),				  null,				  new OPT_SysMethodOperand(VM_Entrypoints.sysLongToDoubleIPField),				  Unary.getClearVal(s));	      OPT_CallingConvention.expandSysCall(s, ir);	    }	  }	  break;	  	case FLOAT_2LONG_opcode:	  { 	    CallSpecial.mutate1(s, SYSCALL,				Unary.getClearResult(s),				null,				new OPT_SysMethodOperand(VM_Entrypoints.sysFloatToLongIPField),				Unary.getClearVal(s));	    OPT_CallingConvention.expandSysCall(s, ir);	  }	  break;	  	case DOUBLE_2LONG_opcode:	  { 	    CallSpecial.mutate1(s, SYSCALL,				Unary.getClearResult(s),				null,				new OPT_SysMethodOperand(VM_Entrypoints.sysDoubleToLongIPField),				Unary.getClearVal(s));	    OPT_CallingConvention.expandSysCall(s, ir);	  }	  break;        }      }    }