aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/gcj.texi
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2004-12-06 17:59:57 +0000
committerTom Tromey <tromey@gcc.gnu.org>2004-12-06 17:59:57 +0000
commit6e07ee6da03f7abe490b7bee89ba3270b48fe531 (patch)
treeb3674482297cc419b36fd2b797fe766aa40e2127 /gcc/java/gcj.texi
parentb086a2eaf8ae0e915c0db1343687b924c680d2b8 (diff)
downloadgcc-6e07ee6da03f7abe490b7bee89ba3270b48fe531.zip
gcc-6e07ee6da03f7abe490b7bee89ba3270b48fe531.tar.gz
gcc-6e07ee6da03f7abe490b7bee89ba3270b48fe531.tar.bz2
Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
* Make-lang.in (JAVA_MANFILES): Added gcj-dbtool. (java.uninstall): Likewise. (java.maintainer-clean): Likewise. (.INTERMEDIATE): Likewise. (java.install-man): Likewise. (gcj-dbtool.pod): New target. * gcj.texi (Code Generation): Document -findirect-dispatch. (libgcj Runtime Properties): Document gnu.gcj.precompiled.db.path. (Top): Link to "Invoking gcj-dbtool". From-SVN: r91785
Diffstat (limited to 'gcc/java/gcj.texi')
-rw-r--r--gcc/java/gcj.texi97
1 files changed, 96 insertions, 1 deletions
diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi
index 370585a..ae9cae7 100644
--- a/gcc/java/gcj.texi
+++ b/gcc/java/gcj.texi
@@ -64,6 +64,8 @@ man page gfdl(7).
* jcf-dump: (gcj)Invoking jcf-dump.
Print information about Java class files
* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode
+* gcj-dbtool: (gcj)Invoking gcj-dbtool.
+ Tool for manipulating class file databases.
* jv-convert: (gcj)Invoking jv-convert.
Convert file from one encoding to another
* grmic: (gcj)Invoking grmic.
@@ -112,8 +114,9 @@ files and object files, and it can read both Java source code and
* Invoking jv-scan:: Print information about source files
* Invoking jcf-dump:: Print information about class files
* Invoking gij:: Interpreting Java bytecodes
+* Invoking gcj-dbtool:: Tool for manipulating class file databases.
* Invoking jv-convert:: Converting from one encoding to another
-* Invoking grmic:: Generate stubs for Remote Method Invocation.
+* Invoking grmic:: Generate stubs for Remote Method Invocation.
* Invoking grmiregistry:: The remote object registry.
* About CNI:: Description of the Compiled Native Interface
* System properties:: Modifying runtime behavior of the libgcj library
@@ -492,6 +495,23 @@ and we don't support any easy way to do that.
So this flag isn't very useful yet, except to partially override
@code{--disable-assertions}.
+@item -findirect-dispatch
+@command{gcj} has a special binary compatibility ABI, which is enabled
+by the @code{-findirect-dispatch} option. In this mode, the code
+generated by @command{gcj} honors the binary compatibility guarantees
+in the Java Language Specification, and the resulting object files do
+not need to be directly linked against their dependencies. Instead,
+all dependencies are looked up at runtime. This allows free mixing of
+interpreted and compiled code.
+
+Note that, at present, @code{-findirect-dispatch} can only be used
+when compiling @file{.class} files. It will not work when compiling
+from source. CNI also does not yet work with the binary compatibility
+ABI. These restrictions will be lifted in some future release.
+
+However, if you compile CNI code with the standard ABI, you can call
+it from code built with the binary compatibility ABI.
+
@end table
@@ -961,6 +981,75 @@ Each time a class is initialized, print a short message on standard error.
@c man end
+@node Invoking gcj-dbtool
+@chapter Invoking gcj-dbtool.
+
+@c man title gcj-dbtool Manipulate class file mapping databases for libgcj
+
+@ignore
+@c man begin SYNOPSIS gcj-dbtool
+gcj-dbtool @option{OPTION} @var{DBFILE} [@option{MORE}] @dots{}
+
+gcj-dbtool [@option{-n}] [@option{-a}] [@option{-t}] [@option{-l}]
+ [@option{-v}] [@option{--version}] [@option{--help}]
+
+@c man end
+@c man begin SEEALSO gij
+gcc(1), gcj(1), gcjh(1), jv-scan(1), jcf-dump(1), gfdl(7),
+and the Info entries for @file{gcj} and @file{gcc}.
+@c man end
+@end ignore
+
+@c man begin DESCRIPTION gcj-dbtool
+
+@code{gcj-dbtool} is a tool for creating and manipulating class file
+mapping databases. @code{libgcj} can use these databases to find a
+shared library corresponding to the bytecode representation of a
+class. This functionality is useful for ahead-of-time compilation of
+a program that has no knowledge of @code{gcj}.
+
+@code{gcj-dbtool} works best if all the jar files added to it are
+compiled using @code{-findirect-dispatch}.
+
+Note that @code{gcj-dbtool} is currently available as ``preview
+technology''. We believe it is a reasonable way to allow
+application-transparent ahead-of-time compilation, but this is an
+unexplored area. We welcome your comments.
+
+@c man end
+
+@c man begin OPTIONS gcj-dbtool
+
+@table @gcctabopt
+@item -n @var{DBFILE} [@var{SIZE}]
+This creates a new database. Currently, databases cannot be resized;
+you can choose a larger initial size if desired. The default size is
+32,749.
+
+@item -a @var{DBFILE} @var{JARFILE} @var{LIB}
+This adds a jar file to the database. For each class file in the jar,
+a cryptographic signature of the bytecode representation of the class
+is recorded in the database. At runtime, a class is looked up by its
+signature and the compiled form of the class is looked for in the
+corresponding shared library.
+
+@item -t @var{DBFILE}
+Test a database.
+
+@item -l @var{DBFILE}
+List the contents of a database.
+
+@item --help
+Print a help message, then exit.
+
+@item --version
+@itemx -v
+Print version information, then exit.
+
+@end table
+
+@c man end
+
@node Invoking jv-convert
@chapter Invoking jv-convert
@@ -2404,6 +2493,12 @@ This is the directory where cached shared library files are
stored. If not set, JIT compilation is disabled. This should never
be set to a directory that is writable by any other user.
+@item gnu.gcj.precompiled.db.path
+This is a sequence of file names, each referring to a file created by
+@command{gcj-dbtool}. These files will be used by @code{libgcj} to
+find shared libraries corresponding to classes that are loaded from
+bytecode.
+
@end table