Mercurial > hg > truffle
comparison src/share/vm/code/pcDesc.hpp @ 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 | 04b9a2566eec |
comparison
equal
deleted
inserted
replaced
3017:b4ba003eb11d | 3018:5857923e563c |
---|---|
41 | 41 |
42 union PcDescFlags { | 42 union PcDescFlags { |
43 int word; | 43 int word; |
44 struct { | 44 struct { |
45 unsigned int reexecute: 1; | 45 unsigned int reexecute: 1; |
46 unsigned int rethrow_exception: 1; | |
46 unsigned int is_method_handle_invoke: 1; | 47 unsigned int is_method_handle_invoke: 1; |
47 unsigned int return_oop: 1; | 48 unsigned int return_oop: 1; |
48 } bits; | 49 } bits; |
49 bool operator ==(const PcDescFlags& other) { return word == other.word; } | 50 bool operator ==(const PcDescFlags& other) { return word == other.word; } |
50 } _flags; | 51 } _flags; |
69 }; | 70 }; |
70 | 71 |
71 // Flags | 72 // Flags |
72 bool should_reexecute() const { return _flags.bits.reexecute; } | 73 bool should_reexecute() const { return _flags.bits.reexecute; } |
73 void set_should_reexecute(bool z) { _flags.bits.reexecute = z; } | 74 void set_should_reexecute(bool z) { _flags.bits.reexecute = z; } |
75 bool rethrow_exception() const { return _flags.bits.rethrow_exception; } | |
76 void set_rethrow_exception(bool z) { _flags.bits.rethrow_exception = z; } | |
74 | 77 |
75 // Does pd refer to the same information as pd? | 78 // Does pd refer to the same information as pd? |
76 bool is_same_info(const PcDesc* pd) { | 79 bool is_same_info(const PcDesc* pd) { |
77 return _scope_decode_offset == pd->_scope_decode_offset && | 80 return _scope_decode_offset == pd->_scope_decode_offset && |
78 _obj_decode_offset == pd->_obj_decode_offset && | 81 _obj_decode_offset == pd->_obj_decode_offset && |