1 /* |
1 /* |
2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
34 // |
34 // |
35 bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr, |
35 bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr, |
36 void* ucontext, bool isInJava) { |
36 void* ucontext, bool isInJava) { |
37 |
37 |
38 assert(Thread::current() == this, "caller must be current thread"); |
38 assert(Thread::current() == this, "caller must be current thread"); |
|
39 return pd_get_top_frame(fr_addr, ucontext, isInJava, true); |
|
40 } |
|
41 |
|
42 bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext, bool isInJava) { |
|
43 // get ucontext somehow |
|
44 return pd_get_top_frame(fr_addr, ucontext, isInJava, false); |
|
45 } |
|
46 |
|
47 bool JavaThread::pd_get_top_frame(frame* fr_addr, |
|
48 void* ucontext, bool isInJava, bool makeWalkable) { |
39 assert(this->is_Java_thread(), "must be JavaThread"); |
49 assert(this->is_Java_thread(), "must be JavaThread"); |
40 |
50 |
41 JavaThread* jt = (JavaThread *)this; |
51 JavaThread* jt = (JavaThread *)this; |
42 |
52 |
43 if (!isInJava) { |
53 if (!isInJava && makeWalkable) { |
44 // make_walkable flushes register windows and grabs last_Java_pc |
54 // make_walkable flushes register windows and grabs last_Java_pc |
45 // which can not be done if the ucontext sp matches last_Java_sp |
55 // which can not be done if the ucontext sp matches last_Java_sp |
46 // stack walking utilities assume last_Java_pc set if marked flushed |
56 // stack walking utilities assume last_Java_pc set if marked flushed |
47 jt->frame_anchor()->make_walkable(jt); |
57 jt->frame_anchor()->make_walkable(jt); |
48 } |
58 } |