1. 03 2月, 2011 1 次提交
    • J
      6923430: G1: assert(res != 0,"This should have worked.") · a2031db9
      johnc 提交于
      7007446: G1: expand the heap with a single step, not one region at a time
      Summary: Changed G1CollectedHeap::expand() to expand the committed space by calling VirtualSpace::expand_by() once rather than for every region in the expansion amount. This allows the success or failure of the expansion to be determined before creating any heap regions. Introduced a develop flag G1ExitOnExpansionFailure (false by default) that, when true, will exit the VM if the expansion of the committed space fails. Finally G1CollectedHeap::expand() returns a status back to it's caller so that the caller knows whether to attempt the allocation.
      Reviewed-by: brutisso, tonyp
      a2031db9
  2. 26 1月, 2011 1 次提交
    • T
      7014261: G1: RSet-related failures · 1498a56a
      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
      1498a56a
  3. 20 1月, 2011 1 次提交
    • T
      6977804: G1: remove the zero-filling thread · 0ed267ef
      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
      0ed267ef
  4. 13 1月, 2011 2 次提交
    • T
      6994297: G1: do first-level slow-path allocations with a CAS · 302ddaef
      tonyp 提交于
      Summary: First attempt to allocate out the current alloc region using a CAS instead of taking the Heap_lock (first level of G1's slow allocation path). Only if that fails and it's necessary to replace the current alloc region take the Heap_lock (that's the second level of G1's slow allocation path).
      Reviewed-by: johnc, brutisso, ysr
      302ddaef
    • T
      7007068: G1: refine the BOT during evac failure handling · d205bb81
      tonyp 提交于
      Summary: During evacuation failure handling we refine the BOT to reflect the location of all the objects in the regions we scan. The changeset includes some minor cleanup: a) non-product print_on() method on the G1 BOT class, b) added more complete BOT verification during heap / region verification, c) slight modification to the BOT set up for humongous regions to be more consistent with the BOT set up during evac failure handling, and d) removed a couple of unused methods.
      Reviewed-by: johnc, ysr
      d205bb81
  5. 18 12月, 2010 1 次提交
    • J
      7006113: G1: Initialize ReferenceProcessor::_is_alive_non_header field · a2d29d26
      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
      a2d29d26
  6. 15 12月, 2010 1 次提交
    • T
      7000559: G1: assertion failure !outer || (full_collections_started ==... · 49b4b500
      tonyp 提交于
      7000559: G1: assertion failure !outer || (full_collections_started == _full_collections_completed + 1)
      Summary: The concurrent marking thread can complete its operation and increment the full GC counter during a Full GC. This causes the nesting of increments to the start and end of Full GCs that we are expecting to be wrong. the fix is for the marking thread to join the suspendible thread set before incrementing the counter so that it's blocked until the Full GC (or any other safepoint) is finished. The change also includes some minor code cleanup (I renamed a parameter).
      Reviewed-by: brutisso, ysr
      49b4b500
  7. 08 12月, 2010 1 次提交
  8. 24 11月, 2010 1 次提交
  9. 14 10月, 2010 1 次提交
  10. 13 10月, 2010 1 次提交
  11. 29 9月, 2010 1 次提交
  12. 21 9月, 2010 1 次提交
  13. 25 8月, 2010 1 次提交
    • T
      6974966: G1: unnecessary direct-to-old allocations · 41dac17c
      tonyp 提交于
      Summary: This change revamps the slow allocation path of G1. Improvements include the following: a) Allocations directly to old regions are now totally banned. G1 now only allows allocations out of young regions (with the only exception being humongous regions). b) The thread that allocates a new region (which is now guaranteed to be young) does not dirty all its cards. Each thread that successfully allocates out of a young region is now responsible for dirtying the cards that corresponding to the "block" that just got allocated. c) allocate_new_tlab() and mem_allocate() are now implemented differently and TLAB allocations are only done by allocate_new_tlab(). d) If a thread schedules an evacuation pause in order to satisfy an allocation request, it will perform the allocation at the end of the safepoint so that the thread that initiated the GC also gets "first pick" of any space made available by the GC. e) If a thread is unable to allocate a humongous object it will schedule an evacuation pause in case it reclaims enough regions so that the humongous allocation can be satisfied aftewards. f) The G1 policy is more careful to set the young list target length to be the survivor number +1. g) Lots of code tidy up, removal, refactoring to make future changes easier.
      Reviewed-by: johnc, ysr
      41dac17c
  14. 18 8月, 2010 1 次提交
  15. 09 8月, 2010 1 次提交
  16. 03 8月, 2010 1 次提交
    • J
      6814437: G1: remove the _new_refs array · 64711cc9
      johnc 提交于
      Summary: The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure.
      Reviewed-by: iveresov, jmasa, tonyp
      64711cc9
  17. 29 6月, 2010 1 次提交
  18. 28 5月, 2010 1 次提交
  19. 23 4月, 2010 2 次提交
  20. 16 4月, 2010 1 次提交
  21. 12 3月, 2010 1 次提交
    • J
      6755988: G1: assert(new_obj != 0 || ... "should be forwarded") · 195509ea
      johnc 提交于
      Summary: A TLAB became large enough to be considered a humongous object allowing multiple objects to be allocated in a humongous region, which violates a basic assumption about humongous regions. The changes ensure that TLABs cannot be regarded as humongous.
      Reviewed-by: iveresov, tonyp
      195509ea
  22. 04 3月, 2010 1 次提交
  23. 12 2月, 2010 1 次提交
    • I
      6923991: G1: improve scalability of RSet scanning · 88955d77
      iveresov 提交于
      Summary: Implemented block-based work stealing. Moved copying during the rset scanning phase to the main copying phase. Made the size of rset table depend on the region size.
      Reviewed-by: apetrusenko, tonyp
      88955d77
  24. 27 1月, 2010 1 次提交
  25. 14 1月, 2010 1 次提交
    • Y
      6896647: card marks can be deferred too long · 651edb8d
      ysr 提交于
      Summary: Deferred card marks are now flushed during the gc prologue. Parallel[Scavege,OldGC] and SerialGC no longer defer card marks generated by COMPILER2 as a result of ReduceInitialCardMarks. For these cases, introduced a diagnostic option to defer the card marks, only for the purposes of testing and diagnostics. CMS and G1 continue to defer card marks. Potential performance concern related to single-threaded flushing of deferred card marks in the gc prologue will be addressed in the future.
      Reviewed-by: never, johnc
      651edb8d
  26. 04 12月, 2009 1 次提交
  27. 16 10月, 2009 1 次提交
    • Y
      6888898: CMS: ReduceInitialCardMarks unsafe in the presence of cms precleaning · 349bfec0
      ysr 提交于
      6889757: G1: enable card mark elision for initializing writes from compiled code (ReduceInitialCardMarks)
      Summary: Defer the (compiler-elided) card-mark upon a slow-path allocation until after the store  and before the next subsequent safepoint; G1 now answers yes to can_elide_tlab_write_barriers().
      Reviewed-by: jcoomes, kvn, never
      349bfec0
  28. 31 7月, 2009 1 次提交
  29. 02 9月, 2009 1 次提交
    • Y
      4957990: Perm heap bloat in JVM · 763668ed
      ysr 提交于
      Summary: Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.
      Reviewed-by: jcoomes, jmasa, kvn, never
      763668ed
  30. 16 7月, 2009 1 次提交
  31. 15 7月, 2009 1 次提交
  32. 08 7月, 2009 1 次提交
  33. 13 6月, 2009 1 次提交
  34. 12 6月, 2009 1 次提交
  35. 19 5月, 2009 1 次提交
  36. 26 3月, 2009 2 次提交
  37. 16 3月, 2009 1 次提交
    • T
      6604422: G1: re-use half-promoted regions · 98b19c84
      tonyp 提交于
      6728271: G1: Cleanup G1CollectedHeap::get_gc_alloc_regions()
      Summary: It allows the last half-full region to be allocated to during a GC to be reused during the next GC.
      Reviewed-by: apetrusenko, jcoomes
      98b19c84