Class_Handle class_loader_load_class(Class_Loader_Handle classloader, const char* name) { assert(classloader); assert(name); Global_Env *env = VM_Global_State::loader_env; String* class_name = env->string_pool.lookup(name); return classloader->LoadClass(env, class_name); } // class_loader_load_class
// This function is for native library support // It takes a class name with .s not /s. // FIXME: caller could convert it itself Class_Handle class_find_loaded(Class_Loader_Handle loader, const char* name) { char* name3 = strdup(name); char* p = name3; while (*p) { if (*p=='.') *p='/'; p++; } Global_Env* env = VM_Global_State::loader_env; String* name2 = env->string_pool.lookup(name3); Class* ch; if (loader) { ch = loader->LookupClass(name2); } else { ch = env->bootstrap_class_loader->LookupClass(name2); } STD_FREE(name3); if(ch && (!ch->verify(env) || !ch->prepare(env))) return NULL; return ch; }
void class_loader_unlock(Class_Loader_Handle classloader) { assert(classloader); classloader->Unlock(); } // class_loader_unlock
void class_loader_set_verifier_data_ptr(Class_Loader_Handle classloader, void* data) { assert(classloader); classloader->SetVerifyData(data); } // class_loader_set_verifier_data_ptr