equal
deleted
inserted
replaced
275 { |
275 { |
276 InvokeRequest *request; |
276 InvokeRequest *request; |
277 |
277 |
278 JDI_ASSERT(thread); |
278 JDI_ASSERT(thread); |
279 |
279 |
|
280 debugMonitorEnter(invokerLock); |
280 request = threadControl_getInvokeRequest(thread); |
281 request = threadControl_getInvokeRequest(thread); |
281 if (request == NULL) { |
282 if (request == NULL) { |
282 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request"); |
283 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request"); |
283 } |
284 } |
284 |
285 |
285 request->available = JNI_TRUE; |
286 request->available = JNI_TRUE; |
|
287 debugMonitorExit(invokerLock); |
286 } |
288 } |
287 |
289 |
288 jvmtiError |
290 jvmtiError |
289 invoker_requestInvoke(jbyte invokeType, jbyte options, jint id, |
291 invoker_requestInvoke(jbyte invokeType, jbyte options, jint id, |
290 jthread thread, jclass clazz, jmethodID method, |
292 jthread thread, jclass clazz, jmethodID method, |
737 outStream_sendReply(&out); |
739 outStream_sendReply(&out); |
738 } |
740 } |
739 } |
741 } |
740 |
742 |
741 jboolean |
743 jboolean |
742 invoker_isPending(jthread thread) |
744 invoker_isEnabled(jthread thread) |
743 { |
745 { |
744 InvokeRequest *request; |
746 InvokeRequest *request; |
|
747 jboolean isEnabled; |
745 |
748 |
746 JDI_ASSERT(thread); |
749 JDI_ASSERT(thread); |
|
750 debugMonitorEnter(invokerLock); |
747 request = threadControl_getInvokeRequest(thread); |
751 request = threadControl_getInvokeRequest(thread); |
748 if (request == NULL) { |
752 if (request == NULL) { |
749 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request"); |
753 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request"); |
750 } |
754 } |
751 return request->pending; |
755 isEnabled = request->available; |
752 } |
756 debugMonitorExit(invokerLock); |
753 |
757 return isEnabled; |
754 jboolean |
|
755 invoker_isEnabled(jthread thread) |
|
756 { |
|
757 InvokeRequest *request; |
|
758 |
|
759 JDI_ASSERT(thread); |
|
760 request = threadControl_getInvokeRequest(thread); |
|
761 if (request == NULL) { |
|
762 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request"); |
|
763 } |
|
764 return request->available; |
|
765 } |
758 } |
766 |
759 |
767 void |
760 void |
768 invoker_detach(InvokeRequest *request) |
761 invoker_detach(InvokeRequest *request) |
769 { |
762 { |