We need the following 6 functions to be implemented in JVM TI to support debugger:
jvmtiError ForceEarlyReturnObject(jvmtiEnv* env, jthread thread, jobject value);
jvmtiError ForceEarlyReturnInt(jvmtiEnv* env, jthread thread, jint value);
jvmtiError ForceEarlyReturnLong(jvmtiEnv* env, jthread thread, jlong value);
jvmtiError ForceEarlyReturnFloat(jvmtiEnv* env, jthread thread, jfloat value);
jvmtiError ForceEarlyReturnDouble(jvmtiEnv* env, jthread thread, jdouble value);
jvmtiError ForceEarlyReturnVoid(jvmtiEnv* env, jthread thread);
Please, see the corresponding Debugger CR:
6175634: Allow early return from methods
Short description:
- Simulate a return from the topmost stack frame of thread's stack,
returning 'value' if needed.
- 'value' must be assignment compatible with the return type of the method
for the topmost frame.
- Locks acquired by the topmost frame are released.
- Finally blocks are not executed.
- The specified thread must be the current thread or must be suspended.
- The current method must be non-native Java programming language methods
- JVM TI events are generated as in usual return.
- This function may only be called during the live phase.
- The set of the return codes is the same as for PopFrame plus this one:
JVMTI_ERROR_TYPE_MISMATCH - If the top-frame function return type is not
an appropriate type for the function used.
###@###.### 2005-04-11 20:20:22 GMT
###@###.### 2005-04-26 06:57:42 GMT
jvmtiError ForceEarlyReturnObject(jvmtiEnv* env, jthread thread, jobject value);
jvmtiError ForceEarlyReturnInt(jvmtiEnv* env, jthread thread, jint value);
jvmtiError ForceEarlyReturnLong(jvmtiEnv* env, jthread thread, jlong value);
jvmtiError ForceEarlyReturnFloat(jvmtiEnv* env, jthread thread, jfloat value);
jvmtiError ForceEarlyReturnDouble(jvmtiEnv* env, jthread thread, jdouble value);
jvmtiError ForceEarlyReturnVoid(jvmtiEnv* env, jthread thread);
Please, see the corresponding Debugger CR:
6175634: Allow early return from methods
Short description:
- Simulate a return from the topmost stack frame of thread's stack,
returning 'value' if needed.
- 'value' must be assignment compatible with the return type of the method
for the topmost frame.
- Locks acquired by the topmost frame are released.
- Finally blocks are not executed.
- The specified thread must be the current thread or must be suspended.
- The current method must be non-native Java programming language methods
- JVM TI events are generated as in usual return.
- This function may only be called during the live phase.
- The set of the return codes is the same as for PopFrame plus this one:
JVMTI_ERROR_TYPE_MISMATCH - If the top-frame function return type is not
an appropriate type for the function used.
###@###.### 2005-04-11 20:20:22 GMT
###@###.### 2005-04-26 06:57:42 GMT
- relates to
-
JDK-6267701 ForceEarlyReturnObject might break during GC
-
- Resolved
-
-
JDK-6175634 Allow early return from methods
-
- Resolved
-
-
JDK-6216027 JVMTI Spec: Support early return from methods
-
- Resolved
-
-
JDK-6261254 IA64: Support early return from method
-
- Closed
-