mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 19:11:14 +08:00
Class.h (_Jv_FindInterpreterMethod): Add new declaration.
* java/lang/Class.h (_Jv_FindInterpreterMethod): Add new declaration. * java/lang/natClass.cc (_Jv_FindInterpreterMethod): New function. From-SVN: r110142
This commit is contained in:
parent
192a50ad41
commit
8a0092c834
libjava
@ -1,3 +1,8 @@
|
||||
2006-01-23 Keith Seitz <keiths@redhat.com>
|
||||
|
||||
* java/lang/Class.h (_Jv_FindInterpreterMethod): Add new declaration.
|
||||
* java/lang/natClass.cc (_Jv_FindInterpreterMethod): New function.
|
||||
|
||||
2006-01-23 David Daney <ddaney@avtrex.com>
|
||||
|
||||
* configure.host (disable_dladdr): Remove variable and its
|
||||
|
@ -81,6 +81,12 @@ class _Jv_ExecutionEngine;
|
||||
class _Jv_CompiledEngine;
|
||||
class _Jv_InterpreterEngine;
|
||||
|
||||
#ifdef INTERPRETER
|
||||
class _Jv_ClassReader;
|
||||
class _Jv_InterpClass;
|
||||
class _Jv_InterpMethod;
|
||||
#endif
|
||||
|
||||
struct _Jv_Constants
|
||||
{
|
||||
jint size;
|
||||
@ -217,6 +223,11 @@ jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
|
||||
jint JvNumMethods (jclass);
|
||||
jmethodID JvGetFirstMethod (jclass);
|
||||
|
||||
#ifdef INTERPRETER
|
||||
// Finds a desired interpreter method in the given class or NULL if not found
|
||||
_Jv_InterpMethod* _Jv_FindInterpreterMethod (jclass, jmethodID);
|
||||
#endif
|
||||
|
||||
// Friend classes and functions to implement the ClassLoader
|
||||
class java::lang::ClassLoader;
|
||||
class java::lang::VMClassLoader;
|
||||
@ -256,10 +267,6 @@ void _Jv_CopyClassesToSystemLoader (gnu::gcj::runtime::SystemClassLoader *);
|
||||
|
||||
#ifdef INTERPRETER
|
||||
void _Jv_InitField (jobject, jclass, int);
|
||||
|
||||
class _Jv_ClassReader;
|
||||
class _Jv_InterpClass;
|
||||
class _Jv_InterpMethod;
|
||||
#endif
|
||||
|
||||
class _Jv_StackTrace;
|
||||
@ -442,6 +449,10 @@ private:
|
||||
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
|
||||
friend jint (::JvNumMethods) (jclass);
|
||||
friend jmethodID (::JvGetFirstMethod) (jclass);
|
||||
#ifdef INTERPRETER
|
||||
friend _Jv_InterpMethod* (::_Jv_FindInterpreterMethod) (jclass klass,
|
||||
jmethodID desired_method);
|
||||
#endif
|
||||
|
||||
// Friends classes and functions to implement the ClassLoader
|
||||
friend class java::lang::ClassLoader;
|
||||
|
@ -1,6 +1,6 @@
|
||||
// natClass.cc - Implementation of java.lang.Class native methods.
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
@ -1220,3 +1220,29 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index,
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef INTERPRETER
|
||||
_Jv_InterpMethod*
|
||||
_Jv_FindInterpreterMethod (jclass klass, jmethodID desired_method)
|
||||
{
|
||||
using namespace java::lang::reflect;
|
||||
|
||||
_Jv_InterpClass* iclass
|
||||
= reinterpret_cast<_Jv_InterpClass*> (klass->aux_info);
|
||||
_Jv_MethodBase** imethods = _Jv_GetFirstMethod (iclass);
|
||||
|
||||
for (int i = 0; i < JvNumMethods (klass); ++i)
|
||||
{
|
||||
_Jv_MethodBase* imeth = imethods[i];
|
||||
_Jv_ushort accflags = klass->methods[i].accflags;
|
||||
if ((accflags & (Modifier::NATIVE | Modifier::ABSTRACT)) == 0)
|
||||
{
|
||||
_Jv_InterpMethod* im = reinterpret_cast<_Jv_InterpMethod*> (imeth);
|
||||
if (im->get_method () == desired_method)
|
||||
return im;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user