j_value avm_main(int argc, char** argv) { java_method_t* method; java_assembly_t* assembly; vector_t* v; for(v = asm_vector; v; v = v->next) { assembly = (java_assembly_t*) v->value; if(__entrypoint) if(strcmp(__entrypoint, assembly->name) != 0) continue; if(java_method_find(&method, assembly->name, "main", "([Ljava/lang/String;)V") == J_OK) { LOGF("EntryPoint: %s.%s ()", assembly->name, "main"); java_array_t* arr = (java_array_t*) avm->calloc(1, (sizeof(void*) * argc) + sizeof(java_array_t)); ASSERT(arr); arr->magic = JAVA_ARRAY_MAGIC; arr->type = T_REFERENCE; arr->length = argc; memcpy(arr->data, argv, sizeof(char*) * argc); j_value param; param.ptr = (void*) arr; return java_method_invoke(NULL, assembly, method, ¶m, 1); } } athrow(NULL, "java/lang/NoSuchMethodError", "\"main\" not found"); return JVALUE_NULL; }
int main(void) { athrow(ANY()); return 0; }
int main(void) { athrow(int()); return 0; }
static void sighandler(int sig) { if(avm_initialized()) athrow(NULL, "java/lang/InternalError", strsignal(sig)); exit(sig); }