aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/java/lang/natMainThread.cc
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-07-04 15:27:05 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-07-04 15:27:05 +0000
commit74fa958ec75a3573b763ffb154dfd4863eb14411 (patch)
treefc4860ea95619b77ee5e79ab16d7b41b330c9e59 /libjava/gnu/java/lang/natMainThread.cc
parentc516c1ff9be00d5193f3928482e7cec720d3d717 (diff)
downloadgcc-74fa958ec75a3573b763ffb154dfd4863eb14411.zip
gcc-74fa958ec75a3573b763ffb154dfd4863eb14411.tar.gz
gcc-74fa958ec75a3573b763ffb154dfd4863eb14411.tar.bz2
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
Diffstat (limited to 'libjava/gnu/java/lang/natMainThread.cc')
-rw-r--r--libjava/gnu/java/lang/natMainThread.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/libjava/gnu/java/lang/natMainThread.cc b/libjava/gnu/java/lang/natMainThread.cc
new file mode 100644
index 0000000..7e8e422
--- /dev/null
+++ b/libjava/gnu/java/lang/natMainThread.cc
@@ -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);
+}