963 BiasedLocking::revoke_and_rebias(hobj, false, calling_thread); |
963 BiasedLocking::revoke_and_rebias(hobj, false, calling_thread); |
964 } |
964 } |
965 |
965 |
966 address owner = NULL; |
966 address owner = NULL; |
967 { |
967 { |
968 markOop mark = hobj()->mark(); |
968 markWord mark = hobj()->mark(); |
969 |
969 |
970 if (!mark->has_monitor()) { |
970 if (!mark.has_monitor()) { |
971 // this object has a lightweight monitor |
971 // this object has a lightweight monitor |
972 |
972 |
973 if (mark->has_locker()) { |
973 if (mark.has_locker()) { |
974 owner = (address)mark->locker(); // save the address of the Lock word |
974 owner = (address)mark.locker(); // save the address of the Lock word |
975 } |
975 } |
976 // implied else: no owner |
976 // implied else: no owner |
977 } else { |
977 } else { |
978 // this object has a heavyweight monitor |
978 // this object has a heavyweight monitor |
979 mon = mark->monitor(); |
979 mon = mark.monitor(); |
980 |
980 |
981 // The owner field of a heavyweight monitor may be NULL for no |
981 // The owner field of a heavyweight monitor may be NULL for no |
982 // owner, a JavaThread * or it may still be the address of the |
982 // owner, a JavaThread * or it may still be the address of the |
983 // Lock word in a JavaThread's stack. A monitor can be inflated |
983 // Lock word in a JavaThread's stack. A monitor can be inflated |
984 // by a non-owning JavaThread, but only the owning JavaThread |
984 // by a non-owning JavaThread, but only the owning JavaThread |