| // Runtime.java - Runtime class. |
| |
| /* Copyright (C) 1998, 1999, 2000, 2001 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 java.lang; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| import java.util.StringTokenizer; |
| |
| /** |
| * @author Tom Tromey <tromey@cygnus.com> |
| * @date August 27, 1998 |
| */ |
| |
| /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 |
| * "The Java Language Specification", ISBN 0-201-63451-1 |
| * plus online API docs for JDK 1.2 beta from http://www.javasoft.com. |
| * Status: All 1.1 methods exist. exec() is not fully implemented. |
| */ |
| |
| public class Runtime |
| { |
| public Process exec (String prog) throws IOException |
| { |
| return exec (prog, null); |
| } |
| |
| public Process exec (String prog, String[] envp) throws IOException |
| { |
| StringTokenizer st = new StringTokenizer(prog); |
| String[] a = new String[st.countTokens ()]; |
| for (int i = 0; i < a.length; i++) |
| a[i] = st.nextToken (); |
| return exec (a, envp); |
| } |
| |
| public Process exec (String[] progarray) throws IOException |
| { |
| return exec (progarray, null); |
| } |
| |
| public Process exec (String[] progarray, String[] envp) throws IOException |
| { |
| SecurityManager s = System.getSecurityManager(); |
| if (s != null) |
| s.checkExec(progarray[0]); |
| return new ConcreteProcess (progarray, envp); |
| } |
| |
| private final static void checkExit (int status) |
| { |
| SecurityManager s = System.getSecurityManager(); |
| if (s != null) |
| s.checkExit(status); |
| } |
| |
| public native void exit (int status); |
| |
| // Shutdown the runtime without a SecurityManager check. libgcj uses this |
| // exit function internally. |
| final native void _exit (int status); |
| |
| public native long freeMemory (); |
| public native void gc (); |
| |
| // Deprecated in 1.1. We implement what the JCL book says. |
| public InputStream getLocalizedInputStream (InputStream in) |
| { |
| return in; |
| } |
| |
| // Deprecated in 1.1. We implement what the JCL book says. |
| public OutputStream getLocalizedOutputStream (OutputStream out) |
| { |
| return out; |
| } |
| |
| public static Runtime getRuntime () |
| { |
| return self; |
| } |
| |
| private final void checkLink (String lib) |
| { |
| if (lib == null) |
| throw new NullPointerException (); |
| SecurityManager s = System.getSecurityManager(); |
| if (s != null) |
| s.checkLink(lib); |
| } |
| |
| private native void _load (String pathname, boolean do_search); |
| |
| public void load (String pathname) |
| { |
| _load (pathname, false); |
| } |
| |
| public void loadLibrary (String libname) |
| { |
| _load (libname, true); |
| } |
| |
| // This is a helper function for the ClassLoader which can load |
| // compiled libraries. Returns true if library (which is just the |
| // base name -- path searching is done by this function) was loaded, |
| // false otherwise. |
| native boolean loadLibraryInternal (String libname); |
| |
| public native void runFinalization (); |
| |
| // This method is static in JDK 1.1, but isn't listed as static in |
| // the books. It is marked as static in the 1.2 docs. |
| public static void runFinalizersOnExit (boolean run) |
| { |
| // The status we pass to the security check is unspecified. |
| checkExit (0); |
| self.finalize_on_exit = run; |
| } |
| |
| public native long totalMemory (); |
| public native void traceInstructions (boolean on); |
| public native void traceMethodCalls (boolean on); |
| |
| // A helper for the constructor. |
| private final native void init (); |
| |
| // The sole constructor. |
| private Runtime () |
| { |
| init (); |
| } |
| |
| // Private data. |
| private static Runtime self = new Runtime (); |
| // FIXME: for now this can't be static. If it is, our compiler will |
| // mark it as local, and it will be inaccessible to natRuntime.cc. |
| private boolean finalize_on_exit; |
| } |