diff src/share/vm/c1x/c1x_CodeInstaller.cpp @ 1450:565f45cebac2

Merge
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Thu, 11 Nov 2010 14:16:50 +0100
parents 8cfe3537a0d3 1afbc44ee576
children d603bdbec024
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_CodeInstaller.cpp	Thu Nov 11 14:09:37 2010 +0100
+++ b/src/share/vm/c1x/c1x_CodeInstaller.cpp	Thu Nov 11 14:16:50 2010 +0100
@@ -304,18 +304,14 @@
 
 }
 
-void CodeInstaller::record_scope(jint pc_offset, oop code_pos, oop frame) {
+void CodeInstaller::record_scope(jint pc_offset, oop code_pos) {
   oop caller_pos = CiCodePos::caller(code_pos);
   if (caller_pos != NULL) {
-    oop caller_frame = frame == NULL ? NULL : CiDebugInfo_Frame::caller(frame);
-    record_scope(pc_offset, caller_pos, caller_frame);
-  } else {
-    assert(frame == NULL || CiDebugInfo_Frame::caller(frame) == NULL, "unexpected layout - mismatching nesting of Frame and CiCodePos");
+    record_scope(pc_offset, caller_pos);
   }
-
-  if (frame != NULL) {
-    assert(CiCodePos::bci(code_pos) == CiCodePos::bci(CiDebugInfo_Frame::codePos(frame)), "unexpected CiCodePos layout");
-    assert(CiCodePos::method(code_pos) == CiCodePos::method(CiDebugInfo_Frame::codePos(frame)), "unexpected CiCodePos layout");
+  oop frame = NULL;
+  if (code_pos->klass()->klass_part()->name() == vmSymbols::com_sun_cri_ci_CiDebugInfo_Frame()) {
+    frame = code_pos;
   }
 
   oop hotspot_method = CiCodePos::method(code_pos);
@@ -377,8 +373,7 @@
   _debug_recorder->add_safepoint(pc_offset, create_oop_map(_frame_size, _parameter_count, debug_info));
 
   oop code_pos = CiDebugInfo::codePos(debug_info);
-  oop frame = CiDebugInfo::frame(debug_info);
-  record_scope(pc_offset, code_pos, frame);
+  record_scope(pc_offset, code_pos);
 
   _debug_recorder->end_safepoint(pc_offset);
 }
@@ -401,8 +396,7 @@
   if (debug_info != NULL) {
     _debug_recorder->add_safepoint(next_pc_offset, create_oop_map(_frame_size, _parameter_count, debug_info));
     oop code_pos = CiDebugInfo::codePos(debug_info);
-    oop frame = CiDebugInfo::frame(debug_info);
-    record_scope(next_pc_offset, code_pos, frame);
+    record_scope(next_pc_offset, code_pos);
   }
 
   if (runtime_call != NULL) {