Mon, 08 Dec 2008 15:50:55 -0500
6773838: There is no calling stack for Compiler thread in hs_err file on x86
Summary: On solaris, the inline assembly wasn't being processed. Added volatile to il file fixed it.
Reviewed-by: phh, kvn
1.1 --- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Fri Dec 05 15:45:24 2008 -0800 1.2 +++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Mon Dec 08 15:50:55 2008 -0500 1.3 @@ -203,10 +203,10 @@ 1.4 return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); 1.5 } 1.6 1.7 -extern "C" intptr_t *_get_previous_fp(); // in .il file. 1.8 +extern "C" intptr_t *_get_current_fp(); // in .il file 1.9 1.10 frame os::current_frame() { 1.11 - intptr_t* fp = _get_previous_fp(); 1.12 + intptr_t* fp = _get_current_fp(); // it's inlined so want current fp 1.13 frame myframe((intptr_t*)os::current_stack_pointer(), 1.14 (intptr_t*)fp, 1.15 CAST_FROM_FN_PTR(address, os::current_frame));
2.1 --- a/src/os_cpu/solaris_x86/vm/solaris_x86_32.il Fri Dec 05 15:45:24 2008 -0800 2.2 +++ b/src/os_cpu/solaris_x86/vm/solaris_x86_32.il Mon Dec 08 15:50:55 2008 -0500 2.3 @@ -37,10 +37,10 @@ 2.4 movl %gs:0, %eax 2.5 .end 2.6 2.7 - // Get callers fp 2.8 - .inline _get_previous_fp,0 2.9 + // Get current fp 2.10 + .inline _get_current_fp,0 2.11 + .volatile 2.12 movl %ebp, %eax 2.13 - movl %eax, %eax 2.14 .end 2.15 2.16 // Support for jint Atomic::add(jint inc, volatile jint* dest)
3.1 --- a/src/os_cpu/solaris_x86/vm/solaris_x86_64.il Fri Dec 05 15:45:24 2008 -0800 3.2 +++ b/src/os_cpu/solaris_x86/vm/solaris_x86_64.il Mon Dec 08 15:50:55 2008 -0500 3.3 @@ -30,10 +30,10 @@ 3.4 movq %fs:0, %rax 3.5 .end 3.6 3.7 - // Get the frame pointer from previous frame. 3.8 - .inline _get_previous_fp,0 3.9 + // Get the frame pointer from current frame. 3.10 + .inline _get_current_fp,0 3.11 + .volatile 3.12 movq %rbp, %rax 3.13 - movq %rax, %rax 3.14 .end 3.15 3.16 // Support for jint Atomic::add(jint add_value, volatile jint* dest)