40 |
package gnu.classpath.jdwp.processor; |
package gnu.classpath.jdwp.processor; |
41 |
|
|
42 |
import gnu.classpath.jdwp.JdwpConstants; |
import gnu.classpath.jdwp.JdwpConstants; |
43 |
|
import gnu.classpath.jdwp.VMVirtualMachine; |
44 |
import gnu.classpath.jdwp.exception.InvalidFieldException; |
import gnu.classpath.jdwp.exception.InvalidFieldException; |
45 |
import gnu.classpath.jdwp.exception.JdwpException; |
import gnu.classpath.jdwp.exception.JdwpException; |
46 |
import gnu.classpath.jdwp.exception.JdwpInternalErrorException; |
import gnu.classpath.jdwp.exception.JdwpInternalErrorException; |
215 |
} |
} |
216 |
|
|
217 |
int invokeOptions = bb.getInt(); |
int invokeOptions = bb.getInt(); |
218 |
|
boolean suspend = ((invokeOptions |
219 |
|
& JdwpConstants.InvokeOptions.INVOKE_SINGLE_THREADED) |
220 |
|
!= 0); |
221 |
|
if (suspend) |
222 |
|
{ |
223 |
|
// We must suspend all other running threads first |
224 |
|
VMVirtualMachine.suspendAllThreads (); |
225 |
|
} |
226 |
|
|
227 |
if ((invokeOptions & JdwpConstants.InvokeOptions.INVOKE_SINGLE_THREADED) != 0) |
boolean nonVirtual = ((invokeOptions |
228 |
{ // We must suspend all other running threads first |
& JdwpConstants.InvokeOptions.INVOKE_NONVIRTUAL) |
229 |
vm.suspendAllThreadsExcept(Thread.currentThread().getThreadGroup()); |
!= 0); |
|
} |
|
|
boolean nonVirtual; |
|
|
if ((invokeOptions & JdwpConstants.InvokeOptions.INVOKE_NONVIRTUAL) != 0) |
|
|
nonVirtual = true; |
|
|
else |
|
|
nonVirtual = false; |
|
230 |
|
|
231 |
MethodResult mr = vm.executeMethod(obj, thread, clazz, method, values, nonVirtual); |
MethodResult mr = VMVirtualMachine.executeMethod(obj, thread, |
232 |
|
clazz, method, |
233 |
|
values, nonVirtual); |
234 |
Object value = mr.getReturnedValue(); |
Object value = mr.getReturnedValue(); |
235 |
Exception exception = mr.getThrownException(); |
Exception exception = mr.getThrownException(); |
236 |
|
|