22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "classfile/vmSymbols.hpp" |
26 #include "classfile/vmSymbols.hpp" |
|
27 #include "jfr/jfrEvents.hpp" |
27 #include "memory/resourceArea.hpp" |
28 #include "memory/resourceArea.hpp" |
28 #include "oops/markOop.hpp" |
29 #include "oops/markOop.hpp" |
29 #include "oops/oop.inline.hpp" |
30 #include "oops/oop.inline.hpp" |
30 #include "runtime/biasedLocking.hpp" |
31 #include "runtime/biasedLocking.hpp" |
31 #include "runtime/handles.inline.hpp" |
32 #include "runtime/handles.inline.hpp" |
1176 |
1177 |
1177 Thread::muxRelease (&ListLock) ; |
1178 Thread::muxRelease (&ListLock) ; |
1178 TEVENT (omFlush) ; |
1179 TEVENT (omFlush) ; |
1179 } |
1180 } |
1180 |
1181 |
|
1182 static void post_monitor_inflate_event(EventJavaMonitorInflate* event, |
|
1183 const oop obj) { |
|
1184 assert(event != NULL, "invariant"); |
|
1185 assert(event->should_commit(), "invariant"); |
|
1186 event->set_monitorClass(obj->klass()); |
|
1187 event->set_address((uintptr_t)(void*)obj); |
|
1188 // XXX no such counters. implement? |
|
1189 // event->set_cause((u1)cause); |
|
1190 event->commit(); |
|
1191 } |
|
1192 |
1181 // Fast path code shared by multiple functions |
1193 // Fast path code shared by multiple functions |
1182 ObjectMonitor* ObjectSynchronizer::inflate_helper(oop obj) { |
1194 ObjectMonitor* ObjectSynchronizer::inflate_helper(oop obj) { |
1183 markOop mark = obj->mark(); |
1195 markOop mark = obj->mark(); |
1184 if (mark->has_monitor()) { |
1196 if (mark->has_monitor()) { |
1185 assert(ObjectSynchronizer::verify_objmon_isinpool(mark->monitor()), "monitor is invalid"); |
1197 assert(ObjectSynchronizer::verify_objmon_isinpool(mark->monitor()), "monitor is invalid"); |
1197 ObjectMonitor * ATTR ObjectSynchronizer::inflate (Thread * Self, oop object) { |
1209 ObjectMonitor * ATTR ObjectSynchronizer::inflate (Thread * Self, oop object) { |
1198 // Inflate mutates the heap ... |
1210 // Inflate mutates the heap ... |
1199 // Relaxing assertion for bug 6320749. |
1211 // Relaxing assertion for bug 6320749. |
1200 assert (Universe::verify_in_progress() || |
1212 assert (Universe::verify_in_progress() || |
1201 !SafepointSynchronize::is_at_safepoint(), "invariant") ; |
1213 !SafepointSynchronize::is_at_safepoint(), "invariant") ; |
|
1214 |
|
1215 EventJavaMonitorInflate event; |
1202 |
1216 |
1203 for (;;) { |
1217 for (;;) { |
1204 const markOop mark = object->mark() ; |
1218 const markOop mark = object->mark() ; |
1205 assert (!mark->has_bias_pattern(), "invariant") ; |
1219 assert (!mark->has_bias_pattern(), "invariant") ; |
1206 |
1220 |
1328 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", |
1342 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", |
1329 (void *) object, (intptr_t) object->mark(), |
1343 (void *) object, (intptr_t) object->mark(), |
1330 object->klass()->external_name()); |
1344 object->klass()->external_name()); |
1331 } |
1345 } |
1332 } |
1346 } |
|
1347 if (event.should_commit()) { |
|
1348 post_monitor_inflate_event(&event, object); |
|
1349 } |
1333 return m ; |
1350 return m ; |
1334 } |
1351 } |
1335 |
1352 |
1336 // CASE: neutral |
1353 // CASE: neutral |
1337 // TODO-FIXME: for entry we currently inflate and then try to CAS _owner. |
1354 // TODO-FIXME: for entry we currently inflate and then try to CAS _owner. |
1377 ResourceMark rm; |
1394 ResourceMark rm; |
1378 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", |
1395 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", |
1379 (void *) object, (intptr_t) object->mark(), |
1396 (void *) object, (intptr_t) object->mark(), |
1380 object->klass()->external_name()); |
1397 object->klass()->external_name()); |
1381 } |
1398 } |
|
1399 } |
|
1400 if (event.should_commit()) { |
|
1401 post_monitor_inflate_event(&event, object); |
1382 } |
1402 } |
1383 return m ; |
1403 return m ; |
1384 } |
1404 } |
1385 } |
1405 } |
1386 |
1406 |