src/share/vm/opto/chaitin.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/chaitin.cpp	Thu Feb 16 10:56:39 2012
--- new/src/share/vm/opto/chaitin.cpp	Thu Feb 16 10:56:39 2012

*** 1,7 **** --- 1,7 ---- /* ! * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 1944,1965 **** --- 1944,1977 ---- // Old SP tty->print_cr("# -- Old %s -- Framesize: %d --",fp, reg2offset_unchecked(OptoReg::add(_matcher._old_SP,-1)) - reg2offset_unchecked(_matcher._new_SP)+jintSize); // Preserve area dump + int regs_per_slot = NOT_LP64(1) LP64_ONLY(2); + int fixed_slots = C->fixed_slots(); + OptoReg::Name begin_in_preserve = OptoReg::add(_matcher._old_SP, -(int)C->in_preserve_stack_slots()); + OptoReg::Name return_addr = _matcher.return_addr(); + reg = OptoReg::add(reg, -1); ! while( OptoReg::is_stack(reg)) { ! while (OptoReg::is_stack(reg)) { tty->print("#r%3.3d %s+%2d: ",reg,fp,reg2offset_unchecked(reg)); ! if( _matcher.return_addr() == reg ) ! if (return_addr == reg) { tty->print_cr("return address"); else if( _matcher.return_addr() == OptoReg::add(reg,1) && VerifyStackAtCalls ) + } else if (reg >= begin_in_preserve) { + // Preserved slots are present on x86 + if (return_addr == OptoReg::add(reg, regs_per_slot)) + tty->print_cr("saved fp register"); + else if (return_addr == OptoReg::add(reg, 2*regs_per_slot) && + VerifyStackAtCalls) tty->print_cr("0xBADB100D +VerifyStackAtCalls"); else if ((int)OptoReg::reg2stack(reg) < C->fixed_slots()) tty->print_cr("Fixed slot %d", OptoReg::reg2stack(reg)); else ! tty->print_cr("pad2, in_preserve"); ! tty->print_cr("in_preserve"); + } else if ((int)OptoReg::reg2stack(reg) < fixed_slots) { + tty->print_cr("Fixed slot %d", OptoReg::reg2stack(reg)); + } else { + tty->print_cr("pad2, stack alignment"); + } reg = OptoReg::add(reg, -1); } // Spill area dump reg = OptoReg::add(_matcher._new_SP, _framesize );

src/share/vm/opto/chaitin.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File