< 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,10 +42,11 @@
   // 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,25 +58,28 @@
     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,10 +120,12 @@
 // 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,10 +191,11 @@
         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 >