Mercurial > hg > truffle
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 |