comparison src/cpu/x86/vm/stubGenerator_x86_64.cpp @ 4895:c742b0b47fe5

7119286: JSR292: SIGSEGV in JNIHandleBlock::release_block(JNIHandleBlock*, Thread*)+0x3c Summary: unaligned stack in throw_NullPointerException_at_call_entry(). Reviewed-by: twisti, never, kvn
author roland
date Wed, 08 Feb 2012 09:52:24 +0100
parents 22cee0ee8927
children b522995d91f0
comparison
equal deleted inserted replaced
4894:b9bc6cae88f2 4895:c742b0b47fe5
2976 __ subptr(rsp, (framesize-4) << LogBytesPerInt); // prolog 2976 __ subptr(rsp, (framesize-4) << LogBytesPerInt); // prolog
2977 2977
2978 int frame_complete = __ pc() - start; 2978 int frame_complete = __ pc() - start;
2979 2979
2980 // Set up last_Java_sp and last_Java_fp 2980 // Set up last_Java_sp and last_Java_fp
2981 __ set_last_Java_frame(rsp, rbp, NULL); 2981 address the_pc = __ pc();
2982 __ set_last_Java_frame(rsp, rbp, the_pc);
2983 __ andptr(rsp, -(StackAlignmentInBytes)); // Align stack
2982 2984
2983 // Call runtime 2985 // Call runtime
2984 if (arg1 != noreg) { 2986 if (arg1 != noreg) {
2985 assert(arg2 != c_rarg1, "clobbered"); 2987 assert(arg2 != c_rarg1, "clobbered");
2986 __ movptr(c_rarg1, arg1); 2988 __ movptr(c_rarg1, arg1);
2995 // Generate oop map 2997 // Generate oop map
2996 OopMap* map = new OopMap(framesize, 0); 2998 OopMap* map = new OopMap(framesize, 0);
2997 2999
2998 oop_maps->add_gc_map(__ pc() - start, map); 3000 oop_maps->add_gc_map(__ pc() - start, map);
2999 3001
3000 __ reset_last_Java_frame(true, false); 3002 __ reset_last_Java_frame(true, true);
3001 3003
3002 __ leave(); // required for proper stackwalking of RuntimeStub frame 3004 __ leave(); // required for proper stackwalking of RuntimeStub frame
3003 3005
3004 // check for pending exceptions 3006 // check for pending exceptions
3005 #ifdef ASSERT 3007 #ifdef ASSERT