1. 08 12月, 2010 1 次提交
    • J
      6994628: G1: Test gc/gctests/FinalizeTest05 fails (one live object is finalized) · a669d665
      johnc 提交于
      Summary: The Solaris Studio 12 update 1 C++ compiler was incorrectly re-ordering the reads of an object's mark word in oopDesc::forward_to_atomic(). This opened a small window where one thread could execute the successful CAS path even though another thread had already successfully forwarded the object. This could result in an object being copied twice. The code in oopDesc::forward_to_atomic() was changed to read the mark word once.
      Reviewed-by: ysr, tonyp
      a669d665
  2. 03 12月, 2010 1 次提交
  3. 02 12月, 2010 1 次提交
  4. 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
  5. 24 11月, 2010 1 次提交
  6. 23 11月, 2010 1 次提交
  7. 19 11月, 2010 1 次提交
  8. 17 11月, 2010 3 次提交
  9. 13 11月, 2010 1 次提交
  10. 12 11月, 2010 1 次提交
  11. 10 11月, 2010 3 次提交
  12. 07 11月, 2010 1 次提交
  13. 06 11月, 2010 3 次提交
  14. 05 11月, 2010 1 次提交
  15. 03 11月, 2010 2 次提交
  16. 31 10月, 2010 3 次提交
  17. 29 10月, 2010 1 次提交
  18. 28 10月, 2010 2 次提交
  19. 27 10月, 2010 1 次提交
  20. 24 10月, 2010 1 次提交
  21. 23 10月, 2010 1 次提交
  22. 22 10月, 2010 3 次提交
  23. 21 10月, 2010 1 次提交
  24. 20 10月, 2010 2 次提交
  25. 19 10月, 2010 1 次提交
  26. 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
  27. 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