181 // the vframeStreamCommon object will be filled as if the frame were a native
182 // compiled frame. Therefore, no debug information is needed.
183 //
184 // Case #2: If the thread is in any other state, then two steps will be performed:
185 // - if asserts are enabled, found_bad_method_frame() will be called and
186 // the assert in found_bad_method_frame() will be triggered;
187 // - if asserts are disabled, the vframeStreamCommon object will be filled
188 // as if it were a native compiled frame.
189 //
190 // Case (2) is similar to the way interpreter frames are processed in
191 // vframeStreamCommon::fill_from_interpreter_frame in case no valid BCI
192 // was found for an interpreted frame. If asserts are enabled, the assert
193 // in found_bad_method_frame() will be triggered. If asserts are disabled,
194 // the vframeStreamCommon object will be filled afterwards as if the
195 // interpreter were at the point of entering into the method.
196 return false;
197 }
198
199 // This PcDesc is useful however we must adjust the frame's pc
200 // so that the vframeStream lookups will use this same pc
201 fr->set_pc(pc_desc->real_pc(nm));
202 return true;
203 }
204
205
206 // Determine if 'fr' is a walkable interpreted frame. Returns false
207 // if it is not. *method_p, and *bci_p are not set when false is
208 // returned. *method_p is non-NULL if frame was executing a Java
209 // method. *bci_p is != -1 if a valid BCI in the Java method could
210 // be found.
211 // Note: this method returns true when a valid Java method is found
212 // even if a valid BCI cannot be found.
213
214 static bool is_decipherable_interpreted_frame(JavaThread* thread,
215 frame* fr,
216 Method** method_p,
217 int* bci_p) {
218 assert(fr->is_interpreted_frame(), "just checking");
219
220 // top frame is an interpreted frame
221 // check if it is walkable (i.e. valid Method* and valid bci)
|
181 // the vframeStreamCommon object will be filled as if the frame were a native
182 // compiled frame. Therefore, no debug information is needed.
183 //
184 // Case #2: If the thread is in any other state, then two steps will be performed:
185 // - if asserts are enabled, found_bad_method_frame() will be called and
186 // the assert in found_bad_method_frame() will be triggered;
187 // - if asserts are disabled, the vframeStreamCommon object will be filled
188 // as if it were a native compiled frame.
189 //
190 // Case (2) is similar to the way interpreter frames are processed in
191 // vframeStreamCommon::fill_from_interpreter_frame in case no valid BCI
192 // was found for an interpreted frame. If asserts are enabled, the assert
193 // in found_bad_method_frame() will be triggered. If asserts are disabled,
194 // the vframeStreamCommon object will be filled afterwards as if the
195 // interpreter were at the point of entering into the method.
196 return false;
197 }
198
199 // This PcDesc is useful however we must adjust the frame's pc
200 // so that the vframeStream lookups will use this same pc
201 fr->set_pc(thread, pc_desc->real_pc(nm));
202 return true;
203 }
204
205
206 // Determine if 'fr' is a walkable interpreted frame. Returns false
207 // if it is not. *method_p, and *bci_p are not set when false is
208 // returned. *method_p is non-NULL if frame was executing a Java
209 // method. *bci_p is != -1 if a valid BCI in the Java method could
210 // be found.
211 // Note: this method returns true when a valid Java method is found
212 // even if a valid BCI cannot be found.
213
214 static bool is_decipherable_interpreted_frame(JavaThread* thread,
215 frame* fr,
216 Method** method_p,
217 int* bci_p) {
218 assert(fr->is_interpreted_frame(), "just checking");
219
220 // top frame is an interpreted frame
221 // check if it is walkable (i.e. valid Method* and valid bci)
|