1. 08 12月, 2010 1 次提交
  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