< 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 >