InstructionAPI optimization pass 1:
authorBill Williams <bill@cs.wisc.edu>
Fri, 14 Aug 2009 21:47:04 +0000 (16:47 -0500)
committerBill Williams <bill@cs.wisc.edu>
Fri, 14 Aug 2009 21:47:04 +0000 (16:47 -0500)
commit5d5b175d397c4227b62deea457e478b0e5886546
treefff5ff82d589d10bc6b28e17ace0ea0f0d020da8
parent4c2f08f4695bff0e316517cd7c2825578fd248bd
InstructionAPI optimization pass 1:

* Delayed decoding of operands
* Use of fixed-size allocation pools for IAPI objects
* Placement new for frequently reconstructed objects
* Lighter-weight low-level decoding
* Optimized storage of raw instruction bytes
* Eliminated redundant encoding of operand read/write info
* Eliminated many unnecessary copy operations
  - Parameter passing by cref preferred to passing by value
  - Eliminate copy-on-return via shared pointer in public interface, since we can't rely on RVO
* Avoid dynamic casts where possible
* Delay construction of flag objects as long as possible
63 files changed:
common/h/pool_allocators.h [new file with mode: 0644]
common/h/singleton_object_pool.h [new file with mode: 0644]
dyninstAPI/h/BPatch_basicBlock.h
dyninstAPI/h/BPatch_parRegion.h
dyninstAPI/src/BPatch_basicBlock.C
dyninstAPI/src/BPatch_parRegion.C
dyninstAPI/src/BPatch_point.C
dyninstAPI/src/addressSpace.C
dyninstAPI/src/frameChecker.C
dyninstAPI/src/frameChecker.h
dyninstAPI/src/image-func.C
dyninstAPI/src/image-func.h
dyninstAPI/src/image-x86.C
dyninstAPI/src/liveness.C
dyninstAPI/src/multiTramp.C
dyninstAPI/src/reloc-func.C
dyninstAPI/src/stackanalysis.C
dyninstAPI/src/stackanalysis.h
dynutil/h/dyn_detail/boost/config.hpp
instructionAPI/h/BinaryFunction.h
instructionAPI/h/Expression.h
instructionAPI/h/Immediate.h
instructionAPI/h/Instruction.h
instructionAPI/h/InstructionAST.h
instructionAPI/h/InstructionDecoder.h
instructionAPI/h/Operand.h
instructionAPI/h/Operation.h
instructionAPI/h/Register.h
instructionAPI/h/RegisterIDs-x86.h
instructionAPI/h/Result.h
instructionAPI/h/entryIDs-IA32.h
instructionAPI/make.module.tmpl
instructionAPI/src/Expression.C
instructionAPI/src/Immediate.C [new file with mode: 0644]
instructionAPI/src/Instruction.C
instructionAPI/src/InstructionAST.C
instructionAPI/src/InstructionCategories.C
instructionAPI/src/InstructionDecoder.C
instructionAPI/src/Operation.C
instructionAPI/src/Register.C
instructionAPI/src/arch-x86.C
instructionAPI/src/arch-x86.h
testsuite/i386-unknown-linux2.4/make.mutators.gen
testsuite/i386-unknown-linux2.4/test_info_new.gen.C
testsuite/i386-unknown-linux2.4/tuples
testsuite/i386-unknown-nt4.0/nmake.mutators.gen
testsuite/i386-unknown-nt4.0/test_info_new.gen.C
testsuite/i386-unknown-nt4.0/tuples
testsuite/ia64-unknown-linux2.4/make.mutators.gen
testsuite/ppc32_linux/make.mutators.gen
testsuite/ppc64_linux/make.mutators.gen
testsuite/rs6000-ibm-aix5.1/make.mutators.gen
testsuite/sparc-sun-solaris2.8/make.mutators.gen
testsuite/sparc-sun-solaris2.9/make.mutators.gen
testsuite/src/instruction/test_instruction_bind_eval.C
testsuite/src/instruction/test_instruction_farcall.C
testsuite/src/instruction/test_instruction_profile.C [new file with mode: 0644]
testsuite/src/instruction/test_instruction_read_write.C
testsuite/src/specification/makemake.py
testsuite/src/specification/spec-grouped.pl
testsuite/x86_64-unknown-linux2.4/make.mutators.gen
testsuite/x86_64-unknown-linux2.4/test_info_new.gen.C
testsuite/x86_64-unknown-linux2.4/tuples