Fix the portable interpreter build

Change-Id: Ibf08d50c7a01a4c30559dd2ee9511c28fb1365a5
Signed-off-by: Chris Dearman <chris@mips.com>
Fix instruction logging messages

Change-Id: Ifc7de30ea1c1221f7838523a5ebd269eec622e03
Signed-off-by: Chris Dearman <chris@mips.com>
Fix the warning emitted by codesourcery compiler 4.5.2

Change-Id: Ib2b8e87afff7af56281d83961edf79c17cbcf940
Restore fp after calling JNI method in allstubs interpreter

The allstubs interpreter uses self->interpSave.curFrame as fp.
The invokeMethod native code sets self->interpSave.curFrame directly
effectively updating fp, so restore fp after the call has completed.

Change-Id: I0ffb15b71a48c2780251bbcd66e551bb0a52fe94
Signed-off-by: Chris Dearman <chris@mips.com>
Use old frame for dvmReportPreNativeInvoke/dvmReportPostNativeInvoke

The portable and standard interpreters were using different values.
The portable interpeter is correct...

Change-Id: I8669dfbc979f161666e6b7f63aae16f48612a0c6
Signed-off-by: Chris Dearman <chris@mips.com>
Simplify the quasi-atomic stuff and add MIPS support.

Change-Id: Iac896c03ef707c998cc714628adea0255f21c035
Support architectures that require correctly aligned doubles

CTS: tests.api.java.lang.reflect.MethodTest#test_invokeLjava_lang_Object$Ljava_lang_Object

Change-Id: I93c391884d802b8e69fe3e1ced55a2f2c7866d16
Signed-off-by: Nikola Kuzmanovic <nikola.kuzmanovic@rt-rk.com>
Signed-off-by: Chris Dearman <chris@mips.com>
Fix a bug in dvmQuasiAtomicsShutdown.

Spotted visually when merging to an internal branch.

Change-Id: Ic130608bfa46036cec0684cd50706178cfefd2a0
Pad the 8 and 16 bit Jvalue members

This allows them to be consistently accessed as either 8-bit,
16-bit or 32-bit values in bigendian and little-endian mode.

Change-Id: I1be5519f3666a3553b404368075f5a7b5d9e6b32
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
  Trim after explicit gc.

  On Gingerbread, dvmHeapSourceTrim() is called 5 seconds
  after every kind of GC. Current AOSP do trim only for
  concurrent GC. That makes OOM killer too busy.

  At least explicit GC need trim and in case of explicit
  GC, there are no need to delay 5 seconds before trim.

Change-Id: I8fde8f773398bf20c674cfa6f686d7d745d56492
Add test cases for concurrent gc and System.arraycopy

When System.arraycopy runs at the same time as a concurrent gc
the phone will sometimes crash since System.arraycopy was implemented
using memmove and memcpy. In current implementation of mememove bytes
are copied one at a time. If for instance only 3 out of 4 bytes
to an object reference were copied when the thread switch to the
gc thread occurred and the gc was scanning the marked objects the
gc read an invalid address. The parameters to dvmWriteBarrierArray
in one case was also corrected (they are currently not used).

The fix itself for this crash is made elsewhere, this commit just
adds test cases to verify that this works.

Change-Id: I0a8cfd43561b3d5de4bba818993bcf8b40413045
Revert "  Trim after explicit gc."

This reverts commit ea4c6e57a48e08eacbf08520c64133175e7d5da0
Make dex merging stateless.

This is required to run dx in Eclipse which doesn't unload the dx
library after each run.

(cherry-pick of 7aa5ce7e990dc3766eba97cd0932b62e4de21503.)

Change-Id: I7a69a3015d448ddd5558c307cd01346156cbc739
Avoid method overriding if its super method is inaccessible.

A call to package private method could be redirected to subclass which
was not in the same package.
Modified vtable to retain virtual super methods which cannot be accessed.

This change affects vtable index in optimized dex.

Change-Id: I9cc7e309c305bca12e5061009c4245fb70014681
Signed-off-by: Im Sooin <ciecet@gmail.com>
Updates to the VM tests.

Bug: http://code.google.com/p/android/issues/detail?id=21599
Bug: http://code.google.com/p/android/issues/detail?id=21597
Change-Id: I9c6d67cd18943eb6fa68104f0ec2fbec5ea9e0ec
Add a test for a dalvikvm 'switch' bug.

Bug: http://code.google.com/p/android/issues/detail?id=22344
Change-Id: I3bf9f8a0732876d758bc5378c5d25ad0c8a71684
cleanup redundant interfaces from iftable to avoid excessive LinearAlloc use

In deep interface hierarchies super-interfaces are recursively concatenated
to create the iftable. There was no checking for duplicated entries so that the
iftable could get pretty large with just a few layers of interfaces up to the
point where the LinearAlloc was exceeded completely.

This change scans the iftable linearly for existing entries before it adds another
one.

Issue: http://code.google.com/p/android/issues/detail?id=22586
Change-Id: Idb4a13ca7a52f390661629cf2539930242526876
Signed-off-by: Johannes Rudolph <johannes.rudolph@gmail.com>
fix dvmDbgOutputAllInterfaces to include only direct super-interfaces

As the javadoc and the spec say dvmDbgOutputAllInterfaces should output only
the directly implemented interfaces. This can be achieved by just iterating
over the `clazz->interfaces`.

Issue: http://code.google.com/p/android/issues/detail?id=21422
Change-Id: I1779e2cc2ada7afaaf4a1e2e5c7861d61d9ea014
Signed-off-by: Johannes Rudolph <johannes.rudolph@gmail.com>