mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-12 03:04:30 +08:00
jvmti.cc (CHECK_FOR_NATIVE_METHOD): New macro.
2007-02-07 Kyle Galloway <kgallowa@redhat.com> * jvmti.cc (CHECK_FOR_NATIVE_METHOD): New macro. (_Jv_JVMTI_GetMaxLocals): New method. * include/java-interp.h (_Jv_InterpMethod::get_max_locals): New method. From-SVN: r121700
This commit is contained in:
parent
304237321b
commit
04ab45732d
@ -1,3 +1,10 @@
|
||||
2007-02-07 Kyle Galloway <kgallowa@redhat.com>
|
||||
|
||||
* jvmti.cc (CHECK_FOR_NATIVE_METHOD): New macro.
|
||||
(_Jv_JVMTI_GetMaxLocals): New method.
|
||||
* include/java-interp.h
|
||||
(_Jv_InterpMethod::get_max_locals): New method.
|
||||
|
||||
2007-02-01 Marco Trudel <mtrudel@gmx.ch>
|
||||
|
||||
* jni.cc (_Jv_JNI_DeleteWeakGlobalRef): Check for NULL objects.
|
||||
|
@ -219,6 +219,11 @@ class _Jv_InterpMethod : public _Jv_MethodBase
|
||||
*/
|
||||
void get_line_table (jlong& start, jlong& end, jintArray& line_numbers,
|
||||
jlongArray& code_indices);
|
||||
|
||||
int get_max_locals ()
|
||||
{
|
||||
return static_cast<int> (max_locals);
|
||||
}
|
||||
|
||||
/* Installs a break instruction at the given code index. Returns
|
||||
the pc_t of the breakpoint or NULL if index is invalid. */
|
||||
|
@ -155,6 +155,18 @@ ReentrantReadWriteLock *_envListLock = NULL;
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define CHECK_FOR_NATIVE_METHOD(AjmethodID) \
|
||||
do \
|
||||
{ \
|
||||
jboolean is_native; \
|
||||
jvmtiError jerr = env->IsMethodNative (AjmethodID, &is_native); \
|
||||
if (jerr != JVMTI_ERROR_NONE) \
|
||||
return jerr; \
|
||||
if (is_native) \
|
||||
return JVMTI_ERROR_NATIVE_METHOD; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
static jvmtiError JNICALL
|
||||
_Jv_JVMTI_SuspendThread (MAYBE_UNUSED jvmtiEnv *env, jthread thread)
|
||||
{
|
||||
@ -729,6 +741,31 @@ _Jv_JVMTI_IsMethodSynthetic (MAYBE_UNUSED jvmtiEnv *env, jmethodID method,
|
||||
return JVMTI_ERROR_NONE;
|
||||
}
|
||||
|
||||
static jvmtiError JNICALL
|
||||
_Jv_JVMTI_GetMaxLocals (MAYBE_UNUSED jvmtiEnv *env, jmethodID method,
|
||||
jint *max_locals)
|
||||
{
|
||||
REQUIRE_PHASE (env, JVMTI_PHASE_START | JVMTI_PHASE_LIVE);
|
||||
NULL_CHECK (max_locals);
|
||||
|
||||
CHECK_FOR_NATIVE_METHOD (method);
|
||||
|
||||
jclass klass;
|
||||
jvmtiError jerr = env->GetMethodDeclaringClass (method, &klass);
|
||||
if (jerr != JVMTI_ERROR_NONE)
|
||||
return jerr;
|
||||
|
||||
_Jv_InterpMethod *imeth = reinterpret_cast<_Jv_InterpMethod *>
|
||||
(_Jv_FindInterpreterMethod (klass, method));
|
||||
|
||||
if (imeth == NULL)
|
||||
return JVMTI_ERROR_INVALID_METHODID;
|
||||
|
||||
*max_locals = imeth->get_max_locals ();
|
||||
|
||||
return JVMTI_ERROR_NONE;
|
||||
}
|
||||
|
||||
static jvmtiError JNICALL
|
||||
_Jv_JVMTI_GetMethodDeclaringClass (MAYBE_UNUSED jvmtiEnv *env,
|
||||
jmethodID method,
|
||||
@ -1656,7 +1693,7 @@ struct _Jv_jvmtiEnv _Jv_JVMTI_Interface =
|
||||
_Jv_JVMTI_GetMethodDeclaringClass, // GetMethodDeclaringClass
|
||||
_Jv_JVMTI_GetMethodModifiers, // GetMethodModifers
|
||||
RESERVED, // reserved67
|
||||
UNIMPLEMENTED, // GetMaxLocals
|
||||
_Jv_JVMTI_GetMaxLocals, // GetMaxLocals
|
||||
UNIMPLEMENTED, // GetArgumentsSize
|
||||
_Jv_JVMTI_GetLineNumberTable, // GetLineNumberTable
|
||||
UNIMPLEMENTED, // GetMethodLocation
|
||||
|
Loading…
Reference in New Issue
Block a user