frame_sparc.cpp revision 4248
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "precompiled.hpp"
1879N/A#include "interpreter/interpreter.hpp"
1879N/A#include "memory/resourceArea.hpp"
1879N/A#include "oops/markOop.hpp"
1879N/A#include "oops/methodOop.hpp"
1879N/A#include "oops/oop.inline.hpp"
3153N/A#include "prims/methodHandles.hpp"
1879N/A#include "runtime/frame.inline.hpp"
1879N/A#include "runtime/handles.inline.hpp"
1879N/A#include "runtime/javaCalls.hpp"
1879N/A#include "runtime/monitorChunk.hpp"
1879N/A#include "runtime/signature.hpp"
1879N/A#include "runtime/stubCodeGenerator.hpp"
1879N/A#include "runtime/stubRoutines.hpp"
1879N/A#include "vmreg_sparc.inline.hpp"
1879N/A#include "c1/c1_Runtime1.hpp"
1879N/A#include "runtime/vframeArray.hpp"
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) {
107N/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.
107N/A // The cause of this is because at a save instruction the O7 we get is a leftover from an earlier
107N/A // window use. So if a runtime stub creates two frames (common in fastdebug/jvmg) then we see the
107N/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");
1484N/A _sp_adjustment_by_callee = (intptr_t*) ((intptr_t) sp[L7_mh_SP_save->sp_offset_in_saved_window()] + STACK_BIAS) - sp;
1484N/A younger_frame_is_interpreted = false;
1484N/A _sp_adjustment_by_callee = (intptr_t*) ((intptr_t) younger_sp[I5_savedSP->sp_offset_in_saved_window()] + STACK_BIAS) - sp;
0N/A if (f.is_compiled_frame()) {
0N/A if (f.is_deoptimized_frame())