コード例 #1
0
  void process_buffer () {

    assert((_hr_curr - _hr_buffer) == (_buffer_curr - _buffer),
           "the two lengths should be the same");

    double start = os::elapsedTime();
    HeapRegion** hr_curr = _hr_buffer;
    HeapRegion*  hr_prev = NULL;
    for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) {
      HeapRegion* region = *hr_curr;
      if (region != hr_prev) {
        _oc->set_region(region);
        hr_prev = region;
      }
      if (curr->is_narrow()) {
        assert(UseCompressedOops, "Error");
        _oc->do_oop((narrowOop*)(*curr));
      } else {
        _oc->do_oop((oop*)(*curr));
      }
      ++hr_curr;
    }
    _buffer_curr = _buffer;
    _hr_curr = _hr_buffer;
    _closure_app_seconds += (os::elapsedTime() - start);
  }
コード例 #2
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);
 }
コード例 #3
0
bool G1ParScanThreadState::verify_task(StarTask ref) const {
  if (ref.is_narrow()) {
    return verify_ref((narrowOop*) ref);
  } else {
    return verify_ref((oop*) ref);
  }
}
コード例 #4
0
 oop unmask_chunked_array_oop(StarTask p) {
   assert(is_oop_masked(p), "invariant");
   assert(!p.is_narrow(), "chunked array oops cannot be narrow");
   oop *chunk = (oop*)p;  // cast p to oop (uses conversion operator)
   oop ret = oop((oop*)((uintptr_t)chunk & ~PS_CHUNKED_ARRAY_OOP_MASK));
   assert(!is_oop_masked((oop*) ret), "invariant");
   return ret;
 }
コード例 #5
0
inline void PSPromotionManager::process_popped_location_depth(StarTask p) {
  if (is_oop_masked(p)) {
    assert(PSChunkLargeArrays, "invariant");
    oop const old = unmask_chunked_array_oop(p);
    process_array_chunk(old);
  } else {
    if (p.is_narrow()) {
      PSScavenge::copy_and_push_safe_barrier(this, (narrowOop*)p);
    } else {
      PSScavenge::copy_and_push_safe_barrier(this, (oop*)p);
    }
  }
}