< prev index next >

src/hotspot/share/gc/serial/markSweep.cpp

Print this page
rev 49290 : [mq]: JDK-8199735.01.patch

*** 1,7 **** /* ! * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 62,84 **** CLDToOopClosure MarkSweep::adjust_cld_closure(&adjust_pointer_closure); inline void MarkSweep::mark_object(oop obj) { // some marks may contain information we need to preserve so we store them away // and overwrite the mark. We'll restore it at the end of markSweep. ! markOop mark = obj->mark(); ! obj->set_mark(markOopDesc::prototype()->set_marked()); if (mark->must_be_preserved(obj)) { preserve_mark(obj, mark); } } template <class T> inline void MarkSweep::mark_and_push(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); ! if (!obj->mark()->is_marked()) { mark_object(obj); _marking_stack.push(obj); } } } --- 62,84 ---- CLDToOopClosure MarkSweep::adjust_cld_closure(&adjust_pointer_closure); inline void MarkSweep::mark_object(oop obj) { // some marks may contain information we need to preserve so we store them away // and overwrite the mark. We'll restore it at the end of markSweep. ! markOop mark = obj->mark_raw(); ! obj->set_mark_raw(markOopDesc::prototype()->set_marked()); if (mark->must_be_preserved(obj)) { preserve_mark(obj, mark); } } template <class T> inline void MarkSweep::mark_and_push(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); ! if (!obj->mark_raw()->is_marked()) { mark_object(obj); _marking_stack.push(obj); } } }
*** 170,180 **** assert(!Universe::heap()->is_in_reserved(p), "roots shouldn't be things within the heap"); T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); ! if (!obj->mark()->is_marked()) { mark_object(obj); follow_object(obj); } } follow_stack(); --- 170,180 ---- assert(!Universe::heap()->is_in_reserved(p), "roots shouldn't be things within the heap"); T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); ! if (!obj->mark_raw()->is_marked()) { mark_object(obj); follow_object(obj); } } follow_stack();
*** 186,196 **** void PreservedMark::adjust_pointer() { MarkSweep::adjust_pointer(&_obj); } void PreservedMark::restore() { ! _obj->set_mark(_mark); } // We preserve the mark which should be replaced at the end and the location // that it will go. Note that the object that this markOop belongs to isn't // currently at that address but it will be after phase4 --- 186,196 ---- void PreservedMark::adjust_pointer() { MarkSweep::adjust_pointer(&_obj); } void PreservedMark::restore() { ! _obj->set_mark_raw(_mark); } // We preserve the mark which should be replaced at the end and the location // that it will go. Note that the object that this markOop belongs to isn't // currently at that address but it will be after phase4
*** 248,258 **** // deal with the overflow while (!_preserved_oop_stack.is_empty()) { oop obj = _preserved_oop_stack.pop(); markOop mark = _preserved_mark_stack.pop(); ! obj->set_mark(mark); } } MarkSweep::IsAliveClosure MarkSweep::is_alive; --- 248,258 ---- // deal with the overflow while (!_preserved_oop_stack.is_empty()) { oop obj = _preserved_oop_stack.pop(); markOop mark = _preserved_mark_stack.pop(); ! obj->set_mark_raw(mark); } } MarkSweep::IsAliveClosure MarkSweep::is_alive;
< prev index next >