summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/stub_compiler.cc
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-12-06 15:57:46 -0800
committer buzbee <buzbee@google.com> 2012-12-11 09:54:04 -0800
commite6285f99a53a344efd6f8409ff5f43a3e80190db (patch)
tree145aac9e61838efb617b9c53d8707ca43dd541ed /src/compiler_llvm/stub_compiler.cc
parenta169e1d8d968800380245cda450505d969ebff76 (diff)
Compiler: Take advantage of constant propagation
The common frontend tracks constants via a constant propagation pass. When converting from MIR to GBC (for Portable) or LIR (for Quick), recognize constant arguments and select more efficient codegen forms. Note: we still have to flush constants to their associated vregs to support deoptimization. There's quite a bit of possible code size gain if we were to eliminate unnecessary stores or enhance the vmap table to explicitly represent the ranges over which Dalvik vregs are constant. Also some minor code refactoring related to array operations. There are sufficient architectural differences to make it worthwhile to have target-dependent aget/aput generators. On Arm, this is mostly beneficial to floating point array loads and stores. This CL yields a ~0.8% decrease in code size over the framework, and a nice pop to a few of the standard point benchmarks (linpack: ~10%, cm: ~11%, scimark: ~13% - no significant change to the others) Change-Id: I2337e1aa0622b34a34c3775f8b7dbf5e6969da3e
Diffstat (limited to 'src/compiler_llvm/stub_compiler.cc')
0 files changed, 0 insertions, 0 deletions