OSDN Git Service

android-x86/art.git
8 years agoAttribute arena allocations previously marked as STL.
Vladimir Marko [Tue, 10 May 2016 15:23:37 +0000 (15:23 +0000)]
Attribute arena allocations previously marked as STL.
am: a26b3c51bf

* commit 'a26b3c51bfd97be1100d267f20c46535913e6bb7':
  Attribute arena allocations previously marked as STL.

Change-Id: I203dd4de987d1f689b610e9df0fa8a466bb4b992

8 years agoAttribute arena allocations previously marked as STL.
Vladimir Marko [Mon, 9 May 2016 19:23:34 +0000 (20:23 +0100)]
Attribute arena allocations previously marked as STL.

Bug: 28603175
Bug: 28684584

(cherry picked from commit 3ea5a97d27468cec846d958c38d0d706ef7ec67e)

Change-Id: I7f1bd22e7710cca74f4b10fd13cb8fa2c3b1b318

8 years agoMerge "Fix ProtoId ordering check in DexFileVerifier." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 13:34:13 +0000 (13:34 +0000)]
Merge "Fix ProtoId ordering check in DexFileVerifier." into nyc-dev
am: f11e547346

* commit 'f11e5473461d9f33d4427187fb945a1edcf2ef34':
  Fix ProtoId ordering check in DexFileVerifier.

Change-Id: Ice809c9f52019b6bc26ed8b374be5de098569a63

8 years agoMerge "Fix ProtoId ordering check in DexFileVerifier." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 13:19:41 +0000 (13:19 +0000)]
Merge "Fix ProtoId ordering check in DexFileVerifier." into nyc-dev

8 years agoMerge "ART: Fix dominance for irreducible loops" into nyc-dev
David Brazdil [Tue, 10 May 2016 12:53:48 +0000 (12:53 +0000)]
Merge "ART: Fix dominance for irreducible loops" into nyc-dev
am: 74acb01900

* commit '74acb019008aea5d21f549ef412946611a03e706':
  ART: Fix dominance for irreducible loops

Change-Id: If4c96f7555b4371c6c652abdfd6cc983b743a64e

8 years agoMerge "ART: Fix dominance for irreducible loops" into nyc-dev
TreeHugger Robot [Tue, 10 May 2016 12:39:12 +0000 (12:39 +0000)]
Merge "ART: Fix dominance for irreducible loops" into nyc-dev

8 years agoART: Fix dominance for irreducible loops
David Brazdil [Fri, 6 May 2016 11:46:21 +0000 (12:46 +0100)]
ART: Fix dominance for irreducible loops

Computation of dominance was broken in the presence of irreducible
loops because the algorithm assumed that back edges are always
dominated by their respective headers and a fix-point iteration is
therefore unnecessary.

This is not true for irreducible loops, forcing us to revisit their
loop headers and all dependent blocks. This patch adds a fix-point
iteration if a back edge not dominated by its header is found.

Bug: 28611485
Change-Id: If84044e49d5b9c682949648033d2861628d7fe05
(cherry picked from commit 3f4a522cc39f5c651e7c718196e989bc81d8c6ef)

8 years agoMerge "Fix index checks for error strings in DexFileVerifier." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 11:12:56 +0000 (11:12 +0000)]
Merge "Fix index checks for error strings in DexFileVerifier." into nyc-dev
am: 23fddf80cd

* commit '23fddf80cdfc51136ad7684d74961778e79be5bc':
  Fix index checks for error strings in DexFileVerifier.

Change-Id: I325bd9c6753216af30d08f59eab49c7a977bb17c

8 years agoFix ProtoId ordering check in DexFileVerifier.
Vladimir Marko [Tue, 3 May 2016 16:17:50 +0000 (17:17 +0100)]
Fix ProtoId ordering check in DexFileVerifier.

The code previously checked for kNoDexIndex16 as the type
list terminator. This is incorrect as we should not actually
see the kNoDexIndex16 in type lists in supported dex files.

To make sure that we don't see kNoDexIndex16, check the size
of the arrays with documented limits, i.e. type-ids and
proto-ids, see dex_file.h. In the ProtoId ordering check,
DCHECK() that we don't encounter kNoDexIndex16 and verify
that the previous list is not longer if the current list's
elements match.

Bug: 28580925

(cherry picked from commit 0ca8add2ae34c26291694ecc784d64f0cc1c1380)

Change-Id: Ied6dcbd8d04e3dfef5695dbd9b3a30a079038b2b

8 years agoMerge "Fix index checks for error strings in DexFileVerifier." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 11:01:10 +0000 (11:01 +0000)]
Merge "Fix index checks for error strings in DexFileVerifier." into nyc-dev

8 years agoMerge "Optimizing: LoadString may not have any side effects." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 10:59:23 +0000 (10:59 +0000)]
Merge "Optimizing: LoadString may not have any side effects." into nyc-dev
am: b7a459b8da

* commit 'b7a459b8da59c6cba29ce707a94f8804f741c169':
  Optimizing: LoadString may not have any side effects.

Change-Id: I83b3b9ad01c6c0eac775c11c3dd6914f65490b87

8 years agoMerge "Optimizing: LoadString may not have any side effects." into nyc-dev
Vladimir Marko [Tue, 10 May 2016 10:44:26 +0000 (10:44 +0000)]
Merge "Optimizing: LoadString may not have any side effects." into nyc-dev

8 years agoMerge "Relax the DCHECK in load store elimination." into nyc-dev
Nicolas Geoffray [Tue, 10 May 2016 09:38:08 +0000 (09:38 +0000)]
Merge "Relax the DCHECK in load store elimination." into nyc-dev
am: 6282080843

* commit '6282080843ce4a05e8d36056950016ff8f0da1a6':
  Relax the DCHECK in load store elimination.

Change-Id: Ie98662dac823b75c0adc2a984a2fdb61e349a223

8 years agoWorkaround invokesuper underspecified behavior.
Aart Bik [Tue, 10 May 2016 09:38:08 +0000 (09:38 +0000)]
Workaround invokesuper underspecified behavior.
am: ffaa91d39b

* commit 'ffaa91d39baf82006afe74ad6e59cfd498334017':
  Workaround invokesuper underspecified behavior.

Change-Id: Ifab8e2cf5e38f75028e9ce585c47fa430307430c

8 years agoOptimizing: LoadString may not have any side effects.
Vladimir Marko [Tue, 5 Apr 2016 10:18:49 +0000 (11:18 +0100)]
Optimizing: LoadString may not have any side effects.

LoadString does not have any side effects if the string is
known to be in the dex cache or it's a boot image string
referenced directly, as specified by the string load kind.
We need to clear the side effects for these cases to avoid
a DCHECK() failure when such LoadString instruction ends up
between a ClinitCheck and an instruction to which we want to
merge that ClinitCheck. This may happen as a consequence of
inlining, LICM and DCE as shown by a regression test.

Bug: 27929914

(cherry picked from commit ace7a000a433ce4ecf94f30adea39c01a76fa936)

Change-Id: Iaf9c63b6e58aae1e246b43ca52eea0b47a6ad565

8 years agoMerge "Relax the DCHECK in load store elimination." into nyc-dev
TreeHugger Robot [Tue, 10 May 2016 09:25:18 +0000 (09:25 +0000)]
Merge "Relax the DCHECK in load store elimination." into nyc-dev

8 years agoFix index checks for error strings in DexFileVerifier.
Vladimir Marko [Tue, 3 May 2016 15:31:52 +0000 (16:31 +0100)]
Fix index checks for error strings in DexFileVerifier.

Bug: 28552165

(cherry picked from commit 59399abce0223e74af00193436e39e109d98dacb)

Change-Id: Ic7d687fbb20d5bd68a606c40fe60007b05f1c59b

8 years agoRelax the DCHECK in load store elimination.
Nicolas Geoffray [Wed, 4 May 2016 13:00:12 +0000 (14:00 +0100)]
Relax the DCHECK in load store elimination.

The DCHECK was too strong, as we could come from a field or array
get on null, instead of null directly.

bug:27831001

(cherry picked from commit 65fef30952bb92acec7ed36f7f431d93f7ce88b3)

Change-Id: Ia3ba1235e95408d66349a02fc438df9c2cf9e255

8 years agoWorkaround invokesuper underspecified behavior.
Aart Bik [Tue, 5 Apr 2016 00:28:59 +0000 (17:28 -0700)]
Workaround invokesuper underspecified behavior.

The verifier allows invokesuper on a class unrelated
to the referring class. However, the runtime uses the vtable of
the super class of the referring class to lookup the ArtMethod.
Since the receiver has no relation to the referring class, this lead
to either jumping to a wrong method, or "luckily" throw a
NoSuchMethodError if the vtable index is out of bounds of the super
class of the referring class.

This changes the runtime behavior to always throw NoSuchMethodError
when hitting such invokesuper.

Also, we make the verifier consistent with the runtime by treating
such calls unresolved.

bug=27627004

(cherry picked from commit f663e341c550d1aa6f8f587d0ae0dbf7d254ff55)

Change-Id: Ibec5a1e3a3320c474e1e0e5634a9ef62ea734cdf

8 years agoMerge "Hold a ClassLoader reference in NativeAllocationRegistry." into nyc-dev
Richard Uhler [Mon, 9 May 2016 16:01:31 +0000 (16:01 +0000)]
Merge "Hold a ClassLoader reference in NativeAllocationRegistry." into nyc-dev
am: ceeb3b73f8

* commit 'ceeb3b73f84e8b11f362605007d382405d08d95c':
  Hold a ClassLoader reference in NativeAllocationRegistry.

Change-Id: I65933ae102e66dcea23afbb226992bf1f815f4e9

8 years agoMerge "Hold a ClassLoader reference in NativeAllocationRegistry." into nyc-dev
Richard Uhler [Mon, 9 May 2016 15:50:29 +0000 (15:50 +0000)]
Merge "Hold a ClassLoader reference in NativeAllocationRegistry." into nyc-dev

8 years agoMerge "Fix braino when parsing invoke transition weight." into nyc-dev
Nicolas Geoffray [Mon, 9 May 2016 09:20:11 +0000 (09:20 +0000)]
Merge "Fix braino when parsing invoke transition weight." into nyc-dev
am: 025db8dddd

* commit '025db8dddd885eae077cbd7cc14cf35858f9d397':
  Fix braino when parsing invoke transition weight.

Change-Id: I7194dabbdbd43489abb05071e239fc802b1c225a

8 years agoMerge "Fix braino when parsing invoke transition weight." into nyc-dev
TreeHugger Robot [Mon, 9 May 2016 09:15:46 +0000 (09:15 +0000)]
Merge "Fix braino when parsing invoke transition weight." into nyc-dev

8 years agoFix braino when parsing invoke transition weight.
Nicolas Geoffray [Fri, 6 May 2016 15:52:36 +0000 (16:52 +0100)]
Fix braino when parsing invoke transition weight.

bug:27865109
Change-Id: I73e2763216b5596f601c456076c3b01c1dd000da

8 years agoFix test for verification of clinit method
Alex Light [Sat, 7 May 2016 19:27:04 +0000 (19:27 +0000)]
Fix test for verification of clinit method
am: c30bc58d94

* commit 'c30bc58d94eba469e0402ed4cca144a1909f2aff':
  Fix test for verification of clinit method

Change-Id: I03df97e873aab37ba72b48e3739292af6cfae058

8 years agoFix test for verification of clinit method
Alex Light [Sat, 7 May 2016 00:36:36 +0000 (17:36 -0700)]
Fix test for verification of clinit method

Bug: 28605638
Change-Id: Idbf2d59c20b7dda1efb9aa61bce2cefbe2c0040a
(cherry picked from commit 0ed0521a7f55b2efef8e71d0802893aa1d5b83e2)

8 years agoMerge "Make <clinit> verification stronger for v37+." into nyc-dev
Alex Light [Fri, 6 May 2016 23:48:23 +0000 (23:48 +0000)]
Merge "Make <clinit> verification stronger for v37+." into nyc-dev
am: 53685b0ae9

* commit '53685b0ae91039ee7e7a803592e580b675d53794':
  Make <clinit> verification stronger for v37+.

Change-Id: I2150524814d0d7e54e58d0df360182589b9144f7

8 years agoMerge "Make <clinit> verification stronger for v37+." into nyc-dev
TreeHugger Robot [Fri, 6 May 2016 23:38:12 +0000 (23:38 +0000)]
Merge "Make <clinit> verification stronger for v37+." into nyc-dev

8 years agoMerge "Fix libart tests on target" into nyc-dev
Dimitry Ivanov [Fri, 6 May 2016 22:02:54 +0000 (22:02 +0000)]
Merge "Fix libart tests on target" into nyc-dev
am: 89f4eb5d93

* commit '89f4eb5d93ffaf24ae237662df20aea9acd65ab0':
  Fix libart tests on target

Change-Id: Ide52a630ad1e5eb065392ef4db2bbe39442587ee

8 years agoRemove a common subexpression from profman output
David Sehr [Fri, 6 May 2016 22:02:54 +0000 (22:02 +0000)]
Remove a common subexpression from profman output
am: 727074b62e

* commit '727074b62ef86dfb631a99214e6726d7d9c6c6be':
  Remove a common subexpression from profman output

Change-Id: I6525256675368f1a0a593f3d743acd2d710fbadc

8 years agoMerge "Fix libart tests on target" into nyc-dev
TreeHugger Robot [Fri, 6 May 2016 21:57:11 +0000 (21:57 +0000)]
Merge "Fix libart tests on target" into nyc-dev

8 years agoMake <clinit> verification stronger for v37+.
Alex Light [Fri, 6 May 2016 17:39:06 +0000 (10:39 -0700)]
Make <clinit> verification stronger for v37+.

Preserve the verification behavior of M for v35 dex files. v37+ get
stronger behavior

Bug: 28605638
Change-Id: If1ff4abcc61e0945f924fe4e10e173c03b4cd1a9
(cherry picked from commit f0ecae7730b6c0145e0176cc619bdfba48201105)

8 years agoFix libart tests on target
Dimitry Ivanov [Fri, 6 May 2016 00:24:28 +0000 (17:24 -0700)]
Fix libart tests on target

1. Add libart/d.so to the list of additional public libraries
2. Fix java.library.path to include /system/lib(64)? for tests
   run by dalvikvm

Bug: http://b/28449304
Change-Id: I11f2dc22e445389160d6f7ed6743bb9664cf3745
(cherry picked from commit 90d48f28af67ab44d755363bf92d57a1b3e72a29)

8 years agoRemove a common subexpression from profman output
David Sehr [Fri, 6 May 2016 19:29:35 +0000 (12:29 -0700)]
Remove a common subexpression from profman output

Change-Id: I12fa4a36f4e9d980a720bb52c6b736ffc91a6700

8 years agoStop populating irreducible loop at header
David Brazdil [Fri, 6 May 2016 13:59:30 +0000 (13:59 +0000)]
Stop populating irreducible loop at header
am: e4a97f9268

* commit 'e4a97f926882ffb12707655a755a1c8f96620f91':
  Stop populating irreducible loop at header

Change-Id: Ie00eebbe04b7d6ab254a6e22b5d697ce0d0fe14b

8 years agoStop populating irreducible loop at header
David Brazdil [Thu, 5 May 2016 10:27:03 +0000 (11:27 +0100)]
Stop populating irreducible loop at header

Recent CL modified the (previously exponential) algorithm for
populating irreducible loops so as to not visit blocks multiple times.
However, the new condition for an early exit did not take into account
that it is not necessary to visit predecessors of the loop header.

The algorithm remains correct but does unnecessary work.

Bug: 27856014
Change-Id: If72f8be82e79838f0dd9678082a3bbaabb51e43b
(cherry picked from commit 5a620590e5cf6d6817693edffd661371555de88b)

8 years agoAdd braces per the coding convention
David Sehr [Thu, 5 May 2016 23:25:34 +0000 (23:25 +0000)]
Add braces per the coding convention
am: 64b0f0bf5b

* commit '64b0f0bf5b03fc53282f61c1d2d2dc6b8c7e7a3e':
  Add braces per the coding convention

Change-Id: I974075bb056e1dc4b579efd9982f99b678e268d2

8 years agoAdd braces per the coding convention
David Sehr [Thu, 5 May 2016 20:39:43 +0000 (13:39 -0700)]
Add braces per the coding convention

Bug: 28599906
Change-Id: Ie2cb4f6865b7756ceaf65c400a4090fc9423232a

8 years agoLimit profman log spam with time threshold
David Sehr [Thu, 5 May 2016 18:54:00 +0000 (18:54 +0000)]
Limit profman log spam with time threshold
am: 305ed710a8

* commit '305ed710a8ea732e59bdc782121dea3389adc357':
  Limit profman log spam with time threshold

Change-Id: I93684ffc3a6de75e16ec073ae2f8ec5c68ae2ba5

8 years agoLimit profman log spam with time threshold
David Sehr [Thu, 5 May 2016 16:02:38 +0000 (09:02 -0700)]
Limit profman log spam with time threshold

Bug: 28599906
Change-Id: Ibe1001da94c7916761c8f3b4b5dbacd8cf3809a7

8 years agoMerge "Revert "(dl)Close native libraries on unload"" into nyc-dev
Nicolas Geoffray [Thu, 5 May 2016 08:14:14 +0000 (08:14 +0000)]
Merge "Revert "(dl)Close native libraries on unload"" into nyc-dev
am: 2ded6f21bc

* commit '2ded6f21bcf7055b40fdd97f9277488451e4e0ec':
  Revert "(dl)Close native libraries on unload"

Change-Id: Iee1742e5c290d253d44ab25dabf3489104aa2ff8

8 years agoMerge "Revert "(dl)Close native libraries on unload"" into nyc-dev
Nicolas Geoffray [Thu, 5 May 2016 08:03:20 +0000 (08:03 +0000)]
Merge "Revert "(dl)Close native libraries on unload"" into nyc-dev

8 years agoRevert "(dl)Close native libraries on unload"
Nicolas Geoffray [Thu, 5 May 2016 08:02:57 +0000 (08:02 +0000)]
Revert "(dl)Close native libraries on unload"

Failures on test 136.

Bug: http://b/28406866

This reverts commit 35f01195c4cf6e3c6fbb8b51f5a41b26132b4bdd.

Change-Id: I0c581e6f1aeb61285d3b132dbd9508e611ee4258

8 years agoMerge "(dl)Close native libraries on unload" into nyc-dev
Dimitry Ivanov [Wed, 4 May 2016 22:32:53 +0000 (22:32 +0000)]
Merge "(dl)Close native libraries on unload" into nyc-dev
am: 38e6af0aee

* commit '38e6af0aeea32021cb3b3ef00772f782cc4764f8':
  (dl)Close native libraries on unload

Change-Id: Ib50f420721ad8905e9e2739eff92d106f04102bb

8 years agoMerge "(dl)Close native libraries on unload" into nyc-dev
Dimitry Ivanov [Wed, 4 May 2016 22:22:06 +0000 (22:22 +0000)]
Merge "(dl)Close native libraries on unload" into nyc-dev

8 years agoMerge "Do not look at dead phis during SsaRedundantPhiElimination." into nyc-dev
Nicolas Geoffray [Wed, 4 May 2016 14:59:17 +0000 (14:59 +0000)]
Merge "Do not look at dead phis during SsaRedundantPhiElimination." into nyc-dev
am: e4c30e4627

* commit 'e4c30e4627a70945736acd2828f39aa880a1ddb8':
  Do not look at dead phis during SsaRedundantPhiElimination.

Change-Id: I0aae747e50a225a8e5a5d71dd8863bbd0532749a

8 years agoMerge "Do not look at dead phis during SsaRedundantPhiElimination." into nyc-dev
TreeHugger Robot [Wed, 4 May 2016 14:34:57 +0000 (14:34 +0000)]
Merge "Do not look at dead phis during SsaRedundantPhiElimination." into nyc-dev

8 years agoDo not look at dead phis during SsaRedundantPhiElimination.
Nicolas Geoffray [Wed, 4 May 2016 11:05:56 +0000 (12:05 +0100)]
Do not look at dead phis during SsaRedundantPhiElimination.

Otherwise, we may replace a dead loop phi with its incoming input.
This broke an assumption during liveness analysis in the presence
of irreducible loops.

bug:28256552

(cherry picked from commit 05b3fa02ed8ef62841a92cd96526ba3a06bf1f63)

Change-Id: I297c8fbd9a2414dd852aa932595f7b42d8f1a584

8 years agoMerge "Check if a class is verified before visiting profiling info." into nyc-dev
Nicolas Geoffray [Wed, 4 May 2016 12:32:12 +0000 (12:32 +0000)]
Merge "Check if a class is verified before visiting profiling info." into nyc-dev
am: 1c113cdab1

* commit '1c113cdab105c11cbc2d3c3f4fc4d7c3b001b728':
  Check if a class is verified before visiting profiling info.

Change-Id: I352905731f26cb278cec4e8db826fdf35176f453

8 years agoMerge "Check if a class is verified before visiting profiling info." into nyc-dev
TreeHugger Robot [Wed, 4 May 2016 12:17:15 +0000 (12:17 +0000)]
Merge "Check if a class is verified before visiting profiling info." into nyc-dev

8 years agoMerge "Put a handle on the String object." into nyc-dev
Nicolas Geoffray [Wed, 4 May 2016 10:35:36 +0000 (10:35 +0000)]
Merge "Put a handle on the String object." into nyc-dev
am: e9425382bd

* commit 'e9425382bd7b5dab85a02759c9209505924cbd68':
  Put a handle on the String object.

Change-Id: I6d6375253a33f30fca4beb1dff5fb9fd07109106

8 years agoCheck if a class is verified before visiting profiling info.
Nicolas Geoffray [Wed, 4 May 2016 08:51:24 +0000 (09:51 +0100)]
Check if a class is verified before visiting profiling info.

The call to IsNative expects non-retired classes, and we know
we don't have any profiling info for non-verified classes anyway.

bug:28542527

(cherry picked from commit 022dd86f9c1fd63dfd7e052a876289387393a78f)

Change-Id: I247ce08b6996bdae526a5e106dacdbb7b70504af

8 years agoMerge "Put a handle on the String object." into nyc-dev
TreeHugger Robot [Wed, 4 May 2016 10:22:00 +0000 (10:22 +0000)]
Merge "Put a handle on the String object." into nyc-dev

8 years agoPut a handle on the String object.
Nicolas Geoffray [Tue, 3 May 2016 13:04:02 +0000 (14:04 +0100)]
Put a handle on the String object.

Otherwise, a GC could occur in the loop below, and the String
be moved (note that there was already one for the Class object to
protect for that same problem).

bug:27561834

(cherry picked from commit a96f316f6f0526c91c6c102a267df6b1e4df39da)

Change-Id: I89c093dd67982abb3502975097a337c7e3816360

8 years agoMerge "ART: Dump more OatDexFile data in oatdump" into nyc-dev
Andreas Gampe [Tue, 3 May 2016 23:58:24 +0000 (23:58 +0000)]
Merge "ART: Dump more OatDexFile data in oatdump" into nyc-dev
am: 040bd29547

* commit '040bd295478edfcbd68ba04e549aab875078a7a6':
  ART: Dump more OatDexFile data in oatdump

Change-Id: I02b0545fff5242cf1f8764904dce1980ac06b309

8 years agoMerge "ART: Dump more OatDexFile data in oatdump" into nyc-dev
TreeHugger Robot [Tue, 3 May 2016 23:53:52 +0000 (23:53 +0000)]
Merge "ART: Dump more OatDexFile data in oatdump" into nyc-dev

8 years agoFix vtable corruption.
Alex Light [Tue, 3 May 2016 23:37:34 +0000 (23:37 +0000)]
Fix vtable corruption.
am: b554343e1d

* commit 'b554343e1d72104f0b26e749c1877d0566667a85':
  Fix vtable corruption.

Change-Id: I3b5086010a5ef2e348443d50de5167172e4f3812

8 years ago(dl)Close native libraries on unload
Dimitry Ivanov [Tue, 3 May 2016 22:05:41 +0000 (15:05 -0700)]
(dl)Close native libraries on unload

Dlclose native libraries when VM unloads a classloader. This
change is made to avoid leakage of adress space and RSS for
mapped but unreachable native libraries.

Bug: http://b/28406866
Change-Id: Iccaa87210908872c2013506d8a310955c1e3d888

8 years agoFix vtable corruption.
Alex Light [Tue, 3 May 2016 01:51:34 +0000 (18:51 -0700)]
Fix vtable corruption.

Due to failing to keep track of superclass implementations of
interface methods we could end up in situations where methods were
placed onto a class's vtable multiple times. This could cause virtual
and interface dispatches on subclasses to fail by causing corruption
of the subclass's vtable and iftable.

Bug: 28333278

(cherry picked from commit d6c2bfaff8850a9a02ee9b75cf8c96eadd8d5c69)

Change-Id: I37d9740ca912daf37cdf9ff82697bbc5db46177a

8 years agoHold a ClassLoader reference in NativeAllocationRegistry.
Richard Uhler [Tue, 3 May 2016 20:05:50 +0000 (13:05 -0700)]
Hold a ClassLoader reference in NativeAllocationRegistry.

So that the native library isn't unloaded before we have a chance to
call the freeFunction.

Bug: 28406866
Change-Id: Iafe4fdc68482b68a4b14d10880fa15dcbb65adf2

8 years agoART: Dump more OatDexFile data in oatdump
Andreas Gampe [Sat, 30 Apr 2016 00:52:07 +0000 (17:52 -0700)]
ART: Dump more OatDexFile data in oatdump

Add some stats about the enclosed dex file and type table when
dumping an oat file.

Bug: 28251566
Change-Id: I80c14e85d68cd1e3e4c64b7b9d86059d5ac8a6ad

8 years agoMerge "DexFile: Add an API to query oat file status." into nyc-dev
Narayan Kamath [Tue, 3 May 2016 11:34:48 +0000 (11:34 +0000)]
Merge "DexFile: Add an API to query oat file status." into nyc-dev
am: a421e9e758

* commit 'a421e9e758ebb29d3ca7d2b8911e8dfa9a3ded22':
  DexFile: Add an API to query oat file status.

Change-Id: Ia0dc9d4af4e0cb1089328bf5c517c8701428f9c3

8 years agoMerge "DexFile: Add an API to query oat file status." into nyc-dev
Narayan Kamath [Tue, 3 May 2016 11:31:00 +0000 (11:31 +0000)]
Merge "DexFile: Add an API to query oat file status." into nyc-dev

8 years agoDexFile: Add an API to query oat file status.
Narayan Kamath [Mon, 2 May 2016 12:14:48 +0000 (13:14 +0100)]
DexFile: Add an API to query oat file status.

Adds DexFile.getDexFileStatus(path), which returns an opaque,
human-readable string representation of the oat file status. This
representation isn't guaranteed to be stable and can change from
release to release.

bug: 27494108

Change-Id: I5fc42225ae65eb19dcd0c619a40cf674b34fc49c

8 years agoFix check_jni_compiler tests
Dimitry Ivanov [Tue, 3 May 2016 05:54:36 +0000 (05:54 +0000)]
Fix check_jni_compiler tests
am: 2041f98d80

* commit '2041f98d807edd8afa2ef8c172ed1967472c3d9e':
  Fix check_jni_compiler tests

Change-Id: I5cccd0a5d3d23cb715a98c4e1bbfbdcaf217c584

8 years agoSupply librarySearchPath to PathClassLoader
Dimitry Ivanov [Tue, 3 May 2016 05:54:31 +0000 (05:54 +0000)]
Supply librarySearchPath to PathClassLoader
am: 0452f4dcde

* commit '0452f4dcde1b67e4a5ee80e0c1ccd70156bf89ba':
  Supply librarySearchPath to PathClassLoader

Change-Id: I3c9a4b9a6359b2abed798ca3f5b3cb428d168c2c

8 years agoFix check_jni_compiler tests
Dimitry Ivanov [Fri, 29 Apr 2016 18:14:25 +0000 (11:14 -0700)]
Fix check_jni_compiler tests

Test needs to initialize nativeloader on runtime->Start(),
and reset it when runtime is stopped.

Bug: http://b/28449304
Change-Id: I0ba946fe5fc2817dff73154e3191444106dfcb08
(cherry picked from commit 5edb063fc050bad66fe4ae41c93f6d08b0ccccfe)

8 years agoMerge "Reset NativeLoader on DestroyJavaVM" into nyc-dev
Dimitry Ivanov [Mon, 2 May 2016 21:36:40 +0000 (21:36 +0000)]
Merge "Reset NativeLoader on DestroyJavaVM" into nyc-dev
am: e20267080d

* commit 'e20267080da1a800095a92744341b3148c36addb':
  Reset NativeLoader on DestroyJavaVM

Change-Id: I155d53758c7b57d6f33d4e27d375501d74da02fd

8 years agoSupply librarySearchPath to PathClassLoader
Dimitry Ivanov [Thu, 28 Apr 2016 23:29:22 +0000 (16:29 -0700)]
Supply librarySearchPath to PathClassLoader

PathClassLoader needs librarySearchPath in order to
be able to find native libraries.

The java.library.path property is no longer implicitly
applied to all basedexclassloaders, and needs to be
passed explicitly.

Bug: http://b/28449304
Change-Id: Id5b4273553d783c0f7a964f72ecb2c99f3aeaf6f
(cherry picked from commit 3a79b6389df39928823a7a8e862c2f647a1cd164)

8 years agoMerge "Reset NativeLoader on DestroyJavaVM" into nyc-dev
Dimitry Ivanov [Mon, 2 May 2016 21:20:00 +0000 (21:20 +0000)]
Merge "Reset NativeLoader on DestroyJavaVM" into nyc-dev

8 years agoReset NativeLoader on DestroyJavaVM
Dimitry Ivanov [Fri, 29 Apr 2016 23:02:38 +0000 (16:02 -0700)]
Reset NativeLoader on DestroyJavaVM

Native loader keeps vector of weak references
to classloader. ResetNativeLoader instructs
it to clear this vector once JavaVM is
destroyed.

Bug: http://b/28453840
Change-Id: I45e38c45268a741d86ec686266b13fde7d5fb9a2

8 years agoMerge "Fix profile saver to use base dex location" into nyc-dev
Mathieu Chartier [Sat, 30 Apr 2016 01:56:14 +0000 (01:56 +0000)]
Merge "Fix profile saver to use base dex location" into nyc-dev
am: dcb95ccfa4

* commit 'dcb95ccfa4e3e6acc299e8f8ce9964e5f62490ac':
  Fix profile saver to use base dex location

Change-Id: I35f856301533e890074c63b23759afd4657a9c50

8 years agoMerge "Fix profile saver to use base dex location" into nyc-dev
Mathieu Chartier [Sat, 30 Apr 2016 01:52:04 +0000 (01:52 +0000)]
Merge "Fix profile saver to use base dex location" into nyc-dev

8 years agoMerge "Correct monitor pool synchronization" into nyc-dev
Hans Boehm [Sat, 30 Apr 2016 00:44:50 +0000 (00:44 +0000)]
Merge "Correct monitor pool synchronization" into nyc-dev
am: da19488a46

* commit 'da19488a46bf9d0828ce88c504f7fbddddf805ed':
  Correct monitor pool synchronization

Change-Id: Id280a8daefb6f05c440d0a5c31a6c12cc5a64be1

8 years agoMerge "Correct monitor pool synchronization" into nyc-dev
Hans Boehm [Sat, 30 Apr 2016 00:37:45 +0000 (00:37 +0000)]
Merge "Correct monitor pool synchronization" into nyc-dev

8 years agoMerge "ART: Disambiguate access-checks mode from lock-counting" into nyc-dev
Andreas Gampe [Fri, 29 Apr 2016 23:17:34 +0000 (23:17 +0000)]
Merge "ART: Disambiguate access-checks mode from lock-counting" into nyc-dev
am: f957a5fcb5

* commit 'f957a5fcb5e21e50eac7d0071ebcf88d750fb0c0':
  ART: Disambiguate access-checks mode from lock-counting

Change-Id: I1137d5b3478ca2eb80d0bc003c38e21dc1a94d67

8 years agoMerge "ART: Disambiguate access-checks mode from lock-counting" into nyc-dev
Andreas Gampe [Fri, 29 Apr 2016 23:13:53 +0000 (23:13 +0000)]
Merge "ART: Disambiguate access-checks mode from lock-counting" into nyc-dev

8 years agoMerge "ART: Fix Mac build" into nyc-dev
Andreas Gampe [Fri, 29 Apr 2016 23:08:20 +0000 (23:08 +0000)]
Merge "ART: Fix Mac build" into nyc-dev
am: 8e181b2193

* commit '8e181b2193e0c556709d568eb2c5f38846bcd65f':
  ART: Fix Mac build

Change-Id: Ib87e11050d0f1c79e14d9fd0e3f7d5034ff9676b

8 years agoMerge "ART: Fix Mac build" into nyc-dev
Andreas Gampe [Fri, 29 Apr 2016 23:04:50 +0000 (23:04 +0000)]
Merge "ART: Fix Mac build" into nyc-dev

8 years agoART: Fix Mac build
Andreas Gampe [Fri, 29 Apr 2016 22:04:49 +0000 (15:04 -0700)]
ART: Fix Mac build

Fix Mac build after fc6898769ae1ef91ec3e41c0a273401213cb82cd.

Bug: 28423466
Change-Id: I6942bc86f1b0819d84bced5499afb0a4d235a39e

8 years agoMerge "Add ability to see if a dex file is backed by an oat file." into nyc-dev
Jeff Hao [Fri, 29 Apr 2016 21:13:36 +0000 (21:13 +0000)]
Merge "Add ability to see if a dex file is backed by an oat file." into nyc-dev
am: 739343484a

* commit '739343484a30e6d13b22bcb7b4ce16ad606cb53e':
  Add ability to see if a dex file is backed by an oat file.

Change-Id: I010f07921f5b05acd000ba63b88d350184427804

8 years agoMerge "Add ability to see if a dex file is backed by an oat file." into nyc-dev
Jeff Hao [Fri, 29 Apr 2016 21:07:48 +0000 (21:07 +0000)]
Merge "Add ability to see if a dex file is backed by an oat file." into nyc-dev

8 years agoFix profile saver to use base dex location
Mathieu Chartier [Fri, 29 Apr 2016 19:03:56 +0000 (12:03 -0700)]
Fix profile saver to use base dex location

Previously we were using the dex location. This only matches the
base location for the main dex file, and resulted in only the
main dex file to have classes recorded.

Bug: 28463739

Change-Id: I0117352150c7244dd048338dbb677abdd4554eb0

8 years agoCorrect monitor pool synchronization
Hans Boehm [Wed, 27 Apr 2016 22:04:24 +0000 (15:04 -0700)]
Correct monitor pool synchronization

The previous implementation allowed a thread looking up a monitor
to see an uninitialized monitor_chunks_ list if the list had
just been resized. The obvious small fix would be to replace the
relaxed load in LookupMonitor with an acquire load. But the
extra fence (on ARM) may involve an appreciable performance hit.

This instead redesigns the data structure to avoid the race in
LookupMonitor, along with the need to use atomics there at all. The
down side is a little more address arithmetic in LookupMonitor(),
a mild decrease in the limit on the total number of monitors, and
use of one extra page, since we now always reserve space for the
first page worth of monitor chunk pointers.

To me, the new algorithm feels cleaner and easier to reason about.

Although this problem was externally reported, it seems unlikely
that it was responsible for frequent failures. It could only
be triggered when the monitor chunk list was resized, which should
be quite rare.

Bug: 28385279
Change-Id: I433155d91702878f6b114480eda1fbf09706f623
(cherry picked from commit a319f4dbeea00701a0d12dc39b7bf0a5323f6b2a)

8 years agoMerge "Deduplicate simple roots in hprof." into nyc-dev
Richard Uhler [Fri, 29 Apr 2016 19:54:25 +0000 (19:54 +0000)]
Merge "Deduplicate simple roots in hprof." into nyc-dev
am: dc97e0498d

* commit 'dc97e0498dd1971afb02bdba80254b63f26aac24':
  Deduplicate simple roots in hprof.

Change-Id: I69f83f0fb341945e8e20897f7befd7d9fa0295c1

8 years agoMerge "Deduplicate simple roots in hprof." into nyc-dev
Richard Uhler [Fri, 29 Apr 2016 19:51:13 +0000 (19:51 +0000)]
Merge "Deduplicate simple roots in hprof." into nyc-dev

8 years agoMerge "ART: Log all monitor operations to systrace" into nyc-dev
Andreas Gampe [Fri, 29 Apr 2016 18:40:53 +0000 (18:40 +0000)]
Merge "ART: Log all monitor operations to systrace" into nyc-dev
am: 206d27da4e

* commit '206d27da4e38df51e2fc44de3ed4d1f54198662a':
  ART: Log all monitor operations to systrace

Change-Id: Ib042789c64eea65f11f0551e672742a088dda9ac

8 years agoMerge "ART: Log all monitor operations to systrace" into nyc-dev
TreeHugger Robot [Fri, 29 Apr 2016 18:37:18 +0000 (18:37 +0000)]
Merge "ART: Log all monitor operations to systrace" into nyc-dev

8 years agoMerge "Add null checks to weak DexCache references" into nyc-dev
Brian Carlstrom [Fri, 29 Apr 2016 18:11:07 +0000 (18:11 +0000)]
Merge "Add null checks to weak DexCache references" into nyc-dev
am: 640735afca

* commit '640735afca514104d951fca80105216af26c4b61':
  Add null checks to weak DexCache references

Change-Id: I3667d6e0c5e4c6582aafe290124b76782a1d7181

8 years agoMerge "Add null checks to weak DexCache references" into nyc-dev
Brian Carlstrom [Fri, 29 Apr 2016 18:02:58 +0000 (18:02 +0000)]
Merge "Add null checks to weak DexCache references" into nyc-dev

8 years agoMerge "ART: Add missing EXPORT_PCs to x86/_64 mterp" into nyc-dev
buzbee [Fri, 29 Apr 2016 17:40:56 +0000 (17:40 +0000)]
Merge "ART: Add missing EXPORT_PCs to x86/_64 mterp" into nyc-dev
am: a0be9d724f

* commit 'a0be9d724fa83d7a2c98f0d6197228547310e36b':
  ART: Add missing EXPORT_PCs to x86/_64 mterp

Change-Id: Id69f0a48644ff2b61103c5ee2a66c53d97e567b6

8 years agoMerge "ART: Add missing EXPORT_PCs to x86/_64 mterp" into nyc-dev
Bill Buzbee [Fri, 29 Apr 2016 17:37:28 +0000 (17:37 +0000)]
Merge "ART: Add missing EXPORT_PCs to x86/_64 mterp" into nyc-dev

8 years agoMerge "Add contender method for lock contention" into nyc-dev
Mathieu Chartier [Fri, 29 Apr 2016 17:29:00 +0000 (17:29 +0000)]
Merge "Add contender method for lock contention" into nyc-dev
am: 0e7316828d

* commit '0e7316828d5a92f7a0771886a131b96f4dd6c117':
  Add contender method for lock contention

Change-Id: I2e65f579ae94cfbab4e85443d7497e40f82c5492

8 years agoAdd null checks to weak DexCache references
Brian Carlstrom [Fri, 29 Apr 2016 17:28:34 +0000 (10:28 -0700)]
Add null checks to weak DexCache references

Bug: 28452385
Change-Id: I88243af47b8e091c360927d1bdb867770f092475

8 years agoMerge "Add contender method for lock contention" into nyc-dev
Mathieu Chartier [Fri, 29 Apr 2016 17:24:42 +0000 (17:24 +0000)]
Merge "Add contender method for lock contention" into nyc-dev

8 years agoAdd contender method for lock contention
Mathieu Chartier [Fri, 29 Apr 2016 00:21:08 +0000 (17:21 -0700)]
Add contender method for lock contention

Now prints the method that is attempting to acquire the lock.

Bug: 28223501
Change-Id: I47c4261d14d8767a873594594b7675a176b71d70

8 years agoART: Log all monitor operations to systrace
Andreas Gampe [Tue, 26 Apr 2016 03:08:55 +0000 (20:08 -0700)]
ART: Log all monitor operations to systrace

Add a VLOG option ("-verbose:systrace-locks") to log all monitor
operations to systrace. This requires non-fastpath thread
entrypoints, and ATRACE tags for locking and unlocking.

Do a bit of cleanup to the entrypoint initialization to share
common setup.

Bug: 28423466
Change-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3

8 years agoART: Add missing EXPORT_PCs to x86/_64 mterp
buzbee [Thu, 28 Apr 2016 23:08:44 +0000 (16:08 -0700)]
ART: Add missing EXPORT_PCs to x86/_64 mterp

Any time there is a possiblity that execution flow will leave
the mterp environment and transition either to an alternate
interpreter or compiled code, we need to export the cached copy of
the current Dalvik PC.  One path out related to on-stack-replacement
was missed in both x86 and x86_64 versions of mterp (other targets
are OK).

Note that there is an outstanding feature request to add support
to catch missing EXPORT_PCs (Bug: 26572899), though as envisioned
it would not have caught this one.

Bug: 28249238

(cherry picked from commit 963758dbfbbbc95bbfa82d5e02258d9fd481a459)

Change-Id: I3936509665636c0b77580dda12520a82ee814fa5

8 years agoRemove invoke after inlining.
Nicolas Geoffray [Fri, 29 Apr 2016 15:36:38 +0000 (15:36 +0000)]
Remove invoke after inlining.
am: 366728f70c

* commit '366728f70c3bf3598cea3c37fa57c7c9428706fa':
  Remove invoke after inlining.

Change-Id: Ie519b75dafd66baeecfd6d2a2e60396e17ff771a

8 years agoRemove invoke after inlining.
Nicolas Geoffray [Fri, 29 Apr 2016 12:56:01 +0000 (13:56 +0100)]
Remove invoke after inlining.

bug:28460178

(cherry picked from commit 1be7cbd532a41981019f1e89c8ecf404bc9af809)

Change-Id: I9a84af048600a4653af284a9b171c2ba4c4dcca5