< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page
rev 7807 : [mq]: bcast


3732     add_predicate_impl(Deoptimization::Reason_loop_limit_check, nargs);
3733   }
3734 }
3735 
3736 //----------------------------- store barriers ----------------------------
3737 #define __ ideal.
3738 
3739 void GraphKit::sync_kit(IdealKit& ideal) {
3740   set_all_memory(__ merged_memory());
3741   set_i_o(__ i_o());
3742   set_control(__ ctrl());
3743 }
3744 
3745 void GraphKit::final_sync(IdealKit& ideal) {
3746   // Final sync IdealKit and graphKit.
3747   sync_kit(ideal);
3748 }
3749 
3750 Node* GraphKit::byte_map_base_node() {
3751   // Get base of card map
3752   CardTableModRefBS* ct = (CardTableModRefBS*)(Universe::heap()->barrier_set());

3753   assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust users of this code");
3754   if (ct->byte_map_base != NULL) {
3755     return makecon(TypeRawPtr::make((address)ct->byte_map_base));
3756   } else {
3757     return null();
3758   }
3759 }
3760 
3761 // vanilla/CMS post barrier
3762 // Insert a write-barrier store.  This is to let generational GC work; we have
3763 // to flag all oop-stores before the next GC point.
3764 void GraphKit::write_barrier_post(Node* oop_store,
3765                                   Node* obj,
3766                                   Node* adr,
3767                                   uint  adr_idx,
3768                                   Node* val,
3769                                   bool use_precise) {
3770   // No store check needed if we're storing a NULL or an old object
3771   // (latter case is probably a string constant). The concurrent
3772   // mark sweep garbage collector, however, needs to have all nonNull




3732     add_predicate_impl(Deoptimization::Reason_loop_limit_check, nargs);
3733   }
3734 }
3735 
3736 //----------------------------- store barriers ----------------------------
3737 #define __ ideal.
3738 
3739 void GraphKit::sync_kit(IdealKit& ideal) {
3740   set_all_memory(__ merged_memory());
3741   set_i_o(__ i_o());
3742   set_control(__ ctrl());
3743 }
3744 
3745 void GraphKit::final_sync(IdealKit& ideal) {
3746   // Final sync IdealKit and graphKit.
3747   sync_kit(ideal);
3748 }
3749 
3750 Node* GraphKit::byte_map_base_node() {
3751   // Get base of card map
3752   CardTableModRefBS* ct =
3753     barrier_set_cast<CardTableModRefBS>(Universe::heap()->barrier_set());
3754   assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust users of this code");
3755   if (ct->byte_map_base != NULL) {
3756     return makecon(TypeRawPtr::make((address)ct->byte_map_base));
3757   } else {
3758     return null();
3759   }
3760 }
3761 
3762 // vanilla/CMS post barrier
3763 // Insert a write-barrier store.  This is to let generational GC work; we have
3764 // to flag all oop-stores before the next GC point.
3765 void GraphKit::write_barrier_post(Node* oop_store,
3766                                   Node* obj,
3767                                   Node* adr,
3768                                   uint  adr_idx,
3769                                   Node* val,
3770                                   bool use_precise) {
3771   // No store check needed if we're storing a NULL or an old object
3772   // (latter case is probably a string constant). The concurrent
3773   // mark sweep garbage collector, however, needs to have all nonNull


< prev index next >