Java Code Examples for sun.jvm.hotspot.oops.Mark#hasLocker()
The following examples show how to use
sun.jvm.hotspot.oops.Mark#hasLocker() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ObjectReferenceImpl.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 2
Source File: ObjectReferenceImpl.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 3
Source File: ObjectReferenceImpl.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 4
Source File: ObjectReferenceImpl.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 5
Source File: ObjectReferenceImpl.java From hottub with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 6
Source File: ObjectReferenceImpl.java From openjdk-8-source with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }
Example 7
Source File: ObjectReferenceImpl.java From openjdk-8 with GNU General Public License v2.0 | 4 votes |
private void computeMonitorInfo() { monitorInfoCached = true; Mark mark = saObject.getMark(); ObjectMonitor mon = null; Address owner = null; // check for heavyweight monitor if (! mark.hasMonitor()) { // check for lightweight monitor if (mark.hasLocker()) { owner = mark.locker().getAddress(); // save the address of the Lock word } // implied else: no owner } else { // this object has a heavyweight monitor mon = mark.monitor(); // The owner field of a heavyweight monitor may be NULL for no // owner, a JavaThread * or it may still be the address of the // Lock word in a JavaThread's stack. A monitor can be inflated // by a non-owning JavaThread, but only the owning JavaThread // can change the owner field from the Lock word to the // JavaThread * and it may not have done that yet. owner = mon.owner(); } // find the owning thread if (owner != null) { owningThread = vm.threadMirror(owningThreadFromMonitor(owner)); } // compute entryCount if (owningThread != null) { if (owningThread.getJavaThread().getAddress().equals(owner)) { // the owner field is the JavaThread * if (Assert.ASSERTS_ENABLED) { Assert.that(false, "must have heavyweight monitor with JavaThread * owner"); } entryCount = (int) mark.monitor().recursions() + 1; } else { // The owner field is the Lock word on the JavaThread's stack // so the recursions field is not valid. We have to count the // number of recursive monitor entries the hard way. entryCount = countLockedObjects(owningThread.getJavaThread(), saObject); } } // find the contenders & waiters waitingThreads = new ArrayList(); if (mon != null) { // this object has a heavyweight monitor. threads could // be contenders or waiters // add all contenders List pendingThreads = getPendingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next())); } // add all waiters (threads in Object.wait()) // note that we don't do this JVMTI way. To do it JVMTI way, // we would need to access ObjectWaiter list maintained in // ObjectMonitor::_queue. But we don't have this struct exposed // in vmStructs. We do waiters list in a way similar to getting // pending threads list List objWaitingThreads = getWaitingThreads(mon); // convert the JavaThreads to ThreadReferenceImpls for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) { waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next())); } } }