< prev index next >

src/hotspot/share/gc/shared/stringdedup/stringDedupThread.cpp

Print this page




  42   set_name("StrDedup");
  43   create_and_start();
  44 }
  45 
  46 StringDedupThread::~StringDedupThread() {
  47   ShouldNotReachHere();
  48 }
  49 
  50 StringDedupThread* StringDedupThread::thread() {
  51   assert(_thread != NULL, "String deduplication thread not created");
  52   return _thread;
  53 }
  54 
  55 class StringDedupSharedClosure: public OopClosure {
  56  private:
  57   StringDedupStat* _stat;
  58 
  59  public:
  60   StringDedupSharedClosure(StringDedupStat* stat) : _stat(stat) {}
  61 
  62   virtual void do_oop(oop* p) { ShouldNotReachHere(); }
  63   virtual void do_oop(narrowOop* p) {
  64     oop java_string = RawAccess<>::oop_load(p);
  65     StringDedupTable::deduplicate(java_string, _stat);
  66   }
  67 };
  68 
  69 // The CDS archive does not include the string dedupication table. Only the string
  70 // table is saved in the archive. The shared strings from CDS archive need to be
  71 // added to the string dedupication table before deduplication occurs. That is
  72 // done in the begining of the StringDedupThread (see StringDedupThread::do_deduplication()).
  73 void StringDedupThread::deduplicate_shared_strings(StringDedupStat* stat) {
  74   StringDedupSharedClosure sharedStringDedup(stat);
  75   StringTable::shared_oops_do(&sharedStringDedup);
  76 }
  77 
  78 void StringDedupThread::stop_service() {
  79   StringDedupQueue::cancel_wait();
  80 }
  81 
  82 void StringDedupThread::print_start(const StringDedupStat* last_stat) {
  83   StringDedupStat::print_start(last_stat);


  42   set_name("StrDedup");
  43   create_and_start();
  44 }
  45 
  46 StringDedupThread::~StringDedupThread() {
  47   ShouldNotReachHere();
  48 }
  49 
  50 StringDedupThread* StringDedupThread::thread() {
  51   assert(_thread != NULL, "String deduplication thread not created");
  52   return _thread;
  53 }
  54 
  55 class StringDedupSharedClosure: public OopClosure {
  56  private:
  57   StringDedupStat* _stat;
  58 
  59  public:
  60   StringDedupSharedClosure(StringDedupStat* stat) : _stat(stat) {}
  61 
  62   virtual void do_oop(narrowOop* p) { ShouldNotReachHere(); }
  63   virtual void do_oop(oop* p) {
  64     oop java_string = RawAccess<>::oop_load(p);
  65     StringDedupTable::deduplicate(java_string, _stat);
  66   }
  67 };
  68 
  69 // The CDS archive does not include the string dedupication table. Only the string
  70 // table is saved in the archive. The shared strings from CDS archive need to be
  71 // added to the string dedupication table before deduplication occurs. That is
  72 // done in the begining of the StringDedupThread (see StringDedupThread::do_deduplication()).
  73 void StringDedupThread::deduplicate_shared_strings(StringDedupStat* stat) {
  74   StringDedupSharedClosure sharedStringDedup(stat);
  75   StringTable::shared_oops_do(&sharedStringDedup);
  76 }
  77 
  78 void StringDedupThread::stop_service() {
  79   StringDedupQueue::cancel_wait();
  80 }
  81 
  82 void StringDedupThread::print_start(const StringDedupStat* last_stat) {
  83   StringDedupStat::print_start(last_stat);
< prev index next >