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");
|