1. 09 8月, 2010 1 次提交
  2. 07 8月, 2010 1 次提交
    • J
      6930581: G1: assert(ParallelGCThreads > 1 || n_yielded() ==... · d0aa394b
      johnc 提交于
      6930581: G1: assert(ParallelGCThreads > 1 || n_yielded() == _hrrs->occupied(),"Should have yielded all the ..
      Summary: During RSet updating, when ParallelGCThreads is zero, references that point into the collection set are added directly the referenced region's RSet. This can cause the sparse table in the RSet to expand. RSet scanning and the "occupied" routine will then operate on different instances of the sparse table causing the assert to trip. This may also cause some cards added post expansion to be missed during RSet scanning. When ParallelGCThreads is non-zero such references are recorded on the "references to be scanned" queue and the card containing the reference is recorded in a dirty card queue for use in the event of an evacuation failure. Employ the parallel code in the serial case to avoid expanding the RSets of regions in the collection set.
      Reviewed-by: iveresov, ysr, tonyp
      d0aa394b
  3. 05 8月, 2010 1 次提交
    • T
      6963209: G1: remove the concept of abandoned pauses · e49283a2
      tonyp 提交于
      Summary: As part of 6944166 we disabled the concept of abandoned pauses (i.e., if the collection set is empty, we would still try to do a pause even if it is to update the RSets and scan the roots). This changeset removes the code and structures associated with abandoned pauses.
      Reviewed-by: iveresov, johnc
      e49283a2
  4. 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
  5. 20 7月, 2010 1 次提交
  6. 29 6月, 2010 1 次提交
  7. 28 5月, 2010 2 次提交
  8. 25 5月, 2010 1 次提交
  9. 19 5月, 2010 1 次提交
  10. 15 5月, 2010 1 次提交
  11. 12 5月, 2010 1 次提交
  12. 23 4月, 2010 1 次提交
  13. 08 5月, 2010 1 次提交
    • T
      6949307: G1: raise a vm error, do not core dump, if target pause time and... · 7a0c8373
      tonyp 提交于
      6949307: G1: raise a vm error, do not core dump, if target pause time and target interval are inconsistent
      Summary: First, change the guarantee to raising a vm error. Second, set the interval dynamically, and based on the pause time target, if it is not set explicitly.
      Reviewed-by: ysr, johnc
      7a0c8373
  14. 23 4月, 2010 1 次提交
  15. 16 4月, 2010 3 次提交
  16. 08 4月, 2010 1 次提交
    • J
      6940894: G1: assert(new_obj != 0 || ... "should be forwarded") for compaction tests · bc7497dc
      johnc 提交于
      Summary: Humongous regions may contain multiple objects as a result of being retained as to-space from a previous GC and then re-used as to-space after being tagged as humongous. These changes include a check that causes retained to-space regions that are now tagged as humongous to be disregarded and a new to-space region allocated.
      Reviewed-by: tonyp, iveresov
      bc7497dc
  17. 06 4月, 2010 2 次提交
    • T
      6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.") · 524b2dd2
      tonyp 提交于
      Summary: Make sure that two marking cycles do not overlap, i.e., a new one can only start after the concurrent marking thread finishes all its work. In the fix I piggy-back a couple of minor extra fixes: some general code reformatting for consistency (only around the code I modified), the removal of a field (G1CollectorPolicy::_should_initiate_conc_mark) which doesn't seem to be used at all (it's only set but never read), as well as moving the "is GC locker active" test earlier into the G1 pause / Full GC and using a more appropriate method for it.
      Reviewed-by: johnc, jmasa, jcoomes, ysr
      524b2dd2
    • T
      6940310: G1: MT-unsafe calls to CM::region_stack_push() / CM::region_stack_pop() · 1bf17034
      tonyp 提交于
      Summary: Calling the methods region_stack_push() and region_stack_pop() concurrent is not MT-safe. The assumption is that we will only call region_stack_push() during a GC pause and region_stack_pop() during marking. Unfortunately, we also call region_stack_push() during marking which seems to be introducing subtle marking failures. This change introduces lock-based methods for pushing / popping to be called during marking.
      Reviewed-by: iveresov, johnc
      1bf17034
  18. 03 4月, 2010 1 次提交
  19. 31 3月, 2010 1 次提交
  20. 14 4月, 2010 1 次提交
  21. 31 3月, 2010 1 次提交
    • T
      6937160: G1: should observe GCTimeRatio · ba4ccdf3
      tonyp 提交于
      Summary: Remove the G1GCPercent parameter, that specifies the desired GC overhead percentage in G1, and observe the GCTimeRatio parameter instead.
      Reviewed-by: jmasa, johnc
      ba4ccdf3
  22. 19 3月, 2010 1 次提交
    • T
      6935821: G1: threads created during marking do not active their SATB queues · 9677603a
      tonyp 提交于
      Summary: Newly-created threads always had the active field of their SATB queue initialized to false, even if they were created during marking. As a result, updates from threads created during a marking cycle were never enqueued and never processed. The fix includes remaining a method from active() to is_active() for readability and naming consistency.
      Reviewed-by: ysr, johnc
      9677603a
  23. 18 3月, 2010 1 次提交
  24. 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
  25. 04 3月, 2010 1 次提交
  26. 25 2月, 2010 1 次提交
  27. 24 2月, 2010 3 次提交
  28. 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
  29. 09 2月, 2010 1 次提交
    • T
      6802453: G1: hr()->is_in_reserved(from),"Precondition." · 812d794b
      tonyp 提交于
      Summary: The operations of re-using a RSet component and expanding the same RSet component were not mutually exlusive, and this could lead to RSets getting corrupted and entries being dropped.
      Reviewed-by: iveresov, johnc
      812d794b
  30. 03 2月, 2010 1 次提交
  31. 02 2月, 2010 1 次提交
    • Y
      6904516: More object array barrier fixes, following up on 6906727 · 59ae9b34
      ysr 提交于
      Summary: Fixed missing pre-barrier calls for G1, modified C1 to call pre- and correct post-barrier interfaces, deleted obsolete interface, (temporarily) disabled redundant deferred barrier in BacktraceBuilder.
      Reviewed-by: coleenp, jmasa, kvn, never
      59ae9b34
  32. 27 1月, 2010 1 次提交
  33. 14 1月, 2010 2 次提交
    • J
      6915005: G1: Hang in PtrQueueSet::completed_buffers_list_length with gcl001 · b851645d
      johnc 提交于
      Summary: When enqueuing a completed PtrQueue buffer, cache a local pointer to the buffer and clear the field in the PtrQueue prior to unlocking the mutex referenced by the _lock field and pass the cached local value to the enqueuing routine. This will prevent the same completed buffer being enqueued multiple times, which causes the hang.
      Reviewed-by: ysr
      b851645d
    • 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