OSDN Git Service

android-x86/dalvik.git
12 years agoMake dex merging stateless.
Xavier Ducrohet [Mon, 11 Jun 2012 22:17:31 +0000 (15:17 -0700)]
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

12 years agoMerge "Support debug info in dexmerge."
Elliott Hughes [Mon, 11 Jun 2012 23:30:30 +0000 (16:30 -0700)]
Merge "Support debug info in dexmerge."

12 years agoSupport debug info in dexmerge.
Elliott Hughes [Thu, 7 Jun 2012 23:47:38 +0000 (16:47 -0700)]
Support debug info in dexmerge.

Bug: 4090053

(cherry-pick of bc23c4f3ebaefebb3f1be7732767631f91e165ea.)

Change-Id: I1108933fc03330ff91be3a2edef8b4966977dcd7
Signed-off-by: Jesse Wilson <jesse@swank.ca>
12 years agoMerge "Revert " Trim after explicit gc.""
Elliott Hughes [Mon, 11 Jun 2012 16:03:36 +0000 (09:03 -0700)]
Merge "Revert "  Trim after explicit gc.""

12 years agoRevert " Trim after explicit gc."
Elliott Hughes [Mon, 11 Jun 2012 15:41:06 +0000 (08:41 -0700)]
Revert "  Trim after explicit gc."

This reverts commit ea4c6e57a48e08eacbf08520c64133175e7d5da0

12 years agoMerge "Fixing a crash when doing lock profiling"
Elliott Hughes [Tue, 5 Jun 2012 21:33:14 +0000 (14:33 -0700)]
Merge "Fixing a crash when doing lock profiling"

12 years agoMerge "Add test cases for concurrent gc and System.arraycopy"
Elliott Hughes [Tue, 5 Jun 2012 20:16:11 +0000 (13:16 -0700)]
Merge "Add test cases for concurrent gc and System.arraycopy"

12 years agoAdd test cases for concurrent gc and System.arraycopy
Johannes Carlsson [Thu, 3 Feb 2011 14:12:46 +0000 (15:12 +0100)]
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

12 years agoFixing a crash when doing lock profiling
Mattias Petersson [Tue, 5 Jun 2012 08:43:01 +0000 (10:43 +0200)]
Fixing a crash when doing lock profiling

This is a fix for a crash that can happen when logging Contention
events. This logging is performed when lock profiling is enabled.
This is by default enabled on userdebug builds. The crash happened
when a thread was being destroyed. When a thread is being
destroyed it is normal that the frame depth is zero, and thus the
current frame is null. logContentionEvent() requires that the
current frame is not null, or it will crash.

The fix is to check if the current frame is null.

Change-Id: I4c2b9ad94b663398645497fdffa1ec6f7ea86a51

12 years agoMerge "Running rebuild.sh found a few changes to be updated to vm/mterp/out/InterpAsm...
Elliott Hughes [Wed, 30 May 2012 21:08:08 +0000 (14:08 -0700)]
Merge "Running rebuild.sh found a few changes to be updated to vm/mterp/out/InterpAsm-mips.S and vm/mterp/out/InterpC-mips.cpp"

12 years agoRunning rebuild.sh found a few changes to be updated to
Raghu Gandham [Mon, 21 May 2012 19:31:11 +0000 (12:31 -0700)]
Running rebuild.sh found a few changes to be updated to
vm/mterp/out/InterpAsm-mips.S and
vm/mterp/out/InterpC-mips.cpp

12 years agoMerge " Trim after explicit gc."
Elliott Hughes [Fri, 11 May 2012 22:29:32 +0000 (15:29 -0700)]
Merge "  Trim after explicit gc."

12 years ago Trim after explicit gc.
SangWook Han [Fri, 11 May 2012 11:58:01 +0000 (20:58 +0900)]
  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

12 years agoMerge " Fix: Issue 26627: Dalvik Heap Trim timer value after GC"
Elliott Hughes [Fri, 11 May 2012 18:56:15 +0000 (11:56 -0700)]
Merge " Fix: Issue 26627: Dalvik Heap Trim timer value after GC"

12 years ago Fix: Issue 26627: Dalvik Heap Trim timer value after GC
SangWook Han [Fri, 11 May 2012 11:45:33 +0000 (20:45 +0900)]
 Fix: Issue 26627: Dalvik Heap Trim timer value after GC

dvmRelativeCondWait need millisecods not seconds.

With this fix, trim will begins 5 seconds after concurrent GC

Bug: http://code.google.com/p/android/issues/detail?id=26627
Change-Id: I3802b48e345725fb78e4ef2c999dd243ef30a138

12 years agoMerge "Pad the 8 and 16 bit Jvalue members"
Elliott Hughes [Thu, 3 May 2012 17:49:51 +0000 (10:49 -0700)]
Merge "Pad the 8 and 16 bit Jvalue members"

12 years agoPad the 8 and 16 bit Jvalue members
Chris Dearman [Tue, 31 Jan 2012 02:10:35 +0000 (18:10 -0800)]
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>
12 years agoMerge "[MIPS] Dalvik fast interpreter support and JIT implementation"
Elliott Hughes [Thu, 3 May 2012 16:42:38 +0000 (09:42 -0700)]
Merge "[MIPS] Dalvik fast interpreter support and JIT implementation"

12 years agoMerge "Fix a bug in dvmQuasiAtomicsShutdown."
Elliott Hughes [Thu, 3 May 2012 06:21:27 +0000 (23:21 -0700)]
Merge "Fix a bug in dvmQuasiAtomicsShutdown."

12 years agoFix a bug in dvmQuasiAtomicsShutdown.
Elliott Hughes [Wed, 2 May 2012 23:07:36 +0000 (16:07 -0700)]
Fix a bug in dvmQuasiAtomicsShutdown.

Spotted visually when merging to an internal branch.

Change-Id: Ic130608bfa46036cec0684cd50706178cfefd2a0

12 years ago[MIPS] Dalvik fast interpreter support and JIT implementation
Raghu Gandham [Wed, 2 May 2012 21:27:16 +0000 (14:27 -0700)]
[MIPS] Dalvik fast interpreter support and JIT implementation

Change-Id: I9bb4f6875b7061d3ffaee73f204026cb8ba3ed39
Signed-off-by: Raghu Gandham <raghu@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Douglas Leung <douglas@mips.com>
Signed-off-by: Don Padgett <don@mips.com>
12 years agoMerge "Support architectures that require correctly aligned doubles"
Elliott Hughes [Wed, 2 May 2012 20:47:18 +0000 (13:47 -0700)]
Merge "Support architectures that require correctly aligned doubles"

12 years agoMerge "Simplify the quasi-atomic stuff and add MIPS support."
Elliott Hughes [Wed, 2 May 2012 17:25:07 +0000 (10:25 -0700)]
Merge "Simplify the quasi-atomic stuff and add MIPS support."

12 years agoSimplify the quasi-atomic stuff and add MIPS support.
Elliott Hughes [Wed, 2 May 2012 00:24:51 +0000 (17:24 -0700)]
Simplify the quasi-atomic stuff and add MIPS support.

Change-Id: Iac896c03ef707c998cc714628adea0255f21c035

12 years agoMerge changes I8669dfbc,I0ffb15b7,Ib2b8e87a,Ifc7de30e
Elliott Hughes [Tue, 1 May 2012 01:43:30 +0000 (18:43 -0700)]
Merge changes I8669dfbc,I0ffb15b7,Ib2b8e87a,Ifc7de30e

* changes:
  Use old frame for dvmReportPreNativeInvoke/dvmReportPostNativeInvoke
  Restore fp after calling JNI method in allstubs interpreter
  Fix the warning emitted by codesourcery compiler 4.5.2
  Fix instruction logging messages

12 years agoMerge "Fix the portable interpreter build"
Elliott Hughes [Tue, 1 May 2012 01:42:05 +0000 (18:42 -0700)]
Merge "Fix the portable interpreter build"

12 years agoMerge "Fixed bug in x86-atom fast interpreter. Adds guard for potential null pointer...
Elliott Hughes [Tue, 1 May 2012 00:47:55 +0000 (17:47 -0700)]
Merge "Fixed bug in x86-atom fast interpreter. Adds guard for potential null pointer. Adds guard for potential null pointer when checking for debugger active on return from method."

12 years agoMerge "Fix a leak in the JIT."
Elliott Hughes [Fri, 20 Apr 2012 17:11:41 +0000 (10:11 -0700)]
Merge "Fix a leak in the JIT."

12 years agoFix a leak in the JIT.
Elliott Hughes [Fri, 20 Apr 2012 00:16:08 +0000 (17:16 -0700)]
Fix a leak in the JIT.

We should use the JIT's arena rather than explicit allocation/deallocation.

Change-Id: I12b78cb1586222b082b140e4a1db00969ce23e3c

12 years agoMerge "Fix a small memory leak."
Elliott Hughes [Thu, 19 Apr 2012 22:45:10 +0000 (15:45 -0700)]
Merge "Fix a small memory leak."

12 years agoFix a small memory leak.
Elliott Hughes [Sat, 7 Jan 2012 01:25:14 +0000 (17:25 -0800)]
Fix a small memory leak.

Found by someone reading the code, rather than because we saw a crash. This is
only a small leak, and you'd have to be dumping threads (because of an ANR) or
creating a new thread to provoke it.

(cherry picked from commit 6d1a1dfd0ef006e19067b6ffd927160d0c6d9647)

Change-Id: Id857efca8d34b20d1acaa452c3fe5d2975e2572b

12 years agoMerge "Set SYSTEM_PAGE_SIZE from PAGE_SHIFT"
Elliott Hughes [Sat, 31 Mar 2012 03:02:23 +0000 (20:02 -0700)]
Merge "Set SYSTEM_PAGE_SIZE from PAGE_SHIFT"

12 years agoam 6bcf5d20: Merge "Obvious mix of = and =="
Elliott Hughes [Wed, 28 Mar 2012 00:53:40 +0000 (17:53 -0700)]
am 6bcf5d20: Merge "Obvious mix of = and =="

* commit '6bcf5d200bc9d1be6c3d766005c19694a325da61':
  Obvious mix of = and ==

12 years agoam 54ff31a5: Merge "Compact merged dexes on their byte aligned size"
Elliott Hughes [Wed, 28 Mar 2012 00:53:39 +0000 (17:53 -0700)]
am 54ff31a5: Merge "Compact merged dexes on their byte aligned size"

* commit '54ff31a5f467aea7352b034f37406a6f4fe6a253':
  Compact merged dexes on their byte aligned size

12 years agoMerge "Obvious mix of = and =="
Elliott Hughes [Tue, 27 Mar 2012 19:25:33 +0000 (12:25 -0700)]
Merge "Obvious mix of = and =="

12 years agoMerge "Compact merged dexes on their byte aligned size"
Elliott Hughes [Tue, 13 Mar 2012 17:30:29 +0000 (10:30 -0700)]
Merge "Compact merged dexes on their byte aligned size"

12 years agoObvious mix of = and ==
Mark Gordon [Tue, 27 Mar 2012 19:16:32 +0000 (15:16 -0400)]
Obvious mix of = and ==

Change-Id: I52183924c287b80e9ca7c20df6edfe132b43e088

12 years agoCompact merged dexes on their byte aligned size
Charlie Groves [Sun, 11 Mar 2012 07:40:47 +0000 (23:40 -0800)]
Compact merged dexes on their byte aligned size

Previously, if a merged dex had too much free space, the compaction step
would subtract the unused space from the section sizes generated by
adding the merged dexes section sizes. The merged sizes weren't 4-byte
aligned, which meant if a section had been bumped in size for the
boundary, the compaction would fail when loading into a section eg
'Section limit 3665072 exceeded by string data'.

This gets the compacted section size from the actual used space instead
of from the non-aligned estimate, so everything fits.

Change-Id: I1aee1abd721ec21998bb3ea78f6f424e7421b614

12 years agoUse old frame for dvmReportPreNativeInvoke/dvmReportPostNativeInvoke
Chris Dearman [Tue, 31 Jan 2012 01:44:28 +0000 (17:44 -0800)]
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>
12 years agoRestore fp after calling JNI method in allstubs interpreter
Chris Dearman [Tue, 31 Jan 2012 01:44:28 +0000 (17:44 -0800)]
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>
12 years agoFix the warning emitted by codesourcery compiler 4.5.2
Raghu Gandham [Tue, 31 Jan 2012 01:44:28 +0000 (17:44 -0800)]
Fix the warning emitted by codesourcery compiler 4.5.2

Change-Id: Ib2b8e87afff7af56281d83961edf79c17cbcf940

12 years agoFix instruction logging messages
Chris Dearman [Tue, 31 Jan 2012 01:44:28 +0000 (17:44 -0800)]
Fix instruction logging messages

Change-Id: Ifc7de30ea1c1221f7838523a5ebd269eec622e03
Signed-off-by: Chris Dearman <chris@mips.com>
12 years agoFix the portable interpreter build
Chris Dearman [Wed, 1 Feb 2012 01:19:49 +0000 (17:19 -0800)]
Fix the portable interpreter build

Change-Id: Ibf08d50c7a01a4c30559dd2ee9511c28fb1365a5
Signed-off-by: Chris Dearman <chris@mips.com>
12 years agoSupport architectures that require correctly aligned doubles
Raghu Gandham [Tue, 31 Jan 2012 02:25:05 +0000 (18:25 -0800)]
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>
12 years agoam c1052f9a: Merge "Add a test for a dalvikvm \'switch\' bug."
Jean-Baptiste Queru [Mon, 13 Feb 2012 22:27:37 +0000 (14:27 -0800)]
am c1052f9a: Merge "Add a test for a dalvikvm \'switch\' bug."

* commit 'c1052f9a61539f212885555b0b2c110582f11e28':
  Add a test for a dalvikvm 'switch' bug.

12 years agoMerge "Add a test for a dalvikvm 'switch' bug."
Jean-Baptiste Queru [Mon, 13 Feb 2012 22:23:40 +0000 (14:23 -0800)]
Merge "Add a test for a dalvikvm 'switch' bug."

12 years agoAdd a test for a dalvikvm 'switch' bug.
Elliott Hughes [Fri, 10 Feb 2012 23:15:39 +0000 (15:15 -0800)]
Add a test for a dalvikvm 'switch' bug.

Bug: http://code.google.com/p/android/issues/detail?id=22344
Change-Id: I3bf9f8a0732876d758bc5378c5d25ad0c8a71684

12 years agoam 2fe129bf: Merge "Updates to the VM tests."
Jean-Baptiste Queru [Wed, 1 Feb 2012 17:34:46 +0000 (09:34 -0800)]
am 2fe129bf: Merge "Updates to the VM tests."

* commit '2fe129bf176c32f8b507da813ffa02868ff32604':
  Updates to the VM tests.

12 years agoMerge "Updates to the VM tests."
Jean-Baptiste Queru [Wed, 1 Feb 2012 16:41:43 +0000 (08:41 -0800)]
Merge "Updates to the VM tests."

12 years agoUpdates to the VM tests.
Elliott Hughes [Wed, 1 Feb 2012 01:55:18 +0000 (17:55 -0800)]
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

12 years agoSet SYSTEM_PAGE_SIZE from PAGE_SHIFT
Chris Dearman [Tue, 31 Jan 2012 02:22:27 +0000 (18:22 -0800)]
Set SYSTEM_PAGE_SIZE from PAGE_SHIFT

Hardwiring the expected page size is not portable

Signed-off-by: Chris Dearman <chris@mips.com>
12 years agoReconcile with ics-mr1-release
The Android Open Source Project [Mon, 23 Jan 2012 18:15:35 +0000 (10:15 -0800)]
Reconcile with ics-mr1-release

Change-Id: Iaa3411a4a3a03f433d2a841b3b48bb6371bd9fba

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Sat, 21 Jan 2012 00:11:41 +0000 (16:11 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoam 1c7e1e14: Fix to dex verifier to handle float types that look like Boolean.
jeffhao [Fri, 20 Jan 2012 20:38:09 +0000 (12:38 -0800)]
am 1c7e1e14: Fix to dex verifier to handle float types that look like Boolean.

* commit '1c7e1e149d3dcf3949c76ae594ca9c1ca20392f9':
  Fix to dex verifier to handle float types that look like Boolean.

12 years agoFix to dex verifier to handle float types that look like Boolean.
jeffhao [Wed, 18 Jan 2012 02:18:36 +0000 (18:18 -0800)]
Fix to dex verifier to handle float types that look like Boolean.

Addresses http://code.google.com/p/android/issues/detail?id=23465, where
a Float value is potentially 0x0 or Float.MIN_VALUE (0x1), which combines
into a Boolean type, which should be allowed to be promoted to Float.

(cherry picked from commit 2a249c50903d669d2a9296f0fe407b67646626c8)

Change-Id: I1b81fad5e1e166246535bdfa4b7a98db3b2531bf

12 years agoReconcile with ics-mr1-release
The Android Open Source Project [Thu, 19 Jan 2012 21:06:27 +0000 (13:06 -0800)]
Reconcile with ics-mr1-release

Change-Id: I69e3e58260f9a81452ac12d0365c8be2a17edc93

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Thu, 19 Jan 2012 05:16:51 +0000 (21:16 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoam 232c385b: Bug fix for control-flow construction involving nested loops.
Ben Cheng [Thu, 19 Jan 2012 00:27:02 +0000 (16:27 -0800)]
am 232c385b: Bug fix for control-flow construction involving nested loops.

* commit '232c385b9ece322d677a48947ab1e052c1e2427c':
  Bug fix for control-flow construction involving nested loops.

12 years agoBug fix for control-flow construction involving nested loops.
Ben Cheng [Wed, 18 Jan 2012 21:45:57 +0000 (13:45 -0800)]
Bug fix for control-flow construction involving nested loops.

Bug: 5884080
Change-Id: Ic2f42abae3e71f9c0729984902396f92902184a3

12 years agoam a669206d: Merge "cleanup redundant interfaces from iftable to avoid excessive...
Jean-Baptiste Queru [Wed, 18 Jan 2012 02:17:56 +0000 (18:17 -0800)]
am a669206d: Merge "cleanup redundant interfaces from iftable to avoid excessive LinearAlloc use"

* commit 'a669206dc91323e664a84b2a4ca170ec0332c926':
  cleanup redundant interfaces from iftable to avoid excessive LinearAlloc use

12 years agoMerge "cleanup redundant interfaces from iftable to avoid excessive LinearAlloc use"
Jean-Baptiste Queru [Tue, 17 Jan 2012 23:26:45 +0000 (15:26 -0800)]
Merge "cleanup redundant interfaces from iftable to avoid excessive LinearAlloc use"

12 years agoam 390d7c08: fix personality call.
Nick Kralevich [Tue, 17 Jan 2012 19:45:32 +0000 (11:45 -0800)]
am 390d7c08: fix personality call.

* commit '390d7c08821750d0633435278b2d533fd6b1a7a5':
  fix personality call.

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Sat, 14 Jan 2012 00:17:11 +0000 (16:17 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agofix personality call.
Nick Kralevich [Fri, 13 Jan 2012 22:04:38 +0000 (14:04 -0800)]
fix personality call.

Change-Id: I25845344494ac15b4a6876784d2b040779892459

12 years agoam 311886c6: Prevent memory fragmentation.
Selim Gurun [Fri, 13 Jan 2012 20:15:52 +0000 (12:15 -0800)]
am 311886c6: Prevent memory fragmentation.

* commit '311886c6c6fcd3b531531f592d56caab5e2a259c':
  Prevent memory fragmentation.

12 years agoPrevent memory fragmentation.
Selim Gurun [Fri, 13 Jan 2012 18:47:15 +0000 (10:47 -0800)]
Prevent memory fragmentation.

Bug: 5817320

Prevent memory fragmentation and potential allocation failures. This
change is temporary.

Change-Id: Id1e8f9606687648235ea9e18861125a8c799d812

12 years agoMerge "fix dvmDbgOutputAllInterfaces to include only direct super-interfaces"
Jean-Baptiste Queru [Fri, 13 Jan 2012 15:49:24 +0000 (07:49 -0800)]
Merge "fix dvmDbgOutputAllInterfaces to include only direct super-interfaces"

12 years agocleanup redundant interfaces from iftable to avoid excessive LinearAlloc use
Johannes Rudolph [Fri, 13 Jan 2012 07:18:17 +0000 (08:18 +0100)]
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>
12 years agofix dvmDbgOutputAllInterfaces to include only direct super-interfaces
Johannes Rudolph [Thu, 12 Jan 2012 09:53:48 +0000 (10:53 +0100)]
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>
12 years agoReconcile with ics-mr1-release
The Android Open Source Project [Thu, 8 Dec 2011 18:21:27 +0000 (10:21 -0800)]
Reconcile with ics-mr1-release

Change-Id: I61fc74707db482c4600aaa34b751a665c75ffcec

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Fri, 2 Dec 2011 00:45:10 +0000 (16:45 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoInitialize the vC field of inlined getters/setters.
Ben Cheng [Thu, 1 Dec 2011 20:24:49 +0000 (12:24 -0800)]
Initialize the vC field of inlined getters/setters.

To eliminate a benign Valgrind warning.

Change-Id: I5f0ae53b8c86fe476f0b7ddfb6589191aea464f6

12 years agoInitialize the JNI indirect ref table to make Valgrind happy.
Ben Cheng [Wed, 30 Nov 2011 18:43:09 +0000 (10:43 -0800)]
Initialize the JNI indirect ref table to make Valgrind happy.

Specifically, this is to eliminate the benign warning about the
'serial' field being uninitialized.

BUG: 5542417
Change-Id: I8550972e70db94f24c47c4e5dea0b59cc5840b48

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Thu, 10 Nov 2011 14:45:54 +0000 (06:45 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoDO NOT MERGE Further refinement of card table clear
Andy McFadden [Tue, 8 Nov 2011 00:57:54 +0000 (16:57 -0800)]
DO NOT MERGE Further refinement of card table clear

We're currently using memset() to clear cards out to the growth
limit, which on a device configured for 48MB/128MB process caps
means we're sitting on 384KB or 1MB of pages.  We can reduce that
substantially.

This change attempts to reduce the memset() length to the currently
active portion of the card table, based on the placement of objects
in the "live objects" bitmap.  This should avoid faulting in card
pages that we don't actually need.

This is suboptimal when parts of the card table are used briefly
and then ignored for a while.  An alternative implementation, which
uses madvise(DONTNEED) aggressively, is also included (#ifdefed out).

Bug 5567332

(cherry-pick from master)

Change-Id: I6b181de20a0c8b6307acaebbc5d6dac20422f25d

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Sun, 6 Nov 2011 14:45:27 +0000 (06:45 -0800)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoMerge "Don't pay for filename/line number lookup unless you need to." into ics-mr1
Elliott Hughes [Sat, 5 Nov 2011 00:22:17 +0000 (17:22 -0700)]
Merge "Don't pay for filename/line number lookup unless you need to." into ics-mr1

12 years agoMerge "Knock ::self() out of the ParseXml profile." into ics-mr1
Elliott Hughes [Sat, 5 Nov 2011 00:22:01 +0000 (17:22 -0700)]
Merge "Knock ::self() out of the ParseXml profile." into ics-mr1

12 years agoMerge "Reduce Dalvik card table overhead" into ics-mr1
Andy McFadden [Fri, 4 Nov 2011 23:46:14 +0000 (16:46 -0700)]
Merge "Reduce Dalvik card table overhead" into ics-mr1

12 years agoDon't decr profiling count without incr
Andy McFadden [Fri, 4 Nov 2011 22:58:37 +0000 (15:58 -0700)]
Don't decr profiling count without incr

The failure cleanup code in dvmMethodTraceStart() was assuming
that profiling had already been started, which was true until my
previous change.  The code in the interpreter isn't too picky, but
updateActiveProfilers() is trying to keep an accurate acount, and
gets upset.  If you pass in a bad filename, we disable something that
was never enabled, and the VM gets confused and aborts out of spite.

Related to bug 5564440

Change-Id: I17fd8bf4654c29f49efb10142d222a91c190b6ed

12 years agoReduce Dalvik card table overhead
Andy McFadden [Fri, 4 Nov 2011 19:56:55 +0000 (12:56 -0700)]
Reduce Dalvik card table overhead

The VM has a "growth limit" (e.g. 48MB) that is used to cap normal
apps, and a "max heap" (e.g. 128MB) that is used for apps with unusual
high-memory requirements.  The Dalvik GC uses a 128:1 "card table"
that spans the entire managed heap, out to the "max heap" limit.

The table is erased during every concurrent GC.  The first time
we do that post-zygote, the copy-on-write behavior causes physical
pages to be allocated.  We're currently clearing out to the heap max,
not the growth limit, which means we have a bunch of physical memory
allocated for pages that will never be used.

This changes it so we only clear out to the growth limit.  If the
growth limit is removed by the app, we clear out to the heap max.
On devices with a 128MB max heap, this reduces the private/dirty
usage for most apps by 640KB.

Bug 5567332

Change-Id: Iac633017c128d63b284d48016e47d40cc46df1de

12 years agoDon't pay for filename/line number lookup unless you need to.
Elliott Hughes [Fri, 4 Nov 2011 01:17:19 +0000 (18:17 -0700)]
Don't pay for filename/line number lookup unless you need to.

This wasn't a regression; the code's always been like this. But this shows up
in profiles of anything doing a lot of synchronized stuff, even when there's
no contention.

There are two awkward cases. One is that the old code used to offer a variety
of special-case messages for failures to find the current frame, save area,
and Method*. I assume this was just to help in debugging and shouldn't happen
in practice, so I don't think we've lost anything there. The other case was
that on unlocking, we used to explicitly say "unlocked". But I'm not sure we
could get into a situation where we'd be reporting contention on a monitor
that wasn't locked when we tried to lock it. So I think that's okay too.

Change-Id: Ib4401c771f717e9c8cc9c4e5346ec7a5f46a1636

12 years agoKnock ::self() out of the ParseXml profile.
Elliott Hughes [Thu, 3 Nov 2011 21:07:24 +0000 (14:07 -0700)]
Knock ::self() out of the ParseXml profile.

New profile (>=0.6, which is where the original seems to have cut off):

47       11.0070  dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)
30        7.0258  dvmChangeStatus(Thread*, ThreadStatus)
29        6.7916  addLocalReference(Thread*, Object*)
26        6.0890  dexDecodeDebugInfo(DexFile const*, DexCode const*, char const*, unsigned int, unsigned int, int (*)(void*, unsigned int, unsigned int), void (*)(void*, unsigned short, unsigned int, unsigned int, char const*, char const*, char const*), void*)
22        5.1522  dalvik_inst
15        3.5129  lockMonitor(Thread*, Monitor*)
14        3.2787  dvmLineNumFromPC
13        3.0445  javaLangString_equals(unsigned int, unsigned int, unsigned int, unsigned int, JValue*)
13        3.0445  scanObject(Object const*, GcMarkContext*)
12        2.8103  ScopedJniThreadState::ScopedJniThreadState(_JNIEnv*)
12        2.8103  common_invokeMethodNoRange
12        2.8103  dvmDecodeIndirectRef(Thread*, _jobject*)
9         2.1077  IndirectRefTable::add(unsigned int, Object*)
9         2.1077  ReleasePrimitiveArrayCritical(_JNIEnv*, _jarray*, void*, int)
9         2.1077  markObjectNonNull(Object const*, GcMarkContext*, bool)
9         2.1077  unpinPrimitiveArray(ArrayObject*)
8         1.8735  getCodeAddrCommon(unsigned short const*, bool)
7         1.6393  dexStringByTypeIdx(DexFile const*, unsigned int)
7         1.6393  dvmHeapSourceAlloc(unsigned int)
6         1.4052  GetPrimitiveArrayCritical(_JNIEnv*, _jarray*, unsigned char*)
6         1.4052  dvmPlatformInvoke
6         1.4052  pinPrimitiveArray(ArrayObject*)
6         1.4052  readUnsignedLeb128(unsigned char const**)
6         1.4052  scanFields(Object const*, GcMarkContext*)
5         1.1710  IndirectRefTable::get(void*) const
5         1.1710  dvmFindInReferenceTable(ReferenceTable const*, Object**, Object*)
4         0.9368  common_returnFromMethod
4         0.9368  dvmAddToReferenceTable(ReferenceTable*, Object*)
4         0.9368  dvmHeapBitmapScanWalk(HeapBitmap*, void (*)(Object*, void*, void*), void*)
4         0.9368  dvmInterpret(Thread*, Method const*, JValue*)
4         0.9368  dvmLockObject
4         0.9368  dvmMalloc(unsigned int, int)
4         0.9368  findPackedSwitchIndex(unsigned short const*, int, int)
4         0.9368  readStringIdx(DexFile const*, unsigned char const**)
4         0.9368  unlockMonitor(Thread*, Monitor*)
3         0.7026  dvmSetFinalizable

Change-Id: Ic5c36859f6810413bd0b48aad1d99da7daa6e8ba

12 years agoStart profiling after state prep
Andy McFadden [Thu, 3 Nov 2011 21:13:24 +0000 (14:13 -0700)]
Start profiling after state prep

The updateActiveProfilers() call was happening before the profiler
state setup was completed, creating a race that could lead to a
native crash.

Bug 5564440

Change-Id: I8c030fc87f106aa8b2a67876d604a5bd79e05175

12 years agoMerge "DO NOT MERGE: Optimize IndirectRefTable." into ics-mr1
Elliott Hughes [Thu, 3 Nov 2011 17:59:19 +0000 (10:59 -0700)]
Merge "DO NOT MERGE: Optimize IndirectRefTable." into ics-mr1

12 years agoDon't malloc between fork and exec
Andy McFadden [Wed, 2 Nov 2011 22:26:39 +0000 (15:26 -0700)]
Don't malloc between fork and exec

This was causing hangs in DEX file loading.

Bug 5329833

Change-Id: I19e9e0624f3823cc771c71a4b4ac177d57343c58

12 years agomerge in ics-mr1-release history after reset to ics-mr1
The Android Automerger [Wed, 2 Nov 2011 13:45:25 +0000 (06:45 -0700)]
merge in ics-mr1-release history after reset to ics-mr1

12 years agoam 3931f798: Fix cleanup (cherry-picked from ics-mr1)
Andy McFadden [Tue, 1 Nov 2011 23:34:39 +0000 (23:34 +0000)]
am 3931f798: Fix cleanup (cherry-picked from ics-mr1)

* commit '3931f79801b67577bf8ac12d0b3fb5b4aeaaf766':
  Fix cleanup (cherry-picked from ics-mr1)

12 years agoFix cleanup
Andy McFadden [Tue, 1 Nov 2011 18:04:46 +0000 (11:04 -0700)]
Fix cleanup
(cherry-picked from ics-mr1)

The code was attempting to null out a struct member after freeing
the struct.

Also, changed the order of directory permission tests so that
writable comes first.  Somehow "dalvik-cache directory not
writable" seems more direct than "not readable", since the code
isn't generally interested in reading the directory.

Bug 5549907

Change-Id: If737ab822b356aae98e47292d21946e33a04342b

12 years agoam e3d9cde4: Disable JIT single-stepping resume mode.
Ben Cheng [Tue, 1 Nov 2011 22:05:11 +0000 (22:05 +0000)]
am e3d9cde4: Disable JIT single-stepping resume mode.

* commit 'e3d9cde40f96bf40dd4ad3d495949869bde5dd1e':
  Disable JIT single-stepping resume mode.

12 years agoDisable JIT single-stepping resume mode.
Ben Cheng [Tue, 1 Nov 2011 20:53:39 +0000 (13:53 -0700)]
Disable JIT single-stepping resume mode.

BUG: 5551114
Change-Id: Id8ee75be5e71ee258994235952871ad181024e56

12 years agoFix cleanup
Andy McFadden [Tue, 1 Nov 2011 18:04:46 +0000 (11:04 -0700)]
Fix cleanup

The code was attempting to null out a struct member after freeing
the struct.

Also, changed the order of directory permission tests so that
writable comes first.  Somehow "dalvik-cache directory not
writable" seems more direct than "not readable", since the code
isn't generally interested in reading the directory.

Bug 5549907

Change-Id: Ie412ff6c0870357b92e53606f70cb9407e04e7cf

12 years agoDO NOT MERGE: Optimize IndirectRefTable.
Jeff Brown [Thu, 27 Oct 2011 00:04:54 +0000 (17:04 -0700)]
DO NOT MERGE: Optimize IndirectRefTable.

Removed unused debugging code that maintained pointers to the
4 previous objects in each slot.

Promoted the serial number property of a slot to be first class.
This is a sufficiently cheap and useful check to perform that we
might as well always do it.

Changed get() and remove() so they check the validity of the
references at the same time as they retrieve them.  They're
also a bit smarter about checking the reference kind given
that they can assume that the table will only contain references
of one kind.  The checks are now much more consistent.
For example, remove() used to check whether an index was
stale only in the case where it was not removing the top entry
(now it always checks).

Made add() return NULL instead of dvmAbort()'ing in the case
where the table overflowed and ensure we don't blow away the
table in that cases.  This change resolves an issue with
TestIndirectRefTable.cpp which deliberately overflows the table
and expects add() to return NULL (as documented!).  As it
happens, the add() method is called in exactly 3 places in
Jni.cpp.  In each of those cases, the code was written to
handle a NULL result and only in the case of adding a weak
global reference did it not abort.  Fixed the weak global
reference case to be consistent with the others.

Changed the signature of contains() to take an Object* since
that's what we're actually looking for inside the table.

Added a couple of calls to dump() in TestIndirectRefTable.cpp
for visual inspection of its correctness.

Performance as measured by TestIndirectRefTable on same hardware.

Old implementation:
- Add/remove 100 objects FIFO order, 100000 iterations, 0.023ms / iteration
- Add/remove 100 objects LIFO order, 100000 iterations, 0.020ms / iteration
- Get 100 objects, 100000 iterations, 0.009ms / iteration

New implementation:
- Add/remove 100 objects FIFO order, 100000 iterations, 0.010ms / iteration
- Add/remove 100 objects LIFO order, 100000 iterations, 0.009ms / iteration
- Get 100 objects, 100000 iterations, 0.002ms / iteration

Cherry-pick from master.

Conflicts:

vm/IndirectRefTable.cpp

Change-Id: I157f3c1ba598137222878b8e6a5890efb744fe76

12 years agoFix single-stepping resume mode in the interpreter.
Ben Cheng [Thu, 27 Oct 2011 21:04:12 +0000 (14:04 -0700)]
Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I39db1633dcda1f464311c878ded4b5695a9b7ffd

12 years agoam b1e2271b: Fix single-stepping resume mode in the interpreter.
Ben Cheng [Fri, 28 Oct 2011 20:12:05 +0000 (20:12 +0000)]
am b1e2271b: Fix single-stepping resume mode in the interpreter.

* commit 'b1e2271b51cfb1f264b8966f1151652767259751':
  Fix single-stepping resume mode in the interpreter.

12 years agoFix single-stepping resume mode in the interpreter.
Ben Cheng [Thu, 27 Oct 2011 21:04:12 +0000 (14:04 -0700)]
Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I39db1633dcda1f464311c878ded4b5695a9b7ffd

12 years agoFix single-stepping resume mode in the interpreter.
Ben Cheng [Thu, 27 Oct 2011 21:04:12 +0000 (14:04 -0700)]
Fix single-stepping resume mode in the interpreter.

(cherry-picked from master)

When a resume attempt is cancelled due to other pending request make sure
the old native resume PC is cleared. Otherwise the JIT code cache may be
re-entered with mismatching Dalvik PC.

Also fix a code bloat problem where single-step count is not set properly
after executing a return instruction.

BUG: 5208786

Change-Id: I54775215b11eae29ccdb6111dc0fdfa99e41e08d

12 years agomerge in ics-release history after reset to master
The Android Automerger [Thu, 20 Oct 2011 13:59:36 +0000 (06:59 -0700)]
merge in ics-release history after reset to master

12 years agoMerge "Provide debugging info should extended opcode lookup fail."
Jesse Wilson [Wed, 19 Oct 2011 20:26:19 +0000 (13:26 -0700)]
Merge "Provide debugging info should extended opcode lookup fail."

12 years agoProvide debugging info should extended opcode lookup fail.
Jesse Wilson [Wed, 19 Oct 2011 15:02:51 +0000 (11:02 -0400)]
Provide debugging info should extended opcode lookup fail.

Bug: http://code.google.com/p/android/issues/detail?id=20814
Change-Id: Iedaf07721c29dd3d24827c3f7a953b7371c9735d