--- a/hotspot/src/share/vm/c1/c1_IR.cpp Fri Jul 31 12:04:07 2009 -0700
+++ b/hotspot/src/share/vm/c1/c1_IR.cpp Fri Jul 31 17:12:33 2009 -0700
@@ -208,6 +208,15 @@
return scope->caller_bci();
}
+bool IRScopeDebugInfo::should_reexecute() {
+ ciMethod* cur_method = scope()->method();
+ int cur_bci = bci();
+ if (cur_method != NULL && cur_bci != SynchronizationEntryBCI) {
+ Bytecodes::Code code = cur_method->java_code_at_bci(cur_bci);
+ return Interpreter::bytecode_should_reexecute(code);
+ } else
+ return false;
+}
// Implementation of CodeEmitInfo
@@ -253,7 +262,7 @@
void CodeEmitInfo::record_debug_info(DebugInformationRecorder* recorder, int pc_offset) {
// record the safepoint before recording the debug info for enclosing scopes
recorder->add_safepoint(pc_offset, _oop_map->deep_copy());
- _scope_debug_info->record_debug_info(recorder, pc_offset);
+ _scope_debug_info->record_debug_info(recorder, pc_offset, true/*topmost*/);
recorder->end_safepoint(pc_offset);
}