Lines Matching refs:request

102 createGlobalRefs(JNIEnv *env, InvokeRequest *request)
115 if ( request->argumentCount > 0 ) {
117 argRefs = jvmtiAllocate((jint)(request->argumentCount*sizeof(jobject)));
122 (void)memset(argRefs, 0, request->argumentCount*sizeof(jobject));
127 saveGlobalRef(env, request->clazz, &clazz);
133 if ( error == JVMTI_ERROR_NONE && request->instance != NULL ) {
134 saveGlobalRef(env, request->instance, &instance);
142 argumentTag = firstArgumentTypeTag(request->methodSignature, &cursor);
143 argument = request->arguments;
145 if ( argIndex > request->argumentCount ) {
167 if ( error == JVMTI_ERROR_NONE && argIndex != request->argumentCount ) {
172 /* Finally, put the global refs into the request if no errors */
174 request->clazz = clazz;
175 request->instance = instance;
178 argumentTag = firstArgumentTypeTag(request->methodSignature, &cursor);
179 argument = request->arguments;
180 while ( argIndex < request->argumentCount ) {
202 for ( argIndex=0; argIndex < request->argumentCount; argIndex++ ) {
215 fillInvokeRequest(JNIEnv *env, InvokeRequest *request,
222 if (!request->available) {
228 if (request->pending) {
235 request->invokeType = invokeType;
236 request->options = options;
237 request->detached = JNI_FALSE;
238 request->id = id;
239 request->clazz = clazz;
240 request->method = method;
241 request->instance = instance;
242 request->arguments = arguments;
243 request->arguments = arguments;
244 request->argumentCount = argumentCount;
246 request->returnValue.j = 0;
247 request->exception = 0;
252 error = methodSignature(method, NULL, &request->methodSignature, NULL);
262 error = createGlobalRefs(env, request);
264 jvmtiDeallocate(request->methodSignature);
268 request->pending = JNI_TRUE;
269 request->available = JNI_FALSE;
276 InvokeRequest *request;
280 request = threadControl_getInvokeRequest(thread);
281 if (request == NULL) {
282 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request");
285 request->available = JNI_TRUE;
295 InvokeRequest *request;
299 request = threadControl_getInvokeRequest(thread);
300 if (request != NULL) {
301 error = fillInvokeRequest(env, request, invokeType, options, id,
320 invokeConstructor(JNIEnv *env, InvokeRequest *request)
323 object = JNI_FUNC_PTR(env,NewObjectA)(env, request->clazz,
324 request->method,
325 request->arguments);
326 request->returnValue.l = NULL;
328 saveGlobalRef(env, object, &(request->returnValue.l));
333 invokeStatic(JNIEnv *env, InvokeRequest *request)
335 switch(returnTypeTag(request->methodSignature)) {
340 request->clazz,
341 request->method,
342 request->arguments);
343 request->returnValue.l = NULL;
345 saveGlobalRef(env, object, &(request->returnValue.l));
352 request->returnValue.b = JNI_FUNC_PTR(env,CallStaticByteMethodA)(env,
353 request->clazz,
354 request->method,
355 request->arguments);
359 request->returnValue.c = JNI_FUNC_PTR(env,CallStaticCharMethodA)(env,
360 request->clazz,
361 request->method,
362 request->arguments);
366 request->returnValue.f = JNI_FUNC_PTR(env,CallStaticFloatMethodA)(env,
367 request->clazz,
368 request->method,
369 request->arguments);
373 request->returnValue.d = JNI_FUNC_PTR(env,CallStaticDoubleMethodA)(env,
374 request->clazz,
375 request->method,
376 request->arguments);
380 request->returnValue.i = JNI_FUNC_PTR(env,CallStaticIntMethodA)(env,
381 request->clazz,
382 request->method,
383 request->arguments);
387 request->returnValue.j = JNI_FUNC_PTR(env,CallStaticLongMethodA)(env,
388 request->clazz,
389 request->method,
390 request->arguments);
394 request->returnValue.s = JNI_FUNC_PTR(env,CallStaticShortMethodA)(env,
395 request->clazz,
396 request->method,
397 request->arguments);
401 request->returnValue.z = JNI_FUNC_PTR(env,CallStaticBooleanMethodA)(env,
402 request->clazz,
403 request->method,
404 request->arguments);
409 request->clazz,
410 request->method,
411 request->arguments);
421 invokeVirtual(JNIEnv *env, InvokeRequest *request)
423 switch(returnTypeTag(request->methodSignature)) {
428 request->instance,
429 request->method,
430 request->arguments);
431 request->returnValue.l = NULL;
433 saveGlobalRef(env, object, &(request->returnValue.l));
439 request->returnValue.b = JNI_FUNC_PTR(env,CallByteMethodA)(env,
440 request->instance,
441 request->method,
442 request->arguments);
446 request->returnValue.c = JNI_FUNC_PTR(env,CallCharMethodA)(env,
447 request->instance,
448 request->method,
449 request->arguments);
453 request->returnValue.f = JNI_FUNC_PTR(env,CallFloatMethodA)(env,
454 request->instance,
455 request->method,
456 request->arguments);
460 request->returnValue.d = JNI_FUNC_PTR(env,CallDoubleMethodA)(env,
461 request->instance,
462 request->method,
463 request->arguments);
467 request->returnValue.i = JNI_FUNC_PTR(env,CallIntMethodA)(env,
468 request->instance,
469 request->method,
470 request->arguments);
474 request->returnValue.j = JNI_FUNC_PTR(env,CallLongMethodA)(env,
475 request->instance,
476 request->method,
477 request->arguments);
481 request->returnValue.s = JNI_FUNC_PTR(env,CallShortMethodA)(env,
482 request->instance,
483 request->method,
484 request->arguments);
488 request->returnValue.z = JNI_FUNC_PTR(env,CallBooleanMethodA)(env,
489 request->instance,
490 request->method,
491 request->arguments);
496 request->instance,
497 request->method,
498 request->arguments);
508 invokeNonvirtual(JNIEnv *env, InvokeRequest *request)
510 switch(returnTypeTag(request->methodSignature)) {
515 request->instance,
516 request->clazz,
517 request->method,
518 request->arguments);
519 request->returnValue.l = NULL;
521 saveGlobalRef(env, object, &(request->returnValue.l));
527 request->returnValue.b = JNI_FUNC_PTR(env,CallNonvirtualByteMethodA)(env,
528 request->instance,
529 request->clazz,
530 request->method,
531 request->arguments);
535 request->returnValue.c = JNI_FUNC_PTR(env,CallNonvirtualCharMethodA)(env,
536 request->instance,
537 request->clazz,
538 request->method,
539 request->arguments);
543 request->returnValue.f = JNI_FUNC_PTR(env,CallNonvirtualFloatMethodA)(env,
544 request->instance,
545 request->clazz,
546 request->method,
547 request->arguments);
551 request->returnValue.d = JNI_FUNC_PTR(env,CallNonvirtualDoubleMethodA)(env,
552 request->instance,
553 request->clazz,
554 request->method,
555 request->arguments);
559 request->returnValue.i = JNI_FUNC_PTR(env,CallNonvirtualIntMethodA)(env,
560 request->instance,
561 request->clazz,
562 request->method,
563 request->arguments);
567 request->returnValue.j = JNI_FUNC_PTR(env,CallNonvirtualLongMethodA)(env,
568 request->instance,
569 request->clazz,
570 request->method,
571 request->arguments);
575 request->returnValue.s = JNI_FUNC_PTR(env,CallNonvirtualShortMethodA)(env,
576 request->instance,
577 request->clazz,
578 request->method,
579 request->arguments);
583 request->returnValue.z = JNI_FUNC_PTR(env,CallNonvirtualBooleanMethodA)(env,
584 request->instance,
585 request->clazz,
586 request->method,
587 request->arguments);
592 request->instance,
593 request->clazz,
594 request->method,
595 request->arguments);
609 InvokeRequest *request;
615 request = threadControl_getInvokeRequest(thread);
616 if (request == NULL) {
617 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request");
620 request->available = JNI_FALSE;
621 startNow = request->pending && !request->started;
624 request->started = JNI_TRUE;
640 switch (request->invokeType) {
642 invokeConstructor(env, request);
645 invokeStatic(env, request);
648 if (request->options & JDWP_INVOKE_OPTIONS(NONVIRTUAL) ) {
649 invokeNonvirtual(env, request);
651 invokeVirtual(env, request);
657 request->exception = NULL;
661 saveGlobalRef(env, exception, &(request->exception));
678 InvokeRequest *request;
691 request = threadControl_getInvokeRequest(thread);
692 if (request == NULL) {
693 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request");
696 JDI_ASSERT(request->pending);
697 JDI_ASSERT(request->started);
699 request->pending = JNI_FALSE;
700 request->started = JNI_FALSE;
701 request->available = JNI_TRUE; /* For next time around */
703 detached = request->detached;
705 if (request->options & JDWP_INVOKE_OPTIONS(SINGLE_THREADED)) {
711 if (request->invokeType == INVOKE_CONSTRUCTOR) {
716 tag = specificTypeKey(env, request->returnValue.l);
718 tag = returnTypeTag(request->methodSignature);
720 id = request->id;
721 exc = request->exception;
722 returnValue = request->returnValue;
744 InvokeRequest *request;
747 request = threadControl_getInvokeRequest(thread);
748 if (request == NULL) {
749 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request");
751 return request->pending;
757 InvokeRequest *request;
760 request = threadControl_getInvokeRequest(thread);
761 if (request == NULL) {
762 EXIT_ERROR(AGENT_ERROR_INVALID_THREAD, "getting thread invoke request");
764 return request->available;
768 invoker_detach(InvokeRequest *request)
770 JDI_ASSERT(request);
772 request->detached = JNI_TRUE;