RobertObkircher / SchokoVM

Java bytecode interpreter
GNU General Public License v2.0
0 stars 1 forks source link

Java Class Library #7

Open RobertObkircher opened 3 years ago

RobertObkircher commented 3 years ago

Reuse OpenJDK or gnu classpath. Which native methdos do we have to implement ourselves? Can we link to a openjdk binary for some things?

Step 1:

I think as a first step we should focus on making some classes from java/lang usable (Object, String).

Step 2 (maybe):

RobertObkircher commented 3 years ago

Things I've been thinking about:

RobertObkircher commented 3 years ago

For native methods we might need a library like ~https://dyncall.org/~ We used libffi

RobertObkircher commented 3 years ago

Calling intiPhase1 requires Unsafe...

    BootstrapClassLoader::constants_mut().resolve_and_initialize(*thread);

    auto *system = BootstrapClassLoader::get().load_or_throw("java/lang/System");
    assert(system);
    jmethodID method = thread->jni_env->GetStaticMethodID((jclass) system, "initPhase1", "()V");
    assert(method);
    thread->jni_env->CallStaticVoidMethod((jclass) system, method);

    return 0;
}

extern "C" {
_JNI_IMPORT_OR_EXPORT_ void JNICALL
Java_jdk_internal_misc_Unsafe_registerNatives(JNIEnv *env, jclass clazz) {

}
}