comparison 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
comparison
equal deleted inserted replaced
2604:c9b17ac5c06b 2605:98fa88528319
2651 #endif 2651 #endif
2652 2652
2653 // (tw) Start of C1X uncommon trap code. 2653 // (tw) Start of C1X uncommon trap code.
2654 __ jmp(cont); 2654 __ jmp(cont);
2655 2655
2656 int jmp_uncommon_trap_offset = __ pc() - start;
2657 __ pushptr(Address(r15_thread, in_bytes(JavaThread::ScratchA_offset())));
2658
2656 int uncommon_trap_offset = __ pc() - start; 2659 int uncommon_trap_offset = __ pc() - start;
2657 2660
2658 // Warning: Duplicate code 2661 // Warning: Duplicate code
2659 2662
2660 // Save everything in sight. 2663 // Save everything in sight.
2875 masm->flush(); 2878 masm->flush();
2876 2879
2877 _deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words); 2880 _deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words);
2878 _deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset); 2881 _deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset);
2879 _deopt_blob->set_uncommon_trap_offset(uncommon_trap_offset); 2882 _deopt_blob->set_uncommon_trap_offset(uncommon_trap_offset);
2883 _deopt_blob->set_jmp_uncommon_trap_offset(jmp_uncommon_trap_offset);
2880 } 2884 }
2881 2885
2882 #ifdef COMPILER2 2886 #ifdef COMPILER2
2883 //------------------------------generate_uncommon_trap_blob-------------------- 2887 //------------------------------generate_uncommon_trap_blob--------------------
2884 void SharedRuntime::generate_uncommon_trap_blob() { 2888 void SharedRuntime::generate_uncommon_trap_blob() {