src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp

changeset 1993
b2a00dd3117c
parent 1934
e9ff18c4ace7
child 2314
f95d63e2154a
equal deleted inserted replaced
1983:a00567c82f02 1993:b2a00dd3117c
1 /* 1 /*
2 * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2005, 2010, 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.
1295 template <class T> 1295 template <class T>
1296 inline void PSParallelCompact::mark_and_push(ParCompactionManager* cm, T* p) { 1296 inline void PSParallelCompact::mark_and_push(ParCompactionManager* cm, T* p) {
1297 T heap_oop = oopDesc::load_heap_oop(p); 1297 T heap_oop = oopDesc::load_heap_oop(p);
1298 if (!oopDesc::is_null(heap_oop)) { 1298 if (!oopDesc::is_null(heap_oop)) {
1299 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); 1299 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
1300 if (mark_bitmap()->is_unmarked(obj)) { 1300 if (mark_bitmap()->is_unmarked(obj) && mark_obj(obj)) {
1301 if (mark_obj(obj)) { 1301 cm->push(obj);
1302 // This thread marked the object and owns the subsequent processing of it.
1303 cm->save_for_scanning(obj);
1304 }
1305 } 1302 }
1306 } 1303 }
1307 } 1304 }
1308 1305
1309 template <class T> 1306 template <class T>

mercurial