diff options
Diffstat (limited to 'libjava/java')
| -rw-r--r-- | libjava/java/lang/Class.h | 9 | ||||
| -rw-r--r-- | libjava/java/lang/natClassLoader.cc | 20 |
2 files changed, 26 insertions, 3 deletions
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index f6c6eec510d..02a97dfcf14 100644 --- a/libjava/java/lang/Class.h +++ b/libjava/java/lang/Class.h @@ -14,6 +14,7 @@ details. */ #pragma interface +#include <stddef.h> #include <java/lang/Object.h> #include <java/lang/String.h> #include <java/net/URL.h> @@ -24,7 +25,9 @@ details. */ // We declare these here to avoid including gcj/cni.h. extern "C" void _Jv_InitClass (jclass klass); -extern "C" void _Jv_RegisterClasses (jclass *classes); +extern "C" void _Jv_RegisterClasses (const jclass *classes); +extern "C" void _Jv_RegisterClasses_Counted (const jclass *classes, + size_t count); // This must be predefined with "C" linkage. extern "C" void *_Jv_LookupInterfaceMethodIdx (jclass klass, jclass iface, @@ -310,7 +313,9 @@ private: friend class java::io::ObjectStreamClass; friend void _Jv_WaitForState (jclass, int); - friend void _Jv_RegisterClasses (jclass *classes); + friend void _Jv_RegisterClasses (const jclass *classes); + friend void _Jv_RegisterClasses_Counted (const jclass *classes, + size_t count); friend void _Jv_RegisterClassHookDefault (jclass klass); friend void _Jv_RegisterInitiatingLoader (jclass,java::lang::ClassLoader*); friend void _Jv_UnregisterClass (jclass); diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index e660eae39e6..5a0898a93c4 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -316,7 +316,7 @@ _Jv_RegisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader) // class chain. At all other times, the caller should synchronize on // Class::class$. void -_Jv_RegisterClasses (jclass *classes) +_Jv_RegisterClasses (const jclass *classes) { for (; *classes; ++classes) { @@ -331,6 +331,24 @@ _Jv_RegisterClasses (jclass *classes) } } +// This is a version of _Jv_RegisterClasses that takes a count. +void +_Jv_RegisterClasses_Counted (const jclass * classes, size_t count) +{ + size_t i; + for (i = 0; i < count; i++) + { + jclass klass = classes[i]; + + (*_Jv_RegisterClassHook) (klass); + + // registering a compiled class causes + // it to be immediately "prepared". + if (klass->state == JV_STATE_NOTHING) + klass->state = JV_STATE_COMPILED; + } +} + void _Jv_RegisterClassHookDefault (jclass klass) { |

