X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Floader.cpp;h=391fb71b5c7ace540084bbd44e66185e4939d760;hb=4e25f6be9878154a9a7ae28917ed34427cb8ca6a;hp=c509c094e08c13888c4b0e9937f8945bc714adf1;hpb=34aa19828c4f7fb8d3dea35cedff4dd0ed2a7142;p=cacao.git diff --git a/src/vm/loader.cpp b/src/vm/loader.cpp index c509c094e..391fb71b5 100644 --- a/src/vm/loader.cpp +++ b/src/vm/loader.cpp @@ -1,6 +1,6 @@ /* src/vm/loader.cpp - class loader functions - Copyright (C) 1996-2005, 2006, 2007, 2008 + Copyright (C) 1996-2011 CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO Copyright (C) 2009 Theobroma Systems Ltd. @@ -49,6 +49,7 @@ #include "vm/field.hpp" #include "vm/global.h" #include "vm/globals.hpp" +#include "vm/hook.hpp" #include "vm/javaobjects.hpp" #include "vm/linker.hpp" #include "vm/loader.hpp" @@ -78,10 +79,6 @@ #include "vm/jit/stubs.hpp" -#if defined(ENABLE_JVMTI) -# include "native/jvmti/cacaodbg.h" -#endif - /* global variables ***********************************************************/ @@ -232,8 +229,10 @@ void loader_init(void) class_java_util_Vector = load_class_bootstrap(utf_java_util_Vector); # if defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK) - class_sun_misc_Signal = load_class_bootstrap(utf_new_char("sun/misc/Signal")); - class_sun_reflect_MagicAccessorImpl = load_class_bootstrap(utf_new_char("sun/reflect/MagicAccessorImpl")); + class_sun_misc_Signal = load_class_bootstrap(utf_new_char("sun/misc/Signal")); + class_sun_reflect_MagicAccessorImpl = load_class_bootstrap(utf_new_char("sun/reflect/MagicAccessorImpl")); + class_sun_reflect_MethodAccessorImpl = load_class_bootstrap(utf_new_char("sun/reflect/MethodAccessorImpl")); + class_sun_reflect_ConstructorAccessorImpl = load_class_bootstrap(utf_new_char("sun/reflect/ConstructorAccessorImpl")); # endif arrayclass_java_lang_Object = @@ -1177,12 +1176,6 @@ classinfo *load_class_from_classloader(utf *name, classloader_t *cl) printf("]\n"); } -#if defined(ENABLE_JVMTI) - /* fire Class Load JVMTI event */ - if (jvmti) jvmti_ClassLoadPrepare(false, c); -#endif - - return c; } @@ -1600,7 +1593,6 @@ static bool load_class_from_classbuffer_intern(classbuffer *cb) /* allocate space for the parsed descriptors */ descriptor_pool_alloc_parsed_descriptors(descpool); - c->parseddescs = (u1*) descriptor_pool_get_parsed_descriptors(descpool, &(c->parseddescsize)); #if defined(ENABLE_STATISTICS) if (opt_stat) { @@ -1972,18 +1964,14 @@ classinfo *load_class_from_classbuffer(classbuffer *cb) c->state = (c->state & ~CLASS_LOADING) | CLASS_LOADED; -#if defined(ENABLE_JVMTI) - /* fire Class Prepare JVMTI event */ - - if (jvmti) - jvmti_ClassLoadPrepare(true, c); -#endif - #if !defined(NDEBUG) if (loadverbose) log_message_class("Loading done class: ", c); #endif + // Hook point just after a class was loaded. + Hook::class_loaded(c); + return c; } @@ -2131,6 +2119,7 @@ classinfo *load_newly_created_array(classinfo *c, classloader_t *loader) clonedesc->paramslots = 0; clonedesc->paramtypes[0].classref = classrefs + 0; clonedesc->params = NULL; + clonedesc->pool_lock = NULL; /* create methodinfo */ @@ -2149,8 +2138,7 @@ classinfo *load_newly_created_array(classinfo *c, classloader_t *loader) /* parse the descriptor to get the register allocation */ - if (!descriptor_params_from_paramtypes(clonedesc, clone->flags)) - return false; + descriptor_params_from_paramtypes(clonedesc, clone->flags); clone->code = NativeStub::generate(clone, BUILTIN_clone); @@ -2159,8 +2147,6 @@ classinfo *load_newly_created_array(classinfo *c, classloader_t *loader) /* array classes are not loaded from class files */ c->state |= CLASS_LOADED; - c->parseddescs = (u1 *) clonedesc; - c->parseddescsize = sizeof(methodinfo); c->classrefs = classrefs; c->classrefcount = 1;