196 }
197
198 inline int frame::interpreter_frame_monitor_size_in_bytes() {
199 return frame::interpreter_frame_monitor_size() * wordSize;
200 }
201
202 // entry frames
203
204 inline intptr_t* frame::entry_frame_argument_at(int offset) const {
205 // Since an entry frame always calls the interpreter first, the
206 // parameters are on the stack and relative to known register in the
207 // entry frame.
208 intptr_t* tos = (intptr_t*)get_entry_frame_locals()->arguments_tos_address;
209 return &tos[offset + 1]; // prepushed tos
210 }
211
212 inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const {
213 return (JavaCallWrapper**)&get_entry_frame_locals()->call_wrapper_address;
214 }
215
216 inline oop frame::saved_oop_result(RegisterMap* map) const {
217 return *((oop*)map->location(R3->as_VMReg()));
218 }
219
220 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
221 *((oop*)map->location(R3->as_VMReg())) = obj;
222 }
223
224 #endif // CPU_PPC_FRAME_PPC_INLINE_HPP
|
196 }
197
198 inline int frame::interpreter_frame_monitor_size_in_bytes() {
199 return frame::interpreter_frame_monitor_size() * wordSize;
200 }
201
202 // entry frames
203
204 inline intptr_t* frame::entry_frame_argument_at(int offset) const {
205 // Since an entry frame always calls the interpreter first, the
206 // parameters are on the stack and relative to known register in the
207 // entry frame.
208 intptr_t* tos = (intptr_t*)get_entry_frame_locals()->arguments_tos_address;
209 return &tos[offset + 1]; // prepushed tos
210 }
211
212 inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const {
213 return (JavaCallWrapper**)&get_entry_frame_locals()->call_wrapper_address;
214 }
215
216 inline oop frame::saved_oop_result(const RegisterMap* map) const {
217 return *((oop*)map->location(R3->as_VMReg()));
218 }
219
220 inline void frame::set_saved_oop_result(const RegisterMap* map, oop obj) {
221 *((oop*)map->location(R3->as_VMReg())) = obj;
222 }
223
224 #endif // CPU_PPC_FRAME_PPC_INLINE_HPP
|