6889869: assert(!Interpreter::bytecode_should_reexecute(code),"should not reexecute")
Reviewed-by: jrose, kvn, cfang, twisti
This commit is contained in:
parent
998bcbaf4b
commit
6af1a61656
hotspot/src/share/vm/code
@ -356,8 +356,7 @@ void DebugInformationRecorder::end_scopes(int pc_offset, bool is_safepoint) {
|
||||
// search forward until it finds last.
|
||||
// In addition, it does not matter if the last PcDesc
|
||||
// is for a safepoint or not.
|
||||
if (_prev_safepoint_pc < prev->pc_offset() &&
|
||||
prev->scope_decode_offset() == last->scope_decode_offset()) {
|
||||
if (_prev_safepoint_pc < prev->pc_offset() && prev->is_same_info(last)) {
|
||||
assert(prev == last-1, "sane");
|
||||
prev->set_pc_offset(pc_offset);
|
||||
_pcs_length -= 1;
|
||||
|
@ -39,6 +39,7 @@ class PcDesc VALUE_OBJ_CLASS_SPEC {
|
||||
struct {
|
||||
unsigned int reexecute: 1;
|
||||
} bits;
|
||||
bool operator ==(const PcDescFlags& other) { return word == other.word; }
|
||||
} _flags;
|
||||
|
||||
public:
|
||||
@ -64,6 +65,13 @@ class PcDesc VALUE_OBJ_CLASS_SPEC {
|
||||
bool should_reexecute() const { return _flags.bits.reexecute; }
|
||||
void set_should_reexecute(bool z) { _flags.bits.reexecute = z; }
|
||||
|
||||
// Does pd refer to the same information as pd?
|
||||
bool is_same_info(const PcDesc* pd) {
|
||||
return _scope_decode_offset == pd->_scope_decode_offset &&
|
||||
_obj_decode_offset == pd->_obj_decode_offset &&
|
||||
_flags == pd->_flags;
|
||||
}
|
||||
|
||||
// Returns the real pc
|
||||
address real_pc(const nmethod* code) const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user