--- a/src/hotspot/share/runtime/vframe.inline.hpp Tue Dec 18 12:08:51 2018 -0800
+++ b/src/hotspot/share/runtime/vframe.inline.hpp Tue Dec 18 12:36:27 2018 -0800
@@ -44,6 +44,7 @@
// handle general case
do {
+ _prev_frame = _frame;
_frame = _frame.sender(&_reg_map);
} while (!fill_from_frame());
}
@@ -59,6 +60,7 @@
_frame = _thread->last_frame();
while (!fill_from_frame()) {
+ _prev_frame = _frame;
_frame = _frame.sender(&_reg_map);
}
}
@@ -68,12 +70,14 @@
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 ||
@@ -118,6 +122,8 @@
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;
}
@@ -187,6 +193,7 @@
decode_offset = pc_desc->scope_decode_offset();
}
fill_from_compiled_frame(decode_offset);
+ _vframe_id = 0;
}
return true;
}