Changes in this commit implemented a dynamic code generation optimization.
authorning <ning>
Sat, 12 May 2001 21:29:36 +0000 (21:29 +0000)
committerning <ning>
Sat, 12 May 2001 21:29:36 +0000 (21:29 +0000)
commitc79afe66f4bba6b40d1dae479f1784a24f366e33
tree300fdb02122bc29e78a0165842f41c6560c32a1e
parent264e88835ff86adaa6b651269b18ac70edac5864
Changes in this commit implemented a dynamic code generation optimization.
The basic idea is, all the definitions (including instrumentation point
and instrumentation definition) of an instrumentation variable are grouped
together, and form a primitive metricDefinitionNode.  The variable could
either be a constraint variable or be a metric variable.  When a new
variable is created, its definitions are checked against those of the
variables already created, and reuse the old one if a match is found.

An example that shows the benefit of this optimization would be:
if the same focuses (a couple of procedures for example) are selected for
two different metrics that are of the same constraints, then they could
share the use of the constraint flag instead of creating two instances.
Of course the optimization is much general than this example.
23 files changed:
dyninstAPI/src/ast.C
dyninstAPI/src/ast.h
dyninstAPI/src/inst-alpha.C
dyninstAPI/src/inst-mips.C
dyninstAPI/src/inst-power.C
dyninstAPI/src/inst-sparc.C
dyninstAPI/src/inst-x86.C
dyninstAPI/src/instPoint-alpha.h
dyninstAPI/src/instPoint-mips.h
dyninstAPI/src/instPoint-power.h
dyninstAPI/src/instPoint-sparc.h
dyninstAPI/src/instPoint-x86.h
dyninstAPI/src/process.C
dyninstAPI/src/symtab.C
dyninstAPI/src/symtab.h
paradyn/src/met/metMain.C
paradynd/src/dynrpc.C
paradynd/src/mdl.C
paradynd/src/metricFocusNode.C
paradynd/src/metricFocusNode.h
paradynd/src/perfStream.C
paradynd/src/shmSegment-unix.C
paradynd/src/superVector.C