OSDN Git Service

android-x86/dalvik.git
12 years agoRename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE
Steve Block [Wed, 4 Jan 2012 20:04:51 +0000 (20:04 +0000)]
Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE

See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ic558031c75b3702d90eb78bd730501ae5d3c077b

12 years agoRemove unsupported experimental opcodes.
Elliott Hughes [Wed, 4 Jan 2012 23:38:58 +0000 (15:38 -0800)]
Remove unsupported experimental opcodes.

External developers were starting to try to get themselves into trouble with
this stuff...

Change-Id: I2b03bfeaa8c98b6a994bc7924fc8dcf4e4d4f6cb

12 years agoMerge "Remove dexmaker code from dx."
Jesse Wilson [Thu, 5 Jan 2012 16:29:24 +0000 (08:29 -0800)]
Merge "Remove dexmaker code from dx."

12 years agoRemove dexmaker code from dx.
Jesse Wilson [Wed, 4 Jan 2012 16:41:54 +0000 (11:41 -0500)]
Remove dexmaker code from dx.

This now lives as a standalone project:
http://code.google.com/p/dexmaker/

Change-Id: I4f7abff9399d6827082c9af78a015562fdbcdbb3

12 years agoRename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE
Steve Block [Tue, 20 Dec 2011 16:22:13 +0000 (16:22 +0000)]
Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: Ic663376d1ad6a6cb14bf81405ad9afd247cf2f60

12 years agoIntroduces ProxyBuilder and tests.
Hugo Hudson [Fri, 16 Dec 2011 18:06:39 +0000 (18:06 +0000)]
Introduces ProxyBuilder and tests.

- ProxyBuilder is to concrete classes what java.lang.reflect.Proxy is to
  interfaces.
- Uses a builder pattern to make specifying of the various (optional)
  parameters easier.
- Creates a concrete subclass of the supplied input class whose
  implementation delegates to the given invocation handler.
- Also provides a fix for the Code#loadConstant method to allow loading
  null values.

Change-Id: I3ca6a98b91c64466df03120bc85f095365250aca

12 years agoMerge "DexGenerator: allow specifying dex cache dir."
Hugo Hudson [Fri, 16 Dec 2011 16:31:49 +0000 (08:31 -0800)]
Merge "DexGenerator: allow specifying dex cache dir."

12 years agoDexGenerator: allow specifying dex cache dir.
Hugo Hudson [Wed, 30 Nov 2011 12:12:51 +0000 (12:12 +0000)]
DexGenerator: allow specifying dex cache dir.

- Switches DexGenerator to not use extended opcodes.  This allows us to
  write suitable files for earlier versions of Android.
- Allows caller to specify optimised dex directory.  This allows us to
  get around /data/dalvik-cache not being world-writeable.
- Allows caller to specify optimised dex files cache dir.  This allows
  us to skip the requirement of being able to write to /sdcard.

Change-Id: I2cae2e187ccf5b20b98763cb7eb791383a7d5a59

12 years agoDexOptions should default targetApiLevel to API_NO_EXTENDED_OPCODES
Brian Carlstrom [Mon, 12 Dec 2011 22:35:59 +0000 (14:35 -0800)]
DexOptions should default targetApiLevel to API_NO_EXTENDED_OPCODES

Bug: 5738782

(cherry picked from commit b14b69728337cf5808eed4d5652fb9d5be33dff0)

Change-Id: I51991c85c74b41fa51556b369a3724ba9dd0c090

12 years agoMerge "Don't throw an AssertionError on invalid input."
Jesse Wilson [Tue, 13 Dec 2011 21:49:50 +0000 (13:49 -0800)]
Merge "Don't throw an AssertionError on invalid input."

12 years agoDon't throw an AssertionError on invalid input.
Jesse Wilson [Tue, 13 Dec 2011 21:42:38 +0000 (16:42 -0500)]
Don't throw an AssertionError on invalid input.

Throwing an AssertionError prevents tools like FindUsages from
recovering.

Bug: http://b/5470168
Change-Id: I6ae99bd29e25f868a739548266cedf85d0b26e90

12 years agoMerge "Remove dx's copy of JUnit."
Jesse Wilson [Mon, 12 Dec 2011 20:34:56 +0000 (12:34 -0800)]
Merge "Remove dx's copy of JUnit."

12 years agoam 2ca72c70: Reconcile with ics-mr1-release
The Android Open Source Project [Fri, 9 Dec 2011 22:57:35 +0000 (14:57 -0800)]
am 2ca72c70: Reconcile with ics-mr1-release

* commit '2ca72c704e7462c56f8c4489369b618872b595a0':

12 years agoRemove dx's copy of JUnit.
Jesse Wilson [Fri, 9 Dec 2011 19:33:21 +0000 (14:33 -0500)]
Remove dx's copy of JUnit.

Instead, use JUnit the same way other code uses JUnit: by depending
on the copy in external. There is no longer a top-level option in
dx to run JUnit tests on itself.

There are two failing tests in dx/junit-tests. Both of these are in
the recently created DexGeneratorTest; I intend to fix these in another
change.

Bug: http://b/2286423
Change-Id: I3a173a0302c7ccc81be3b5a2a4d766000d1c242b

12 years agoAdmit to not supporting over 65,536 methods.
Jesse Wilson [Fri, 9 Dec 2011 17:35:55 +0000 (12:35 -0500)]
Admit to not supporting over 65,536 methods.

This was previously a work in progress, but that work wasn't
completed and the test shouldn't assume the work is complete.

Bug: http://code.google.com/p/android/issues/detail?id=22545

Change-Id: I44a9532d96ab548283278ca3218773ea449f8318

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 agoReconcile with ics-mr1-release
The Android Open Source Project [Fri, 2 Dec 2011 15:52:58 +0000 (07:52 -0800)]
Reconcile with ics-mr1-release

Change-Id: I63967a8c63fb1d2f5af167b3a23c848829b01938

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 agoam a18e6d13: Initialize the vC field of inlined getters/setters.
Ben Cheng [Thu, 1 Dec 2011 21:05:12 +0000 (13:05 -0800)]
am a18e6d13: Initialize the vC field of inlined getters/setters.

* commit 'a18e6d135a869f9c62f9ec8bac8b9e78d92c697f':
  Initialize the vC field of inlined getters/setters.

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 agoam ee155d4f: Initialize the JNI indirect ref table to make Valgrind happy.
Ben Cheng [Thu, 1 Dec 2011 17:44:23 +0000 (09:44 -0800)]
am ee155d4f: Initialize the JNI indirect ref table to make Valgrind happy.

* commit 'ee155d4fe47fa751262beb43437a339fde8eabe5':
  Initialize the JNI indirect ref table to make Valgrind happy.

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 agoUse libcorkscrew to format the stack trace.
Jeff Brown [Tue, 22 Nov 2011 05:03:37 +0000 (21:03 -0800)]
Use libcorkscrew to format the stack trace.

Change-Id: I06ddbb7a8035971b6e1a164adcd00208fae89b1a

12 years agoFix DexMerger to emit dex files without extended op codes.
Jesse Wilson [Fri, 18 Nov 2011 19:44:23 +0000 (14:44 -0500)]
Fix DexMerger to emit dex files without extended op codes.

Certain tools in our tool chain don't like these.

Change-Id: Iaaff85c1b634f647d0105c36f403b2e03aaf0ca7

12 years agoBe humane when there are more methods or fields than Dalvik can handle.
Jesse Wilson [Thu, 17 Nov 2011 21:56:51 +0000 (16:56 -0500)]
Be humane when there are more methods or fields than Dalvik can handle.

Previously our errors would look like this:
  trouble writing output: opcode == null
Or this:
  trouble writing output: No expanded opcode for 7f9c1af3

Now our errors look like this:
  trouble writing output: Too many methods: 86922; max is 65536

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

Change-Id: I2d9dc55e188a6ac1661b74af2194b18019859a29

12 years agoCan't set variable to null with loadConstant.
Hugo Hudson [Thu, 17 Nov 2011 16:06:36 +0000 (16:06 +0000)]
Can't set variable to null with loadConstant.

Change-Id: I9349507b8af2b59e03f7542b7589f2dbcdb77711

12 years agoThis test fails with a class not found error.
Hugo Hudson [Thu, 17 Nov 2011 15:58:44 +0000 (15:58 +0000)]
This test fails with a class not found error.

Change-Id: I7a98cbc30d32a0f19fa3892b58775ba10536c6aa

12 years agoReconcile with ics-mr1-release
The Android Open Source Project [Thu, 10 Nov 2011 22:35:21 +0000 (14:35 -0800)]
Reconcile with ics-mr1-release

Change-Id: I63807d2f883382fa765e5eefe7fd17ac3cbcbe67

12 years agoam cab0fdf8: (-s ours) DO NOT MERGE Further refinement of card table clear
Andy McFadden [Thu, 10 Nov 2011 19:39:09 +0000 (19:39 +0000)]
am cab0fdf8: (-s ours) DO NOT MERGE Further refinement of card table clear

* commit 'cab0fdf82a668e2a1a054cd6506835046218e419':
  DO NOT MERGE Further refinement of card table clear

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 agoFurther refinement of card table clear
Andy McFadden [Tue, 8 Nov 2011 00:57:54 +0000 (16:57 -0800)]
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

Change-Id: I7663ae7d15d0aaa8158deed5e331bf05333da6bb

12 years agoMerge "Fix reporting of initial pause time"
Andy McFadden [Tue, 8 Nov 2011 17:33:53 +0000 (09:33 -0800)]
Merge "Fix reporting of initial pause time"

12 years agoFix reporting of initial pause time
Andy McFadden [Tue, 8 Nov 2011 00:20:51 +0000 (16:20 -0800)]
Fix reporting of initial pause time

The "rootEnd" time was being captured before dvmClearCardTable()
was called.

Bug 5567332

Change-Id: I5499f1648c3e41296c18fa5d95d834c2d2853e8f

12 years agoReconcile with ics-mr1-release
The Android Open Source Project [Mon, 7 Nov 2011 16:30:42 +0000 (08:30 -0800)]
Reconcile with ics-mr1-release

Change-Id: I91ffc584e0d2d39aaec9b28ac3cde8b625234968

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 agoam 6cd72bd0: Merge "Don\'t pay for filename/line number lookup unless you need to...
Elliott Hughes [Sat, 5 Nov 2011 19:33:54 +0000 (19:33 +0000)]
am 6cd72bd0: Merge "Don\'t pay for filename/line number lookup unless you need to." into ics-mr1

* commit '6cd72bd0161459e21d496b927967bd0ca6fe0f94':
  Don't pay for filename/line number lookup unless you need to.

12 years agoam 50e01501: Merge "Knock ::self() out of the ParseXml profile." into ics-mr1
Elliott Hughes [Sat, 5 Nov 2011 19:33:53 +0000 (19:33 +0000)]
am 50e01501: Merge "Knock ::self() out of the ParseXml profile." into ics-mr1

* commit '50e015017f091118f0147d02d23140ff9f88daec':
  Knock ::self() out of the ParseXml profile.

12 years agoam 4c83f214: Merge "Reduce Dalvik card table overhead" into ics-mr1
Andy McFadden [Sat, 5 Nov 2011 19:33:51 +0000 (19:33 +0000)]
am 4c83f214: Merge "Reduce Dalvik card table overhead" into ics-mr1

* commit '4c83f214932af008cf79aee528ca3f9e66572040':
  Reduce Dalvik card table overhead

12 years agoam ccf4c9d9: Don\'t decr profiling count without incr
Andy McFadden [Sat, 5 Nov 2011 19:33:50 +0000 (19:33 +0000)]
am ccf4c9d9: Don\'t decr profiling count without incr

* commit 'ccf4c9d99fcffbc9bf65066004896745b9dcc340':
  Don't decr profiling count without incr

12 years agoMerge "Slight change to unwinder API."
Jeff Brown [Sat, 5 Nov 2011 03:06:58 +0000 (20:06 -0700)]
Merge "Slight change to unwinder API."

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 agoReconcile with ics-mr1-release
The Android Open Source Project [Fri, 4 Nov 2011 15:31:11 +0000 (08:31 -0700)]
Reconcile with ics-mr1-release

Change-Id: Ibae283408ede0f3ff5a297e8d205e976455f3b95

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 agoSlight change to unwinder API.
Jeff Brown [Fri, 4 Nov 2011 00:30:07 +0000 (17:30 -0700)]
Slight change to unwinder API.

Change-Id: If73f01fff9fb56ce9cba70a386d865957eaebe78

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 agoam ab97cd16: Start profiling after state prep
Andy McFadden [Thu, 3 Nov 2011 22:59:13 +0000 (22:59 +0000)]
am ab97cd16: Start profiling after state prep

* commit 'ab97cd1634ed4e2c9e5c558a9f88ed9ca8623c8c':
  Start profiling after state prep

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 "hprof-conv: Better error message when run on a 1.0.2 file."
Siva Velusamy [Thu, 3 Nov 2011 20:54:35 +0000 (13:54 -0700)]
Merge "hprof-conv: Better error message when run on a 1.0.2 file."

12 years agohprof-conv: Better error message when run on a 1.0.2 file.
Siva Velusamy [Thu, 3 Nov 2011 20:34:29 +0000 (13:34 -0700)]
hprof-conv: Better error message when run on a 1.0.2 file.

Change-Id: I36b14aadc11f6ba8a66543546043280da64e7605

12 years agoMerge "Disable dumping native stacks of non-Dalvik threads. Bug: 5544153"
Jeff Brown [Thu, 3 Nov 2011 18:05:50 +0000 (11:05 -0700)]
Merge "Disable dumping native stacks of non-Dalvik threads. Bug: 5544153"

12 years agoam c4102d66: (-s ours) Merge "DO NOT MERGE: Optimize IndirectRefTable." into ics-mr1
Elliott Hughes [Thu, 3 Nov 2011 18:02:24 +0000 (18:02 +0000)]
am c4102d66: (-s ours) Merge "DO NOT MERGE: Optimize IndirectRefTable." into ics-mr1

* commit 'c4102d6647043591bd89bba75454cc04d23753bd':
  DO NOT MERGE: Optimize IndirectRefTable.

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 agoam 63cd4b08: Don\'t malloc between fork and exec
Andy McFadden [Thu, 3 Nov 2011 14:44:40 +0000 (14:44 +0000)]
am 63cd4b08: Don\'t malloc between fork and exec

* commit '63cd4b08e623242066c63563bad3a9f414a2bd2d':
  Don't malloc between fork and exec

12 years agoDisable dumping native stacks of non-Dalvik threads.
Jeff Brown [Thu, 3 Nov 2011 10:51:01 +0000 (03:51 -0700)]
Disable dumping native stacks of non-Dalvik threads.
Bug: 5544153

We are seeing cases where dumping certain non-Dalvik threads
causes system instability.  Temporarily disable this feature.

Change-Id: I14d7907a90f152bcb15d066f8bd3fdedc578e722

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 agoam 5269ef7b: am 3931f798: Fix cleanup (cherry-picked from ics-mr1)
Andy McFadden [Wed, 2 Nov 2011 17:31:49 +0000 (17:31 +0000)]
am 5269ef7b: am 3931f798: Fix cleanup (cherry-picked from ics-mr1)

* commit '5269ef7b87c6aa89d86e73f438363661f2f65a04':
  Fix cleanup (cherry-picked from ics-mr1)

12 years agoam f51d43f0: am e3d9cde4: Disable JIT single-stepping resume mode.
Ben Cheng [Wed, 2 Nov 2011 17:31:44 +0000 (17:31 +0000)]
am f51d43f0: am e3d9cde4: Disable JIT single-stepping resume mode.

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

12 years agoam a78b1255: Fix cleanup
Andy McFadden [Wed, 2 Nov 2011 17:30:36 +0000 (17:30 +0000)]
am a78b1255: Fix cleanup

* commit 'a78b1255ad1ce8dcacad21338d4f88db4231c4cd':
  Fix cleanup

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 agoReconcile with ics-mr1-release
The Android Open Source Project [Mon, 31 Oct 2011 20:19:07 +0000 (13:19 -0700)]
Reconcile with ics-mr1-release

Change-Id: Iaa5f9ff52792e1eff28cf9591a5efca18ac165e3

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 f4948cc1: am b1e2271b: Fix single-stepping resume mode in the interpreter.
Ben Cheng [Fri, 28 Oct 2011 22:27:49 +0000 (22:27 +0000)]
am f4948cc1: am b1e2271b: Fix single-stepping resume mode in the interpreter.

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

12 years agoam 8faec7e7: Fix single-stepping resume mode in the interpreter.
Ben Cheng [Fri, 28 Oct 2011 22:27:48 +0000 (22:27 +0000)]
am 8faec7e7: Fix single-stepping resume mode in the interpreter.

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

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 "Fix single-stepping resume mode in the interpreter."
Ben Cheng [Fri, 28 Oct 2011 01:42:33 +0000 (18:42 -0700)]
Merge "Fix single-stepping resume mode in the interpreter."

12 years agoDump stacks for all native threads, not just those in JNI.
Jeff Brown [Thu, 27 Oct 2011 20:05:45 +0000 (13:05 -0700)]
Dump stacks for all native threads, not just those in JNI.

Change-Id: I276f5f448f22f8a926cdfc8c93935da687db5d9b

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.

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.

Change-Id: Ia926bc3a87cae1296719a1069838060b181ce54d

12 years agoOptimize IndirectRefTable.
Jeff Brown [Thu, 27 Oct 2011 00:04:54 +0000 (17:04 -0700)]
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

Change-Id: I1c904eb03bc8dd9822e6d9cce702c696e976974e

12 years agoAdd a simple performance test for IndirectRefTable.
Jeff Brown [Thu, 27 Oct 2011 01:41:12 +0000 (18:41 -0700)]
Add a simple performance test for IndirectRefTable.

Change-Id: Ib75354508fff1921d8d73eba5e3a3905a362b1e1

12 years agoFix reference to non-existent function in debug code.
Jeff Brown [Wed, 26 Oct 2011 23:25:27 +0000 (16:25 -0700)]
Fix reference to non-existent function in debug code.

The generated interpreter code has some debugging code
that call dvmIsHeapAddressObject, which doesn't exist.
This causes the build to fails when we build Dalvik with
DEBUG_DALVIK_VM=true.  Use dvmIsHeapAddress instead.

Change-Id: Ifc5eeb4bd2ea6b45046c606b744b1a70a5e56dfc

12 years agoRename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGE
Steve Block [Thu, 20 Oct 2011 10:55:54 +0000 (11:55 +0100)]
Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/143865

Bug: 5449033
Change-Id: I8bd96961e369a08e86ff78b82d90f20f42787eb1

12 years agoRename (IF_)LOG() to (IF_)ALOG() DO NOT MERGE
Steve Block [Wed, 12 Oct 2011 16:24:48 +0000 (17:24 +0100)]
Rename (IF_)LOG() to (IF_)ALOG()  DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/141576

Bug: 5449033
Change-Id: Ie3bc0d5436218ea05f98cb0373ecf5924f78db05

12 years agoDump native stack of JNI methods when handling SIGQUIT.
Jeff Brown [Thu, 20 Oct 2011 03:32:03 +0000 (20:32 -0700)]
Dump native stack of JNI methods when handling SIGQUIT.

Change-Id: I7da7259f1350e853153ba4dea96797fc86284068

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

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

12 years agoAvoid deadlock.
Elliott Hughes [Fri, 14 Oct 2011 21:36:46 +0000 (14:36 -0700)]
Avoid deadlock.

dvmIsHeapAddress is the pointer validity checker for use outside the GC. If
it doesn't take the heap lock, it risks looking at data structures that are
changing under its feet. If it does take the heap lock, it risks deadlock
between a thread doing an explicit GC and the signal catcher trying to dump
threads (causing the GC thread to be suspended while holding the heap lock).

Calling back into managed code while holding the heap lock and with other
threads resumed sounds like an inherently bad idea to me, but that's a battle
for another day.

With this change, we can handle SIGQUIT while we're in ReferenceQueue.add
as a result of an explicit GC in a system doing concurrent collections, so
the only known problem is fixed.

Bug: 5425802
Change-Id: I42d434d5ea3ffbcb77a4c544b81b08a4c7364a16

12 years agomerge in ics-release history after reset to master
The Android Automerger [Tue, 11 Oct 2011 12:32:21 +0000 (05:32 -0700)]
merge in ics-release history after reset to master

12 years agoMerge "Leave up to 512 chars of gDvm.lastMessage on dvmAbort's stack frame."
Ben Cheng [Mon, 10 Oct 2011 23:55:23 +0000 (16:55 -0700)]
Merge "Leave up to 512 chars of gDvm.lastMessage on dvmAbort's stack frame."

12 years agoLeave up to 512 chars of gDvm.lastMessage on dvmAbort's stack frame.
Ben Cheng [Mon, 10 Oct 2011 23:26:36 +0000 (16:26 -0700)]
Leave up to 512 chars of gDvm.lastMessage on dvmAbort's stack frame.

Bug: 5372634
Change-Id: I019a059e5a989de3dfc9e2f5e78f7caa7168cf75

12 years agoMerge "Reordered some checks and added more to the verifier."
jeffhao [Mon, 10 Oct 2011 21:51:45 +0000 (14:51 -0700)]
Merge "Reordered some checks and added more to the verifier."

12 years agoMerge "Revert "Use the card table to scan the immune region of the heap.""
Ben Cheng [Mon, 10 Oct 2011 21:08:17 +0000 (14:08 -0700)]
Merge "Revert "Use the card table to scan the immune region of the heap.""

12 years agoRevert "Use the card table to scan the immune region of the heap."
Ben Cheng [Mon, 10 Oct 2011 20:17:58 +0000 (13:17 -0700)]
Revert "Use the card table to scan the immune region of the heap."

This reverts commit 6c355e53332502314c3d82a7afcf898d66118f27.

Conflicts are resolved in:

vm/alloc/CardTable.cpp
vm/alloc/HeapBitmap.cpp
vm/alloc/HeapInternal.h
vm/alloc/HeapSource.cpp
vm/alloc/MarkSweep.cpp

Tested with overnight monkey runs + Delaunay.

Bug: 5037417
Change-Id: I400eff8542d0bddd865ce570a479f7750c1ba484

12 years agoMerge "Don't say UTF-8 in Dalvik's CheckJNI when we mean Modified UTF-8."
Elliott Hughes [Mon, 10 Oct 2011 18:17:13 +0000 (11:17 -0700)]
Merge "Don't say UTF-8 in Dalvik's CheckJNI when we mean Modified UTF-8."

12 years agoDon't say UTF-8 in Dalvik's CheckJNI when we mean Modified UTF-8.
Elliott Hughes [Fri, 7 Oct 2011 22:42:23 +0000 (15:42 -0700)]
Don't say UTF-8 in Dalvik's CheckJNI when we mean Modified UTF-8.

Change-Id: I4130e7f92275275a6d6f782e1ad979fbf9197a8e

12 years agoRevert "GC experiment."
The Android Automerger [Fri, 7 Oct 2011 00:32:54 +0000 (17:32 -0700)]
Revert "GC experiment."

This reverts commit b3fb1d08137ead7b6be016e1bc147cb781e76111.