FirstThread.java, [...]: Removed.
2004-07-04 Michael Koch <konqueror@gmx.de> * gnu/gcj/runtime/FirstThread.java, gnu/gcj/runtime/natFirstThread.cc: Removed. * gnu/java/lang/MainThread.java, gnu/java/lang/natMainThread.cc: New files. * prims.cc (_Jv_RunMain): Use MainThread instead of FirstThread. * Makefile.am: Added new files and removed deleted ones. * Makefile.in: Regenerated. From-SVN: r84085
This commit is contained in:
parent
c516c1ff9b
commit
74fa958ec7
7 changed files with 160 additions and 120 deletions
48
libjava/gnu/java/lang/natMainThread.cc
Normal file
48
libjava/gnu/java/lang/natMainThread.cc
Normal file
|
@ -0,0 +1,48 @@
|
|||
// natMainThread.cc - Implementation of MainThread native methods.
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
This software is copyrighted work licensed under the terms of the
|
||||
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
||||
details. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <gcj/cni.h>
|
||||
#include <jvm.h>
|
||||
|
||||
#include <gnu/java/lang/MainThread.h>
|
||||
|
||||
typedef void main_func (jobject);
|
||||
|
||||
void
|
||||
gnu::java::lang::MainThread::call_main (void)
|
||||
{
|
||||
Utf8Const* main_signature = _Jv_makeUtf8Const ("([Ljava.lang.String;)V", 22);
|
||||
Utf8Const* main_name = _Jv_makeUtf8Const ("main", 4);
|
||||
|
||||
_Jv_Method *meth = _Jv_LookupDeclaredMethod (klass, main_name,
|
||||
main_signature);
|
||||
|
||||
// Some checks from Java Spec section 12.1.4.
|
||||
const char *msg = NULL;
|
||||
if (meth == NULL)
|
||||
msg = "no suitable method `main' in class";
|
||||
else if (! ::java::lang::reflect::Modifier::isStatic(meth->accflags))
|
||||
msg = "`main' must be static";
|
||||
else if (! ::java::lang::reflect::Modifier::isPublic(meth->accflags))
|
||||
msg = "`main' must be public";
|
||||
if (msg != NULL)
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
::exit(1);
|
||||
}
|
||||
|
||||
main_func *real_main = (main_func *) meth->ncode;
|
||||
(*real_main) (args);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue