diff src/cpu/x86/vm/sharedRuntime_x86_64.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 0654ee04b214
children 75a99b4f1c98
line wrap: on
line diff
--- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Thu May 05 17:03:43 2011 +0200
+++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Fri May 06 16:20:56 2011 +0200
@@ -2653,6 +2653,9 @@
   // (tw) Start of C1X uncommon trap code.
   __ jmp(cont);
 
+  int jmp_uncommon_trap_offset = __ pc() - start;
+  __ pushptr(Address(r15_thread, in_bytes(JavaThread::ScratchA_offset())));
+
   int uncommon_trap_offset = __ pc() - start;
 
   // Warning: Duplicate code
@@ -2877,6 +2880,7 @@
   _deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words);
   _deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset);
   _deopt_blob->set_uncommon_trap_offset(uncommon_trap_offset);
+  _deopt_blob->set_jmp_uncommon_trap_offset(jmp_uncommon_trap_offset);
 }
 
 #ifdef COMPILER2