< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page




1445   _reg_for_constants.append(result);
1446   return result;
1447 }
1448 
1449 // Various barriers
1450 
1451 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1452                                bool do_load, bool patch, CodeEmitInfo* info) {
1453   // Do the pre-write barrier, if any.
1454   switch (_bs->kind()) {
1455 #if INCLUDE_ALL_GCS
1456     case BarrierSet::G1SATBCTLogging:
1457       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1458       break;
1459 #endif // INCLUDE_ALL_GCS
1460     case BarrierSet::CardTableForRS:
1461     case BarrierSet::CardTableExtension:
1462       // No pre barriers
1463       break;
1464     case BarrierSet::ModRef:

1465       // No pre barriers
1466       break;
1467     default      :
1468       ShouldNotReachHere();
1469 
1470   }
1471 }
1472 
1473 void LIRGenerator::post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) {
1474   switch (_bs->kind()) {
1475 #if INCLUDE_ALL_GCS
1476     case BarrierSet::G1SATBCTLogging:
1477       G1SATBCardTableModRef_post_barrier(addr,  new_val);
1478       break;
1479 #endif // INCLUDE_ALL_GCS
1480     case BarrierSet::CardTableForRS:
1481     case BarrierSet::CardTableExtension:
1482       CardTableModRef_post_barrier(addr,  new_val);
1483       break;
1484     case BarrierSet::ModRef:

1485       // No post barriers
1486       break;
1487     default      :
1488       ShouldNotReachHere();
1489     }
1490 }
1491 
1492 ////////////////////////////////////////////////////////////////////////
1493 #if INCLUDE_ALL_GCS
1494 
1495 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1496                                                      bool do_load, bool patch, CodeEmitInfo* info) {
1497   // First we test whether marking is in progress.
1498   BasicType flag_type;
1499   if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
1500     flag_type = T_INT;
1501   } else {
1502     guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1,
1503               "Assumption");
1504     // Use unsigned type T_BOOLEAN here rather than signed T_BYTE since some platforms, eg. ARM,




1445   _reg_for_constants.append(result);
1446   return result;
1447 }
1448 
1449 // Various barriers
1450 
1451 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1452                                bool do_load, bool patch, CodeEmitInfo* info) {
1453   // Do the pre-write barrier, if any.
1454   switch (_bs->kind()) {
1455 #if INCLUDE_ALL_GCS
1456     case BarrierSet::G1SATBCTLogging:
1457       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1458       break;
1459 #endif // INCLUDE_ALL_GCS
1460     case BarrierSet::CardTableForRS:
1461     case BarrierSet::CardTableExtension:
1462       // No pre barriers
1463       break;
1464     case BarrierSet::ModRef:
1465     case BarrierSet::Epsilon:
1466       // No pre barriers
1467       break;
1468     default      :
1469       ShouldNotReachHere();
1470 
1471   }
1472 }
1473 
1474 void LIRGenerator::post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) {
1475   switch (_bs->kind()) {
1476 #if INCLUDE_ALL_GCS
1477     case BarrierSet::G1SATBCTLogging:
1478       G1SATBCardTableModRef_post_barrier(addr,  new_val);
1479       break;
1480 #endif // INCLUDE_ALL_GCS
1481     case BarrierSet::CardTableForRS:
1482     case BarrierSet::CardTableExtension:
1483       CardTableModRef_post_barrier(addr,  new_val);
1484       break;
1485     case BarrierSet::ModRef:
1486     case BarrierSet::Epsilon:
1487       // No post barriers
1488       break;
1489     default      :
1490       ShouldNotReachHere();
1491     }
1492 }
1493 
1494 ////////////////////////////////////////////////////////////////////////
1495 #if INCLUDE_ALL_GCS
1496 
1497 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1498                                                      bool do_load, bool patch, CodeEmitInfo* info) {
1499   // First we test whether marking is in progress.
1500   BasicType flag_type;
1501   if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
1502     flag_type = T_INT;
1503   } else {
1504     guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1,
1505               "Assumption");
1506     // Use unsigned type T_BOOLEAN here rather than signed T_BYTE since some platforms, eg. ARM,


< prev index next >