\input texinfo
@c use postscript fonts
@c @iftex
@c \usepackage{times}
@c @end iftex


@setfilename ovm.info
@settitle Ovm Users Manual

@dircategory Programming
@direntry
        * ovm: (ovm).  A configurable JVM generator
@end direntry

@ifnottex
@copying
Copyright @copyright{} 2004 Purdue University @c others?
@end copying
@end ifnottex

@titlepage
@title Ovm Users Manual
@author The Ovm Development Team

@ignore
@c  The following two commands
@c  start the copyright page.
@page
@vskip 0pt plus 1filll
@insertcopying
@end ignore

@end titlepage
     
@c So the toc is printed at the start.
@contents
     
@ifnottex
@node Top
@top Ovm Users Manual

@insertcopying

Ovm is a tool for generating virtual machines.  Ovm includes a variety
of compilers, garbage collectors, and threading systems that can be
used to create a free-standing VM.  This VM can (and currently must) be
specialized to a particular application.  Ovm is currently able
generate virtual machines for ordinary Java programs, and programs
written to the Real-time Specification for Java.

@end ifnottex

@menu
@c * Copying Conditions::          such as they are
* Overview::                    Ovm in a nutshell
* gen-ovm Tutorial::            Getting started with Ovm
* Invoking gen-ovm::            @command{gen-ovm} takes many options
* Invoking gen-spec-ovm::       @command{gen-spec-ovm} takes even more
* gdb Tutorial::                Using gdb to debug Java programs
@c * Stitcher::         The InvisibleStitcher configuration language
@c * Repository::       The @code{ovm.core.repository} data structures
@c * Extending OVM::    Replacing Ovm components
* Frequently Asked Questions::  with answers
* Index::
@end menu

@c chapter 0
@c @node Copying Conditions
@c @chapter Copying Conditions
@c @include COPYING

@c Chapter 1
@node Overview
@chapter Overview

@include README.texi

@c Chapter 2
@node gen-ovm Tutorial
@chapter Getting started with Ovm

@include TUTORIAL.texi

@c Maybe it is time to simplify the usage message, and move some of the
@c text into this manual.
@c Chapter 3
@node Invoking gen-ovm
@chapter Invoking @command{gen-ovm}

@pindex gen-ovm
@cindex invoking gen-ovm

Run @code{gen-ovm -?} for a list of all options.

@node Invoking gen-spec-ovm
@chapter Invoking @command{gen-spec-ovm}

@pindex gen-spec-ovm
@cindex compiling SPECjvm98

@example
gen-spec-ovm @var{option}* @option{--}? @var{gen-ovm option}*
@end example

@command{gen-spec-ovm} is a thin wrapper around @command{gen-ovm} that
builds a virtual machine to execute the SPECjvm98 benchmark suite.
@command{gen-spec-ovm} knows the magic incantations needed to compile
SPECjvm98 inside Ovm, and achieve the best performance.
@command{gen-spec-ovm} can also pass configuration options on to
@command{gen-ovm}.

@command{gen-spec-ovm} takes three options:
@table @option
@item --spec-dir=@var{directory}
      Gives the path to the SPECjvm98 directory..  The default value
      (@file{/p/sss/project/SPECjvm98}) works within Purdue.
@item --test=@var{list}
      where @var{list} is a comma seperated list of benchmarks to
      compile.  By default, all benchmarks are compiled into a single
      executable, but @code{gen-spec-ovm --test=javac} only compiles
      @code{_213_javac}.
@item --applive
      Invoke @command{gen-ovm} with @option{-app-methods-live} rather
      than @option{-ud-reflective-methods=...}.
@end table

Option processing stops after @samp{--}, or before the first argument
not prefixed by @samp{--}, and remaining arguments are passed to
@code{gen-ovm}.

The following example, when run from the SPECjvm98 directory, will
execute a single iteration of the @code{_213_javac} benchmark:
@example
> mkdir bin
> cd bin
> gen-spec-ovm --spec-dir=..
> cd ..
> ./bin/ovm bin/img SpecApplication -s100 _213_javac
@end example

@node gdb Tutorial
@chapter gdb Tutorial

@include gdb-tutorial.texi

@c Chapter n
@node Frequently Asked Questions
@chapter Frequently Asked Questions

@include FAQ.texi

@node Index
@unnumbered Index
@printindex cp

@bye
