frame_sparc.cpp revision 1472
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A# include "incls/_frame_sparc.cpp.incl"
0N/Astatic bool register_map_inited = false;
0N/Astatic void register_map_init() {
0N/A if (!register_map_inited) {
0N/A register_map_inited = true;
0N/A int second_word = 0;
0N/A return second_word + (address)&_younger_window[reg->after_save()->sp_offset_in_saved_window()];
0N/A assert((_location_valid[0] & bad_mask) == 0, "cannot have special locations for SP,FP,TLS,etc.");
107N/A if (!unextended_sp_safe) return false;
107N/A // We know sp/unextended_sp are safe only fp is questionable here
107N/A if (is_entry_frame()) {
107N/A if (!sender_fp_safe) {
4310N/A // We should never be able to see an adapter if the current frame is something from code cache
107N/A // The sender should positively be an nmethod or call_stub. On sparc we might in fact see something else.
1668N/A // The cause of this is because at a save instruction the O7 we get is a leftover from an earlier
1668N/A // window use. So if a runtime stub creates two frames (common in fastdebug/jvmg) then we see the
1668N/A // stale pc. So if the sender blob is not something we'd expect we have little choice but to declare
107N/A // the stack unwalkable. pd_get_top_frame_for_signal_handler tries to recover from this by unwinding
107N/A // frame we'd create by calling sender if I could think of any. Wait for next crash in forte...
107N/A // could try and do some more potential verification of native frame if we could think of some...
0N/A assert( (intptr_t*)younger_sp[FP->sp_offset_in_saved_window()] == (intptr_t*)((intptr_t)sp - STACK_BIAS), "younger_sp must be valid");
0N/A if (younger_frame_adjusted_stack) {
0N/A _sp_adjustment_by_callee = (intptr_t*)((intptr_t)younger_sp[I5_savedSP->sp_offset_in_saved_window()] +
1204N/A if (f.is_compiled_frame()) {
1204N/A if (f.is_deoptimized_frame())
0N/A bool adjusted_stack = false;
0N/A // interpreted but its pc is in the code cache (for c1 -> osr_frame_return_id stub), so it must be
0N/A if (adjusted_stack) {
0N/A if (TracePcPatching) {