comparison src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp @ 3746:537a4053b0f9

7042740: CMS: assert(n> q) failed: Looping at: ... blockOffsetTable.cpp:557 Summary: Do a one-step look-ahead, when sweeping free or garbage blocks, to avoid overstepping sweep limit, which may become a non-block-boundary because of a heap expansion delta coalescing with a previously co-terminal free block. Reviewed-by: brutisso, tonyp
author ysr
date Mon, 23 May 2011 16:42:14 -0700
parents f95d63e2154a
children c08412904149
comparison
equal deleted inserted replaced
3397:cfbca4d74a61 3746:537a4053b0f9
1 /* 1 /*
2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
405 405
406 // iteration support for sweeping 406 // iteration support for sweeping
407 void save_sweep_limit() { 407 void save_sweep_limit() {
408 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ? 408 _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ?
409 unallocated_block() : end(); 409 unallocated_block() : end();
410 if (CMSTraceSweeper) {
411 gclog_or_tty->print_cr(">>>>> Saving sweep limit " PTR_FORMAT
412 " for space [" PTR_FORMAT "," PTR_FORMAT ") <<<<<<",
413 _sweep_limit, bottom(), end());
414 }
410 } 415 }
411 NOT_PRODUCT( 416 NOT_PRODUCT(
412 void clear_sweep_limit() { _sweep_limit = NULL; } 417 void clear_sweep_limit() { _sweep_limit = NULL; }
413 ) 418 )
414 HeapWord* sweep_limit() { return _sweep_limit; } 419 HeapWord* sweep_limit() { return _sweep_limit; }