Mercurial > hg > truffle
diff src/share/vm/code/scopeDesc.cpp @ 3018:5857923e563c
Fixed an issue with frame states in exception dispatch chains (now we are correctly rethrowing the exception immediately at entering the interpreter).
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Sat, 18 Jun 2011 19:13:55 +0200 |
parents | f95d63e2154a |
children | e522a00b91aa |
line wrap: on
line diff
--- a/src/share/vm/code/scopeDesc.cpp Sat Jun 18 14:51:18 2011 +0200 +++ b/src/share/vm/code/scopeDesc.cpp Sat Jun 18 19:13:55 2011 +0200 @@ -31,21 +31,23 @@ #include "runtime/handles.inline.hpp" -ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool return_oop) { +ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { _code = code; _decode_offset = decode_offset; _objects = decode_object_values(obj_decode_offset); _reexecute = reexecute; _return_oop = return_oop; + _rethrow_exception = rethrow_exception; decode_body(); } -ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool return_oop) { +ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { _code = code; _decode_offset = decode_offset; _objects = decode_object_values(DebugInformationRecorder::serialized_null); _reexecute = reexecute; _return_oop = return_oop; + _rethrow_exception = rethrow_exception; decode_body(); } @@ -55,6 +57,7 @@ _decode_offset = parent->_sender_decode_offset; _objects = parent->_objects; _reexecute = false; //reexecute only applies to the first scope + _rethrow_exception = false; _return_oop = false; decode_body(); }