Mercurial > hg > truffle
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 |