1. 14 12月, 2011 1 次提交
    • S
      7121373: Clean up CollectedHeap::is_in · dce4ac5f
      stefank 提交于
      Summary: Fixed G1CollectedHeap::is_in, added tests, cleaned up comments and made Space::is_in pure virtual.
      Reviewed-by: brutisso, tonyp, jcoomes
      dce4ac5f
  2. 18 11月, 2011 1 次提交
    • J
      7112743: G1: Reduce overhead of marking closure during evacuation pauses · 9ee12139
      johnc 提交于
      Summary: Parallelize the serial code that was used to mark objects reachable from survivor objects in the collection set. Some minor improvments in the timers used to track the freeing of the collection set along with some tweaks to PrintGCDetails.
      Reviewed-by: tonyp, brutisso
      9ee12139
  3. 08 11月, 2011 2 次提交
  4. 24 10月, 2011 1 次提交
    • J
      7096030: G1: PrintGCDetails enhancements · 15519f74
      johnc 提交于
      7102445: G1: Unnecessary Resource allocations during RSet scanning
      Summary: Add a new per-worker thread line in the PrintGCDetails output. GC Worker Other is the difference between the elapsed time for the parallel phase of the evacuation pause and the sum of the times of the sub-phases (external root scanning, mark stack scanning, RSet updating, RSet scanning, object copying, and termination) for that worker. During RSet scanning, stack allocate DirtyCardToOopClosure objects; allocating these in a resource area was causing abnormally high GC Worker Other times while the worker thread freed ResourceArea chunks.
      Reviewed-by: tonyp, jwilhelm, brutisso
      15519f74
  5. 18 10月, 2011 1 次提交
  6. 14 10月, 2011 1 次提交
    • T
      7088680: G1: Cleanup in the G1CollectorPolicy class · a299c2e7
      tonyp 提交于
      Summary: Removed unused fields and methods, removed the G1CollectoryPolicy_BestRegionsFirst class and folded its functionality into the G1CollectorPolicy class.
      Reviewed-by: ysr, brutisso, jcoomes
      a299c2e7
  7. 05 10月, 2011 1 次提交
  8. 04 10月, 2011 1 次提交
    • J
      7097053: G1: assert(da ? referent->is_oop() : referent->is_oop_or_null())... · a5d76e84
      johnc 提交于
      7097053: G1: assert(da ? referent->is_oop() : referent->is_oop_or_null()) failed: referenceProcessor.cpp:1054
      Summary: During remembered set scanning, the reference processor could discover a reference object whose referent was in the process of being copied and so may not be completely initialized. Do not perform reference discovery during remembered set scanning.
      Reviewed-by: tonyp, ysr
      a5d76e84
  9. 29 9月, 2011 1 次提交
    • J
      7086533: G1: assert(!_g1->is_obj_dead(obj)): We should not be preserving dead... · c908a927
      johnc 提交于
      7086533: G1: assert(!_g1->is_obj_dead(obj)): We should not be preserving dead objs: g1CollectedHeap.cpp:3835
      Summary: Some objects may not be marked in the event of an evacuation failure in a partially young GC, during a marking cycle. Avoid this situation by not allowing partially young GCs during a marking cycle.
      Reviewed-by: tonyp, ysr, brutisso
      c908a927
  10. 24 9月, 2011 1 次提交
  11. 23 9月, 2011 1 次提交
    • J
      6484982: G1: process references during evacuation pauses · 9c3adbcc
      johnc 提交于
      Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate.
      Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
      9c3adbcc
  12. 21 9月, 2011 1 次提交
    • J
      7092412: G1: Some roots not marked during an initial mark that gets an evacuation failure · 279b083d
      johnc 提交于
      Summary: As a result of the changes for 7080389, an evacuation failure during an initial mark pause may result in some root objects not being marked. Pass whether the caller is a root scanning closure into the evacuation failure handling code so that the thread that successfully forwards an object to itself also marks the object.
      Reviewed-by: ysr, brutisso, tonyp
      279b083d
  13. 08 9月, 2011 3 次提交
    • B
      6929868: G1: introduce min / max young gen size bounds · 499845d6
      brutisso 提交于
      Summary: Make G1 handle young gen size command line flags more consistently
      Reviewed-by: tonyp, jwilhelm
      499845d6
    • T
      7084509: G1: fix inconsistencies and mistakes in the young list target length calculations · 389cad56
      tonyp 提交于
      Summary: Fixed inconsistencies and mistakes in the young list target length calculations so that a) the calculated target length is optimal (before, it was not), b) other parameters like max survivor size and max gc locker eden expansion are always consistent with the calculated target length (before, they were not always), and c) the resulting target length was always bound by desired min and max values (before, it was not).
      Reviewed-by: brutisso, johnc
      389cad56
    • T
      7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions · e4a3f7b0
      tonyp 提交于
      Summary: It introduces ergonomic decision logging in G1 for the following heuristics: heap sizing, collection set construction, concurrent cycle initiation, and partially-young GC start/end. The code has a bit of refactoring in a few places to make the decision logging possible. It also replaces alternative ad-hoc logging that we have under different parameters and switches (G1_DEBUG, G1PolicyVerbose).
      Reviewed-by: johnc, ysr
      e4a3f7b0
  14. 01 9月, 2011 1 次提交
  15. 30 8月, 2011 1 次提交
  16. 23 8月, 2011 1 次提交
  17. 19 8月, 2011 1 次提交
  18. 12 8月, 2011 1 次提交
  19. 10 8月, 2011 1 次提交
  20. 19 11月, 2011 1 次提交
  21. 03 8月, 2011 1 次提交
    • J
      7069863: G1: SIGSEGV running SPECjbb2011 and -UseBiasedLocking · ab994026
      johnc 提交于
      Summary: Align the reserved size of the heap and perm to the heap region size to get a preferred heap base that is aligned to the region size, and call the correct heap reservation constructor. Also add a check in the heap reservation code that the reserved space starts at the requested address (if any).
      Reviewed-by: kvn, ysr
      ab994026
  22. 02 8月, 2011 1 次提交
    • J
      7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark · 519da0f6
      johnc 提交于
      Summary: In root processing, move the scanning of the reference processor's discovered lists to before RSet updating and scanning. When scanning the reference processor's discovered lists, use a buffering closure so that the time spent copying any reference object is correctly attributed. Also removed a couple of unused and irrelevant timers.
      Reviewed-by: ysr, jmasa
      519da0f6
  23. 25 6月, 2011 1 次提交
  24. 22 6月, 2011 1 次提交
    • T
      7046182: G1: remove unnecessary iterations over the collection set · 76ac10c6
      tonyp 提交于
      Summary: Remove two unnecessary iterations over the collection set which are supposed to prepare the RSet's of the CSet regions for parallel iterations (we'll make sure this is done incrementally). I'll piggyback on this CR the removal of the G1_REM_SET_LOGGING code.
      Reviewed-by: brutisso, johnc
      76ac10c6
  25. 17 6月, 2011 1 次提交
  26. 15 6月, 2011 1 次提交
    • J
      7004681: G1: Extend marking verification to Full GCs · 0e040a45
      johnc 提交于
      Summary: Perform a heap verification after the first phase of G1's full GC using objects' mark words to determine liveness. The third parameter of the heap verification routines, which was used in G1 to determine which marking bitmap to use in liveness calculations, has been changed from a boolean to an enum with values defined for using the mark word, and the 'prev' and 'next' bitmaps.
      Reviewed-by: tonyp, ysr
      0e040a45
  27. 11 6月, 2011 1 次提交
    • T
      7045330: G1: Simplify/fix the HeapRegionSeq class · f122f55f
      tonyp 提交于
      7042285: G1: native memory leak during humongous object allocation
      6804436: G1: heap region indices should be size_t
      Summary: A series of fixes and improvements to the HeapRegionSeq class: a) replace the _regions growable array with a standard C array, b) avoid de-allocating / re-allocating HeapRegion instances when the heap shrinks / grows (fix for 7042285), c) introduce fast method to map address to HeapRegion via a "biased" array pointer, d) embed the _hrs object in G1CollectedHeap, instead of pointing to it via an indirection, e) assume that all the regions added to the HeapRegionSeq instance are contiguous, f) replace int's with size_t's for indexes (and expand that to HeapRegion as part of 6804436), g) remove unnecessary / unused methods, h) rename a couple of fields (_alloc_search_start and _seq_bottom), i) fix iterate_from() not to always start from index 0 irrespective of the region passed to it, j) add a verification method to check the HeapRegionSeq assumptions, k) always call the wrappers for _hrs.iterate(), _hrs_length(), and _hrs.at() from G1CollectedHeap, not those methods directly, and l) unify the code that expands the sequence (by either re-using or creating a new HeapRegion) and make it robust wrt to a HeapRegion allocation failing.
      Reviewed-by: stefank, johnc, brutisso
      f122f55f
  28. 09 6月, 2011 1 次提交
  29. 17 5月, 2011 1 次提交
    • J
      7041440: G1: assert(obj->is_oop_or_null(true )) failed: Error # · cb26465b
      johnc 提交于
      Summary: During an evacuation pause clear the region fields of any concurrent marking task whose local finger points into the collection set as the values in the region fields will become stale. Clearing these fields causes the concurrent mark task to claim a new region when marking restarts after the pause.
      Reviewed-by: tonyp, iveresov
      cb26465b
  30. 13 5月, 2011 1 次提交
  31. 05 5月, 2011 1 次提交
    • T
      7040450: G1: assert((_g1->evacuation_failed()) || (!_g1->obj_in_cs(obj)))... · 2c2c1d9c
      tonyp 提交于
      7040450: G1: assert((_g1->evacuation_failed()) || (!_g1->obj_in_cs(obj))) failed: shouldn't still be in ...
      Summary: There is a race in the evac failure handling code that causes the condition the assert checks not to be true. The fix is to replace the too-strong assert with a more targeted one.
      Reviewed-by: johnc, ysr, jcoomes
      2c2c1d9c
  32. 04 5月, 2011 1 次提交
  33. 30 4月, 2011 1 次提交
    • T
      7035144: G1: nightly failure: Non-dirty cards in region that should be dirty... · 086cc9b4
      tonyp 提交于
      7035144: G1: nightly failure: Non-dirty cards in region that should be dirty (failures still exist...)
      Summary: We should only undirty cards after we decide that they are not on a young region, not before. The fix also includes improvements to the verify_dirty_region() method which print out which cards were not found dirty.
      Reviewed-by: johnc, brutisso
      086cc9b4
  34. 27 4月, 2011 1 次提交
    • Y
      7039089: G1: changeset for 7037276 broke heap verification, and related cleanups · cdee9464
      ysr 提交于
      Summary: In G1 heap verification, we no longer scan perm to G1-collected heap refs as part of process_strong_roots() but rather in a separate explicit oop iteration over the perm gen. This preserves the original perm card-marks. Added a new assertion in younger_refs_iterate() to catch a simple subcase where the user may have forgotten a prior save_marks() call, as happened in the case of G1's attempt to iterate perm to G1 refs when verifying the heap before exit. The assert was deliberately weakened for ParNew+CMS and will be fixed for that combination in a future CR. Also made some (non-G1) cleanups related to code and comments obsoleted by the migration of Symbols to the native heap.
      Reviewed-by: iveresov, jmasa, tonyp
      cdee9464
  35. 22 4月, 2011 1 次提交
  36. 20 4月, 2011 1 次提交
    • T
      7011855: G1: non-product flag to artificially grow the heap · dfbf6345
      tonyp 提交于
      Summary: It introduces non-product cmd line parameter G1DummyRegionsPerGC which indicates how many "dummy" regions to allocate at the end of each GC. This allows the G1 heap to grow artificially and makes concurrent marking cycles more frequent irrespective of what the application that is running is doing. The dummy regions will be found totally empty during cleanup so this parameter can also be used to stress the concurrent cleanup operation.
      Reviewed-by: brutisso, johnc
      dfbf6345
  37. 18 3月, 2011 1 次提交