117 inline intptr_t* frame::link() const { 118 return (intptr_t*)callers_abi()->callers_sp; 119 } 120 121 inline intptr_t* frame::real_fp() const { 122 return fp(); 123 } 124 125 #ifdef CC_INTERP 126 127 inline interpreterState frame::get_interpreterState() const { 128 return (interpreterState)(((address)callers_abi()) 129 - frame::interpreter_frame_cinterpreterstate_size_in_bytes()); 130 } 131 132 inline intptr_t** frame::interpreter_frame_locals_addr() const { 133 interpreterState istate = get_interpreterState(); 134 return (intptr_t**)&istate->_locals; 135 } 136 137 inline intptr_t* frame::interpreter_frame_bcx_addr() const { 138 interpreterState istate = get_interpreterState(); 139 return (intptr_t*)&istate->_bcp; 140 } 141 142 inline intptr_t* frame::interpreter_frame_mdx_addr() const { 143 interpreterState istate = get_interpreterState(); 144 return (intptr_t*)&istate->_mdx; 145 } 146 147 inline intptr_t* frame::interpreter_frame_expression_stack() const { 148 return (intptr_t*)interpreter_frame_monitor_end() - 1; 149 } 150 151 inline jint frame::interpreter_frame_expression_stack_direction() { 152 return -1; 153 } 154 155 // top of expression stack 156 inline intptr_t* frame::interpreter_frame_tos_address() const { 157 interpreterState istate = get_interpreterState(); 158 return istate->_stack + 1; 159 } 160 161 inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const { 162 return &interpreter_frame_tos_address()[offset]; 192 interpreterState istate = get_interpreterState(); 193 return &istate->_constants; // should really use accessor 194 } 195 196 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 197 interpreterState istate = get_interpreterState(); 198 return &istate->_constants; 199 } 200 201 #else // !CC_INTERP 202 203 // Template Interpreter frame value accessors. 204 205 inline frame::ijava_state* frame::get_ijava_state() const { 206 return (ijava_state*) ((uintptr_t)fp() - ijava_state_size); 207 } 208 209 inline intptr_t** frame::interpreter_frame_locals_addr() const { 210 return (intptr_t**) &(get_ijava_state()->locals); 211 } 212 inline intptr_t* frame::interpreter_frame_bcx_addr() const { 213 return (intptr_t*) &(get_ijava_state()->bcp); 214 } 215 inline intptr_t* frame::interpreter_frame_mdx_addr() const { 216 return (intptr_t*) &(get_ijava_state()->mdx); 217 } 218 // Pointer beyond the "oldest/deepest" BasicObjectLock on stack. 219 inline BasicObjectLock* frame::interpreter_frame_monitor_end() const { 220 return (BasicObjectLock *) get_ijava_state()->monitors; 221 } 222 223 inline BasicObjectLock* frame::interpreter_frame_monitor_begin() const { 224 return (BasicObjectLock *) get_ijava_state(); 225 } 226 227 // SAPJVM ASc 2012-11-21. Return register stack slot addr at which currently interpreted method is found 228 inline Method** frame::interpreter_frame_method_addr() const { 229 return (Method**) &(get_ijava_state()->method); 230 } 231 inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const { 232 return (ConstantPoolCache**) &(get_ijava_state()->cpoolCache); 233 } 234 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 235 return (ConstantPoolCache**) &(get_ijava_state()->cpoolCache); | 117 inline intptr_t* frame::link() const { 118 return (intptr_t*)callers_abi()->callers_sp; 119 } 120 121 inline intptr_t* frame::real_fp() const { 122 return fp(); 123 } 124 125 #ifdef CC_INTERP 126 127 inline interpreterState frame::get_interpreterState() const { 128 return (interpreterState)(((address)callers_abi()) 129 - frame::interpreter_frame_cinterpreterstate_size_in_bytes()); 130 } 131 132 inline intptr_t** frame::interpreter_frame_locals_addr() const { 133 interpreterState istate = get_interpreterState(); 134 return (intptr_t**)&istate->_locals; 135 } 136 137 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 138 interpreterState istate = get_interpreterState(); 139 return (intptr_t*)&istate->_bcp; 140 } 141 142 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 143 interpreterState istate = get_interpreterState(); 144 return (intptr_t*)&istate->_mdx; 145 } 146 147 inline intptr_t* frame::interpreter_frame_expression_stack() const { 148 return (intptr_t*)interpreter_frame_monitor_end() - 1; 149 } 150 151 inline jint frame::interpreter_frame_expression_stack_direction() { 152 return -1; 153 } 154 155 // top of expression stack 156 inline intptr_t* frame::interpreter_frame_tos_address() const { 157 interpreterState istate = get_interpreterState(); 158 return istate->_stack + 1; 159 } 160 161 inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const { 162 return &interpreter_frame_tos_address()[offset]; 192 interpreterState istate = get_interpreterState(); 193 return &istate->_constants; // should really use accessor 194 } 195 196 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 197 interpreterState istate = get_interpreterState(); 198 return &istate->_constants; 199 } 200 201 #else // !CC_INTERP 202 203 // Template Interpreter frame value accessors. 204 205 inline frame::ijava_state* frame::get_ijava_state() const { 206 return (ijava_state*) ((uintptr_t)fp() - ijava_state_size); 207 } 208 209 inline intptr_t** frame::interpreter_frame_locals_addr() const { 210 return (intptr_t**) &(get_ijava_state()->locals); 211 } 212 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 213 return (intptr_t*) &(get_ijava_state()->bcp); 214 } 215 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 216 return (intptr_t*) &(get_ijava_state()->mdx); 217 } 218 // Pointer beyond the "oldest/deepest" BasicObjectLock on stack. 219 inline BasicObjectLock* frame::interpreter_frame_monitor_end() const { 220 return (BasicObjectLock *) get_ijava_state()->monitors; 221 } 222 223 inline BasicObjectLock* frame::interpreter_frame_monitor_begin() const { 224 return (BasicObjectLock *) get_ijava_state(); 225 } 226 227 // SAPJVM ASc 2012-11-21. Return register stack slot addr at which currently interpreted method is found 228 inline Method** frame::interpreter_frame_method_addr() const { 229 return (Method**) &(get_ijava_state()->method); 230 } 231 inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const { 232 return (ConstantPoolCache**) &(get_ijava_state()->cpoolCache); 233 } 234 inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const { 235 return (ConstantPoolCache**) &(get_ijava_state()->cpoolCache); |