< prev index next >

src/hotspot/share/gc/z/zBarrierSet.cpp

Print this page




  49   return new ZBarrierSetNMethod();
  50 }
  51 
  52 ZBarrierSet::ZBarrierSet() :
  53     BarrierSet(make_barrier_set_assembler<ZBarrierSetAssembler>(),
  54                make_barrier_set_c1<ZBarrierSetC1>(),
  55                make_barrier_set_c2<ZBarrierSetC2>(),
  56                make_barrier_set_nmethod(),
  57                BarrierSet::FakeRtti(BarrierSet::ZBarrierSet)) {}
  58 
  59 ZBarrierSetAssembler* ZBarrierSet::assembler() {
  60   BarrierSetAssembler* const bsa = BarrierSet::barrier_set()->barrier_set_assembler();
  61   return reinterpret_cast<ZBarrierSetAssembler*>(bsa);
  62 }
  63 
  64 bool ZBarrierSet::barrier_needed(DecoratorSet decorators, BasicType type) {
  65   assert((decorators & AS_RAW) == 0, "Unexpected decorator");
  66   assert((decorators & AS_NO_KEEPALIVE) == 0, "Unexpected decorator");
  67   //assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Unexpected decorator");
  68 

  69   if (type == T_OBJECT || type == T_ARRAY) {
  70     assert((decorators & (IN_HEAP | IN_NATIVE)) != 0, "Where is reference?");
  71     // Barrier needed even when IN_NATIVE, to allow concurrent scanning.
  72     return true;
  73   }
  74 
  75   // Barrier not needed
  76   return false;
  77 }
  78 
  79 void ZBarrierSet::on_thread_create(Thread* thread) {
  80   // Create thread local data
  81   ZThreadLocalData::create(thread);
  82 }
  83 
  84 void ZBarrierSet::on_thread_destroy(Thread* thread) {
  85   // Destroy thread local data
  86   ZThreadLocalData::destroy(thread);
  87 }
  88 


  49   return new ZBarrierSetNMethod();
  50 }
  51 
  52 ZBarrierSet::ZBarrierSet() :
  53     BarrierSet(make_barrier_set_assembler<ZBarrierSetAssembler>(),
  54                make_barrier_set_c1<ZBarrierSetC1>(),
  55                make_barrier_set_c2<ZBarrierSetC2>(),
  56                make_barrier_set_nmethod(),
  57                BarrierSet::FakeRtti(BarrierSet::ZBarrierSet)) {}
  58 
  59 ZBarrierSetAssembler* ZBarrierSet::assembler() {
  60   BarrierSetAssembler* const bsa = BarrierSet::barrier_set()->barrier_set_assembler();
  61   return reinterpret_cast<ZBarrierSetAssembler*>(bsa);
  62 }
  63 
  64 bool ZBarrierSet::barrier_needed(DecoratorSet decorators, BasicType type) {
  65   assert((decorators & AS_RAW) == 0, "Unexpected decorator");
  66   assert((decorators & AS_NO_KEEPALIVE) == 0, "Unexpected decorator");
  67   //assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Unexpected decorator");
  68 
  69   assert(type != T_VALUETYPE, "Not supported yet");
  70   if (type == T_OBJECT || type == T_ARRAY) {
  71     assert((decorators & (IN_HEAP | IN_NATIVE)) != 0, "Where is reference?");
  72     // Barrier needed even when IN_NATIVE, to allow concurrent scanning.
  73     return true;
  74   }
  75 
  76   // Barrier not needed
  77   return false;
  78 }
  79 
  80 void ZBarrierSet::on_thread_create(Thread* thread) {
  81   // Create thread local data
  82   ZThreadLocalData::create(thread);
  83 }
  84 
  85 void ZBarrierSet::on_thread_destroy(Thread* thread) {
  86   // Destroy thread local data
  87   ZThreadLocalData::destroy(thread);
  88 }
  89 
< prev index next >