< prev index next >

src/hotspot/cpu/x86/stackChunkFrameStream_x86.inline.hpp

Print this page

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

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

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