diff src/share/vm/interpreter/interpreterRuntime.cpp @ 3055:fecdb0a65fb2

runtime profiles exceptions at the call site
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 21 Jun 2011 11:13:52 +0200
parents ed69575596ac
children 5ca1332171c8
line wrap: on
line diff
--- a/src/share/vm/interpreter/interpreterRuntime.cpp	Mon Jun 20 11:47:57 2011 +0200
+++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Jun 21 11:13:52 2011 +0200
@@ -458,6 +458,17 @@
     }
   } while (should_repeat == true);
 
+  if (h_method->method_data() != NULL) {
+    ProfileData* pdata = h_method->method_data()->allocate_bci_to_data(current_bci);
+    if (pdata != NULL) {
+      int tstate0 = pdata->trap_state();
+      int tstate1 = Deoptimization::trap_state_set_recompiled(tstate0, true);
+      if (tstate1 != tstate0) {
+        pdata->set_trap_state(tstate1);
+      }
+    }
+  }
+
   // notify JVMTI of an exception throw; JVMTI will detect if this is a first
   // time throw or a stack unwinding throw and accordingly notify the debugger
   if (JvmtiExport::can_post_on_exceptions()) {