1. 07 1月, 2011 1 次提交
  2. 20 12月, 2010 1 次提交
  3. 18 12月, 2010 2 次提交
    • Y
      6807801: CMS: could save/restore fewer header words during scavenge · 8ea00085
      ysr 提交于
      Summary: Age bits need not enter the mark-word preservation calculus; also affected, in addition to CMS, per CR synopsis above, were ParNew (but not DefNew), ParallelScavenge and G1, albeit to a lesser degree than CMS.
      Reviewed-by: tonyp, johnc
      8ea00085
    • 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
  4. 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
  5. 10 12月, 2010 1 次提交
  6. 08 12月, 2010 2 次提交
    • Y
      7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot ||... · 8be7836d
      ysr 提交于
      7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed())
      7002546: regression on SpecJbb2005 on 7b118 comparing to 7b117 on small heaps
      Summary: Relaxed assertion checking related to incremental_collection_failed flag to allow for ExplicitGCInvokesConcurrent behaviour where we do not want a failing scavenge to bail to a stop-world collection. Parameterized incremental_collection_will_fail() so we can selectively use, or not use, as appropriate, the statistical prediction at specific use sites. This essentially reverts the scavenge bail-out logic to what it was prior to some recent changes that had inadvertently started using the statistical prediction which can be noisy in the presence of bursty loads. Added some associated verbose non-product debugging messages.
      Reviewed-by: johnc, tonyp
      8be7836d
    • T
      6994056: G1: when GC locker is active, extend the Eden instead of allocating into the old gen · ca3e35c8
      tonyp 提交于
      Summary: Allow the eden to the expanded up to a point when the GC locker is active.
      Reviewed-by: jwilhelm, johnc, ysr, jcoomes
      ca3e35c8
  7. 03 12月, 2010 1 次提交
  8. 02 12月, 2010 1 次提交
  9. 01 12月, 2010 1 次提交
  10. 24 11月, 2010 1 次提交
  11. 17 11月, 2010 2 次提交
    • J
      6978187: G1: assert(ParallelGCThreads> 1 || n_yielded() == _hrrs->occupied()) strikes again · 8d02802f
      johnc 提交于
      Summary: An evacuation failure while copying the roots caused an object, A, to be forwarded to itself. During the subsequent RSet updating a reference to A was processed causing the reference to be added to the RSet of A's heap region. As a result of adding to the remembered set we ran into the issue described in 6930581 - the sparse table expanded and the RSet scanning code walked the cards in one instance of RHashTable (_cur) while the occupied() counts the cards in the expanded table (_next).
      Reviewed-by: tonyp, iveresov
      8d02802f
    • Y
      7000578: CMS: assert(SafepointSynchronize::is_at_safepoint()) failed: Else races are possible · 3e22a1c3
      ysr 提交于
      Summary: Weakened assert in onj_is_alive() to allow its use at initialization time when is_at_safepoint() normally reports false; added some related asserts to check order of is_init_completed() after Universe::is_fully_initialized().
      Reviewed-by: jcoomes
      3e22a1c3
  12. 10 11月, 2010 1 次提交
  13. 06 11月, 2010 1 次提交
    • Y
      6997298: fatal error: must own lock CMS_markBitMap_lock during heap dump · 385dacb7
      ysr 提交于
      Summary: Since we are at a stop-world pause, the existing CMS-phase checks are sufficient for safety, and the locking check can be safely elided. Elaborated documentation comment to the case where class unloading and verification are disabled, and the query happens when we aren't in the sweeping phase, where the answer "false" would be (almost everywhere) too pessimistic.
      Reviewed-by: jmasa, johnc, tonyp
      385dacb7
  14. 24 10月, 2010 1 次提交
  15. 22 10月, 2010 2 次提交
    • Y
      6992998: CMSWaitDuration=0 causes hangs with +ExplicitGCInvokesConcurrent · 41f9c77a
      ysr 提交于
      Summary: Closed a timing hole during which concurrent full gc requests can be missed. The hole can increase the latency of the response to a full gc request by up to the value of CMSWaitDuration. If CMSWaitDuration=0 is, as currently, interpreted as an unbounded wait, suitable in certain tuning scenarios, the application can potentially hang. Made two obscure tunables, including CMSWaitDuration, manageable.
      Reviewed-by: jcoomes, tonyp
      41f9c77a
    • N
      6970683: improvements to hs_err output · 454991f1
      never 提交于
      Reviewed-by: kvn, jrose, dholmes, coleenp
      454991f1
  16. 17 10月, 2010 1 次提交
    • T
      6991377: G1: race between concurrent refinement and humongous object allocation · a9a0cccb
      tonyp 提交于
      Summary: There is a race between the concurrent refinement threads and the humongous object allocation that can cause the concurrent refinement threads to corrupt the part of the BOT that it is being initialized by the humongous object allocation operation. The solution is to do the humongous object allocation in careful steps to ensure that the concurrent refinement threads always have a consistent view over the BOT, region contents, and top. The fix includes some very minor tidying up in sparsePRT.
      Reviewed-by: jcoomes, johnc, ysr
      a9a0cccb
  17. 19 10月, 2010 1 次提交
    • J
      6988458: G1: assert(mr.end() <= _cm->finger()) failed: otherwise the region... · f0680241
      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
      f0680241
  18. 16 10月, 2010 1 次提交
  19. 14 10月, 2010 1 次提交
  20. 13 10月, 2010 2 次提交
  21. 02 10月, 2010 3 次提交
    • T
      6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue · acd6a8e3
      tonyp 提交于
      Summary: Under certain circumstances a safepoint could happen between a JavaThread object being created and that object being added to the Java threads list. This could cause the active field of that thread's SATB queue to get out-of-sync with respect to the other Java threads. The solution is to activate the SATB queue, when necessary, before adding the thread to the Java threads list, not when the JavaThread object is created. The changeset also includes a small fix to rename the surrogate locker thread from "Surrogate Locker Thread (CMS)" to "Surrogate Locker Thread (Concurrent GC)" since it's also used in G1.
      Reviewed-by: iveresov, ysr, johnc, jcoomes
      acd6a8e3
    • J
      6983311: G1: LoopTest hangs when run with -XX:+ExplicitInvokesConcurrent · 52b8d7bd
      johnc 提交于
      Summary: Clear the concurrent marking "in progress" flag while the FullGCCount_lock is held. This avoids a race that can cause back to back System.gc() calls, when ExplicitGCInvokesConcurrent is enabled, to fail to initiate a marking cycle causing the requesting thread to hang.
      Reviewed-by: tonyp, ysr
      52b8d7bd
    • Y
      6794422: Perm gen expansion policy for concurrent collectors · 9747275e
      ysr 提交于
      Summary: Concurrent collectors should expand the perm gen without a full STW GC, but possibly by triggering a concurrent collection. Temporary band-aid for G1 where no concurrent collection is kicked off since the perm gen is not collected concurrently.
      Reviewed-by: johnc
      9747275e
  22. 30 9月, 2010 1 次提交
    • Y
      6692906: CMS: parallel concurrent marking may be prone to hanging or stalling... · f1d21486
      ysr 提交于
      6692906: CMS: parallel concurrent marking may be prone to hanging or stalling mutators for periods of time
      Summary: Inserted missing yield(check)s in closures used during the work-stealing phase of parallel concurrent marking, a missing synchronous yield-request in the cms perm gen allocation path, and a terminator-terminator for the offer_termination invocation that monitors the yield status of the concurrent marking task. Elaborated some documentation comments and made some task queue termination loop flags configurable at start-up to aid debugging in the field.
      Reviewed-by: jmasa, johnc, poonam
      f1d21486
  23. 29 9月, 2010 2 次提交
  24. 14 9月, 2010 1 次提交
    • J
      6981746: G1: SEGV with -XX:+TraceGen0Time · a5cebdbe
      johnc 提交于
      Summary: Pass correct value for length to NumberSeq constructor. Guard dereferences of "body_summary" pointer with a NULL check.
      Reviewed-by: tonyp, ysr
      a5cebdbe
  25. 11 9月, 2010 1 次提交
  26. 21 9月, 2010 1 次提交
  27. 26 8月, 2010 1 次提交
  28. 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
  29. 24 8月, 2010 1 次提交
  30. 19 8月, 2010 1 次提交
  31. 18 8月, 2010 2 次提交