# HG changeset patch # User Yasumasa Suenaga # Date 1500454391 -32400 # Node ID 1e7c0fb4048a978554905bff2e5d8144cf9222b6 # Parent be9892e921b3dc3e3172d4ea410fa73ca0f98be3 Bug 3422: [REFACTORING] Stack and base pointer operation Reviewed-by: ykubota https://github.com/HeapStats/heapstats/pull/111 diff -r be9892e921b3 -r 1e7c0fb4048a ChangeLog --- a/ChangeLog Mon Jul 17 23:44:04 2017 +0900 +++ b/ChangeLog Wed Jul 19 17:53:11 2017 +0900 @@ -1,3 +1,7 @@ +2017-07-19 Yasumasa Suenaga + + * Bug 3422: [REFACTORING] Stack and base pointer operation + 2017-07-17 KUBOTA Yuji * Bug 3420: Migrate Plugin API module from fx module diff -r be9892e921b3 -r 1e7c0fb4048a agent/src/heapstats-engines/arch/x86/overrideFunc.amd64.S --- a/agent/src/heapstats-engines/arch/x86/overrideFunc.amd64.S Mon Jul 17 23:44:04 2017 +0900 +++ b/agent/src/heapstats-engines/arch/x86/overrideFunc.amd64.S Wed Jul 19 17:53:11 2017 +0900 @@ -58,24 +58,20 @@ mov collectedHeap@GOTPCREL(%rip), %rdi; \ mov (%rdi), %rdi; \ mov oop_ofs(%rsp), %rsi; \ - push %rbp; \ - mov %rsp, %rbp; \ call *(%r11); \ - pop %rbp; \ test %al, %al; #define DO_JMP_TO_CALLBACK(header, ary_idx, oop_ofs) \ mov oop_ofs(%rsp), %rdi; \ mov header##_enter_hook_##ary_idx##@GOTPCREL(%rip), %r11; \ - push %rbp; \ - mov %rsp, %rbp; \ - call *(%r11); \ - pop %rbp; + call *(%r11); #define OVERRIDE_FUNC_DEFINE(header, ary_idx) \ .global header##_override_func_##ary_idx ; \ .type header##_override_func_##ary_idx, @function; \ header##_override_func_##ary_idx: ; \ + push %rbp; \ + mov %rsp, %rbp; \ /* Save argument registers. */ ; \ DO_SAVE_REG \ \ @@ -138,5 +134,11 @@ .LORIGINAL_FUNC: pop %r11; DO_LOAD_REG + + /* Restore stack pointer */ + mov %rbp, %rsp; + /* Restore base pointer */ + pop %rbp; + jmp *%r11;