< prev index next >
src/hotspot/share/runtime/vframe.inline.hpp
Print this page
rev 53032 : imported patch 8215205
rev 53033 : imported patch at_scope
*** 42,51 ****
--- 42,52 ----
// handle frames with inlining
if (_mode == compiled_mode && fill_in_compiled_inlined_sender()) return;
// handle general case
do {
+ _prev_frame = _frame;
_frame = _frame.sender(&_reg_map);
} while (!fill_from_frame());
}
inline vframeStream::vframeStream(JavaThread* thread, bool stop_at_java_call_stub)
*** 57,81 ****
--- 58,85 ----
return;
}
_frame = _thread->last_frame();
while (!fill_from_frame()) {
+ _prev_frame = _frame;
_frame = _frame.sender(&_reg_map);
}
}
inline bool vframeStreamCommon::fill_in_compiled_inlined_sender() {
if (_sender_decode_offset == DebugInformationRecorder::serialized_null) {
return false;
}
fill_from_compiled_frame(_sender_decode_offset);
+ ++_vframe_id;
return true;
}
inline void vframeStreamCommon::fill_from_compiled_frame(int decode_offset) {
_mode = compiled_mode;
+ _decode_offset = decode_offset;
// Range check to detect ridiculous offsets.
if (decode_offset == DebugInformationRecorder::serialized_null ||
decode_offset < 0 ||
decode_offset >= nm()->scopes_data_size()) {
*** 116,125 ****
--- 120,131 ----
// The native frames are handled specially. We do not rely on ScopeDesc info
// since the pc might not be exact due to the _last_native_pc trick.
inline void vframeStreamCommon::fill_from_compiled_native_frame() {
_mode = compiled_mode;
_sender_decode_offset = DebugInformationRecorder::serialized_null;
+ _decode_offset = DebugInformationRecorder::serialized_null;
+ _vframe_id = 0;
_method = nm()->method();
_bci = 0;
}
inline bool vframeStreamCommon::fill_from_frame() {
*** 185,194 ****
--- 191,201 ----
decode_offset = DebugInformationRecorder::serialized_null;
} else {
decode_offset = pc_desc->scope_decode_offset();
}
fill_from_compiled_frame(decode_offset);
+ _vframe_id = 0;
}
return true;
}
// End of stack?
< prev index next >