< prev index next >
src/hotspot/share/runtime/vframe.cpp
Print this page
rev 59866 : 8249192: MonitorInfo stores raw oops across safepoints
Summary: Change raw oops in MonitorInfo to Handles and update Resource/HandleMarks.
Reviewed-by: sspitsyn, dholmes, coleenp, dcubed
@@ -163,10 +163,11 @@
}
void javaVFrame::print_lock_info_on(outputStream* st, int frame_count) {
Thread* THREAD = Thread::current();
ResourceMark rm(THREAD);
+ HandleMark hm(THREAD);
// If this is the first frame and it is java.lang.Object.wait(...)
// then print out the receiver. Locals are not always available,
// e.g., compiled native frames have no scope so there are no locals.
if (frame_count == 0) {
@@ -445,10 +446,25 @@
// ------------- cChunk --------------
entryVFrame::entryVFrame(const frame* fr, const RegisterMap* reg_map, JavaThread* thread)
: externalVFrame(fr, reg_map, thread) {}
+MonitorInfo::MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced) {
+ Thread* thread = Thread::current();
+ if (!owner_is_scalar_replaced) {
+ _owner = Handle(thread, owner);
+ _owner_klass = Handle();
+ } else {
+ assert(eliminated, "monitor should be eliminated for scalar replaced object");
+ _owner = Handle();
+ _owner_klass = Handle(thread, owner);
+ }
+ _lock = lock;
+ _eliminated = eliminated;
+ _owner_is_scalar_replaced = owner_is_scalar_replaced;
+}
+
#ifdef ASSERT
void vframeStreamCommon::found_bad_method_frame() const {
// 6379830 Cut point for an assertion that occasionally fires when
// we are using the performance analyzer.
// Disable this assert when testing the analyzer with fastdebug.
@@ -610,10 +626,12 @@
}
void javaVFrame::print() {
ResourceMark rm;
+ HandleMark hm;
+
vframe::print();
tty->print("\t");
method()->print_value();
tty->cr();
tty->print_cr("\tbci: %d", bci());
< prev index next >