< prev index next >

src/cpu/ppc/vm/c1_FrameMap_ppc.cpp

Print this page
rev 12310 : Reserve R30 to a cleared content register on C1 and C2 code

Several times a 0 is loaded to a register as a temporary value. This can be
improved by caching a 0 into a register.

I didn't notice a performance drop since only applying this patch showed no
drop of performance, hence there are more registers available than normally
needed and this caching technique can be applied.

Despite setting R30_zero as a dedicated register and initialized with 0 for the
C1 and C2 code, new rules for storing 0 related to stb,sth,stw,std were added.

@@ -135,11 +135,11 @@
 LIR_Opr FrameMap::R25_oop_opr;
 LIR_Opr FrameMap::R26_oop_opr;
 LIR_Opr FrameMap::R27_oop_opr;
 LIR_Opr FrameMap::R28_oop_opr;
 //LIR_Opr FrameMap::R29_oop_opr;
-LIR_Opr FrameMap::R30_oop_opr;
+//LIR_Opr FrameMap::R30_oop_opr;
 LIR_Opr FrameMap::R31_oop_opr;
 
 LIR_Opr  FrameMap::R0_metadata_opr;
 //LIR_Opr  FrameMap::R1_metadata_opr;
 LIR_Opr  FrameMap::R2_metadata_opr;

@@ -168,11 +168,11 @@
 LIR_Opr FrameMap::R25_metadata_opr;
 LIR_Opr FrameMap::R26_metadata_opr;
 LIR_Opr FrameMap::R27_metadata_opr;
 LIR_Opr FrameMap::R28_metadata_opr;
 //LIR_Opr FrameMap::R29_metadata_opr;
-LIR_Opr FrameMap::R30_metadata_opr;
+//LIR_Opr FrameMap::R30_metadata_opr;
 LIR_Opr FrameMap::R31_metadata_opr;
 
 LIR_Opr FrameMap::SP_opr;
 
 LIR_Opr FrameMap::R0_long_opr;

@@ -299,11 +299,11 @@
   R25_oop_opr = as_oop_opr(R25);
   R26_oop_opr = as_oop_opr(R26);
   R27_oop_opr = as_oop_opr(R27);
   R28_oop_opr = as_oop_opr(R28);
   //R29_oop_opr = as_oop_opr(R29);
-  R30_oop_opr = as_oop_opr(R30);
+  //R30_oop_opr = as_oop_opr(R30);
   R31_oop_opr = as_oop_opr(R31);
 
   R0_metadata_opr  = as_metadata_opr(R0);
   //R1_metadata_opr  = as_metadata_opr(R1);
   R2_metadata_opr  = as_metadata_opr(R2);

@@ -332,11 +332,11 @@
   R25_metadata_opr = as_metadata_opr(R25);
   R26_metadata_opr = as_metadata_opr(R26);
   R27_metadata_opr = as_metadata_opr(R27);
   R28_metadata_opr = as_metadata_opr(R28);
   //R29_metadata_opr = as_metadata_opr(R29);
-  R30_metadata_opr = as_metadata_opr(R30);
+  //R30_metadata_opr = as_metadata_opr(R30);
   R31_metadata_opr = as_metadata_opr(R31);
 
   SP_opr = as_pointer_opr(R1_SP);
 
   R0_long_opr = LIR_OprFact::double_cpu(cpu_reg2rnr(R0), cpu_reg2rnr(R0));
< prev index next >