Mercurial > hg > graal-compiler
comparison src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp @ 3405:8cbcd406c42e
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 | Fri, 27 May 2011 15:05:33 -0700 |
parents | f95d63e2154a |
children | c08412904149 |
comparison
equal
deleted
inserted
replaced
3404:2d4b2b833d29 | 3405:8cbcd406c42e |
---|---|
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; } |