comparison src/cpu/sparc/vm/frame_sparc.cpp @ 4866:527cf36f4a20

Merge
author fparain
date Fri, 03 Feb 2012 14:04:59 -0500
parents 5dbed2f542ff
children 5f17b16b3219
comparison
equal deleted inserted replaced
4865:481a9443f721 4866:527cf36f4a20
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, 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.
808 int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize) - 1; 808 int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize) - 1;
809 return &interpreter_frame_tos_address()[index]; 809 return &interpreter_frame_tos_address()[index];
810 } 810 }
811 811
812 812
813 #ifdef ASSERT 813 #ifndef PRODUCT
814 814
815 #define DESCRIBE_FP_OFFSET(name) \ 815 #define DESCRIBE_FP_OFFSET(name) \
816 values.describe(frame_no, fp() + frame::name##_offset, #name) 816 values.describe(frame_no, fp() + frame::name##_offset, #name)
817 817
818 void frame::describe_pd(FrameValues& values, int frame_no) { 818 void frame::describe_pd(FrameValues& values, int frame_no) {
819 for (int w = 0; w < frame::register_save_words; w++) { 819 for (int w = 0; w < frame::register_save_words; w++) {
820 values.describe(frame_no, sp() + w, err_msg("register save area word %d", w), 1); 820 values.describe(frame_no, sp() + w, err_msg("register save area word %d", w), 1);
821 } 821 }
822 822
823 if (is_interpreted_frame()) { 823 if (is_ricochet_frame()) {
824 MethodHandles::RicochetFrame::describe(this, values, frame_no);
825 } else if (is_interpreted_frame()) {
824 DESCRIBE_FP_OFFSET(interpreter_frame_d_scratch_fp); 826 DESCRIBE_FP_OFFSET(interpreter_frame_d_scratch_fp);
825 DESCRIBE_FP_OFFSET(interpreter_frame_l_scratch_fp); 827 DESCRIBE_FP_OFFSET(interpreter_frame_l_scratch_fp);
826 DESCRIBE_FP_OFFSET(interpreter_frame_padding); 828 DESCRIBE_FP_OFFSET(interpreter_frame_padding);
827 DESCRIBE_FP_OFFSET(interpreter_frame_oop_temp); 829 DESCRIBE_FP_OFFSET(interpreter_frame_oop_temp);
830
831 // esp, according to Lesp (e.g. not depending on bci), if seems valid
832 intptr_t* esp = *interpreter_frame_esp_addr();
833 if ((esp >= sp()) && (esp < fp())) {
834 values.describe(-1, esp, "*Lesp");
835 }
828 } 836 }
829 837
830 if (!is_compiled_frame()) { 838 if (!is_compiled_frame()) {
831 if (frame::callee_aggregate_return_pointer_words != 0) { 839 if (frame::callee_aggregate_return_pointer_words != 0) {
832 values.describe(frame_no, sp() + frame::callee_aggregate_return_pointer_sp_offset, "callee_aggregate_return_pointer_word"); 840 values.describe(frame_no, sp() + frame::callee_aggregate_return_pointer_sp_offset, "callee_aggregate_return_pointer_word");
842 850
843 intptr_t *frame::initial_deoptimization_info() { 851 intptr_t *frame::initial_deoptimization_info() {
844 // unused... but returns fp() to minimize changes introduced by 7087445 852 // unused... but returns fp() to minimize changes introduced by 7087445
845 return fp(); 853 return fp();
846 } 854 }
847