< prev index next >

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

Print this page

 99   intptr_t* bottom = derelativize(frame::interpreter_frame_locals_offset) + 1; // the sender's unextended sp: derelativize(frame::interpreter_frame_sender_sp_offset);
100   return (int)(bottom - top);
101 }
102 
103 template <ChunkFrames frame_kind>
104 inline int StackChunkFrameStream<frame_kind>::interpreter_frame_stack_argsize() const {
105   assert_is_interpreted_and_frame_type_mixed();
106   int diff = (int)(derelativize(frame::interpreter_frame_locals_offset) - derelativize(frame::interpreter_frame_sender_sp_offset) + 1);
107   return diff;
108 }
109 
110 template <ChunkFrames frame_kind>
111 inline int StackChunkFrameStream<frame_kind>::interpreter_frame_num_oops() const {
112   assert_is_interpreted_and_frame_type_mixed();
113   ResourceMark rm;
114   InterpreterOopMap mask;
115   frame f = to_frame();
116   f.interpreted_frame_oop_map(&mask);
117   return  mask.num_oops()
118         + 1 // for the mirror oop

119         + pointer_delta_as_int((intptr_t*)f.interpreter_frame_monitor_begin(),
120               (intptr_t*)f.interpreter_frame_monitor_end())/BasicObjectLock::size();
121 }
122 
123 template<>
124 template<>
125 inline void StackChunkFrameStream<ChunkFrames::Mixed>::update_reg_map_pd(RegisterMap* map) {
126   if (map->update_map()) {
127     frame::update_map_with_saved_link(map, map->in_cont() ? (intptr_t**)(intptr_t)frame::sender_sp_offset
128                                                           : (intptr_t**)(_sp - frame::sender_sp_offset));
129   }
130 }
131 
132 template<>
133 template<>
134 inline void StackChunkFrameStream<ChunkFrames::CompiledOnly>::update_reg_map_pd(RegisterMap* map) {
135   if (map->update_map()) {
136     frame::update_map_with_saved_link(map, map->in_cont() ? (intptr_t**)(intptr_t)frame::sender_sp_offset
137                                                           : (intptr_t**)(_sp - frame::sender_sp_offset));
138   }

 99   intptr_t* bottom = derelativize(frame::interpreter_frame_locals_offset) + 1; // the sender's unextended sp: derelativize(frame::interpreter_frame_sender_sp_offset);
100   return (int)(bottom - top);
101 }
102 
103 template <ChunkFrames frame_kind>
104 inline int StackChunkFrameStream<frame_kind>::interpreter_frame_stack_argsize() const {
105   assert_is_interpreted_and_frame_type_mixed();
106   int diff = (int)(derelativize(frame::interpreter_frame_locals_offset) - derelativize(frame::interpreter_frame_sender_sp_offset) + 1);
107   return diff;
108 }
109 
110 template <ChunkFrames frame_kind>
111 inline int StackChunkFrameStream<frame_kind>::interpreter_frame_num_oops() const {
112   assert_is_interpreted_and_frame_type_mixed();
113   ResourceMark rm;
114   InterpreterOopMap mask;
115   frame f = to_frame();
116   f.interpreted_frame_oop_map(&mask);
117   return  mask.num_oops()
118         + 1 // for the mirror oop
119         + (f.interpreter_frame_method()->is_native() ? 1 : 0) // temp oop slot
120         + pointer_delta_as_int((intptr_t*)f.interpreter_frame_monitor_begin(),
121               (intptr_t*)f.interpreter_frame_monitor_end())/BasicObjectLock::size();
122 }
123 
124 template<>
125 template<>
126 inline void StackChunkFrameStream<ChunkFrames::Mixed>::update_reg_map_pd(RegisterMap* map) {
127   if (map->update_map()) {
128     frame::update_map_with_saved_link(map, map->in_cont() ? (intptr_t**)(intptr_t)frame::sender_sp_offset
129                                                           : (intptr_t**)(_sp - frame::sender_sp_offset));
130   }
131 }
132 
133 template<>
134 template<>
135 inline void StackChunkFrameStream<ChunkFrames::CompiledOnly>::update_reg_map_pd(RegisterMap* map) {
136   if (map->update_map()) {
137     frame::update_map_with_saved_link(map, map->in_cont() ? (intptr_t**)(intptr_t)frame::sender_sp_offset
138                                                           : (intptr_t**)(_sp - frame::sender_sp_offset));
139   }
< prev index next >