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.
|