aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj
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/gcj
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/gcj')
-rw-r--r--libjava/gnu/gcj/runtime/FirstThread.java98
-rw-r--r--libjava/gnu/gcj/runtime/natFirstThread.cc48
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);
-}