< prev index next >

src/hotspot/share/oops/instanceStackChunkKlass.cpp

Print this page
@@ -161,10 +161,23 @@
    }
    OopIterateStackChunkFrameClosure frame_closure(closure, mr);
    chunk->iterate_stack(&frame_closure);
  }
  
+ template <typename OopT>
+ void InstanceStackChunkKlass::oop_oop_iterate_lockstack(stackChunkOop chunk, OopIterateClosure* closure, MemRegion mr) {
+   StackChunkOopIterateFilterClosure<OopIterateClosure> cl(closure, mr);
+   if (chunk->has_bitmap()) {
+     chunk->iterate_lockstack<OopT>(&cl);
+   } else {
+     chunk->iterate_lockstack<oop>(&cl);
+   }
+ }
+ 
+ template void InstanceStackChunkKlass::oop_oop_iterate_lockstack<oop>(stackChunkOop chunk, OopIterateClosure* closure, MemRegion mr);
+ template void InstanceStackChunkKlass::oop_oop_iterate_lockstack<narrowOop>(stackChunkOop chunk, OopIterateClosure* closure, MemRegion mr);
+ 
  #ifdef ASSERT
  
  class DescribeStackChunkClosure {
    stackChunkOop _chunk;
    FrameValues _values;

@@ -222,11 +235,11 @@
    template <ChunkFrames frame_kind, typename RegisterMapT>
    bool do_frame(const StackChunkFrameStream<frame_kind>& fs, const RegisterMapT* map) {
      frame f = fs.to_frame();
      _st->print_cr("-- frame sp: " PTR_FORMAT " interpreted: %d size: %d argsize: %d",
                    p2i(fs.sp()), fs.is_interpreted(), f.frame_size(),
-                   fs.is_interpreted() ? 0 : f.compiled_frame_stack_argsize());
+                   fs.is_interpreted() || fs.is_stub() ? 0 : f.compiled_frame_stack_argsize());
    #ifdef ASSERT
      f.print_value_on(_st, nullptr);
    #else
      f.print_on(_st);
    #endif
< prev index next >