319 CodeBlob* cb() const { return _frame.cb(); }
320 nmethod* nm() const {
321 assert( cb() != NULL && cb()->is_nmethod(), "usage");
322 return (nmethod*) cb();
323 }
324
325 // Frame type
326 bool is_interpreted_frame() const { return _frame.is_interpreted_frame(); }
327 bool is_entry_frame() const { return _frame.is_entry_frame(); }
328
329 // Iteration
330 void next() {
331 // handle frames with inlining
332 if (_mode == compiled_mode && fill_in_compiled_inlined_sender()) return;
333
334 // handle general case
335 do {
336 _frame = _frame.sender(&_reg_map);
337 } while (!fill_from_frame());
338 }
339
340 bool at_end() const { return _mode == at_end_mode; }
341
342 // Implements security traversal. Skips depth no. of frame including
343 // special security frames and prefixed native methods
344 void security_get_caller_frame(int depth);
345
346 // Helper routine for JVM_LatestUserDefinedLoader -- needed for 1.4
347 // reflection implementation
348 void skip_reflection_related_frames();
349 };
350
351 class vframeStream : public vframeStreamCommon {
352 public:
353 // Constructors
354 vframeStream(JavaThread* thread, bool stop_at_java_call_stub = false)
355 : vframeStreamCommon(thread) {
356 _stop_at_java_call_stub = stop_at_java_call_stub;
357
358 if (!thread->has_last_Java_frame()) {
|
319 CodeBlob* cb() const { return _frame.cb(); }
320 nmethod* nm() const {
321 assert( cb() != NULL && cb()->is_nmethod(), "usage");
322 return (nmethod*) cb();
323 }
324
325 // Frame type
326 bool is_interpreted_frame() const { return _frame.is_interpreted_frame(); }
327 bool is_entry_frame() const { return _frame.is_entry_frame(); }
328
329 // Iteration
330 void next() {
331 // handle frames with inlining
332 if (_mode == compiled_mode && fill_in_compiled_inlined_sender()) return;
333
334 // handle general case
335 do {
336 _frame = _frame.sender(&_reg_map);
337 } while (!fill_from_frame());
338 }
339 void security_next();
340
341 bool at_end() const { return _mode == at_end_mode; }
342
343 // Implements security traversal. Skips depth no. of frame including
344 // special security frames and prefixed native methods
345 void security_get_caller_frame(int depth);
346
347 // Helper routine for JVM_LatestUserDefinedLoader -- needed for 1.4
348 // reflection implementation
349 void skip_reflection_related_frames();
350 };
351
352 class vframeStream : public vframeStreamCommon {
353 public:
354 // Constructors
355 vframeStream(JavaThread* thread, bool stop_at_java_call_stub = false)
356 : vframeStreamCommon(thread) {
357 _stop_at_java_call_stub = stop_at_java_call_stub;
358
359 if (!thread->has_last_Java_frame()) {
|