提交 7b372ab6 编写于 作者: C coleenp

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
上级 38d28dfc
...@@ -203,10 +203,10 @@ frame os::get_sender_for_C_frame(frame* fr) { ...@@ -203,10 +203,10 @@ frame os::get_sender_for_C_frame(frame* fr) {
return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); 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() { 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(), frame myframe((intptr_t*)os::current_stack_pointer(),
(intptr_t*)fp, (intptr_t*)fp,
CAST_FROM_FN_PTR(address, os::current_frame)); CAST_FROM_FN_PTR(address, os::current_frame));
......
...@@ -37,10 +37,10 @@ ...@@ -37,10 +37,10 @@
movl %gs:0, %eax movl %gs:0, %eax
.end .end
// Get callers fp // Get current fp
.inline _get_previous_fp,0 .inline _get_current_fp,0
.volatile
movl %ebp, %eax movl %ebp, %eax
movl %eax, %eax
.end .end
// Support for jint Atomic::add(jint inc, volatile jint* dest) // Support for jint Atomic::add(jint inc, volatile jint* dest)
......
...@@ -30,10 +30,10 @@ ...@@ -30,10 +30,10 @@
movq %fs:0, %rax movq %fs:0, %rax
.end .end
// Get the frame pointer from previous frame. // Get the frame pointer from current frame.
.inline _get_previous_fp,0 .inline _get_current_fp,0
.volatile
movq %rbp, %rax movq %rbp, %rax
movq %rax, %rax
.end .end
// Support for jint Atomic::add(jint add_value, volatile jint* dest) // Support for jint Atomic::add(jint add_value, volatile jint* dest)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册