Index: drlvm/trunk/vm/vmcore/src/init/vm_init.cpp =================================================================== --- drlvm/trunk/vm/vmcore/src/init/vm_init.cpp (revision 414804) +++ drlvm/trunk/vm/vmcore/src/init/vm_init.cpp (working copy) @@ -134,6 +134,9 @@ env->StartVMBootstrap(); Class *class_java_lang_Object = preload_class(env, env->JavaLangObject_String); env->java_io_Serializable_Class = preload_class(env, env->Serializable_String); + Class *AnnotatedElement_Class = preload_class(env, "java/lang/reflect/AnnotatedElement"); + Class *GenericDeclaration_Class = preload_class(env, "java/lang/reflect/GenericDeclaration"); + Class *Type_Class = preload_class(env, "java/lang/reflect/Type"); env->JavaLangClass_Class = preload_class(env, env->JavaLangClass_String); env->JavaLangObject_Class = class_java_lang_Object; env->FinishVMBootstrap(); @@ -141,6 +144,9 @@ // Now create the java_lang_Class instances for these three classes. create_instance_for_class(env, env->JavaLangClass_Class); create_instance_for_class(env, env->java_io_Serializable_Class); + create_instance_for_class(env, AnnotatedElement_Class); + create_instance_for_class(env, GenericDeclaration_Class); + create_instance_for_class(env, Type_Class); create_instance_for_class(env, env->JavaLangObject_Class); // during bootstrapping suspend status never matters, @@ -149,13 +155,19 @@ jvmti_send_class_prepare_event(env->JavaLangObject_Class); jvmti_send_class_load_event(env, env->java_io_Serializable_Class); jvmti_send_class_prepare_event(env->java_io_Serializable_Class); + jvmti_send_class_load_event(env, AnnotatedElement_Class); + jvmti_send_class_prepare_event(AnnotatedElement_Class); + jvmti_send_class_load_event(env, GenericDeclaration_Class); + jvmti_send_class_prepare_event(GenericDeclaration_Class); + jvmti_send_class_load_event(env, Type_Class); + jvmti_send_class_prepare_event(Type_Class); jvmti_send_class_load_event(env, env->JavaLangClass_Class); jvmti_send_class_prepare_event(env->JavaLangClass_Class); #ifdef VM_STATS // Account for the 3 classes loaded before env->JavaLangObject_Class is set. - env->JavaLangObject_Class->num_allocations += 3; - env->JavaLangObject_Class->num_bytes_allocated += (3 * env->JavaLangClass_Class->instance_data_size); + env->JavaLangObject_Class->num_allocations += 6; + env->JavaLangObject_Class->num_bytes_allocated += (6 * env->JavaLangClass_Class->instance_data_size); #endif //VM_STATS TRACE2("init", "bootstrapping initial java classes complete"); } // bootstrap_initial_java_classes Index: drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp =================================================================== --- drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (revision 414804) +++ drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (working copy) @@ -1102,7 +1102,10 @@ if(env->InBootstrap()) { assert((clss->name == env->JavaLangObject_String) || (strcmp(clss->name->bytes, "java/io/Serializable") == 0) - || (clss->name == env->JavaLangClass_String)); + || (clss->name == env->JavaLangClass_String) + || (strcmp(clss->name->bytes, "java/lang/reflect/AnnotatedElement") == 0) + || (strcmp(clss->name->bytes, "java/lang/reflect/GenericDeclaration") == 0) + || (strcmp(clss->name->bytes, "java/lang/reflect/Type") == 0)); clss->class_handle = NULL; } else { Class* root_class = env->JavaLangClass_Class;