diff options
author | Michael Koch <konqueror@gmx.de> | 2004-07-04 15:27:05 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-07-04 15:27:05 +0000 |
commit | 74fa958ec75a3573b763ffb154dfd4863eb14411 (patch) | |
tree | fc4860ea95619b77ee5e79ab16d7b41b330c9e59 /libjava/gnu/gcj | |
parent | c516c1ff9be00d5193f3928482e7cec720d3d717 (diff) | |
download | gcc-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/gcj')
-rw-r--r-- | libjava/gnu/gcj/runtime/FirstThread.java | 98 | ||||
-rw-r--r-- | libjava/gnu/gcj/runtime/natFirstThread.cc | 48 |
2 files changed, 0 insertions, 146 deletions
diff --git a/libjava/gnu/gcj/runtime/FirstThread.java b/libjava/gnu/gcj/runtime/FirstThread.java deleted file mode 100644 index 9d4b435..0000000 --- a/libjava/gnu/gcj/runtime/FirstThread.java +++ /dev/null @@ -1,98 +0,0 @@ -// FirstThread.java - Implementation of very first thread. - -/* 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. */ - -package gnu.gcj.runtime; - -import java.util.jar.*; - -/** - * @author Tom Tromey <tromey@cygnus.com> - * @date August 24, 1998 - */ - -final class FirstThread extends Thread -{ - public FirstThread (Class k, String[] args) - { - super (null, null, "main"); - klass = k; - this.args = args; - } - - public FirstThread (String class_name, String[] args, boolean is_jar) - { - super (null, null, "main"); - klass_name = class_name; - this.args = args; - this.is_jar = is_jar; - } - - public void run() - { - if (is_jar) - klass_name = getMain(klass_name); - - if (klass == null) - { - try - { - klass = Class.forName(klass_name); - } - catch (ClassNotFoundException x) - { - throw new NoClassDefFoundError(klass_name); - } - } - - call_main(); - } - - private String getMain (String name) - { - String mainName = null; - try - { - JarFile j = new JarFile(name); - Attributes a = j.getManifest().getMainAttributes(); - mainName = a.getValue(Attributes.Name.MAIN_CLASS); - } - catch (Exception e) - { - // Ignore. - } - - if (mainName == null) - { - System.err.println("Failed to load Main-Class manifest attribute from " - + name); - System.exit(1); - } - return mainName; - } - - private native void call_main (); - - // Private data. - private Class klass; - private String klass_name; - private Object args; - private boolean is_jar; - - // If the user links statically then we need to ensure that these - // classes are linked in. Otherwise bootstrapping fails. These - // classes are only referred to via Class.forName(), so we add an - // explicit mention of them here. - static final Class Kcert = java.security.cert.Certificate.class; - static final Class Kfile = gnu.java.net.protocol.file.Handler.class; - static final Class Khttp = gnu.java.net.protocol.http.Handler.class; - static final Class Kjar = gnu.java.net.protocol.jar.Handler.class; - static final Class Klocale = gnu.java.locale.LocaleInformation.class; - static final Class Kcalendar = gnu.java.locale.Calendar.class; -} diff --git a/libjava/gnu/gcj/runtime/natFirstThread.cc b/libjava/gnu/gcj/runtime/natFirstThread.cc deleted file mode 100644 index e3100c5..0000000 --- a/libjava/gnu/gcj/runtime/natFirstThread.cc +++ /dev/null @@ -1,48 +0,0 @@ -// natFirstThread.cc - Implementation of FirstThread 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/gcj/runtime/FirstThread.h> - -typedef void main_func (jobject); - -void -gnu::gcj::runtime::FirstThread::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); -} |