< prev index next > src/hotspot/cpu/aarch64/stackChunkFrameStream_aarch64.inline.hpp
Print this page
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 >