comparison src/cpu/x86/vm/frame_x86.cpp @ 4806:eaa9557116a2

7120448: Fix FP values for compiled frames in frame::describe Summary: fix for debug method frame::describe Reviewed-by: never, kvn
author bdelsart
date Wed, 18 Jan 2012 16:18:31 +0100
parents 448691f285a5
children 82e5a84b7436
comparison
equal deleted inserted replaced
4792:89d0a5d40008 4806:eaa9557116a2
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.
673 673
674 intptr_t *frame::initial_deoptimization_info() { 674 intptr_t *frame::initial_deoptimization_info() {
675 // used to reset the saved FP 675 // used to reset the saved FP
676 return fp(); 676 return fp();
677 } 677 }
678
679 intptr_t* frame::real_fp() const {
680 if (_cb != NULL) {
681 // use the frame size if valid
682 int size = _cb->frame_size();
683 if ((size > 0) &&
684 (! is_ricochet_frame())) {
685 // Work-around: ricochet explicitly excluded because frame size is not
686 // constant for the ricochet blob but its frame_size could not, for
687 // some reasons, be declared as <= 0. This potentially confusing
688 // size declaration should be fixed as another CR.
689 return unextended_sp() + size;
690 }
691 }
692 // else rely on fp()
693 assert(! is_compiled_frame(), "unknown compiled frame size");
694 return fp();
695 }