OSDN Git Service

android-x86/dalvik.git
12 years agoam 4130f726: am 1dd1d924: am e4e76feb: Merge "Set DX stack size to 1M by default...
Raphael Moll [Tue, 30 Aug 2011 16:50:59 +0000 (09:50 -0700)]
am 4130f726: am 1dd1d924: am e4e76feb: Merge "Set DX stack size to 1M by default on Windows."

* commit '4130f726d82493748bf7252da631e1f315f2538c':
  Set DX stack size to 1M by default on Windows.

12 years agoam 1dd1d924: am e4e76feb: Merge "Set DX stack size to 1M by default on Windows."
Raphael Moll [Tue, 30 Aug 2011 01:01:08 +0000 (18:01 -0700)]
am 1dd1d924: am e4e76feb: Merge "Set DX stack size to 1M by default on Windows."

* commit '1dd1d9246c0804d1b4fda955c56a6d89c989ec6a':
  Set DX stack size to 1M by default on Windows.

12 years agoam e4e76feb: Merge "Set DX stack size to 1M by default on Windows."
Raphael Moll [Tue, 30 Aug 2011 00:58:08 +0000 (17:58 -0700)]
am e4e76feb: Merge "Set DX stack size to 1M by default on Windows."

* commit 'e4e76feb6aad0d0161fabe12cb7d97e665f7b109':
  Set DX stack size to 1M by default on Windows.

12 years agoMerge "Set DX stack size to 1M by default on Windows."
Raphael Moll [Fri, 26 Aug 2011 23:33:03 +0000 (16:33 -0700)]
Merge "Set DX stack size to 1M by default on Windows."

12 years agoSet DX stack size to 1M by default on Windows.
Raphael Moll [Fri, 26 Aug 2011 21:42:41 +0000 (14:42 -0700)]
Set DX stack size to 1M by default on Windows.

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

Summary of bug: some user reported issues running dx.bat and
Fadden figured out the VM's stack size default was too small.
Using -Xss1m fixed it.

This CL introduces a default of -Xss1m and the usual mechanism
to override it using -JXssNm (like for -JXmx...)

Change-Id: I9769316c1708f08c91b93e07bd6d713a10561ea2

12 years agoRemoved parsing and output for unused --target-api switch in dx.
jeffhao [Tue, 23 Aug 2011 21:19:35 +0000 (14:19 -0700)]
Removed parsing and output for unused --target-api switch in dx.

This is cherry-picked from dalvik-dev.

Change-Id: I74627e4c261e086e8c2c7cf38591cd3e9f5707e6

12 years agoMerge "Fix JNIEXPORT now people are using -fvisibility."
Elliott Hughes [Mon, 22 Aug 2011 17:50:41 +0000 (10:50 -0700)]
Merge "Fix JNIEXPORT now people are using -fvisibility."

12 years agoPermit code size to grow when merging dex files.
Jesse Wilson [Fri, 19 Aug 2011 20:21:33 +0000 (16:21 -0400)]
Permit code size to grow when merging dex files.

The throws clauses use variable-length encodings (sleb and uleb)
which will have different lengths when the number of types grows.

Bug: http://b/5127963
Change-Id: I50598a807596955e458d4ec87a730e62e12168d9

12 years agoFix JNIEXPORT now people are using -fvisibility.
Elliott Hughes [Fri, 19 Aug 2011 18:32:49 +0000 (11:32 -0700)]
Fix JNIEXPORT now people are using -fvisibility.

This is a backport from dalvik-dev.

Change-Id: If6001b580bd9b36f3845aaa115333d69682f3a92

12 years agoFix two data races in the monitor code.
Carl Shapiro [Tue, 2 Aug 2011 07:01:13 +0000 (00:01 -0700)]
Fix two data races in the monitor code.

First, the release of a lock was not preceded by a memory barrier.
This would allow stores within the critical section to move outside
the critical section violating the monitor invariant.

Second, the thin lock value was often not loaded through volatile
pointer.  This provides the compiler with the freedom to reload the
thin lock with a different value causing erroneous updates to the lock
word.

Bug: 5107390

12 years agoMerge "Dexopt verifier checks that int/float and double/long uses do not mix."
jeffhao [Mon, 15 Aug 2011 17:32:42 +0000 (10:32 -0700)]
Merge "Dexopt verifier checks that int/float and double/long uses do not mix."

12 years agoEnhance CheckJNI to recognize when an type-incompatible jfieldID is used to get/set...
Elliott Hughes [Sun, 14 Aug 2011 21:30:54 +0000 (14:30 -0700)]
Enhance CheckJNI to recognize when an type-incompatible jfieldID is used to get/set a field.

This would have found a bug that broke setSoTimeout in libcore, and did find
a hitherto-unknown bug in android.text.format.Time.

Bug: 5162851
Change-Id: I62f2a0db3adb1cd0e4616075f6d4efaee393de30

12 years agoDon't wrap the actual type in parens if its null.
Jesse Wilson [Sun, 14 Aug 2011 19:27:08 +0000 (15:27 -0400)]
Don't wrap the actual type in parens if its null.

Otherwise the exception message has unnecessary parens:
"expected receiver of type java.lang.String, but got (null)"

Change-Id: Iacd806d018019784afa6e9f25f7c039d9ca18fae

12 years agoDexopt verifier checks that int/float and double/long uses do not mix.
jeffhao [Wed, 10 Aug 2011 21:58:39 +0000 (14:58 -0700)]
Dexopt verifier checks that int/float and double/long uses do not mix.

Added new types to dexopt indicating a type is derived from a constant,
which may or may not be floating point. After such a value is used, its
type can be determined, and the verifier enforces that it is always used
that way afterwards.

Change-Id: I150deaa162aec17bcc9c3e3200bc0350ae5b3f24

12 years agoam be3942f2: (-s ours) am 3245c2e4: am 5017f3f2: Merge "Support wrapping app processe...
Jeff Brown [Wed, 10 Aug 2011 21:51:44 +0000 (14:51 -0700)]
am be3942f2: (-s ours) am 3245c2e4: am 5017f3f2: Merge "Support wrapping app processes to inject debug instrumentation. Bug: 4437846"

* commit 'be3942f2179d5f2270b757a792ed021eb2521b46':
  Support wrapping app processes to inject debug instrumentation. Bug: 4437846

12 years agoam 8ddfe8b4: (-s ours) am a0533621: am 9df264db: Merge "Add a dual clock profiler...
Jeff Brown [Wed, 10 Aug 2011 21:48:58 +0000 (14:48 -0700)]
am 8ddfe8b4: (-s ours) am a0533621: am 9df264db: Merge "Add a dual clock profiler tracing mode."

* commit '8ddfe8b44e0794a0c182046144af8c3c842686c2':
  Add a dual clock profiler tracing mode.

12 years agoam 3245c2e4: am 5017f3f2: Merge "Support wrapping app processes to inject debug instr...
Jeff Brown [Wed, 10 Aug 2011 20:58:01 +0000 (13:58 -0700)]
am 3245c2e4: am 5017f3f2: Merge "Support wrapping app processes to inject debug instrumentation. Bug: 4437846"

* commit '3245c2e4008b40e05db44ef7c897d0aa7b88c1d7':
  Support wrapping app processes to inject debug instrumentation. Bug: 4437846

12 years agoam a0533621: am 9df264db: Merge "Add a dual clock profiler tracing mode."
Jeff Brown [Wed, 10 Aug 2011 20:57:59 +0000 (13:57 -0700)]
am a0533621: am 9df264db: Merge "Add a dual clock profiler tracing mode."

* commit 'a05336218332abf2753c63a50ede7551afdab6b5':
  Add a dual clock profiler tracing mode.

12 years agoam 5017f3f2: Merge "Support wrapping app processes to inject debug instrumentation...
Jeff Brown [Wed, 10 Aug 2011 20:56:16 +0000 (13:56 -0700)]
am 5017f3f2: Merge "Support wrapping app processes to inject debug instrumentation. Bug: 4437846"

* commit '5017f3f2b7c178761b919f22c02617fe6fe9468d':
  Support wrapping app processes to inject debug instrumentation. Bug: 4437846

12 years agoam 9df264db: Merge "Add a dual clock profiler tracing mode."
Jeff Brown [Wed, 10 Aug 2011 20:56:15 +0000 (13:56 -0700)]
am 9df264db: Merge "Add a dual clock profiler tracing mode."

* commit '9df264db156d091f7c1de30295f4c5d330ca3694':
  Add a dual clock profiler tracing mode.

12 years agoMerge "Support wrapping app processes to inject debug instrumentation. Bug: 4437846"
Jeff Brown [Wed, 10 Aug 2011 20:41:31 +0000 (13:41 -0700)]
Merge "Support wrapping app processes to inject debug instrumentation. Bug: 4437846"

12 years agoMerge "Add a dual clock profiler tracing mode."
Jeff Brown [Wed, 10 Aug 2011 20:41:26 +0000 (13:41 -0700)]
Merge "Add a dual clock profiler tracing mode."

12 years agoTake the heap lock in dvmIsHeapAddress.
Elliott Hughes [Wed, 10 Aug 2011 18:04:41 +0000 (11:04 -0700)]
Take the heap lock in dvmIsHeapAddress.

Bug: 5049447
Change-Id: I9df6e4116efa44088d37ac0ff4455a7876535e1e

12 years agoReconcile with honeycomb-mr2-release
The Android Open Source Project [Tue, 2 Aug 2011 14:33:42 +0000 (07:33 -0700)]
Reconcile with honeycomb-mr2-release

Change-Id: I67bdc33aeb248a10c08e1a9bbc1938101304f29d

12 years agoRollback of dx change to prevent methods from being overwritten.
jeffhao [Tue, 2 Aug 2011 01:08:39 +0000 (18:08 -0700)]
Rollback of dx change to prevent methods from being overwritten.

Rolls back: I999013858501e7de3df27f82199d377fb1d034ea

Change-Id: Id67611b0153d49a81a2fbe0aaa8a7c9a9784987c

12 years agoDx fit to prevent method arguments from being overwritten by temps.
jeffhao [Mon, 1 Aug 2011 22:35:05 +0000 (15:35 -0700)]
Dx fit to prevent method arguments from being overwritten by temps.

This change keeps code debuggable by preventing method arguments from
being reused to hold temporary values. This was a problem especially for
static methods.

Change-Id: I999013858501e7de3df27f82199d377fb1d034ea

12 years agoSupport wrapping app processes to inject debug instrumentation.
Jeff Brown [Wed, 27 Jul 2011 23:48:54 +0000 (16:48 -0700)]
Support wrapping app processes to inject debug instrumentation.
Bug: 4437846

12 years agoRemove "adbd disconnected" log spam
Mike Lockwood [Wed, 27 Jul 2011 13:42:57 +0000 (09:42 -0400)]
Remove "adbd disconnected" log spam

Change-Id: I532433a5ee3f23bad8dc5fdb0f398253f2b6eb8b
Signed-off-by: Mike Lockwood <lockwood@android.com>
12 years agoOnly allocate slot_data_ as needed.
Elliott Hughes [Wed, 20 Jul 2011 23:41:37 +0000 (16:41 -0700)]
Only allocate slot_data_ as needed.

Bug: 5052119
Change-Id: I41434b111c1f91cf1beb3125af6e81cab258cb92

12 years agoMerge "Don't use dvmIsValidObject outside the GC."
Elliott Hughes [Wed, 20 Jul 2011 20:58:22 +0000 (13:58 -0700)]
Merge "Don't use dvmIsValidObject outside the GC."

12 years agoFix memory leak in mapCentralDirectory.
Jeff Brown [Wed, 20 Jul 2011 03:28:02 +0000 (20:28 -0700)]
Fix memory leak in mapCentralDirectory.
Bug: 4984352

mapCentralDirectory was allocating a buffer of size 65557
that it passed to mapCentralDirectory0.  Then mapCentralDirectory0
was reallocating a new buffer which it failed to free.

This patch rearranges the code a little to ensure that only
buffer gets allocated and it gets freed.

Change-Id: I3b22e2b904f6e7584ab8a3af49c8f1350a40be87

12 years agoAdd a dual clock profiler tracing mode.
Jeff Brown [Wed, 20 Jul 2011 02:01:05 +0000 (19:01 -0700)]
Add a dual clock profiler tracing mode.

Dalvik previously supported using either the thread-cpu clock
or the real time clock as the timebase for profiler traces.
This change adds a dual clock mode where both thread-cpu time
and real time timestamps are collected.

Using dual clock mode significantly improves TraceView ability
to accurately reconstruct the global timeline of events,
particularly on SMP systems.

For now, thread-cpu mode remains the default.

Dual clock mode can be enabled by running the following command
and restarting the system server.
   adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock

Change-Id: I14db2ae93325ac01efcc8ed02e8747cc0e834e29

12 years agoTrim the heap when idle after concurrent GC's.
Jeff Brown [Wed, 20 Jul 2011 00:56:14 +0000 (17:56 -0700)]
Trim the heap when idle after concurrent GC's.
Bug: 4984352

When applied system-wide, trimming the heap can help recover
multiple megabytes worth of pages that are no longer used.
This is especially useful for applications that periodically
allocate large objects during initialization that they then
discard when running in the background.

Change-Id: Iafffd65a70ae62022f0c74f836a84a7afbe23c3c

12 years agoDon't use dvmIsValidObject outside the GC.
Elliott Hughes [Wed, 20 Jul 2011 00:53:51 +0000 (17:53 -0700)]
Don't use dvmIsValidObject outside the GC.

Use dvmIsHeapPointer outside the GC. (This still isn't safe because there's
no synchronization when dealing with the HeapSource.)

Bug: 5049447
Change-Id: Ie0b325ef0a92687ea1eaf1491a4bb832298893c5

12 years agoFix the sense of a conditional in the JNI compatibility mode.
Elliott Hughes [Mon, 18 Jul 2011 18:06:46 +0000 (11:06 -0700)]
Fix the sense of a conditional in the JNI compatibility mode.

Bug: 4772166
Bug: 5041646
Change-Id: I3fb517972920dd518ae1bbe9e3616cb28bb24d4c

12 years agoStop advertising the removed -Xdeadlockpredict option.
Elliott Hughes [Sun, 17 Jul 2011 21:34:56 +0000 (14:34 -0700)]
Stop advertising the removed -Xdeadlockpredict option.

Bug: 5038293
Change-Id: Ibb4ee3f68a1e3abababc09a51424c5d1c7b1ea0c

12 years agoresolved conflicts for merge of 72b7c617 to master
Raphael [Thu, 14 Jul 2011 03:09:57 +0000 (20:09 -0700)]
resolved conflicts for merge of 72b7c617 to master

Change-Id: I8c3a32d9ee0dea08cca79031cda870141aacdb17

12 years agoam 68e8f6c0: am 53015360: am 5a57e766: Merge "Change dx.bat to Windows EOL."
Raphael Moll [Wed, 13 Jul 2011 21:55:32 +0000 (14:55 -0700)]
am 68e8f6c0: am 53015360: am 5a57e766: Merge "Change dx.bat to Windows EOL."

* commit '68e8f6c07d1d875dab74f85dcfe0c0d7ac813e29':
  Change dx.bat to Windows EOL.

12 years agoam f54c7016: am c8d71801: resolved conflicts for merge of d0d351b2 to gingerbread...
David 'Digit' Turner [Wed, 13 Jul 2011 21:54:05 +0000 (14:54 -0700)]
am f54c7016: am c8d71801: resolved conflicts for merge of d0d351b2 to gingerbread-plus-aosp

* commit 'f54c7016261fefdf146137d50b63ca91ac21b80e':
  Only use O_BINARY if it is defined (windows compatibility)
  Update to allow x86-atom build for FI on Gingerbread
  Combined patch from master branch

12 years agoMerge "Tidying of the jweak fix."
Elliott Hughes [Tue, 12 Jul 2011 20:11:34 +0000 (13:11 -0700)]
Merge "Tidying of the jweak fix."

12 years agoMerge "Remove the simulator target from all makefiles. Bug: 5010576"
Jeff Brown [Tue, 12 Jul 2011 19:11:47 +0000 (12:11 -0700)]
Merge "Remove the simulator target from all makefiles. Bug: 5010576"

12 years agoTidying of the jweak fix.
Elliott Hughes [Tue, 12 Jul 2011 18:07:22 +0000 (11:07 -0700)]
Tidying of the jweak fix.

Bug: 4260055
Change-Id: I1fd56f6c0ea1e2a7245fb2551daf2099bec99709

12 years agoRemove the simulator target from all makefiles.
Jeff Brown [Tue, 12 Jul 2011 05:11:48 +0000 (22:11 -0700)]
Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I544b54b673d9fd42197a5c97a291578a0bd0db5f

12 years agoresolved conflicts for merge of c3ff6a0b to honeycomb-plus-aosp
Raphael [Tue, 12 Jul 2011 04:18:18 +0000 (21:18 -0700)]
resolved conflicts for merge of c3ff6a0b to honeycomb-plus-aosp

Change-Id: I6b9cfdc27b2654bd832cfd06678a173449f992bc

12 years agoam bf62959b: Merge "Dex for Windows: Support paths with spaces."
Raphael Moll [Tue, 12 Jul 2011 03:06:20 +0000 (20:06 -0700)]
am bf62959b: Merge "Dex for Windows: Support paths with spaces."

* commit 'bf62959bd8382e458a1aee6b491cb7da703984fb':
  Dex for Windows: Support paths with spaces.

12 years agoMerge "Dex for Windows: Support paths with spaces."
Raphael Moll [Tue, 12 Jul 2011 02:56:16 +0000 (19:56 -0700)]
Merge "Dex for Windows: Support paths with spaces."

12 years agoFix the jweak implementation.
Elliott Hughes [Mon, 11 Jul 2011 23:44:34 +0000 (16:44 -0700)]
Fix the jweak implementation.

We need to distinguish between "cleared weak global" and "deleted weak global".
Previously we used NULL for both. Now we add a magic value for cleared weak
globals. I've also switched the GC over to using iterators, so IndirectRefTable
itself becomes responsible for not showing bad pointers to the GC.

I've also improved the reference table dumping to cope with the new scheme and
to be a bit easier to read (through extra indentation).

Bug: 4260055
Change-Id: I26af301fb2b46d014c6f6b0915a8f8a7fb6d7c5b

12 years agoam 53015360: am 5a57e766: Merge "Change dx.bat to Windows EOL."
Raphael Moll [Mon, 11 Jul 2011 23:59:46 +0000 (16:59 -0700)]
am 53015360: am 5a57e766: Merge "Change dx.bat to Windows EOL."

* commit '53015360753df7325e3cc84c44bee5b48b497436':
  Change dx.bat to Windows EOL.

12 years agoam 5a57e766: Merge "Change dx.bat to Windows EOL."
Raphael Moll [Mon, 11 Jul 2011 23:57:50 +0000 (16:57 -0700)]
am 5a57e766: Merge "Change dx.bat to Windows EOL."

* commit '5a57e766a662184902e215b52cb943e02d9fa827':
  Change dx.bat to Windows EOL.

12 years agoMerge "Change dx.bat to Windows EOL."
Raphael Moll [Mon, 11 Jul 2011 23:50:51 +0000 (16:50 -0700)]
Merge "Change dx.bat to Windows EOL."

12 years agoDex for Windows: Support paths with spaces.
Raphael Moll [Mon, 11 Jul 2011 22:18:49 +0000 (18:18 -0400)]
Dex for Windows: Support paths with spaces.

1- Change the format of the command line parsed by dx.jar.
Parameters with values are usually specified with one
single argument e.g.
   --output=/some/path with spaces
That breaks for a variety of reasons on windows, so the first
step is to allow a new 2-parameter form:
   --output "/some/path with spaces"

2- The next step is fixing the way the dx.bat wrapper
extracts the -J parameters to be able to cope with
arguments that contain spaces.

SDK bugs: 4567, 18388

Change-Id: Ia837e7307998c0bf41ae39abb36abebfc27da104

12 years agoam c8d71801: resolved conflicts for merge of d0d351b2 to gingerbread-plus-aosp
David 'Digit' Turner [Mon, 11 Jul 2011 22:18:45 +0000 (15:18 -0700)]
am c8d71801: resolved conflicts for merge of d0d351b2 to gingerbread-plus-aosp

* commit 'c8d718012b0ac4abf668a9f494c33d2dd8a314e5':
  Only use O_BINARY if it is defined (windows compatibility)
  Update to allow x86-atom build for FI on Gingerbread
  Combined patch from master branch

12 years agoChange dx.bat to Windows EOL.
Raphael Moll [Mon, 11 Jul 2011 22:16:34 +0000 (18:16 -0400)]
Change dx.bat to Windows EOL.

Change-Id: I0adc6101297e8491814599d345b3cfd3278837cd

12 years agoresolved conflicts for merge of d0d351b2 to gingerbread-plus-aosp
David 'Digit' Turner [Mon, 11 Jul 2011 21:20:22 +0000 (23:20 +0200)]
resolved conflicts for merge of d0d351b2 to gingerbread-plus-aosp

Change-Id: I1594c21fb3dd761b1e2275be2019ec139cf64174

12 years agoAdd JNI app bug workarounds.
Elliott Hughes [Mon, 11 Jul 2011 02:15:13 +0000 (19:15 -0700)]
Add JNI app bug workarounds.

Specifically, this hands out direct pointers for all local references,
and lets you use a JNIEnv* on the wrong thread. This is off by default,
but enabled for apps that don't have ICS as their targetSdkVersion.

Bug: 4772166
Change-Id: I20c403a8e63481a35d579d2bd3b121c80ec08f89

12 years agoMerge "Allow an app's targetSdkVersion to be set by the zygote."
Elliott Hughes [Sat, 9 Jul 2011 01:11:38 +0000 (18:11 -0700)]
Merge "Allow an app's targetSdkVersion to be set by the zygote."

12 years agoAllow an app's targetSdkVersion to be set by the zygote.
Elliott Hughes [Fri, 8 Jul 2011 18:10:45 +0000 (11:10 -0700)]
Allow an app's targetSdkVersion to be set by the zygote.

Bug: 4772166
Change-Id: I7dbfdc2f2856efe608f0474d83326e6f0ba17658

12 years agomerge intel x86 patches into gingerbread branch
David 'Digit' Turner [Fri, 8 Jul 2011 16:19:01 +0000 (18:19 +0200)]
merge intel x86 patches into gingerbread branch

12 years agoRemove dead code/unused variables to avoid gcc-4.6 warnings.
Doug Kwan [Thu, 7 Jul 2011 20:49:27 +0000 (13:49 -0700)]
Remove dead code/unused variables to avoid gcc-4.6 warnings.

Change-Id: I291fd42e91085c51772f560d424334874bef8add

12 years agoImprove a comment.
Elliott Hughes [Thu, 7 Jul 2011 17:45:03 +0000 (10:45 -0700)]
Improve a comment.

Change-Id: If6636879dcdc15a33a083a19284de5fe8056e797

12 years agoTurn on third-party JNI logging if the relevant bit is set.
Elliott Hughes [Thu, 7 Jul 2011 00:26:38 +0000 (17:26 -0700)]
Turn on third-party JNI logging if the relevant bit is set.

Change-Id: I3260233516fa2d57c4876056168d31881d8666a9

12 years agoDon't abort when a weak global's referent is cleared.
Elliott Hughes [Wed, 6 Jul 2011 21:22:18 +0000 (14:22 -0700)]
Don't abort when a weak global's referent is cleared.

This also makes us less likely to output spurious warnings when
dealing with nulled-out weak globals, and lets us provide more
helpful warnings when warnings are called for.

Bug: 4991942
Change-Id: I99b88e66e07f79562da2cd9d594b93bff218d595

12 years agoAdded mutex for jdwp socket writes to prevent interleaving.
jeffhao [Thu, 30 Jun 2011 23:52:28 +0000 (16:52 -0700)]
Added mutex for jdwp socket writes to prevent interleaving.

This commit includes a following change: Clean up jdwp adb/socket
and fix initialization issues.

Change-Id: I79461b92d690e42d8d1d82d31fbcacb4d5650a74

12 years agoFix native method logging to show local references rather than direct pointers.
Elliott Hughes [Thu, 30 Jun 2011 20:40:52 +0000 (13:40 -0700)]
Fix native method logging to show local references rather than direct pointers.

This is necessary (but not sufficient) for debugging third-party JNI bugs.
It's the second half of the logging story, but still doesn't address the
question of "how does the developer turn on the logging?".

This removes the variant JNI bridges at the cost of adding a couple of
booleans to struct Method. Performance is about the same, except synchronized
native methods are quite a bit faster after the change.

Before:
                             benchmark  ns linear runtime
                      _emptyJniMethod0 333 ==========
                      _emptyJniMethod6 367 ===========
                     _emptyJniMethod6L 921 ==============================
                _emptyJniStaticMethod0 259 ========
                _emptyJniStaticMethod6 287 =========
               _emptyJniStaticMethod6L 873 ============================
    _emptyJniStaticSynchronizedMethod0 404 =============
          _emptyJniSynchronizedMethod0 452 ==============

After:
                             benchmark  ns linear runtime
                      _emptyJniMethod0 344 ==========
                      _emptyJniMethod6 348 ==========
                     _emptyJniMethod6L 969 ==============================
                _emptyJniStaticMethod0 265 ========
                _emptyJniStaticMethod6 293 =========
               _emptyJniStaticMethod6L 968 =============================
    _emptyJniStaticSynchronizedMethod0 265 ========
          _emptyJniSynchronizedMethod0 323 ==========

A better optimization for the case where there are reference arguments
would be to keep a list of argument indexes in the struct Method, so we
could iterate directly over those arguments that need converting to
local references. That would also let us do something about the overhead
of repeatedly looking up which local reference table and cookie to use.

But now is not the time.

Change-Id: Ie32daca1b31be057a44f1ed4b5d28d1634380e1d

12 years agoMerge "Add two new JNI debugging options."
Elliott Hughes [Thu, 30 Jun 2011 17:40:04 +0000 (10:40 -0700)]
Merge "Add two new JNI debugging options."

12 years agoAdd two new JNI debugging options.
Elliott Hughes [Thu, 30 Jun 2011 17:31:31 +0000 (10:31 -0700)]
Add two new JNI debugging options.

The alwaysCheckThread option provides some backwards compatibility for apps
that misuse JNIEnv*s across threads. The logThirdPartyJni is a step towards
making it easier for third-party developers to debug their JNI errors.

Change-Id: I134374da0fe94f3fbc6b6d5aef52e3eef658aff9

12 years agoMark a variable as volatile to suppress a gcc warning.
Doug Kwan [Wed, 29 Jun 2011 03:53:07 +0000 (20:53 -0700)]
Mark a variable as volatile to suppress a gcc warning.

Change-Id: Ic5263e2d7e52c72d35bf706d86bba2ad6548ce58

12 years agoMerge "Make it easier to recognize JNI reference bugs."
Elliott Hughes [Wed, 29 Jun 2011 18:17:45 +0000 (11:17 -0700)]
Merge "Make it easier to recognize JNI reference bugs."

12 years agoMake it easier to recognize JNI reference bugs.
Elliott Hughes [Wed, 29 Jun 2011 18:10:21 +0000 (11:10 -0700)]
Make it easier to recognize JNI reference bugs.

CheckJNI is still your best choice, but now, even without CheckJNI, you'll get
a strong clue:

E/dalvikvm( 4168): JNI ERROR (app bug): accessed stale local reference at index 10 (top=8)
E/dalvikvm( 4168): VM aborting

Change-Id: Ia65e1e430bc53509add19816ef06cc5dbd1b3e98

12 years agoMerge "Make dual clock mode the default."
Jeff Brown [Wed, 29 Jun 2011 03:14:46 +0000 (20:14 -0700)]
Merge "Make dual clock mode the default."

12 years agoImprove JNI tracing even further.
Elliott Hughes [Fri, 24 Jun 2011 22:52:55 +0000 (15:52 -0700)]
Improve JNI tracing even further.

This adds return values and general support for the primitive types.

For example:

  JNI: libcore.io.Posix.writeBytes -> GetIntField((JNIEnv*)0x9ebf9a8, 0x3e00005, java.io.FileDescriptor.descriptor)
  JNI:                             <- GetIntField returned 13

Although we still decode jclass, when a jclass is a return value we also
include the pointer. This makes it easier to follow call sequences like
this:

  JNI: dalvik.system.NativeStart.main -> FindClass((JNIEnv*)0x9e3e458, "java/text/Bidi$Run")
  JNI:                                <- FindClass returned java.lang.Class<java.text.Bidi$Run> (0x100001)
  JNI: dalvik.system.NativeStart.main -> NewGlobalRef((JNIEnv*)0x9e3e458, 0x100001)
  JNI:                                <- NewGlobalRef returned 0x100002

Here, the argument to NewGlobalRef is clearly the jclass local reference.

(Cherry-pick of 047cab15c4cb967568b25b616f02ed0f9a169430 from dalvik-dev.)

Change-Id: Ie8997b11a9cc9a0bc8f11ab3fc43f4892921316b

12 years agoImprove -verbose:jni.
Elliott Hughes [Wed, 22 Jun 2011 20:24:06 +0000 (13:24 -0700)]
Improve -verbose:jni.

The old output just told you what functions were being called and made no
attempt to show you their arguments. The new output was sufficient to debug
an actual problem with an app we don't have the source to.

Still to do:
0. an easier way for third-party developers to enable this.
1. the primitive type arguments to SetIntField and so forth.
2. return values.

A few examples of the new output...

A decoded jclass:
  JNI: libcore.io.Posix.readBytes called IsInstanceOf((JNIEnv*)0x9618470, 0x28100015, java.lang.Class<byte[]>)

A decoded jfieldID:
  JNI: libcore.io.Posix.ioctlInt called GetIntField((JNIEnv*)0x9618470, 0x5cb00011, java.io.FileDescriptor.descriptor)

A decoded jmethodID (the FileDescriptor constructor):
  JNI: libcore.io.Posix.open called NewObject((JNIEnv*)0x9780480, java.lang.Class<java.io.FileDescriptor>, java.io.FileDescriptor.<init>()V, ...)

A const char*:
  JNI: libcore.io.Posix.getsockoptLinger called NewStringUTF((JNIEnv*)0x9618470, "getsockopt")

A jint release mode:
  JNI: libcore.io.Posix.writeBytes called ReleaseByteArrayElements((JNIEnv*)0x9780480, 0x2700009, (void*) 0xf5f623c4, JNI_ABORT)

The -verbose:jni option now turns on a bit more output about JNI_OnLoad calls
but no longer causes any logging of calls to JNIEnv or JavaVM functions. The
old -Xjnitrace: option has been extended to enable this new tracing for the
native methods that it covers. They go very well together for debugging
purposes.

I've also made us a bit more verbose if we fail to initialize. In the longer
term I think we want to just abort if we hit any failure during startup, but
my extra logging will save us a bit of time next time we have one of these
failures (this one was caused for me by only having one half of the finalizer
watchdog change; I was missing the libcore side).

(Cherry pick of 6734b8224fb869c94e42e704ec03f2ce8483af2b from dalvik-dev.)

Change-Id: I69b7620b20620e9f06576da244520d9d83f89ab8

12 years agoMerge "Add a dual clock profiler tracing mode."
Jeff Brown [Tue, 28 Jun 2011 23:01:27 +0000 (16:01 -0700)]
Merge "Add a dual clock profiler tracing mode."

12 years agoFix debugger output of floats and doubles.
jeffhao [Mon, 27 Jun 2011 22:07:17 +0000 (15:07 -0700)]
Fix debugger output of floats and doubles.

Change-Id: Idd839eef0ecb023fc4cdec20648bebbe5756d399

12 years agoMake dual clock mode the default.
Jeff Brown [Sat, 25 Jun 2011 00:53:48 +0000 (17:53 -0700)]
Make dual clock mode the default.

Change-Id: Ic2f7cb8a8055319472d16be03c7ca242bf915af0

12 years agoAdd a dual clock profiler tracing mode.
Jeff Brown [Sat, 25 Jun 2011 00:05:33 +0000 (17:05 -0700)]
Add a dual clock profiler tracing mode.

Dalvik previously supported using either the thread-cpu clock
or the real time clock as the timebase for profiler traces.
This change adds a dual clock mode where both thread-cpu time
and real time timestamps are collected.

Using dual clock mode significantly improves TraceView ability
to accurately reconstruct the global timeline of events,
particularly on SMP systems.

For now, thread-cpu mode remains the default.

Dual clock mode can be enabled by running the following command
and restarting the system server.
   adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock

Change-Id: I8c0d91a99aa6829dadea328e54dc1225d9827391

12 years agoFix a use of uninitialized variable found by gcc-4.6. I don't think this is a
Doug Kwan [Sun, 26 Jun 2011 19:26:18 +0000 (12:26 -0700)]
Fix a use of uninitialized variable found by gcc-4.6.  I don't think this is a
real problem as we will only see an undefined value if the list has no instructions other than NOPs.

Change-Id: I055510831ca1c566e2daa2b4b2acbaa655fa735a

12 years agoMerge "Fix gcc-4.6 warnings."
Doug Kwan [Sat, 25 Jun 2011 00:39:27 +0000 (17:39 -0700)]
Merge "Fix gcc-4.6 warnings."

12 years agoFix gcc-4.6 warnings.
Doug Kwan [Fri, 24 Jun 2011 22:48:32 +0000 (15:48 -0700)]
Fix gcc-4.6 warnings.

Change-Id: I62cfb8b1a39499366ee18c1904e6991567f78571

12 years agoFix for adb shell hang after adb root.
Brett Chabot [Fri, 24 Jun 2011 21:34:26 +0000 (14:34 -0700)]
Fix for adb shell hang after adb root.

Abort JDWP thread if netstate is shutting down.

Bug 4731499

Change-Id: I4e1ec9cf64d00682b1dd10e448c3665a4fc77ba8

12 years agoThrow NullPointerExceptions with detail messages.
Elliott Hughes [Fri, 24 Jun 2011 00:29:38 +0000 (17:29 -0700)]
Throw NullPointerExceptions with detail messages.

Bug: 4905110
Change-Id: Iebcc45049c1ea14ceef6d44a19dd8cb618392101

12 years agoMerge "Remove an unused internal native."
Elliott Hughes [Thu, 23 Jun 2011 23:02:47 +0000 (16:02 -0700)]
Merge "Remove an unused internal native."

12 years agoRemove an unused internal native.
Elliott Hughes [Thu, 23 Jun 2011 22:50:13 +0000 (15:50 -0700)]
Remove an unused internal native.

Change-Id: I9a8976e7e505dfa6b641a76edc1e65be68b73339

12 years agoMerge "[JIT] Fix uninitialized read (issue #4929028)"
buzbee [Thu, 23 Jun 2011 22:48:55 +0000 (15:48 -0700)]
Merge "[JIT] Fix uninitialized read (issue #4929028)"

12 years ago[JIT] Fix uninitialized read (issue #4929028)
buzbee [Thu, 23 Jun 2011 22:20:56 +0000 (15:20 -0700)]
[JIT] Fix uninitialized read (issue #4929028)

Found via Valgrind.  This should not have caused any bad code to be
generated in this case, but good to fix.  Use arrays cleared on creation.

Change-Id: I5f87c6ec74e12b9c99835695b71b6ee49505503a

12 years agoresolved conflicts for merge of cc8c750a to master
Elliott Hughes [Thu, 23 Jun 2011 18:57:43 +0000 (11:57 -0700)]
resolved conflicts for merge of cc8c750a to master

(The transition to C++ requires an additional cast.)

Change-Id: I736f6533511d5ab2d1f05903b06d8f333adba492

12 years agoFix native methods that weren't registered via RegisterNatives.
Elliott Hughes [Thu, 23 Jun 2011 17:29:10 +0000 (10:29 -0700)]
Fix native methods that weren't registered via RegisterNatives.

Cherry pick of a64af4aabf261d34eac8b5a9d92992ee70051829.

Change-Id: I43df4e33e39ccaf9e26c842f22da3391cfa17e2b

12 years agoMerge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master
Brian Carlstrom [Wed, 22 Jun 2011 17:58:40 +0000 (10:58 -0700)]
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master

12 years agoam 03c60a44: Merge "Undecoded jobject leaking in through attachThread"
Elliott Hughes [Wed, 22 Jun 2011 17:30:17 +0000 (10:30 -0700)]
am 03c60a44: Merge "Undecoded jobject leaking in through attachThread"

* commit '03c60a44861951126affa75ba8ee4233c136fe92':
  Undecoded jobject leaking in through attachThread

12 years agoMerge "Undecoded jobject leaking in through attachThread"
Elliott Hughes [Wed, 22 Jun 2011 16:25:01 +0000 (09:25 -0700)]
Merge "Undecoded jobject leaking in through attachThread"

12 years agoMerge "Clean up IndirectRefTable a bit." into dalvik-dev
Elliott Hughes [Tue, 21 Jun 2011 21:55:09 +0000 (14:55 -0700)]
Merge "Clean up IndirectRefTable a bit." into dalvik-dev

12 years agoClean up IndirectRefTable a bit.
Elliott Hughes [Tue, 21 Jun 2011 00:50:41 +0000 (17:50 -0700)]
Clean up IndirectRefTable a bit.

The main purpose here was to have slightly less unclear warnings for
JNI local reference abuse.

Change-Id: I2c6378dd0a94d8afb96a8e409f7460205e3cd315

12 years agoam bea345e1: Fix the watchdog test to handle the failure from managed code.
Jesse Wilson [Tue, 21 Jun 2011 18:32:39 +0000 (11:32 -0700)]
am bea345e1: Fix the watchdog test to handle the failure from managed code.

* commit 'bea345e1cd8acd993758366df42af7c6c9cf76d6':
  Fix the watchdog test to handle the failure from managed code.

12 years agoFix the watchdog test to handle the failure from managed code.
Jesse Wilson [Tue, 21 Jun 2011 17:22:19 +0000 (10:22 -0700)]
Fix the watchdog test to handle the failure from managed code.

Change-Id: I9691f414b953c7e11791069a574441b993611238
http://b/4144865

12 years agoam 0c632a84: Merge "Add isDebuggerActive API for the finalizer watchdog."
Jesse Wilson [Tue, 21 Jun 2011 03:26:56 +0000 (20:26 -0700)]
am 0c632a84: Merge "Add isDebuggerActive API for the finalizer watchdog."

* commit '0c632a8484839ceeffc6fdf04c310c02c7531530':
  Add isDebuggerActive API for the finalizer watchdog.

12 years agoMerge "Add isDebuggerActive API for the finalizer watchdog."
Jesse Wilson [Tue, 21 Jun 2011 02:55:27 +0000 (19:55 -0700)]
Merge "Add isDebuggerActive API for the finalizer watchdog."

12 years agoAdd isDebuggerActive API for the finalizer watchdog.
Jesse Wilson [Mon, 20 Jun 2011 22:09:16 +0000 (15:09 -0700)]
Add isDebuggerActive API for the finalizer watchdog.

Change-Id: Ib0afcd15327c0a3dd8c565036a8f010e318adc9e
http://b/4144865

12 years agoDon't be too specific in reference table summaries.
Elliott Hughes [Mon, 20 Jun 2011 18:53:41 +0000 (11:53 -0700)]
Don't be too specific in reference table summaries.

Implying that the examplar Class' specific type was true of all
the classes was misleading; we should just say "Class" in the
summary:

W/dalvikvm(  801): JNI local reference table summary (23 entries):
W/dalvikvm(  801):    20 of java.lang.Class (19 unique instances)
W/dalvikvm(  801):     2 of java.lang.String (2 unique instances)
W/dalvikvm(  801):     1 of java.lang.String[] (2 elements)

Change-Id: Ia961cfc689aa390c84ecbc96e44bdd64448ac051

12 years agoRemove incorrect comment.
Elliott Hughes [Mon, 20 Jun 2011 17:46:08 +0000 (10:46 -0700)]
Remove incorrect comment.

Change-Id: I3d1d84f8d36b8ee3d07e0af7e29faa72f3615e92

12 years agoFix build: rebase went wrong.
Elliott Hughes [Fri, 17 Jun 2011 23:57:49 +0000 (16:57 -0700)]
Fix build: rebase went wrong.

Change-Id: I390edcb3ddd52d2fb9285d2de42617dff68fdcf2