< prev index next >
src/share/vm/opto/graphKit.cpp
Print this page
rev 14282 : Factor out keep-alive barrier from usual pre-barrier implementations.
*** 1629,1638 ****
--- 1629,1675 ----
ShouldNotReachHere();
}
}
+ void GraphKit::keep_alive_barrier(Node* ctl, Node* obj) {
+ BarrierSet* bs = Universe::heap()->barrier_set();
+ switch (bs->kind()) {
+ case BarrierSet::G1SATBCTLogging:
+ pre_barrier(false /* do_load */,
+ ctl,
+ NULL /* obj */,
+ NULL /* adr */,
+ max_juint /* alias_idx */,
+ NULL /* val */,
+ NULL /* val_type */,
+ obj /* pre_val */,
+ T_OBJECT);
+ break;
+ case BarrierSet::ShenandoahBarrierSet:
+ if (ShenandoahKeepAliveBarrier) {
+ pre_barrier(false /* do_load */,
+ ctl,
+ NULL /* obj */,
+ NULL /* adr */,
+ max_juint /* alias_idx */,
+ NULL /* val */,
+ NULL /* val_type */,
+ obj /* pre_val */,
+ T_OBJECT);
+ }
+ break;
+ case BarrierSet::CardTableForRS:
+ case BarrierSet::CardTableExtension:
+ case BarrierSet::ModRef:
+ break;
+ default :
+ ShouldNotReachHere();
+
+ }
+ }
+
Node* GraphKit::store_oop(Node* ctl,
Node* obj,
Node* adr,
const TypePtr* adr_type,
Node* val,
< prev index next >