38
38
#include " prims/jniFastGetField.hpp"
39
39
#include " prims/jvm_misc.hpp"
40
40
#include " runtime/arguments.hpp"
41
- #include " runtime/extendedPC.hpp"
42
41
#include " runtime/frame.inline.hpp"
43
42
#include " runtime/interfaceSupport.inline.hpp"
44
43
#include " runtime/java.hpp"
@@ -313,35 +312,18 @@ intptr_t* os::Bsd::ucontext_get_fp(const ucontext_t * uc) {
313
312
return (intptr_t *)uc->context_fp ;
314
313
}
315
314
316
- // For Forte Analyzer AsyncGetCallTrace profiling support - thread
317
- // is currently interrupted by SIGPROF.
318
- // os::Solaris::fetch_frame_from_ucontext() tries to skip nested signal
319
- // frames. Currently we don't do that on Bsd, so it's the same as
320
- // os::fetch_frame_from_context().
321
- // This method is also used for stack overflow signal handling.
322
- ExtendedPC os::Bsd::fetch_frame_from_ucontext (Thread* thread,
323
- const ucontext_t * uc, intptr_t ** ret_sp, intptr_t ** ret_fp) {
324
-
325
- assert (thread != NULL , " just checking" );
326
- assert (ret_sp != NULL , " just checking" );
327
- assert (ret_fp != NULL , " just checking" );
328
-
329
- return os::fetch_frame_from_context (uc, ret_sp, ret_fp);
330
- }
331
-
332
- ExtendedPC os::fetch_frame_from_context (const void * ucVoid,
315
+ address os::fetch_frame_from_context (const void * ucVoid,
333
316
intptr_t ** ret_sp, intptr_t ** ret_fp) {
334
317
335
- ExtendedPC epc;
318
+ address epc;
336
319
const ucontext_t * uc = (const ucontext_t *)ucVoid;
337
320
338
321
if (uc != NULL ) {
339
- epc = ExtendedPC ( os::Bsd::ucontext_get_pc (uc) );
322
+ epc = os::Bsd::ucontext_get_pc (uc);
340
323
if (ret_sp) *ret_sp = os::Bsd::ucontext_get_sp (uc);
341
324
if (ret_fp) *ret_fp = os::Bsd::ucontext_get_fp (uc);
342
325
} else {
343
- // construct empty ExtendedPC for return value checking
344
- epc = ExtendedPC (NULL );
326
+ epc = NULL ;
345
327
if (ret_sp) *ret_sp = (intptr_t *)NULL ;
346
328
if (ret_fp) *ret_fp = (intptr_t *)NULL ;
347
329
}
@@ -352,15 +334,8 @@ ExtendedPC os::fetch_frame_from_context(const void* ucVoid,
352
334
frame os::fetch_frame_from_context (const void * ucVoid) {
353
335
intptr_t * sp;
354
336
intptr_t * fp;
355
- ExtendedPC epc = fetch_frame_from_context (ucVoid, &sp, &fp);
356
- return frame (sp, fp, epc.pc ());
357
- }
358
-
359
- frame os::fetch_frame_from_ucontext (Thread* thread, void * ucVoid) {
360
- intptr_t * sp;
361
- intptr_t * fp;
362
- ExtendedPC epc = os::Bsd::fetch_frame_from_ucontext (thread, (ucontext_t *)ucVoid, &sp, &fp);
363
- return frame (sp, fp, epc.pc ());
337
+ address epc = fetch_frame_from_context (ucVoid, &sp, &fp);
338
+ return frame (sp, fp, epc);
364
339
}
365
340
366
341
bool os::Bsd::get_frame_at_stack_banging_point (JavaThread* thread, ucontext_t * uc, frame* fr) {
@@ -370,7 +345,7 @@ bool os::Bsd::get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* u
370
345
// been generated while the compilers perform it before. To maintain
371
346
// semantic consistency between interpreted and compiled frames, the
372
347
// method returns the Java sender of the current frame.
373
- *fr = os::fetch_frame_from_ucontext (thread, uc);
348
+ *fr = os::fetch_frame_from_context ( uc);
374
349
if (!fr->is_first_java_frame ()) {
375
350
// get_frame_at_stack_banging_point() is only called when we
376
351
// have well defined stacks so java_sender() calls do not need
@@ -386,7 +361,7 @@ bool os::Bsd::get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* u
386
361
// stack overflow handling
387
362
return false ;
388
363
} else {
389
- *fr = os::fetch_frame_from_ucontext (thread, uc);
364
+ *fr = os::fetch_frame_from_context ( uc);
390
365
// in compiled code, the stack banging is performed just after the return pc
391
366
// has been pushed on the stack
392
367
*fr = frame (fr->sp () + 1 , fr->fp (), (address)*(fr->sp ()));
0 commit comments