dalvik: dalvik device extension pack.

Add support for customer device extension

Change-Id: I0402a630ba212d1c5e81cda110f61210f7b60384
(cherry picked from commit 11499df326462bfe25890a35c6abbf019ff7784e)
(cherry picked from commit e03b8f8da9cf4eef64cedf39ce9ca90d26ce5124)
(cherry picked from commit fb360be406f35b9591f12c61936657f03cc5880f)
GC triggering performance optimizations

Copy the correct starting heap size at process init.
Interfaces to set GC/managed heap parameters.

Change-Id: I454b1985a3225d7dbdea9c5d4e6f0c9f5e24352e
(cherry picked from commit ea59f91c8559dee1710f38a27db10f76f4753fea)
(cherry picked from commit 12fc949d46e988ce6877ad4c60f5fc983c5dc202)
(cherry picked from commit 73a1dac0b14ab5159453c2d696049e233e7476b0)
Dump hprof when app encounters Out of memory

These changes will only dump application hprof when debug
property "dalvik.debug.oom" is set to -1.

CRs-Fixed: 471156

Change-Id: I41fbbd5cdaa852cd5e8896186e9d3993688a9cb0
(cherry picked from commit eac7514a989e78b191fde100475b907427158b8d)
(cherry picked from commit 63a1141f9bb9fc58beacdde1e8e24df82fe6e000)
Use 64-bit Linux capabilities when starting Zygote

Enable 64-bit capabilities when starting Zygote to allow
>32-bit capabilties to be set, such as CAP_BLOCK_SUSPEND.

Change-Id: I2821a2a393dc521c7b99a7283ba17b3ae3b375fd
Merge branch 'kk_2.7_rb1.9' of git://codeaurora.org/platform/dalvik into caf

Change-Id: I885fab2470352d0a625c9946d0d5c9111486b713
Merge "Use 64-bit Linux capabilities when starting Zygote"
dalvik/vm: Dalvik startup with a low memory footprint

Initialize concurrentStartBytes and createMspace using HEAP_MIN_FREE.
This helps save Android framework memory after boot.

This is for low memory targets only(<=512MB RAM & hdpi resolution)
Also, set TARGET_ARCH_LOWMEM in the BoardConfig.mk file of a device
for this patch to take effect.

Change-Id: Ia1dec6e89ef8285f1e12644bcdc6ca17a15e37a2
dalvik: use T3 branch when target offset is too large

T1 branch has offset limit of [-256, 254]. T3 branch has offset
limit of [-1048576, 1048574]. Use T3 branch when target offset
falls outside T1 range to avoid compiliation abort.

Change-Id: I86809e08236b1f5f5102e3fce4df4b1e72e4b96c
Dalvik : Increase the upper limit check for DexOpt Deps table

Increasing upper limit check for the Deps table as additonal
jars added causes the dalvik to crash while performing dexopt
on cached jar files. This is needed for passing cts test case
which is part of libcore.java.util.jar.DalvikExecTest class.

CRs-Fixed: 573586
Change-Id: Ic991ca7b49cdd80cdba330edc759ece43361f9fb
Merge "dalvik/vm: Dalvik startup with a low memory footprint"
Merge "Dalvik : Increase the upper limit check for DexOpt Deps table"
Merge "dalvik: use T3 branch when target offset is too large"
Merge branch 'kk_2.7_rb1.11' of git://codeaurora.org/platform/dalvik into cm-11.0
Add an extra guard around perf enablement

Change-Id: I3b03ffa27ca744d8392301e6b4a8e67aa88bca53
libdex: Invert the default for dexopt-on-cache

The growth of /system apps and total /data space are making this
device-breaking (insufficient space to dexopt everything to
/cache), pointless (/data has more than enough room to hold
the cache), and in some cases, both.
The default behavior is now the same as mainline Android's: dexopt
everything to /data. Set dalvik.vm.dexopt-data-only=0 to change
that and dexopt /system apps to /cache. If you do that, make sure
your /cache can accomodate double the size of the dex classes in
system, since in some extreme cases that has been observed during
dex2oat

Change-Id: Ia99655731c882e54bdc85293c467288fb4dc65df
Dalvik : Increase the upper limit check for DexOpt Deps table

Increasing upper limit check for the Deps table as additonal
jars added causes the dalvik to crash while performing dexopt
on cached jar files. This is needed for passing cts test case
which is part of libcore.java.util.jar.DalvikExecTest class.

Change-Id: I7e271ddf68d2b0d03081b03c395ac62d4e50ef0f
CRs-Fixed: 573586
dalvik: use bioinc memmove

use memmove from bioinc if it is halfword atomic.

Change-Id: I81c38c2b504483b69b0b1c1e4ffb63cb81d347d5
Fix synchronization when preparing ids.

Synchronized blocks were using different locks.
Replaced by a safer version: marking intern method synchronized.
This means synchronizing more than necessary but it had no
mesurable perfomance impact.

Bug 11744785

Change-Id: I35e691232cd6971d13735be9b72969739ef71e09
Dalvik: Ensure that the array length complies with the final specifier

JSR-133, which Android 4 should comply with, "final" fields should be
visible to all threads at the time the constructor exits, regardless of
synchronization. This behaviour should also apply to the array lengths
as they are regarded as equivalent in behaviour to "final" fields.
Non-final fields require explicit synchronization in Java for them to be
accessed correctly.

The Dalvik VM in Android ensures constructors for ordinary object behave
properly by inserting a memory barrier ("DMB") on their return if the
object's class has a "final" field.

The issue, however, is that while Dalivk inserts a barrier in
constructors, it doesn't during array create. A barrier ought to be
inserted in order to ensure an array's length is visible when the array
itself can be observed by other threads.

In order for Dalvik to be correct in respect to JSR-133 and the ARM
memory model, it should be modified to have a memory barrier after an
array is allocated and initialized, before it is visible to other
threads.

Change-Id: I329656139264552bbd7cacd8c743b694ee2e0bb8
Signed-off-by: Stuart Monteith <Stuart.Monteith@arm.com>
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
Retry mount() if it fails with EINTR

mount() may fail EINTR, and when it does this causes dalvik to crash.
Use the regular retry macro to avoid these problems.

Change-Id: I436fe4f0fab36c8172b43b8b9caedcb6d8167a4f