Mercurial > hg > graal-jvmci-8
comparison 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 |
comparison
equal
deleted
inserted
replaced
3017:b4ba003eb11d | 3018:5857923e563c |
---|---|
29 #include "memory/resourceArea.hpp" | 29 #include "memory/resourceArea.hpp" |
30 #include "oops/oop.inline.hpp" | 30 #include "oops/oop.inline.hpp" |
31 #include "runtime/handles.inline.hpp" | 31 #include "runtime/handles.inline.hpp" |
32 | 32 |
33 | 33 |
34 ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool return_oop) { | 34 ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { |
35 _code = code; | 35 _code = code; |
36 _decode_offset = decode_offset; | 36 _decode_offset = decode_offset; |
37 _objects = decode_object_values(obj_decode_offset); | 37 _objects = decode_object_values(obj_decode_offset); |
38 _reexecute = reexecute; | 38 _reexecute = reexecute; |
39 _return_oop = return_oop; | 39 _return_oop = return_oop; |
40 _rethrow_exception = rethrow_exception; | |
40 decode_body(); | 41 decode_body(); |
41 } | 42 } |
42 | 43 |
43 ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool return_oop) { | 44 ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool rethrow_exception, bool return_oop) { |
44 _code = code; | 45 _code = code; |
45 _decode_offset = decode_offset; | 46 _decode_offset = decode_offset; |
46 _objects = decode_object_values(DebugInformationRecorder::serialized_null); | 47 _objects = decode_object_values(DebugInformationRecorder::serialized_null); |
47 _reexecute = reexecute; | 48 _reexecute = reexecute; |
48 _return_oop = return_oop; | 49 _return_oop = return_oop; |
50 _rethrow_exception = rethrow_exception; | |
49 decode_body(); | 51 decode_body(); |
50 } | 52 } |
51 | 53 |
52 | 54 |
53 ScopeDesc::ScopeDesc(const ScopeDesc* parent) { | 55 ScopeDesc::ScopeDesc(const ScopeDesc* parent) { |
54 _code = parent->_code; | 56 _code = parent->_code; |
55 _decode_offset = parent->_sender_decode_offset; | 57 _decode_offset = parent->_sender_decode_offset; |
56 _objects = parent->_objects; | 58 _objects = parent->_objects; |
57 _reexecute = false; //reexecute only applies to the first scope | 59 _reexecute = false; //reexecute only applies to the first scope |
60 _rethrow_exception = false; | |
58 _return_oop = false; | 61 _return_oop = false; |
59 decode_body(); | 62 decode_body(); |
60 } | 63 } |
61 | 64 |
62 | 65 |