< prev index next >

src/hotspot/share/gc/cms/parNewGeneration.cpp

Print this page
*** 1243,11 ***
  #ifndef PRODUCT
      Atomic::inc(&_num_par_pushes);
      assert(_num_par_pushes > 0, "Tautology");
  #endif
      if (from_space_obj->forwardee() == from_space_obj) {
!       oopDesc* listhead = NEW_C_HEAP_ARRAY(oopDesc, 1, mtGC);
        listhead->forward_to(from_space_obj);
        from_space_obj = listhead;
      }
      oop observed_overflow_list = _overflow_list;
      oop cur_overflow_list;
--- 1243,11 ---
  #ifndef PRODUCT
      Atomic::inc(&_num_par_pushes);
      assert(_num_par_pushes > 0, "Tautology");
  #endif
      if (from_space_obj->forwardee() == from_space_obj) {
!       oopDesc* listhead = NEW_C_HEAP_OBJ(oopDesc, mtGC);
        listhead->forward_to(from_space_obj);
        from_space_obj = listhead;
      }
      oop observed_overflow_list = _overflow_list;
      oop cur_overflow_list;

*** 1400,11 ***
      // space, cur, is not in the Java heap, but rather in the C-heap and should be freed.
      if (!is_in_reserved(cur)) {
        // This can become a scaling bottleneck when there is work queue overflow coincident
        // with promotion failure.
        oopDesc* f = cur;
!       FREE_C_HEAP_ARRAY(oopDesc, f);
      } else if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
        assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned");
        obj_to_push = cur;
      }
      bool ok = work_q->push(obj_to_push);
--- 1400,11 ---
      // space, cur, is not in the Java heap, but rather in the C-heap and should be freed.
      if (!is_in_reserved(cur)) {
        // This can become a scaling bottleneck when there is work queue overflow coincident
        // with promotion failure.
        oopDesc* f = cur;
!       FREE_C_HEAP_OBJ(f);
      } else if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
        assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned");
        obj_to_push = cur;
      }
      bool ok = work_q->push(obj_to_push);
< prev index next >