dalvik: Fix compile failures with -DNDEBUG and gcc >= 4.6

With -DNDEBUG and -DLOG_NDEBUG, assert() and friends are defined to
nothing - causing variables that are used only in the context of assert
or logging to be defined, but not used, resulting in a build failure
if -Werror is enabled.

Change-Id: Iae18e0274ec2f11f95f918b75006be7cf375a8c0
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
dalvik/libdex: Change to -O2 if we're building with -O3

This is a workaround for an apparent gcc bug.
https://bugs.launchpad.net/linaro-android/+bug/948255

Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
dalvik/libdex: Don't reduce optimization level to -O2

Don't reduce optimization level to -O2: It's sufficient to disable
function inlining

Change-Id: Ie6d9978cf0bf0e49cfa296c09c4eba913f22c303
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
dalvik: Fix for broswer-crashing bug

This applies the fix proposed by Olivier Cozette in
https://code.google.com/p/android/issues/detail?id=37561
and fixes our bug:
https://bugs.launchpad.net/linaro-android/+bug/978060

An alternative fix has been applied since, leaving this one in
as a comment for reference

Change-Id: I54336c83650c1628fd1bb689148bc1dd8843d7c6
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Initial commit
Merge remote-tracking branch 'pb/jellybean-google' into HEAD
Use ALOGE rather than SLOGE for mountEmulatedStorage failures.

Otherwise the actual failure isn't in logcat, and all you see there
is the rather confusing:

  E dalvikvm: cannot mountExternalStorage(): Success

Change-Id: I10c96748b5ff5b6c3877312e7bdb2641026b4489
Remove dvmFindInterfaceMethodInCache2.

We can just use dvmFindInterfaceMethodInCache directly.

Change-Id: I2f3a660262ba7a39c05689df160ebdd2e7ec38a5
ExceptionInInitializerError should wrap only non Error exceptions.

Backport from dalvik-dev, due to customer demand.

Bug: http://code.google.com/p/android/issues/detail?id=41196
Change-Id: I53ef57e54983f2173546463ac78e265ff5dd3284
Optimize opcodes to avoid bubble in pipeline.

Possible bubbles between fetch(ldr) and extract(and)
Excute subsequent instruction(s) inbetween the bubble by reordering instruction.

Change-Id: I76d89ed6bc4ca44673231375cc529fdbfd5a8030
Possible leak in dvmAllocRegion

In error case mmapped ptr 'base' is not munmapped.

Change-Id: I9e43841371fee6b7c092fe9a8922ae82e78805ed
Fix handling of annotations whose classes are missing at runtime.

Bug: http://code.google.com/p/android/issues/detail?id=39854
Change-Id: I3089b693ff3084b093f991f991ac9273dea7356d
Remove dead code.

Change-Id: I56c27c510c8fc0ba2d8e691c788b433dce250f7a
Fail if the new index is out of range.

We were silently truncating, which made an obvious problem
into a non-obvious one.

Bug: http://code.google.com/p/android/issues/detail?id=40409
Change-Id: I15576357c72ac0e98cf85c0a1d289fd5009468f9
Reclaiming attribute obj after pthread_create

call pthread_attr_destroy in order to reclaim attribute object.

Change-Id: I2592903ef67101a7c656a3ab0ad243a9716298b5
Remove possilbe leaks in dalvik.

Add missing free() calls.

Change-Id: Id602b84ba8f15fef1851f37e3d5aac214ac67de1
Optimize dvmHash Loops.

pHashTable->tableSize is working as volatile variable & is evaluated on every iteration.
Help compiler to define tableSize as local(Register) variable.

Change-Id: Iecdea3ecb810319d461ff3924ef21fd6c2d69d1e
Change NewDirectByteBuffer to allow NULL if capacity == 0.

Also make the diagnostics more uniform.

Bug: 7892060
Change-Id: Ib3ca0d6241a5958d2c8681337b1883fc3d74cb54
dalvik: remove duplicated call to dvmJitCalleeSave()

Change-Id: Ib7b5f637a22fd5ba60bdb45cd34ac8c1781c7bd3
Author: Rocky Zhang <zhangyan.hit@gmail.com>
Signed-off-by: Rocky Zhang <zhangyan.hit@gmail.com>
Zygote: Restrict slave mountspace so Dalvik apps can mount system-wide volumes

Android 4.2 implements multi-user storage using per-process mount
namespaces.  Originally, everything under "/" (the entire filesystem
hierarchy) is marked as a recursive-slave mountspace for all zygote
instances.  This is done so that user-storage sandbox mounts under
/storage/emulated are hidden from other apps and users.

Unfortunately this means that any Dalvik app (actually, any program whose
clone/fork ancestry includes a Dalvik zygote, which is everything except
services spawned directly from init) cannot mount system-wide volumes.
Thus, apps like CifsManager are effectively broken in Android 4.2, since
its cifs mounts are only visible to the CifsManager app itself.  All other
apps see empty mountpoints instead of the mounted volume.  Furthermore,
Linux provides no provision for a process to "escape" a recursive-slave
mountspace in versions prior to Linux 3.8 (setns syscall).

Here, we restrict the slave mountspace to /storage (and, due to a possible
kernel bug, /mnt/shell/emulated) so that Dalvik apps can mount system-wide
volumes elsewhere (with appropriate permission, as in earlier versions of
Android), while retaining full multi-user storage compatibility.

This change requires that a tmpfs volume is mounted as /storage in init.rc.
If this volume is unavailable, then Zygote falls back to the previous
behavior of marking the entire filesystem hierarchy as slave.  It also
implicitly requires that EMULATED_STORAGE_TARGET is path-prefixed by (part
of the subhierarchy of) ANDROID_STORAGE, which is the typical case.