javaprims.h (_Jv_RegisterClassHook): New extern declaration.

* gcj/javaprims.h (_Jv_RegisterClassHook):  New extern declaration.
	(_Jv_RegisterClassHookDefault):  Likewise.
	* java/lang/Class.h (_Jv_RegisterClassHookDefault):  Declare as friend.
	* java/lang/natClassLoader.cc (_Jv_RegisterClassHook):  New variable.
	(_Jv_RegisterClassHookDefault):  New.function.
	(_Jv_RegisterClasses):  Call _Jv_RegisterClassHook.

From-SVN: r45344
This commit is contained in:
Per Bothner 2001-08-31 18:26:14 -07:00 committed by Per Bothner
parent 8635bb79f2
commit dee45a7f96
4 changed files with 27 additions and 3 deletions

View file

@ -439,9 +439,8 @@ _Jv_RegisterClasses (jclass *classes)
for (; *classes; ++classes)
{
jclass klass = *classes;
jint hash = HASH_UTF (klass->name);
klass->next = loaded_classes[hash];
loaded_classes[hash] = klass;
(*_Jv_RegisterClassHook) (klass);
// registering a compiled class causes
// it to be immediately "prepared".
@ -450,6 +449,21 @@ _Jv_RegisterClasses (jclass *classes)
}
}
void
_Jv_RegisterClassHookDefault (jclass klass)
{
jint hash = HASH_UTF (klass->name);
klass->next = loaded_classes[hash];
loaded_classes[hash] = klass;
}
// A pointer to a function that actually registers a class.
// Normally _Jv_RegisterClassHookDefault, but could be some other function
// that registers the class in e.g. a ClassLoader-local table.
// Should synchronize on Class:class$ while setting/restore this variable.
void (*_Jv_RegisterClassHook) (jclass cl) = _Jv_RegisterClassHookDefault;
void
_Jv_RegisterClass (jclass klass)
{