equal
deleted
inserted
replaced
139 return sender.is_interpreted_frame_valid(thread); |
139 return sender.is_interpreted_frame_valid(thread); |
140 |
140 |
141 } |
141 } |
142 |
142 |
143 // Could just be some random pointer within the codeBlob |
143 // Could just be some random pointer within the codeBlob |
144 |
144 if (!sender_blob->code_contains(sender_pc)) { |
145 if (!sender_blob->instructions_contains(sender_pc)) return false; |
145 return false; |
|
146 } |
146 |
147 |
147 // We should never be able to see an adapter if the current frame is something from code cache |
148 // We should never be able to see an adapter if the current frame is something from code cache |
148 |
149 if (sender_blob->is_adapter_blob()) { |
149 if ( sender_blob->is_adapter_blob()) { |
|
150 return false; |
150 return false; |
151 } |
151 } |
152 |
152 |
153 // Could be the call_stub |
153 // Could be the call_stub |
154 |
154 |
338 // to take an SP value as argument. And it's only a debugging |
338 // to take an SP value as argument. And it's only a debugging |
339 // method anyway. |
339 // method anyway. |
340 fr._unextended_sp = unextended_sp; |
340 fr._unextended_sp = unextended_sp; |
341 |
341 |
342 address original_pc = nm->get_original_pc(&fr); |
342 address original_pc = nm->get_original_pc(&fr); |
343 assert(nm->code_contains(original_pc), "original PC must be in nmethod"); |
343 assert(nm->insts_contains(original_pc), "original PC must be in nmethod"); |
344 assert(nm->is_method_handle_return(original_pc) == is_method_handle_return, "must be"); |
344 assert(nm->is_method_handle_return(original_pc) == is_method_handle_return, "must be"); |
345 } |
345 } |
346 #endif |
346 #endif |
347 |
347 |
348 |
348 |