コード例 #1
0
 void process_buffer () {
   double start = os::elapsedTime();
   for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) {
     if (curr->is_narrow()) {
       assert(UseCompressedOops, "Error");
       _oc->do_oop((narrowOop*)(*curr));
     } else {
       _oc->do_oop((oop*)(*curr));
     }
   }
   _buffer_curr = _buffer;
   _closure_app_seconds += (os::elapsedTime() - start);
 }
コード例 #2
0
  void process_buffer () {

    double start = os::elapsedTime();
    for (oop **curr = _buffer; curr < _buffer_curr; ++curr) {
      _oc->do_oop(*curr);
    }
    _buffer_curr = _buffer;
    _closure_app_seconds += (os::elapsedTime() - start);
  }
コード例 #3
0
 void do_oop_work(T* p) {
   _work->do_oop(p);
   T oop_or_narrowoop = oopDesc::load_heap_oop(p);
   if (!oopDesc::is_null(oop_or_narrowoop)) {
     oop o = oopDesc::decode_heap_oop_not_null(oop_or_narrowoop);
     HeapRegion* hr = _g1h->heap_region_containing_raw(o);
     assert(!_g1h->obj_in_cs(o) || hr->rem_set()->strong_code_roots_list_contains(_nm), "if o still in CS then evacuation failed and nm must already be in the remset");
     hr->add_strong_code_root(_nm);
   }
 }
コード例 #4
0
 // Applies the keep_alive closure, or does nothing if no such
 // closure was provided.
 void keep_alive(oop* p) {
     if (_keep_alive != NULL) {
         _keep_alive->do_oop(p);
     }
 }
コード例 #5
0
 virtual void do_oop(oop* p) {
     oop o = (*p);
     if (!o->is_shared_readwrite()) {
         _clo->do_oop(p);
     }
 }
コード例 #6
0
 template <class T> void do_oop_nv(T* p) {
   _c1->do_oop(p); _c2->do_oop(p);
 }
コード例 #7
0
 template <class T> void do_oop_nv(T* p) {
   if (!_t->value()) _oc->do_oop(p);
 }
コード例 #8
0
 void do_oop(objectRef* p) {
   if (mr.contains(p)) {
     cl->do_oop(p);
   }
 }
コード例 #9
0
 void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
                                _wrapped_closure->do_oop(p);}
コード例 #10
0
 // Warning: this calls the virtual version do_oop in the the wrapped closure.
 void do_oop_nv(oop* p)       { _wrapped_closure->do_oop(p); }