src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp

changeset 6921
fbc0575cc9e4
parent 6920
1cddf026d2cc
child 7535
7ae4e26cb1e0
child 9289
427b2fb1944f
equal deleted inserted replaced
6920:1cddf026d2cc 6921:fbc0575cc9e4
116 epc = ExtendedPC(os::Linux::ucontext_get_pc(uc)); 116 epc = ExtendedPC(os::Linux::ucontext_get_pc(uc));
117 if (ret_sp) { 117 if (ret_sp) {
118 *ret_sp = os::Linux::ucontext_get_sp(uc); 118 *ret_sp = os::Linux::ucontext_get_sp(uc);
119 } 119 }
120 if (ret_fp) { 120 if (ret_fp) {
121 *ret_fp = os::Linux::ucontext_get_fp(uc); 121 *ret_fp = (intptr_t*)NULL;
122 } 122 }
123 } else { 123 } else {
124 // construct empty ExtendedPC for return value checking 124 // construct empty ExtendedPC for return value checking
125 epc = ExtendedPC(NULL); 125 epc = ExtendedPC(NULL);
126 if (ret_sp) { 126 if (ret_sp) {
134 return epc; 134 return epc;
135 } 135 }
136 136
137 frame os::fetch_frame_from_context(void* ucVoid) { 137 frame os::fetch_frame_from_context(void* ucVoid) {
138 intptr_t* sp; 138 intptr_t* sp;
139 intptr_t* fp; 139 ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, NULL);
140 ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp); 140 return frame(sp, frame::unpatchable, epc.pc());
141 return frame(sp, fp, epc.pc());
142 } 141 }
143 142
144 frame os::get_sender_for_C_frame(frame* fr) { 143 frame os::get_sender_for_C_frame(frame* fr) {
145 return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc()); 144 return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc());
146 } 145 }

mercurial