< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page
rev 8396 : imported patch epsilon-base


1411   return result;
1412 }
1413 
1414 // Various barriers
1415 
1416 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1417                                bool do_load, bool patch, CodeEmitInfo* info) {
1418   // Do the pre-write barrier, if any.
1419   switch (_bs->kind()) {
1420 #if INCLUDE_ALL_GCS
1421     case BarrierSet::G1SATBCT:
1422     case BarrierSet::G1SATBCTLogging:
1423       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1424       break;
1425 #endif // INCLUDE_ALL_GCS
1426     case BarrierSet::CardTableModRef:
1427     case BarrierSet::CardTableExtension:
1428       // No pre barriers
1429       break;
1430     case BarrierSet::ModRef:

1431     case BarrierSet::Other:
1432       // No pre barriers
1433       break;
1434     default      :
1435       ShouldNotReachHere();
1436 
1437   }
1438 }
1439 
1440 void LIRGenerator::post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) {
1441   switch (_bs->kind()) {
1442 #if INCLUDE_ALL_GCS
1443     case BarrierSet::G1SATBCT:
1444     case BarrierSet::G1SATBCTLogging:
1445       G1SATBCardTableModRef_post_barrier(addr,  new_val);
1446       break;
1447 #endif // INCLUDE_ALL_GCS
1448     case BarrierSet::CardTableModRef:
1449     case BarrierSet::CardTableExtension:
1450       CardTableModRef_post_barrier(addr,  new_val);
1451       break;
1452     case BarrierSet::ModRef:

1453     case BarrierSet::Other:
1454       // No post barriers
1455       break;
1456     default      :
1457       ShouldNotReachHere();
1458     }
1459 }
1460 
1461 ////////////////////////////////////////////////////////////////////////
1462 #if INCLUDE_ALL_GCS
1463 
1464 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1465                                                      bool do_load, bool patch, CodeEmitInfo* info) {
1466   // First we test whether marking is in progress.
1467   BasicType flag_type;
1468   if (in_bytes(PtrQueue::byte_width_of_active()) == 4) {
1469     flag_type = T_INT;
1470   } else {
1471     guarantee(in_bytes(PtrQueue::byte_width_of_active()) == 1,
1472               "Assumption");




1411   return result;
1412 }
1413 
1414 // Various barriers
1415 
1416 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1417                                bool do_load, bool patch, CodeEmitInfo* info) {
1418   // Do the pre-write barrier, if any.
1419   switch (_bs->kind()) {
1420 #if INCLUDE_ALL_GCS
1421     case BarrierSet::G1SATBCT:
1422     case BarrierSet::G1SATBCTLogging:
1423       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1424       break;
1425 #endif // INCLUDE_ALL_GCS
1426     case BarrierSet::CardTableModRef:
1427     case BarrierSet::CardTableExtension:
1428       // No pre barriers
1429       break;
1430     case BarrierSet::ModRef:
1431     case BarrierSet::Epsilon:
1432     case BarrierSet::Other:
1433       // No pre barriers
1434       break;
1435     default      :
1436       ShouldNotReachHere();
1437 
1438   }
1439 }
1440 
1441 void LIRGenerator::post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) {
1442   switch (_bs->kind()) {
1443 #if INCLUDE_ALL_GCS
1444     case BarrierSet::G1SATBCT:
1445     case BarrierSet::G1SATBCTLogging:
1446       G1SATBCardTableModRef_post_barrier(addr,  new_val);
1447       break;
1448 #endif // INCLUDE_ALL_GCS
1449     case BarrierSet::CardTableModRef:
1450     case BarrierSet::CardTableExtension:
1451       CardTableModRef_post_barrier(addr,  new_val);
1452       break;
1453     case BarrierSet::ModRef:
1454     case BarrierSet::Epsilon:
1455     case BarrierSet::Other:
1456       // No post barriers
1457       break;
1458     default      :
1459       ShouldNotReachHere();
1460     }
1461 }
1462 
1463 ////////////////////////////////////////////////////////////////////////
1464 #if INCLUDE_ALL_GCS
1465 
1466 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1467                                                      bool do_load, bool patch, CodeEmitInfo* info) {
1468   // First we test whether marking is in progress.
1469   BasicType flag_type;
1470   if (in_bytes(PtrQueue::byte_width_of_active()) == 4) {
1471     flag_type = T_INT;
1472   } else {
1473     guarantee(in_bytes(PtrQueue::byte_width_of_active()) == 1,
1474               "Assumption");


< prev index next >