< prev index next >

src/os_cpu/linux_x86/vm/os_linux_x86.cpp

Print this page

        

@@ -162,21 +162,21 @@
   }
 
   return epc;
 }
 
-frame os::fetch_frame_from_context(void* ucVoid) {
+frame os::fetch_frame_from_context(Thread* thread, void* ucVoid) {
   intptr_t* sp;
   intptr_t* fp;
   ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp);
-  return frame(sp, fp, epc.pc());
+  return frame(thread, sp, fp, epc.pc());
 }
 
 // By default, gcc always save frame pointer (%ebp/%rbp) on stack. It may get
 // turned off by -fomit-frame-pointer,
-frame os::get_sender_for_C_frame(frame* fr) {
-  return frame(fr->sender_sp(), fr->link(), fr->sender_pc());
+frame os::get_sender_for_C_frame(Thread* thread, frame* fr) {
+  return frame(thread, fr->sender_sp(), fr->link(), fr->sender_pc());
 }
 
 intptr_t* _get_previous_fp() {
 #ifdef SPARC_WORKS
   register intptr_t **ebp;

@@ -190,19 +190,21 @@
   return (intptr_t*) *ebp;   // we want what it points to.
 }
 
 
 frame os::current_frame() {
+  Thread* thread = Thread::current();
   intptr_t* fp = _get_previous_fp();
-  frame myframe((intptr_t*)os::current_stack_pointer(),
+  frame myframe(thread,
+                (intptr_t*)os::current_stack_pointer(),
                 (intptr_t*)fp,
                 CAST_FROM_FN_PTR(address, os::current_frame));
   if (os::is_first_C_frame(&myframe)) {
     // stack is not walkable
     return frame();
   } else {
-    return os::get_sender_for_C_frame(&myframe);
+    return os::get_sender_for_C_frame(thread, &myframe);
   }
 }
 
 // Utility functions
 
< prev index next >