diff src/share/vm/runtime/sharedRuntime.cpp @ 2605:98fa88528319

Deopt on implicit null pointer exception.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Fri, 06 May 2011 16:20:56 +0200
parents e88293edf07c
children 008adfd6d850
line wrap: on
line diff
--- a/src/share/vm/runtime/sharedRuntime.cpp	Thu May 05 17:03:43 2011 +0200
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Fri May 06 16:20:56 2011 +0200
@@ -699,7 +699,7 @@
   address target_pc = NULL;
 
   if (TraceSignals) {
-    tty->print_cr("Searching for continuation for implicit exception at %d", pc);
+    tty->print_cr("Searching for continuation for implicit exception at %d!", pc);
   }
 
   if (Interpreter::contains(pc)) {
@@ -780,7 +780,8 @@
             if (TraceSignals) {
               tty->print_cr(err_msg("calling implicit call stub relative pc=%d method name = %s", pc - nm->entry_point(), nm->method()->name()->as_C_string()));
             }
-            target_pc = Runtime1::entry_for(Runtime1::c1x_global_implicit_null_id);
+            thread->_ScratchA = (intptr_t)pc;
+            target_pc = (SharedRuntime::deopt_blob()->jmp_uncommon_trap());//Runtime1::entry_for(Runtime1::c1x_global_implicit_null_id);
           } else {
             target_pc = nm->continuation_for_implicit_exception(pc);
           }