Index: trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 253)
+++ trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 254)
@@ -288,14 +288,14 @@
 private:
 	void set_rex(int op_size,int reg,int index_reg,int base_reg);
-	void set_mod_rm_sib_disp(char mod,int reg,int scale,int index_reg,int base_reg,long disp, Schedule::Type scheduleType = Schedule::None );
-	void __op_format(int op_size,char op_prefix,char opcode1,char opcode2,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	const PertialSchedule *set_mod_rm_sib_disp(char mod,int reg,int scale,int index_reg,int base_reg,long disp, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *__op_format(int op_size,char op_prefix,char opcode1,char opcode2,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
 public:
 	void op_mov_RV					(int op_size,int reg,long i32data, Schedule::Type scheduleType = Schedule::None );
 	void op_mov_RV64				(int reg,_int64 i64data);
-	void op_mov_RM					(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_mov_RM_ex				(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None );
-	void op_mov_MR					(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_mov_MR_ex				(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None );
-	void op_mov_MV					(int op_size,int base_reg,int offset, Schedule::Type offsetScheduleType, BOOL bUseOffset,long i32data);
+	const PertialSchedule *op_mov_RM		(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_mov_RM_ex		(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_mov_MR		(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_mov_MR_ex		(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_mov_MV		(int op_size,int base_reg,int offset, Schedule::Type offsetScheduleType, bool isPertialSchedule, BOOL bUseOffset,long i32data);
 	void op_mov_RR					(int reg1,int reg2);
 	void op_movsxd					(int reg64,int reg32);
@@ -308,6 +308,6 @@
 	void op_inc						(int reg);
 	void op_dec						(int reg);
-	void op_add_RM					(int op_size,int reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_add_RV					(int reg,long offset, Schedule::Type scheduleType = Schedule::None );
+	const PertialSchedule *op_add_RM		(int op_size,int reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_add_RV		(int reg,long offset, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
 	void op_add_RR				(int reg1,int reg2);
 	void op_add32_reg				(int reg1,int reg2);
@@ -334,11 +334,11 @@
 	void op_cmp_value				(int op_size,int reg,char byte_data);
 	void op_setne					(int reg);
-	void op_movlpd_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_movlpd_RM				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	const PertialSchedule *op_movlpd_MR		(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_movlpd_RM		(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
 	void op_movsd_RR				(int xmm_reg1,int xmm_reg2);
-	void op_movsd_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	const PertialSchedule *op_movsd_MR		(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
 	void op_movss_RR				(int xmm_reg1,int xmm_reg2);
-	void op_movss_RM				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_movss_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	const PertialSchedule *op_movss_RM		(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
+	const PertialSchedule *op_movss_MR		(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None, bool isPertialSchedule = false );
 	void op_movd_RX					(int reg,int xmm_reg);
 	void op_cvtsd2ss				(int xmm_reg1,int xmm_reg2);
@@ -448,4 +448,15 @@
 		pNativeCode->Put( l, scheduleType );
 	}
+	const PertialSchedule *PutOld( long l, bool isPertialSchedule )
+	{
+		const PertialSchedule *pPertialSchedule;
+		if( isPertialSchedule )
+		{
+			pertialSchedules.push_back( new PertialSchedule( pNativeCode->GetSize(), sizeof(long) ) );
+			pPertialSchedule = pertialSchedules.back();
+		}
+		pNativeCode->Put( l, Schedule::None );
+		return pPertialSchedule;
+	}
 	void PutOld( const NativeCode &nativeCode )
 	{
