< prev index next > src/hotspot/share/oops/instanceStackChunkKlass.inline.hpp
Print this page
- /* Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved.
+ /* Copyright (c) 2019, 2024, 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.
if (Devirtualizer::do_metadata(closure)) {
Devirtualizer::do_klass(closure, this);
}
oop_oop_iterate_stack<T>(chunk, closure);
oop_oop_iterate_header<T>(chunk, closure);
+ oop_oop_iterate_lockstack<T>(chunk, closure, chunk->range());
}
template <typename T, class OopClosureType>
void InstanceStackChunkKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) {
assert(!Devirtualizer::do_metadata(closure), "Code to handle metadata is not implemented");
stackChunkOop chunk = stackChunkOopDesc::cast(obj);
oop_oop_iterate_stack<T>(chunk, closure);
oop_oop_iterate_header<T>(chunk, closure);
+ oop_oop_iterate_lockstack<T>(chunk, closure, chunk->range());
}
template <typename T, class OopClosureType>
void InstanceStackChunkKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) {
stackChunkOop chunk = stackChunkOopDesc::cast(obj);
Devirtualizer::do_klass(closure, this);
}
}
oop_oop_iterate_stack_bounded<T>(chunk, closure, mr);
oop_oop_iterate_header_bounded<T>(chunk, closure, mr);
+ oop_oop_iterate_lockstack<T>(chunk, closure, mr);
}
template <typename T, class OopClosureType>
void InstanceStackChunkKlass::oop_oop_iterate_header(stackChunkOop chunk, OopClosureType* closure) {
T* parent_addr = chunk->field_addr<T>(jdk_internal_vm_StackChunk::parent_offset());
< prev index next >