예제 #1
0
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
예제 #2
0
// 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;
}
예제 #3
0
void class_loader_unlock(Class_Loader_Handle classloader)
{
    assert(classloader);
    classloader->Unlock();
} // class_loader_unlock
예제 #4
0
void class_loader_set_verifier_data_ptr(Class_Loader_Handle classloader, void* data)
{
    assert(classloader);
    classloader->SetVerifyData(data);
} // class_loader_set_verifier_data_ptr