< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page
rev 11463 : Backport Traversal GC


1413       return _reg_for_constants.at(i);
1414     }
1415   }
1416 
1417   LIR_Opr result = new_register(t);
1418   __ move((LIR_Opr)c, result);
1419   _constants.append(c);
1420   _reg_for_constants.append(result);
1421   return result;
1422 }
1423 
1424 // Various barriers
1425 
1426 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1427                                bool do_load, bool patch, CodeEmitInfo* info) {
1428   // Do the pre-write barrier, if any.
1429   switch (_bs->kind()) {
1430 #if INCLUDE_ALL_GCS
1431     case BarrierSet::G1SATBCT:
1432     case BarrierSet::G1SATBCTLogging:


1433     case BarrierSet::ShenandoahBarrierSet:

1434       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);

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

1459       break;
1460 #endif // INCLUDE_ALL_GCS
1461     case BarrierSet::CardTableModRef:
1462     case BarrierSet::CardTableExtension:
1463       CardTableModRef_post_barrier(addr,  new_val);
1464       break;
1465     case BarrierSet::ModRef:
1466     case BarrierSet::Other:
1467       // No post barriers
1468       break;
1469     default      :
1470       ShouldNotReachHere();
1471     }
1472 }
1473 
1474 ////////////////////////////////////////////////////////////////////////
1475 #if INCLUDE_ALL_GCS
1476 
1477 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1478                                                      bool do_load, bool patch, CodeEmitInfo* info) {




1413       return _reg_for_constants.at(i);
1414     }
1415   }
1416 
1417   LIR_Opr result = new_register(t);
1418   __ move((LIR_Opr)c, result);
1419   _constants.append(c);
1420   _reg_for_constants.append(result);
1421   return result;
1422 }
1423 
1424 // Various barriers
1425 
1426 void LIRGenerator::pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1427                                bool do_load, bool patch, CodeEmitInfo* info) {
1428   // Do the pre-write barrier, if any.
1429   switch (_bs->kind()) {
1430 #if INCLUDE_ALL_GCS
1431     case BarrierSet::G1SATBCT:
1432     case BarrierSet::G1SATBCTLogging:
1433       G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1434       break;
1435     case BarrierSet::ShenandoahBarrierSet:
1436       if (ShenandoahSATBBarrier) {
1437         G1SATBCardTableModRef_pre_barrier(addr_opr, pre_val, do_load, patch, info);
1438       }
1439       break;
1440 #endif // INCLUDE_ALL_GCS
1441     case BarrierSet::CardTableModRef:
1442     case BarrierSet::CardTableExtension:
1443       // No pre barriers
1444       break;
1445     case BarrierSet::ModRef:
1446     case BarrierSet::Other:
1447       // No pre barriers
1448       break;
1449     default      :
1450       ShouldNotReachHere();
1451 
1452   }
1453 }
1454 
1455 void LIRGenerator::post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) {
1456   switch (_bs->kind()) {
1457 #if INCLUDE_ALL_GCS
1458     case BarrierSet::G1SATBCT:
1459     case BarrierSet::G1SATBCTLogging:
1460       G1SATBCardTableModRef_post_barrier(addr,  new_val);
1461       break;
1462     case BarrierSet::ShenandoahBarrierSet:
1463       ShenandoahBarrierSetC1::bsc1()->storeval_barrier(this, new_val, NULL, false);
1464       break;
1465 #endif // INCLUDE_ALL_GCS
1466     case BarrierSet::CardTableModRef:
1467     case BarrierSet::CardTableExtension:
1468       CardTableModRef_post_barrier(addr,  new_val);
1469       break;
1470     case BarrierSet::ModRef:
1471     case BarrierSet::Other:
1472       // No post barriers
1473       break;
1474     default      :
1475       ShouldNotReachHere();
1476     }
1477 }
1478 
1479 ////////////////////////////////////////////////////////////////////////
1480 #if INCLUDE_ALL_GCS
1481 
1482 void LIRGenerator::G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
1483                                                      bool do_load, bool patch, CodeEmitInfo* info) {


< prev index next >