diff src/share/vm/c1x/c1x_CodeInstaller.cpp @ 1453:d603bdbec024

Enable monitorenter/monitorexit runtime calls.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Fri, 12 Nov 2010 18:34:07 +0100
parents 565f45cebac2
children dc114f680d9c
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_CodeInstaller.cpp	Fri Nov 12 18:04:27 2010 +0100
+++ b/src/share/vm/c1x/c1x_CodeInstaller.cpp	Fri Nov 12 18:34:07 2010 +0100
@@ -327,7 +327,6 @@
     reexecute = Interpreter::bytecode_should_reexecute(code);
   }
 
-
   if (frame != NULL) {
     jint local_count = CiDebugInfo_Frame::numLocals(frame);
     jint expression_count = CiDebugInfo_Frame::numStack(frame);
@@ -350,8 +349,9 @@
       } else {
         assert(value->is_location(), "invalid monitor location");
         LocationValue* loc = (LocationValue*)value;
-        LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, loc->location().stack_offset() + HeapWordSize));
-        monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, loc->location().stack_offset())));
+        int monitor_offset = loc->location().stack_offset();
+        LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, monitor_offset + BasicObjectLock::obj_offset_in_bytes()));
+        monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, monitor_offset  + BasicObjectLock::lock_offset_in_bytes())));
       }
     }
     DebugToken* locals_token = _debug_recorder->create_scope_values(locals);