< prev index next >
src/jdk.jdwp.agent/share/native/libjdwp/invoker.c
Print this page
@@ -144,11 +144,12 @@
while (argumentTag != SIGNATURE_END_ARGS) {
if ( argIndex > request->argumentCount ) {
break;
}
if ((argumentTag == JDWP_TAG(OBJECT)) ||
- (argumentTag == JDWP_TAG(ARRAY))) {
+ (argumentTag == JDWP_TAG(ARRAY)) ||
+ (argumentTag == JDWP_TAG(INLINE_OBJECT))) {
/* Create a global ref for any non-null argument */
if (argument->l != NULL) {
saveGlobalRef(env, argument->l, &argRefs[argIndex]);
if (argRefs[argIndex] == NULL) {
error = AGENT_ERROR_OUT_OF_MEMORY;
@@ -177,11 +178,12 @@
argIndex = 0;
argumentTag = firstArgumentTypeTag(request->methodSignature, &cursor);
argument = request->arguments;
while ( argIndex < request->argumentCount ) {
if ((argumentTag == JDWP_TAG(OBJECT)) ||
- (argumentTag == JDWP_TAG(ARRAY))) {
+ (argumentTag == JDWP_TAG(ARRAY)) ||
+ (argumentTag == JDWP_TAG(INLINE_OBJECT))) {
argument->l = argRefs[argIndex];
}
argument++;
argIndex++;
argumentTag = nextArgumentTypeTag(&cursor);
@@ -230,11 +232,12 @@
tossGlobalRef(env, &(request->instance));
}
/* Delete global argument references */
while (argIndex < request->argumentCount) {
if ((argumentTag == JDWP_TAG(OBJECT)) ||
- (argumentTag == JDWP_TAG(ARRAY))) {
+ (argumentTag == JDWP_TAG(ARRAY)) ||
+ (argumentTag == JDWP_TAG(INLINE_OBJECT))) {
if (argument->l != NULL) {
tossGlobalRef(env, &(argument->l));
}
}
argument++;
@@ -404,11 +407,12 @@
static void
invokeStatic(JNIEnv *env, InvokeRequest *request)
{
switch(returnTypeTag(request->methodSignature)) {
case JDWP_TAG(OBJECT):
- case JDWP_TAG(ARRAY): {
+ case JDWP_TAG(ARRAY):
+ case JDWP_TAG(INLINE_OBJECT): {
jobject object;
JDI_ASSERT_MSG(request->clazz, "Request clazz null");
object = JNI_FUNC_PTR(env,CallStaticObjectMethodA)(env,
request->clazz,
request->method,
@@ -493,11 +497,12 @@
static void
invokeVirtual(JNIEnv *env, InvokeRequest *request)
{
switch(returnTypeTag(request->methodSignature)) {
case JDWP_TAG(OBJECT):
- case JDWP_TAG(ARRAY): {
+ case JDWP_TAG(ARRAY):
+ case JDWP_TAG(INLINE_OBJECT): {
jobject object;
JDI_ASSERT_MSG(request->instance, "Request instance null");
object = JNI_FUNC_PTR(env,CallObjectMethodA)(env,
request->instance,
request->method,
@@ -581,11 +586,12 @@
static void
invokeNonvirtual(JNIEnv *env, InvokeRequest *request)
{
switch(returnTypeTag(request->methodSignature)) {
case JDWP_TAG(OBJECT):
- case JDWP_TAG(ARRAY): {
+ case JDWP_TAG(ARRAY):
+ case JDWP_TAG(INLINE_OBJECT): {
jobject object;
JDI_ASSERT_MSG(request->clazz, "Request clazz null");
JDI_ASSERT_MSG(request->instance, "Request instance null");
object = JNI_FUNC_PTR(env,CallNonvirtualObjectMethodA)(env,
request->instance,
@@ -805,11 +811,12 @@
/* Release return value and exception references, but delay the release
* until after the return packet was sent. */
mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR ||
returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) ||
- returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY);
+ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY) ||
+ returnTypeTag(request->methodSignature) == JDWP_TAG(INLINE_OBJECT);
}
/*
* At this time, there's no need to retain global references on
* arguments since the reply is processed. No one will deal with
< prev index next >