< prev index next >

src/hotspot/cpu/ppc/templateTable_ppc_64.cpp

8199604_cardtablemodrefbs_rename

85           if (check_null) { __ b(Ldone); }                                                                                           
86         }                                                                                                                            
87 
88         if (Rval == noreg || check_null) { // Store null oop.                                                                        
89           Register Rnull = Rval;                                                                                                     
90           __ bind(Lnull);                                                                                                            
91           if (Rval == noreg) {                                                                                                       
92             Rnull = Rtmp1;                                                                                                           
93             __ li(Rnull, 0);                                                                                                         
94           }                                                                                                                          
95           if (UseCompressedOops) {                                                                                                   
96             __ stw(Rnull, offset, Rbase);                                                                                            
97           } else {                                                                                                                   
98             __ std(Rnull, offset, Rbase);                                                                                            
99           }                                                                                                                          
100         }                                                                                                                            
101         __ bind(Ldone);                                                                                                              
102       }                                                                                                                              
103       break;                                                                                                                         
104 #endif // INCLUDE_ALL_GCS                                                                                                            
105     case BarrierSet::CardTableModRef:                                                                                                
106       {                                                                                                                              
107         Label Lnull, Ldone;                                                                                                          
108         if (Rval != noreg) {                                                                                                         
109           if (check_null) {                                                                                                          
110             __ cmpdi(CCR0, Rval, 0);                                                                                                 
111             __ beq(CCR0, Lnull);                                                                                                     
112           }                                                                                                                          
113           __ store_heap_oop_not_null(Rval, offset, Rbase, /*Rval should better stay uncompressed.*/ Rtmp1);                          
114           // Mark the card.                                                                                                          
115           if (!(offset.is_constant() && offset.as_constant() == 0) && precise) {                                                     
116             __ add(Rbase, offset, Rbase);                                                                                            
117           }                                                                                                                          
118           __ card_write_barrier_post(Rbase, Rval, Rtmp1);                                                                            
119           if (check_null) {                                                                                                          
120             __ b(Ldone);                                                                                                             
121           }                                                                                                                          
122         }                                                                                                                            
123 
124         if (Rval == noreg || check_null) { // Store null oop.                                                                        

85           if (check_null) { __ b(Ldone); }
86         }
87 
88         if (Rval == noreg || check_null) { // Store null oop.
89           Register Rnull = Rval;
90           __ bind(Lnull);
91           if (Rval == noreg) {
92             Rnull = Rtmp1;
93             __ li(Rnull, 0);
94           }
95           if (UseCompressedOops) {
96             __ stw(Rnull, offset, Rbase);
97           } else {
98             __ std(Rnull, offset, Rbase);
99           }
100         }
101         __ bind(Ldone);
102       }
103       break;
104 #endif // INCLUDE_ALL_GCS
105     case BarrierSet::CardTableBarrierSet:
106       {
107         Label Lnull, Ldone;
108         if (Rval != noreg) {
109           if (check_null) {
110             __ cmpdi(CCR0, Rval, 0);
111             __ beq(CCR0, Lnull);
112           }
113           __ store_heap_oop_not_null(Rval, offset, Rbase, /*Rval should better stay uncompressed.*/ Rtmp1);
114           // Mark the card.
115           if (!(offset.is_constant() && offset.as_constant() == 0) && precise) {
116             __ add(Rbase, offset, Rbase);
117           }
118           __ card_write_barrier_post(Rbase, Rval, Rtmp1);
119           if (check_null) {
120             __ b(Ldone);
121           }
122         }
123 
124         if (Rval == noreg || check_null) { // Store null oop.
< prev index next >