--- a/hotspot/src/share/vm/code/scopeDesc.cpp Wed Aug 19 19:05:18 2009 -0700
+++ b/hotspot/src/share/vm/code/scopeDesc.cpp Thu Aug 20 12:42:57 2009 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,17 +26,19 @@
# include "incls/_scopeDesc.cpp.incl"
-ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset) {
+ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute) {
_code = code;
_decode_offset = decode_offset;
_objects = decode_object_values(obj_decode_offset);
+ _reexecute = reexecute;
decode_body();
}
-ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset) {
+ScopeDesc::ScopeDesc(const nmethod* code, int decode_offset, bool reexecute) {
_code = code;
_decode_offset = decode_offset;
_objects = decode_object_values(DebugInformationRecorder::serialized_null);
+ _reexecute = reexecute;
decode_body();
}
@@ -45,8 +47,8 @@
_code = parent->_code;
_decode_offset = parent->_sender_decode_offset;
_objects = parent->_objects;
+ _reexecute = false; //reexecute only applies to the first scope
decode_body();
- assert(_reexecute == false, "reexecute not allowed");
}
@@ -57,7 +59,6 @@
_sender_decode_offset = DebugInformationRecorder::serialized_null;
_method = methodHandle(_code->method());
_bci = InvocationEntryBci;
- _reexecute = false;
_locals_decode_offset = DebugInformationRecorder::serialized_null;
_expressions_decode_offset = DebugInformationRecorder::serialized_null;
_monitors_decode_offset = DebugInformationRecorder::serialized_null;
@@ -67,7 +68,7 @@
_sender_decode_offset = stream->read_int();
_method = methodHandle((methodOop) stream->read_oop());
- _bci = stream->read_bci_and_reexecute(_reexecute);
+ _bci = stream->read_bci();
// decode offsets for body and sender
_locals_decode_offset = stream->read_int();