diff -r 5da8bb64b370 -r ad3b94907eed src/share/vm/opto/callnode.cpp --- a/src/share/vm/opto/callnode.cpp Mon Dec 23 10:26:08 2013 -0800 +++ b/src/share/vm/opto/callnode.cpp Fri Dec 20 13:51:14 2013 +0100 @@ -595,6 +595,18 @@ } } +// Adapt offsets in in-array after adding or removing an edge. +// Prerequisite is that the JVMState is used by only one node. +void JVMState::adapt_position(int delta) { + for (JVMState* jvms = this; jvms != NULL; jvms = jvms->caller()) { + jvms->set_locoff(jvms->locoff() + delta); + jvms->set_stkoff(jvms->stkoff() + delta); + jvms->set_monoff(jvms->monoff() + delta); + jvms->set_scloff(jvms->scloff() + delta); + jvms->set_endoff(jvms->endoff() + delta); + } +} + //============================================================================= uint CallNode::cmp( const Node &n ) const { return _tf == ((CallNode&)n)._tf && _jvms == ((CallNode&)n)._jvms; }