< prev index next >

src/hotspot/share/oops/instanceStackChunkKlass.inline.hpp

Print this page
@@ -1,6 +1,6 @@
- /* 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.

@@ -63,18 +63,20 @@
    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);

@@ -83,10 +85,11 @@
        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 >