示例#1
0
文件: avm.c 项目: WareX97/AJVM
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, &param, 1);
		}
	}

	athrow(NULL, "java/lang/NoSuchMethodError", "\"main\" not found");
	return JVALUE_NULL;
}
示例#2
0
int main(void)
{
   athrow(ANY());
   return 0;
}
示例#3
0
int main(void)
{
   athrow(int());
   return 0;
}
示例#4
0
static void sighandler(int sig) {
	if(avm_initialized())
		athrow(NULL, "java/lang/InternalError", strsignal(sig));

	exit(sig);
}