# HG changeset patch # User coleenp # Date 1228769455 18000 # Node ID 7b920868b475b05f295a44eed2e33e6363449c76 # Parent 3c4d36b4a7ac4947602c7bf6ca9d0a85d679f08e 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 diff -r 3c4d36b4a7ac -r 7b920868b475 src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp --- a/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Fri Dec 05 15:45:24 2008 -0800 +++ b/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp Mon Dec 08 15:50:55 2008 -0500 @@ -203,10 +203,10 @@ return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); } -extern "C" intptr_t *_get_previous_fp(); // in .il file. +extern "C" intptr_t *_get_current_fp(); // in .il file frame os::current_frame() { - intptr_t* fp = _get_previous_fp(); + intptr_t* fp = _get_current_fp(); // it's inlined so want current fp frame myframe((intptr_t*)os::current_stack_pointer(), (intptr_t*)fp, CAST_FROM_FN_PTR(address, os::current_frame)); diff -r 3c4d36b4a7ac -r 7b920868b475 src/os_cpu/solaris_x86/vm/solaris_x86_32.il --- a/src/os_cpu/solaris_x86/vm/solaris_x86_32.il Fri Dec 05 15:45:24 2008 -0800 +++ b/src/os_cpu/solaris_x86/vm/solaris_x86_32.il Mon Dec 08 15:50:55 2008 -0500 @@ -37,10 +37,10 @@ movl %gs:0, %eax .end - // Get callers fp - .inline _get_previous_fp,0 + // Get current fp + .inline _get_current_fp,0 + .volatile movl %ebp, %eax - movl %eax, %eax .end // Support for jint Atomic::add(jint inc, volatile jint* dest) diff -r 3c4d36b4a7ac -r 7b920868b475 src/os_cpu/solaris_x86/vm/solaris_x86_64.il --- a/src/os_cpu/solaris_x86/vm/solaris_x86_64.il Fri Dec 05 15:45:24 2008 -0800 +++ b/src/os_cpu/solaris_x86/vm/solaris_x86_64.il Mon Dec 08 15:50:55 2008 -0500 @@ -30,10 +30,10 @@ movq %fs:0, %rax .end - // Get the frame pointer from previous frame. - .inline _get_previous_fp,0 + // Get the frame pointer from current frame. + .inline _get_current_fp,0 + .volatile movq %rbp, %rax - movq %rax, %rax .end // Support for jint Atomic::add(jint add_value, volatile jint* dest)