< prev index next >

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

Print this page
rev 12851 : 8138737: Remove oop_ms_adjust_pointers and use oop_iterate instead
Reviewed-by:
rev 12852 : [mq]: 8138737-remove-oop-ms-adjust-kbarrett-rev1

*** 1,7 **** /* ! * Copyright (c) 1997, 2015, 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, 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.
*** 222,237 **** void MarkSweep::set_ref_processor(ReferenceProcessor* rp) { _ref_processor = rp; mark_and_push_closure.set_ref_processor(_ref_processor); } ! MarkSweep::AdjustPointerClosure MarkSweep::adjust_pointer_closure; template <typename T> ! void MarkSweep::AdjustPointerClosure::do_oop_nv(T* p) { adjust_pointer(p); } ! void MarkSweep::AdjustPointerClosure::do_oop(oop* p) { do_oop_nv(p); } ! void MarkSweep::AdjustPointerClosure::do_oop(narrowOop* p) { do_oop_nv(p); } void MarkSweep::adjust_marks() { assert( _preserved_oop_stack.size() == _preserved_mark_stack.size(), "inconsistent preserved oop stacks"); --- 222,237 ---- void MarkSweep::set_ref_processor(ReferenceProcessor* rp) { _ref_processor = rp; mark_and_push_closure.set_ref_processor(_ref_processor); } ! AdjustPointerClosure MarkSweep::adjust_pointer_closure; template <typename T> ! void AdjustPointerClosure::do_oop_nv(T* p) { MarkSweep::adjust_pointer(p); } ! void AdjustPointerClosure::do_oop(oop* p) { do_oop_nv(p); } ! void AdjustPointerClosure::do_oop(narrowOop* p) { do_oop_nv(p); } void MarkSweep::adjust_marks() { assert( _preserved_oop_stack.size() == _preserved_mark_stack.size(), "inconsistent preserved oop stacks");
*** 278,358 **** void marksweep_init() { MarkSweep::_gc_timer = new (ResourceObj::C_HEAP, mtGC) STWGCTimer(); MarkSweep::_gc_tracer = new (ResourceObj::C_HEAP, mtGC) SerialOldTracer(); } - int InstanceKlass::oop_ms_adjust_pointers(oop obj) { - int size = size_helper(); - oop_oop_iterate_oop_maps<true>(obj, &MarkSweep::adjust_pointer_closure); - return size; - } - - int InstanceMirrorKlass::oop_ms_adjust_pointers(oop obj) { - int size = oop_size(obj); - InstanceKlass::oop_ms_adjust_pointers(obj); - - oop_oop_iterate_statics<true>(obj, &MarkSweep::adjust_pointer_closure); - return size; - } - - int InstanceClassLoaderKlass::oop_ms_adjust_pointers(oop obj) { - return InstanceKlass::oop_ms_adjust_pointers(obj); - } - - #ifdef ASSERT - template <class T> static void trace_reference_gc(const char *s, oop obj, - T* referent_addr, - T* next_addr, - T* discovered_addr) { - log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj)); - log_develop_trace(gc, ref)(" referent_addr/* " PTR_FORMAT " / " PTR_FORMAT, - p2i(referent_addr), p2i(referent_addr ? (address)oopDesc::load_decode_heap_oop(referent_addr) : NULL)); - log_develop_trace(gc, ref)(" next_addr/* " PTR_FORMAT " / " PTR_FORMAT, - p2i(next_addr), p2i(next_addr ? (address)oopDesc::load_decode_heap_oop(next_addr) : NULL)); - log_develop_trace(gc, ref)(" discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT, - p2i(discovered_addr), p2i(discovered_addr ? (address)oopDesc::load_decode_heap_oop(discovered_addr) : NULL)); - } - #endif - - template <class T> void static adjust_object_specialized(oop obj) { - T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj); - MarkSweep::adjust_pointer(referent_addr); - T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj); - MarkSweep::adjust_pointer(next_addr); - T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj); - MarkSweep::adjust_pointer(discovered_addr); - debug_only(trace_reference_gc("InstanceRefKlass::oop_ms_adjust_pointers", obj, - referent_addr, next_addr, discovered_addr);) - } - - int InstanceRefKlass::oop_ms_adjust_pointers(oop obj) { - int size = size_helper(); - InstanceKlass::oop_ms_adjust_pointers(obj); - - if (UseCompressedOops) { - adjust_object_specialized<narrowOop>(obj); - } else { - adjust_object_specialized<oop>(obj); - } - return size; - } - - int ObjArrayKlass::oop_ms_adjust_pointers(oop obj) { - assert(obj->is_objArray(), "obj must be obj array"); - objArrayOop a = objArrayOop(obj); - // Get size before changing pointers. - // Don't call size() or oop_size() since that is a virtual call. - int size = a->object_size(); - oop_oop_iterate_elements<true>(a, &MarkSweep::adjust_pointer_closure); - return size; - } - - int TypeArrayKlass::oop_ms_adjust_pointers(oop obj) { - assert(obj->is_typeArray(), "must be a type array"); - typeArrayOop t = typeArrayOop(obj); - // Performance tweak: We skip iterating over the klass pointer since we - // know that Universe::TypeArrayKlass never moves. - return t->object_size(); - } - // Generate MS specialized oop_oop_iterate functions. SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_MS(ALL_KLASS_OOP_OOP_ITERATE_DEFN) --- 278,284 ----
< prev index next >