review (XS) for 6889869: assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute")
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Mon Oct 12 13:14:14 PDT 2009
I'd considered adding an is_same_info method to PcDesc and that's a
good reason to do it. Actually looking at it some more there's
another latent issue because it doesn't check _obj_decode_offset
either. I'll change it do this. openjdk.java.net is still borked so
I'll update the webrev when it's back but it's basically this:
diff -r 03b336640699 src/share/vm/code/pcDesc.hpp
--- a/src/share/vm/code/pcDesc.hpp Wed Oct 07 15:38:37 2009 -0700
+++ b/src/share/vm/code/pcDesc.hpp Mon Oct 12 13:11:54 2009 -0700
@@ -39,6 +39,7 @@ class PcDesc VALUE_OBJ_CLASS_SPEC {
struct {
unsigned int reexecute: 1;
} bits;
+ 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;
diff -r 03b336640699 src/share/vm/code/debugInfoRec.cpp
--- a/src/share/vm/code/debugInfoRec.cpp Wed Oct 07 15:38:37
2009 -0700
+++ b/src/share/vm/code/debugInfoRec.cpp Mon Oct 12 13:07:49
2009 -0700
@@ -356,8 +356,7 @@ void DebugInformationRecorder::end_scope
// 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;
tom
On Oct 12, 2009, at 12:41 AM, Christian Thalinger wrote:
> On Thu, 2009-10-08 at 16:40 -0700, Tom Rodriguez wrote:
>> http://cr.openjdk.java.net/~never/6889869/
>
> I guess I have to do the same change for the is_method_handle_invoke
> flag. Maybe we should compare the whole _flags.word instead of every
> single bit in there?
>
> -- Christian
>
More information about the hotspot-compiler-dev
mailing list