< prev index next >

src/os_cpu/windows_x86/vm/os_windows_x86.cpp

Print this page

        

@@ -494,11 +494,19 @@
 intptr_t* _get_previous_fp() {
   intptr_t **frameptr;
   __asm {
     mov frameptr, ebp
   };
+  // ebp (frameptr) is for this frame (_get_previous_fp). We want the ebp for the
+  // caller of os::current_frame*(), so go up two frames. However, for
+  // optimized builds, _get_previous_fp() will be inlined, so only go
+  // up 1 frame in that case.
+#ifdef _NMT_NOINLINE_
+  return **(intptr_t***)frameptr;
+#else
   return *frameptr;
+#endif
 }
 #endif // !AMD64
 
 frame os::current_frame() {
 
< prev index next >