1. 14 1月, 2012 1 次提交
  2. 11 1月, 2012 1 次提交
    • T
      6888336: G1: avoid explicitly marking and pushing objects in survivor spaces · 9c6bb570
      tonyp 提交于
      Summary: This change simplifies the interaction between GC and concurrent marking. By disabling survivor spaces during the initial-mark pause we don't need to propagate marks of objects we copy during each GC (since we never need to copy an explicitly marked object).
      Reviewed-by: johnc, brutisso
      9c6bb570
  3. 29 12月, 2011 1 次提交
  4. 24 12月, 2011 1 次提交
  5. 17 12月, 2011 1 次提交
    • J
      7120038: G1: ParallelGCThreads==0 is broken · 4fe37427
      johnc 提交于
      Summary: Running G1 with ParallelGCThreads==0 results in various crashes and asserts. Most of these are caused by unguarded references to the worker threads array or an incorrect number of active workers.
      Reviewed-by: jmasa, tonyp
      4fe37427
  6. 15 12月, 2011 1 次提交
  7. 18 11月, 2011 1 次提交
    • J
      7112743: G1: Reduce overhead of marking closure during evacuation pauses · 085b6a3b
      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
      085b6a3b
  8. 08 11月, 2011 1 次提交
  9. 14 10月, 2011 1 次提交
    • T
      7088680: G1: Cleanup in the G1CollectorPolicy class · 51110cf3
      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
      51110cf3
  10. 05 10月, 2011 1 次提交
  11. 23 9月, 2011 1 次提交
    • J
      6484982: G1: process references during evacuation pauses · 3c0b8be9
      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
      3c0b8be9
  12. 22 9月, 2011 2 次提交
  13. 08 9月, 2011 1 次提交
    • T
      7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions · 20edf5a6
      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
      20edf5a6
  14. 19 8月, 2011 1 次提交
  15. 10 8月, 2011 1 次提交
  16. 19 11月, 2011 1 次提交
  17. 25 6月, 2011 1 次提交
  18. 21 6月, 2011 1 次提交
  19. 15 6月, 2011 1 次提交
    • J
      7004681: G1: Extend marking verification to Full GCs · 1d53f952
      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
      1d53f952
  20. 14 6月, 2011 1 次提交
    • T
      7046558: G1: concurrent marking optimizations · 250bc6d1
      tonyp 提交于
      Summary: Some optimizations to improve the concurrent marking phase: specialize the main oop closure, make sure a few methods in the fast path are properly inlined, a few more bits and pieces, and some cosmetic fixes.
      Reviewed-by: stefank, johnc
      250bc6d1
  21. 17 5月, 2011 1 次提交
    • J
      7041440: G1: assert(obj->is_oop_or_null(true )) failed: Error # · 9fc2f279
      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
      9fc2f279
  22. 30 4月, 2011 2 次提交
    • T
      7035144: G1: nightly failure: Non-dirty cards in region that should be dirty... · ddd95364
      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
      ddd95364
    • T
      7034139: G1: assert(Thread::current()->is_ConcurrentGC_thread()) failed: only... · 7d82f540
      tonyp 提交于
      7034139: G1: assert(Thread::current()->is_ConcurrentGC_thread()) failed: only a conc GC thread can call this.
      Summary: We were calling STS join and leave during a STW pause and we are not suppoesed to. I now only call those during  concurrent phase. I also added stress code in the non-product builds to force an overflows (the condition that ws uncovering the bug) to make sure it does not happen again.
      Reviewed-by: johnc, brutisso
      7d82f540
  23. 18 3月, 2011 1 次提交
  24. 05 3月, 2011 1 次提交
  25. 19 2月, 2011 1 次提交
  26. 05 4月, 2011 1 次提交
  27. 28 1月, 2011 1 次提交
  28. 26 1月, 2011 2 次提交
    • T
      7014261: G1: RSet-related failures · 13cd9626
      tonyp 提交于
      Summary: A race between the concurrent cleanup thread and the VM thread while it is processing the "expanded sparse table list" causes both threads to try to free the same sparse table entry and either causes one of the threads to fail or leaves the entry in an inconsistent state. The solution is purge all entries on the expanded list that correspond go regions that are being cleaned up.
      Reviewed-by: brutisso, johnc
      13cd9626
    • J
      6608385: G1: need to support parallel reference processing · d1b9ed21
      johnc 提交于
      Summary: Implement support for ParallelRefProcEnabled in the reference processing that takes place at the end of G1 concurrent marking.
      Reviewed-by: tonyp, ysr
      d1b9ed21
  29. 20 1月, 2011 1 次提交
    • T
      6977804: G1: remove the zero-filling thread · 925951fa
      tonyp 提交于
      Summary: This changeset removes the zero-filling thread from G1 and collapses the two free region lists we had before (the "free" and "unclean" lists) into one. The new free list uses the new heap region sets / lists abstractions that we'll ultimately use it to keep track of all regions in the heap. A heap region set was also introduced for the humongous regions. Finally, this change increases the concurrency between the thread that completes freeing regions (after a cleanup pause) and the rest of the system (before we'd have to wait for said thread to complete before allocating a new region). The changest also includes a lot of refactoring and code simplification.
      Reviewed-by: jcoomes, johnc
      925951fa
  30. 19 1月, 2011 1 次提交
    • T
      7011379: G1: overly long concurrent marking cycles · 652db62e
      tonyp 提交于
      Summary: This changeset introduces filtering of SATB buffers at the point when they are about to be enqueued. If this filtering clears enough entries on each buffer, the buffer can then be re-used and not enqueued. This cuts down the number of SATB buffers that need to be processed by the concurrent marking threads.
      Reviewed-by: johnc, ysr
      652db62e
  31. 11 1月, 2011 1 次提交
  32. 18 12月, 2010 1 次提交
    • J
      7006113: G1: Initialize ReferenceProcessor::_is_alive_non_header field · 348423a6
      johnc 提交于
      Summary: Initialize the _is_alive_non_header field of G1's reference processor with an instance of the G1CMIsAliveClosure. This will stop adding reference objects with live referents to the discovered reference lists unnecessarily.
      Reviewed-by: tonyp, ysr, jwilhelm, brutisso
      348423a6
  33. 02 12月, 2010 1 次提交
  34. 24 11月, 2010 1 次提交
  35. 19 10月, 2010 1 次提交
    • J
      6988458: G1: assert(mr.end() <= _cm->finger()) failed: otherwise the region... · 3c9e0f58
      johnc 提交于
      6988458: G1: assert(mr.end() <= _cm->finger()) failed: otherwise the region shouldn't be on the stack
      Summary: The changes from 6941395 did not clear the CMTask::_aborted_region fields when concurrent marking aborted because of overflow. As a result, the next time around we could see a memory region whose start address was above the global finger and the assertion tripped. Moved the clearing of the aborted regions to ConcurrentMark::clear_marking_state, which is executed on all of the exit paths.
      Reviewed-by: tonyp, ysr, jmasa
      3c9e0f58
  36. 29 9月, 2010 1 次提交
    • J
      6941395: G1: Use only lock-free versions of region stack push() and pop() · 0cb14710
      johnc 提交于
      Summary: Re-enable use of the lock-free versions of region stack push() and pop() by recording aborted regions in a thread-local structure, which are then processed when scanning of the region stack restarts. The previous locking versions of these routines are retained for diagnostic purposes.
      Reviewed-by: tonyp, ysr
      0cb14710
  37. 21 9月, 2010 1 次提交