1. 19 11月, 2011 1 次提交
  2. 08 11月, 2011 2 次提交
  3. 28 9月, 2011 1 次提交
  4. 24 9月, 2011 1 次提交
  5. 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
  6. 21 9月, 2011 1 次提交
    • J
      7092412: G1: Some roots not marked during an initial mark that gets an evacuation failure · ecf49309
      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
      ecf49309
  7. 30 8月, 2011 1 次提交
  8. 19 8月, 2011 1 次提交
  9. 12 8月, 2011 1 次提交
  10. 02 8月, 2011 1 次提交
    • J
      7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark · f065e68f
      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
      f065e68f
  11. 25 6月, 2011 1 次提交
  12. 22 6月, 2011 1 次提交
    • T
      7046182: G1: remove unnecessary iterations over the collection set · f16aa83a
      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
      f16aa83a
  13. 17 6月, 2011 1 次提交
  14. 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
  15. 11 6月, 2011 1 次提交
    • T
      7045330: G1: Simplify/fix the HeapRegionSeq class · fea6684a
      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
      fea6684a
  16. 09 6月, 2011 1 次提交
  17. 04 5月, 2011 1 次提交
  18. 30 4月, 2011 1 次提交
    • 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
  19. 22 4月, 2011 1 次提交
  20. 20 4月, 2011 1 次提交
    • T
      7011855: G1: non-product flag to artificially grow the heap · 71990acc
      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
      71990acc
  21. 05 3月, 2011 1 次提交
  22. 01 3月, 2011 1 次提交
    • J
      7022200: G1: optimized build broken · 698f439b
      johnc 提交于
      Summary: Make the G1 specific version of is_in_closed_subset() available in all builds.
      Reviewed-by: tonyp, jcoomes
      698f439b
  23. 05 4月, 2011 1 次提交
  24. 30 3月, 2011 2 次提交
  25. 03 2月, 2011 1 次提交
    • J
      6923430: G1: assert(res != 0,"This should have worked.") · 3d6f44f3
      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
      3d6f44f3
  26. 26 1月, 2011 1 次提交
    • 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
  27. 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
  28. 13 1月, 2011 2 次提交
    • T
      6994297: G1: do first-level slow-path allocations with a CAS · 9463ee74
      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
      9463ee74
    • T
      7007068: G1: refine the BOT during evac failure handling · 88d2b0dd
      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
      88d2b0dd
  29. 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
  30. 15 12月, 2010 1 次提交
    • T
      7000559: G1: assertion failure !outer || (full_collections_started ==... · 26d512ac
      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
      26d512ac
  31. 08 12月, 2010 1 次提交
  32. 24 11月, 2010 1 次提交
  33. 14 10月, 2010 1 次提交
  34. 13 10月, 2010 1 次提交
  35. 29 9月, 2010 1 次提交
  36. 21 9月, 2010 1 次提交
  37. 25 8月, 2010 1 次提交
    • T
      6974966: G1: unnecessary direct-to-old allocations · 9980e6a5
      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
      9980e6a5