< prev index next >

src/cpu/x86/vm/templateTable_x86_32.cpp

Print this page
rev 8396 : imported patch epsilon-base


 167       break;
 168 #endif // INCLUDE_ALL_GCS
 169     case BarrierSet::CardTableModRef:
 170     case BarrierSet::CardTableExtension:
 171       {
 172         if (val == noreg) {
 173           __ movptr(obj, NULL_WORD);
 174         } else {
 175           __ movl(obj, val);
 176           // flatten object address if needed
 177           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
 178             __ store_check(obj.base());
 179           } else {
 180             __ leal(rdx, obj);
 181             __ store_check(rdx);
 182           }
 183         }
 184       }
 185       break;
 186     case BarrierSet::ModRef:

 187     case BarrierSet::Other:
 188       if (val == noreg) {
 189         __ movptr(obj, NULL_WORD);
 190       } else {
 191         __ movl(obj, val);
 192       }
 193       break;
 194     default      :
 195       ShouldNotReachHere();
 196 
 197   }
 198 }
 199 
 200 Address TemplateTable::at_bcp(int offset) {
 201   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
 202   return Address(rsi, offset);
 203 }
 204 
 205 
 206 void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,




 167       break;
 168 #endif // INCLUDE_ALL_GCS
 169     case BarrierSet::CardTableModRef:
 170     case BarrierSet::CardTableExtension:
 171       {
 172         if (val == noreg) {
 173           __ movptr(obj, NULL_WORD);
 174         } else {
 175           __ movl(obj, val);
 176           // flatten object address if needed
 177           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
 178             __ store_check(obj.base());
 179           } else {
 180             __ leal(rdx, obj);
 181             __ store_check(rdx);
 182           }
 183         }
 184       }
 185       break;
 186     case BarrierSet::ModRef:
 187     case BarrierSet::Epsilon:
 188     case BarrierSet::Other:
 189       if (val == noreg) {
 190         __ movptr(obj, NULL_WORD);
 191       } else {
 192         __ movl(obj, val);
 193       }
 194       break;
 195     default      :
 196       ShouldNotReachHere();
 197 
 198   }
 199 }
 200 
 201 Address TemplateTable::at_bcp(int offset) {
 202   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
 203   return Address(rsi, offset);
 204 }
 205 
 206 
 207 void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,


< prev index next >