Package Name | Comment |
com.db4o | |
com.db4o.activation | |
com.db4o.cluster | |
com.db4o.collections | |
com.db4o.collections.facades | |
com.db4o.config | |
com.db4o.config.annotations | |
com.db4o.config.annotations.reflect | |
com.db4o.constraints | |
com.db4o.db4ounit.common | |
com.db4o.db4ounit.common.acid | |
com.db4o.db4ounit.common.assorted | |
com.db4o.db4ounit.common.btree | |
com.db4o.db4ounit.common.classindex | |
com.db4o.db4ounit.common.concurrency | |
com.db4o.db4ounit.common.config | |
com.db4o.db4ounit.common.constraints | |
com.db4o.db4ounit.common.cs | |
com.db4o.db4ounit.common.defragment | |
com.db4o.db4ounit.common.events | |
com.db4o.db4ounit.common.exceptions | |
com.db4o.db4ounit.common.ext | |
com.db4o.db4ounit.common.fatalerror | |
com.db4o.db4ounit.common.fieldindex | |
com.db4o.db4ounit.common.foundation | |
com.db4o.db4ounit.common.foundation.network | |
com.db4o.db4ounit.common.freespace | |
com.db4o.db4ounit.common.handlers | |
com.db4o.db4ounit.common.header | |
com.db4o.db4ounit.common.interfaces | |
com.db4o.db4ounit.common.internal | |
com.db4o.db4ounit.common.io | |
com.db4o.db4ounit.common.migration | |
com.db4o.db4ounit.common.persistent | |
com.db4o.db4ounit.common.querying | |
com.db4o.db4ounit.common.refactor | |
com.db4o.db4ounit.common.references | |
com.db4o.db4ounit.common.reflect | |
com.db4o.db4ounit.common.reflect.custom | |
com.db4o.db4ounit.common.regression | |
com.db4o.db4ounit.common.sampledata | |
com.db4o.db4ounit.common.set | |
com.db4o.db4ounit.common.soda | |
com.db4o.db4ounit.common.soda.arrays | |
com.db4o.db4ounit.common.soda.arrays.object | |
com.db4o.db4ounit.common.soda.arrays.typed | |
com.db4o.db4ounit.common.soda.arrays.untyped | |
com.db4o.db4ounit.common.soda.classes.simple | |
com.db4o.db4ounit.common.soda.classes.typedhierarchy | |
com.db4o.db4ounit.common.soda.classes.untypedhierarchy | |
com.db4o.db4ounit.common.soda.experiments | |
com.db4o.db4ounit.common.soda.joins.typed | |
com.db4o.db4ounit.common.soda.joins.untyped | |
com.db4o.db4ounit.common.soda.ordered | |
com.db4o.db4ounit.common.soda.util | |
com.db4o.db4ounit.common.soda.wrapper.untyped | |
com.db4o.db4ounit.common.staging | |
com.db4o.db4ounit.common.stored | |
com.db4o.db4ounit.common.ta | |
com.db4o.db4ounit.common.ta.collections | |
com.db4o.db4ounit.common.types | |
com.db4o.db4ounit.common.types.arrays | |
com.db4o.db4ounit.jre11 | |
com.db4o.db4ounit.jre11.assorted | |
com.db4o.db4ounit.jre11.btree | |
com.db4o.db4ounit.jre11.concurrency | |
com.db4o.db4ounit.jre11.concurrency.staging | |
com.db4o.db4ounit.jre11.defragment | |
com.db4o.db4ounit.jre11.events | |
com.db4o.db4ounit.jre11.handlers | |
com.db4o.db4ounit.jre11.internal | |
com.db4o.db4ounit.jre11.migration | |
com.db4o.db4ounit.jre11.soda | |
com.db4o.db4ounit.jre11.soda.classes.simple | |
com.db4o.db4ounit.jre11.soda.wrapper.typed | |
com.db4o.db4ounit.jre11.soda.wrapper.untyped | |
com.db4o.db4ounit.jre11.staging | |
com.db4o.db4ounit.jre11.tools | |
com.db4o.db4ounit.jre11.types | |
com.db4o.db4ounit.jre11.types.arrays | |
com.db4o.db4ounit.jre12 | |
com.db4o.db4ounit.jre12.assorted | |
com.db4o.db4ounit.jre12.blobs | |
com.db4o.db4ounit.jre12.collections | |
com.db4o.db4ounit.jre12.collections.custom | |
com.db4o.db4ounit.jre12.collections.facades | |
com.db4o.db4ounit.jre12.collections.map | |
com.db4o.db4ounit.jre12.defragment | |
com.db4o.db4ounit.jre12.fieldindex | |
com.db4o.db4ounit.jre12.querying | |
com.db4o.db4ounit.jre12.regression | |
com.db4o.db4ounit.jre12.soda | |
com.db4o.db4ounit.jre12.soda.collections | |
com.db4o.db4ounit.jre12.soda.deepOR | |
com.db4o.db4ounit.jre12.soda.experiments | |
com.db4o.db4ounit.jre12.staging | |
com.db4o.db4ounit.jre12.types.string | |
com.db4o.db4ounit.jre5 | |
com.db4o.db4ounit.jre5.annotation | |
com.db4o.db4ounit.jre5.collections | |
com.db4o.db4ounit.jre5.concurrency.collections | |
com.db4o.db4ounit.jre5.defrag | |
com.db4o.db4ounit.jre5.enums | |
com.db4o.db4ounit.jre5.generic | |
com.db4o.db4ounit.util | |
com.db4o.db4ounit.util.test | |
com.db4o.defragment | |
com.db4o.diagnostic | |
com.db4o.events | |
com.db4o.ext | |
com.db4o.f1 | |
com.db4o.f1.chapter1 | |
com.db4o.f1.chapter2 | |
com.db4o.f1.chapter3 | |
com.db4o.f1.chapter4 | |
com.db4o.f1.chapter5 | |
com.db4o.f1.chapter6 | |
com.db4o.foundation | |
com.db4o.foundation.io | |
com.db4o.foundation.network | |
com.db4o.generic | |
com.db4o.instrumentation.ant | |
com.db4o.instrumentation.core | |
com.db4o.instrumentation.file | |
com.db4o.instrumentation.filter | |
com.db4o.instrumentation.main | |
com.db4o.instrumentation.util | |
com.db4o.internal | |
com.db4o.internal.btree | |
com.db4o.internal.btree.algebra | |
com.db4o.internal.callbacks | |
com.db4o.internal.classindex | |
com.db4o.internal.cluster | |
com.db4o.internal.collections | |
com.db4o.internal.convert | |
com.db4o.internal.convert.conversions | |
com.db4o.internal.cs | |
com.db4o.internal.cs.messages | |
com.db4o.internal.diagnostic | |
com.db4o.internal.events | |
com.db4o.internal.fieldindex | |
com.db4o.internal.fileheader | |
com.db4o.internal.freespace | |
com.db4o.internal.handlers | |
com.db4o.internal.handlers.net | |
com.db4o.internal.ix | |
com.db4o.internal.mapping | |
com.db4o.internal.marshall | |
com.db4o.internal.query | |
com.db4o.internal.query.processor | |
com.db4o.internal.query.result | |
com.db4o.internal.replication | |
com.db4o.internal.slots | |
com.db4o.io | |
com.db4o.j2me.bloat | |
com.db4o.j2me.bloat.testdata | |
com.db4o.marshall | |
com.db4o.messaging | |
com.db4o.nativequery | |
com.db4o.nativequery.analysis | |
com.db4o.nativequery.example | |
com.db4o.nativequery.expr | |
com.db4o.nativequery.expr.build | |
com.db4o.nativequery.expr.cmp | |
com.db4o.nativequery.expr.cmp.operand | |
com.db4o.nativequery.main | |
com.db4o.nativequery.optimization | |
com.db4o.osgi | |
com.db4o.osgi.test | |
com.db4o.query | |
com.db4o.reflect | |
com.db4o.reflect.core | |
com.db4o.reflect.generic | |
com.db4o.reflect.jdk | |
com.db4o.reflect.self | |
com.db4o.replication | |
com.db4o.ta | |
com.db4o.ta.instrumentation | |
com.db4o.ta.instrumentation.ant | |
com.db4o.ta.instrumentation.samples.pathological | |
com.db4o.ta.instrumentation.test | |
com.db4o.ta.instrumentation.test.integration | |
com.db4o.test | |
com.db4o.test.acid | |
com.db4o.test.aliases | |
com.db4o.test.cluster | |
com.db4o.test.collections | |
com.db4o.test.concurrency | |
com.db4o.test.conjunctions | |
com.db4o.test.constraints | |
com.db4o.test.defragment | |
com.db4o.test.fileheader | |
com.db4o.test.java | |
com.db4o.test.jdk5 | |
com.db4o.test.legacy | |
com.db4o.test.legacy.soda | |
com.db4o.test.legacy.soda.arrays.object | |
com.db4o.test.legacy.soda.arrays.typed | |
com.db4o.test.legacy.soda.arrays.untyped | |
com.db4o.test.legacy.soda.classes.simple | |
com.db4o.test.legacy.soda.classes.typedhierarchy | |
com.db4o.test.legacy.soda.classes.untypedhierarchy | |
com.db4o.test.legacy.soda.collections | |
com.db4o.test.legacy.soda.deepOR | |
com.db4o.test.legacy.soda.engines.db4o | |
com.db4o.test.legacy.soda.experiments | |
com.db4o.test.legacy.soda.joins.typed | |
com.db4o.test.legacy.soda.joins.untyped | |
com.db4o.test.legacy.soda.ordered | |
com.db4o.test.legacy.soda.wrapper.typed | |
com.db4o.test.legacy.soda.wrapper.untyped | |
com.db4o.test.nativequery | |
com.db4o.test.nativequery.analysis | |
com.db4o.test.nativequery.cats | |
com.db4o.test.nativequery.expr | |
com.db4o.test.nativequery.expr.build | |
com.db4o.test.pending | |
com.db4o.test.performance | |
com.db4o.test.reflect | |
com.db4o.test.reflect.self | |
com.db4o.test.replication.old | |
com.db4o.test.test2 | |
com.db4o.test.tuning | |
com.db4o.test.types | |
com.db4o.test.util | |
com.db4o.tools | |
com.db4o.types | |
com.db4o.util.io | |
com.db4o.util.io.spikes | |
com.db4o.util.io.win32 | |
db4ounit | |
db4ounit.extensions | |
db4ounit.extensions.concurrency | |
db4ounit.extensions.fixtures | |
db4ounit.extensions.tests | |
db4ounit.extensions.util | |
db4ounit.tests | |
db4ounit.util | |
EDU.purdue.cs.bloat.benchmark |
Contains classes that are used to run benchmarks that measure the
performance of BLOATed code. These classes allow us to do things like
run a program several times in the same virtual machine
invocation.
|
EDU.purdue.cs.bloat.cfg |
Classes to represent a Java method as a control flow graph of basic
blocks. A basic block is a sequence of code that is entered
only in once place (e.g. the target of a branch statement) and is
exited at only one place (e.g. a branch statement). Each basic block
consists of an expression tree. There are also classes to represent
try-catch blocks, Java subroutines (finally blocks), certain
properties of the control flow graph such as its dominator tree, and
to visualize a control flow graph.
|
EDU.purdue.cs.bloat.codegen |
Generates Java bytecodes from the contents of a control flow graph.
It also performs "register" allocation of the local variables inside
the virtual machine.
|
EDU.purdue.cs.bloat.context |
Repositories for important BLOAT objects such as the
Editor, ClassHierarchy, and FlowGraphs. In
order to avoid build dependencies with other packages we took the
novel approach of having a "context" interface in several packages that
the classes in this package then implement.
The reason we implement all of the methods in one class is so that
if the user wants to have different contexts with different attributes
(for instance, caching policies), all one has to do is subclass
BloatContext instead of subclassing other contextes which may
become ackward.
|
EDU.purdue.cs.bloat.decorate |
Contains a program that decorates a Java classfile with opcodes
used in a persistent Java virtual machine.
|
EDU.purdue.cs.bloat.diva |
Performs demand-driven induction variable analysis on a Java
classfile.
|
EDU.purdue.cs.bloat.dump |
Contains a program that prints the contents of a Java classfile to
the console.
|
EDU.purdue.cs.bloat.editor |
Allows classes, methods, and fields to be edited. In addition, the
representation of bytecodes (JVM instructions) is refined. Types,
opcodes, local variables, and special instrcution operands are
introduced.
|
EDU.purdue.cs.bloat.file |
Allows access to Java classes stored in files on disk. Many of
these classes implement the interfaces found in the
EDU.purdue.cs.bloat.reflect package. Classes are loaded from a file
and things such as constant values, methods, code, debugging
information, and exceptions are modeled.
|
EDU.purdue.cs.bloat.inline |
Classes for performing method inlining. The first step in method
ininling is to create the call graph for a Java "program". Rapid Type
Analysis [Bacon 1997] is used to keep the size of the call graph
managable. RTA uses the class hierarchy to determine all possible
methods that may be invoked at a given call site. Methods are only
considered to be live if their class is instantiated somewhere in the
program.
Call sites are specialized using the resolves-to information
supplied by the call graph. Each virtual method call is transformed
into a "switch" statement on the possible receiver types. The
receiver is cast to a given type and a static method is invoked in
place of the virtual method.
|
EDU.purdue.cs.bloat.optimize |
Contains a program that optimizes Java classes.
|
EDU.purdue.cs.bloat.reflect |
Provides an abstract API for working with Java classfiles. In this
package, names and types are represent by indices into the constant
pool. Modifier flags, the constant pool, exception handlers, and
debugging information are also modeled directly in this package. The
classes and interfaces in this package exist to give an opaque and
abstract view of the underlying representation of the Java class.
|
EDU.purdue.cs.bloat.shrink |
Contains a program that performs array initialization compaction on
a Java classfile in attempts to make it smaller.
|
EDU.purdue.cs.bloat.ssa |
Converts a control flow graph into static single assignment (SSA)
form. In SSA form, each variable in the method has a number
associated with it. Each target of an assignment statement is
assigned a new number. Subsequent uses of that variable are assigned
the same number. Thus, we have a compact form of definition-use
information. Many of the optimiations we do take advantage of SSA form.
|
EDU.purdue.cs.bloat.strip |
Contains a program that removes non-vital information (such as
debugging information) from a Java classfile in an attempt to make it
smaller.
|
EDU.purdue.cs.bloat.tbaa |
Performs type-base alias analysis (TBAA) on a control flow graph.
Type-based alias analysis considers the types of variables when
deciding whether or not two variable can refer to the same object.
Before TBAA can occur, the types of variables are inferred. Type
inference requires information about the class hierarchy of classes
being BLOATed.
|
EDU.purdue.cs.bloat.tools | |
EDU.purdue.cs.bloat.trans |
Performs transformations (optimizations) on a control flow graph.
There are several optimizations performed by classes in this package.
Older Java compilers produced poor code for initializing arrays.
BLOAT can replace this poor code with more efficient code by loading
the array from the constant pool. Dead code elimination removes code
from a method that does not contribute to the final output of the
program.
Value numbering associates a number with each expression such that
if two expressions have the same number, they have the same value. A
value folder is then used to eliminate redundent nodes from and to
propagate constants through the control flow graph.
Constant propagation removes unnecessary assignments by replacing
variables that are assigned constant values with those values. Copy
propagation removes unnecessary assignments to varibles to other
variables.
BLOAT was designed to optimize classes that were to be run inside a
persistent system that required special opcodes to perform operation
such as checking an object cache for a certain resident object. The
analysis that BLOAT does can eliminate some of these checks.
SSA-based partial redundency elimination (PRE) of expressions and
access paths can also be performed on a control flow graph. If a
calculation is redundent along one control flow path leading to a
merge point, PRE computes it once along all paths, assigns the
result to a variable, and replaces further occurrences of the
calculation with that variable. This way, the expression is only
computed once along any given control flow path.
Finally, peephole optimizations are performed on Java bytecode.
For instance, a push instruction followed by a pop instruction is
useless and can be removed. Additionally, unreachable code is removed
from the method.
This package also contains several auxiliary classes that perform
operations like determining whether or not an expression has side
effects and comparing two nodes.
|
EDU.purdue.cs.bloat.tree |
The classes necessary to create and represent a Java method as an
expression tree. The nodes of the tree model various operations
(arithmetic operations, method calls, exceptions being thrown, etc.)
performed by a method. There are also classes that let you visit and
operate on the tree.
|
EDU.purdue.cs.bloat.util |
Contains a number of utility classes used by BLOAT. BLOAT uses
several utility classes such as a directed graph and an immutatable
iterator to get its work done.
|