summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Cheng <bccheng@android.com>2010-01-26 16:46:15 -0800
committerBen Cheng <bccheng@android.com>2010-02-03 13:01:55 -0800
commitcdc0d3c98667a292bf49696d18e961f9648d40bd (patch)
treeae0d6c4c9953c8f6068b1ac76c557143f4c0542d
parent81d219938444344c189151f080fd5a5a2caf8817 (diff)
downloadlibcore-cdc0d3c98667a292bf49696d18e961f9648d40bd.zip
libcore-cdc0d3c98667a292bf49696d18e961f9648d40bd.tar.gz
libcore-cdc0d3c98667a292bf49696d18e961f9648d40bd.tar.bz2
Fix performance issues related to chaining and unchaining.
1) Patching requests for predicted chaining cells (used by virtual/interface methods) are now batched in a queue and processed when the VM is paused for GC. 2) When the code cache is full the reset operation is also conducted at the end of GC pauses so this totally eliminates the need for the compiler thread to issue suspend-all requests. This is a very rare event and when happening it takes less than 5ms to finish. 3) Change the initial value of the branch in a predicted chaining cell from 0 (ie lsl r0, r0, #0) to 0xe7fe (ie branch to self) so that initializing a predicted chaining cell doesn't need to suspend all threads. Together with 1) seeing 20% speedup on some benchmarks. 4) Add TestCompability.c where defining "TEST_VM_IN_ECLAIR := true" in buildspec.mk will activate dummy symbols needed to run libdvm.so in older releases. Bug: 2397689 Bug: 2396513 Bug: 2331313
0 files changed, 0 insertions, 0 deletions