< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page
rev 8396 : imported patch epsilon-base


1522                            Node* ctl,
1523                            Node* obj,
1524                            Node* adr,
1525                            uint  adr_idx,
1526                            Node* val,
1527                            const TypeOopPtr* val_type,
1528                            Node* pre_val,
1529                            BasicType bt) {
1530 
1531   BarrierSet* bs = Universe::heap()->barrier_set();
1532   set_control(ctl);
1533   switch (bs->kind()) {
1534     case BarrierSet::G1SATBCT:
1535     case BarrierSet::G1SATBCTLogging:
1536       g1_write_barrier_pre(do_load, obj, adr, adr_idx, val, val_type, pre_val, bt);
1537       break;
1538 
1539     case BarrierSet::CardTableModRef:
1540     case BarrierSet::CardTableExtension:
1541     case BarrierSet::ModRef:

1542       break;
1543 
1544     case BarrierSet::Other:
1545     default      :
1546       ShouldNotReachHere();
1547 
1548   }
1549 }
1550 
1551 bool GraphKit::can_move_pre_barrier() const {
1552   BarrierSet* bs = Universe::heap()->barrier_set();
1553   switch (bs->kind()) {
1554     case BarrierSet::G1SATBCT:
1555     case BarrierSet::G1SATBCTLogging:
1556       return true; // Can move it if no safepoint
1557 
1558     case BarrierSet::CardTableModRef:
1559     case BarrierSet::CardTableExtension:
1560     case BarrierSet::ModRef:

1561       return true; // There is no pre-barrier
1562 
1563     case BarrierSet::Other:
1564     default      :
1565       ShouldNotReachHere();
1566   }
1567   return false;
1568 }
1569 
1570 void GraphKit::post_barrier(Node* ctl,
1571                             Node* store,
1572                             Node* obj,
1573                             Node* adr,
1574                             uint  adr_idx,
1575                             Node* val,
1576                             BasicType bt,
1577                             bool use_precise) {
1578   BarrierSet* bs = Universe::heap()->barrier_set();
1579   set_control(ctl);
1580   switch (bs->kind()) {
1581     case BarrierSet::G1SATBCT:
1582     case BarrierSet::G1SATBCTLogging:
1583       g1_write_barrier_post(store, obj, adr, adr_idx, val, bt, use_precise);
1584       break;
1585 
1586     case BarrierSet::CardTableModRef:
1587     case BarrierSet::CardTableExtension:
1588       write_barrier_post(store, obj, adr, adr_idx, val, use_precise);
1589       break;
1590 
1591     case BarrierSet::ModRef:

1592       break;
1593 
1594     case BarrierSet::Other:
1595     default      :
1596       ShouldNotReachHere();
1597 
1598   }
1599 }
1600 
1601 Node* GraphKit::store_oop(Node* ctl,
1602                           Node* obj,
1603                           Node* adr,
1604                           const TypePtr* adr_type,
1605                           Node* val,
1606                           const TypeOopPtr* val_type,
1607                           BasicType bt,
1608                           bool use_precise,
1609                           MemNode::MemOrd mo,
1610                           bool mismatched) {
1611   // Transformation of a value which could be NULL pointer (CastPP #NULL)




1522                            Node* ctl,
1523                            Node* obj,
1524                            Node* adr,
1525                            uint  adr_idx,
1526                            Node* val,
1527                            const TypeOopPtr* val_type,
1528                            Node* pre_val,
1529                            BasicType bt) {
1530 
1531   BarrierSet* bs = Universe::heap()->barrier_set();
1532   set_control(ctl);
1533   switch (bs->kind()) {
1534     case BarrierSet::G1SATBCT:
1535     case BarrierSet::G1SATBCTLogging:
1536       g1_write_barrier_pre(do_load, obj, adr, adr_idx, val, val_type, pre_val, bt);
1537       break;
1538 
1539     case BarrierSet::CardTableModRef:
1540     case BarrierSet::CardTableExtension:
1541     case BarrierSet::ModRef:
1542     case BarrierSet::Epsilon:
1543       break;
1544 
1545     case BarrierSet::Other:
1546     default      :
1547       ShouldNotReachHere();
1548 
1549   }
1550 }
1551 
1552 bool GraphKit::can_move_pre_barrier() const {
1553   BarrierSet* bs = Universe::heap()->barrier_set();
1554   switch (bs->kind()) {
1555     case BarrierSet::G1SATBCT:
1556     case BarrierSet::G1SATBCTLogging:
1557       return true; // Can move it if no safepoint
1558 
1559     case BarrierSet::CardTableModRef:
1560     case BarrierSet::CardTableExtension:
1561     case BarrierSet::ModRef:
1562     case BarrierSet::Epsilon:
1563       return true; // There is no pre-barrier
1564 
1565     case BarrierSet::Other:
1566     default      :
1567       ShouldNotReachHere();
1568   }
1569   return false;
1570 }
1571 
1572 void GraphKit::post_barrier(Node* ctl,
1573                             Node* store,
1574                             Node* obj,
1575                             Node* adr,
1576                             uint  adr_idx,
1577                             Node* val,
1578                             BasicType bt,
1579                             bool use_precise) {
1580   BarrierSet* bs = Universe::heap()->barrier_set();
1581   set_control(ctl);
1582   switch (bs->kind()) {
1583     case BarrierSet::G1SATBCT:
1584     case BarrierSet::G1SATBCTLogging:
1585       g1_write_barrier_post(store, obj, adr, adr_idx, val, bt, use_precise);
1586       break;
1587 
1588     case BarrierSet::CardTableModRef:
1589     case BarrierSet::CardTableExtension:
1590       write_barrier_post(store, obj, adr, adr_idx, val, use_precise);
1591       break;
1592 
1593     case BarrierSet::ModRef:
1594     case BarrierSet::Epsilon:
1595       break;
1596 
1597     case BarrierSet::Other:
1598     default      :
1599       ShouldNotReachHere();
1600 
1601   }
1602 }
1603 
1604 Node* GraphKit::store_oop(Node* ctl,
1605                           Node* obj,
1606                           Node* adr,
1607                           const TypePtr* adr_type,
1608                           Node* val,
1609                           const TypeOopPtr* val_type,
1610                           BasicType bt,
1611                           bool use_precise,
1612                           MemNode::MemOrd mo,
1613                           bool mismatched) {
1614   // Transformation of a value which could be NULL pointer (CastPP #NULL)


< prev index next >