< prev index next >

src/hotspot/cpu/aarch64/stackChunkFrameStream_aarch64.inline.hpp

Print this page
@@ -106,21 +106,18 @@
    int diff = (int)(derelativize(frame::interpreter_frame_locals_offset) - derelativize(frame::interpreter_frame_sender_sp_offset) + 1);
    return diff;
  }
  
  template <ChunkFrames frame_kind>
- inline int StackChunkFrameStream<frame_kind>::interpreter_frame_num_oops() const {
+ template <typename RegisterMapT>
+ inline int StackChunkFrameStream<frame_kind>::interpreter_frame_num_oops(RegisterMapT* map) const {
    assert_is_interpreted_and_frame_type_mixed();
    ResourceMark rm;
-   InterpreterOopMap mask;
    frame f = to_frame();
-   f.interpreted_frame_oop_map(&mask);
-   return  mask.num_oops()
-         + 1 // for the mirror oop
-         + (f.interpreter_frame_method()->is_native() ? 1 : 0) // temp oop slot
-         + pointer_delta_as_int((intptr_t*)f.interpreter_frame_monitor_begin(),
-               (intptr_t*)f.interpreter_frame_monitor_end())/BasicObjectLock::size();
+   InterpreterOopCount closure;
+   f.oops_interpreted_do(&closure, map);
+   return closure.count();
  }
  
  template<>
  template<>
  inline void StackChunkFrameStream<ChunkFrames::Mixed>::update_reg_map_pd(RegisterMap* map) {
< prev index next >