OSDN Git Service

android-x86/art.git
8 years agoMerge "Compile JNI stubs for verify-profile and interpret-only."
Treehugger Robot [Tue, 24 May 2016 17:30:07 +0000 (17:30 +0000)]
Merge "Compile JNI stubs for verify-profile and interpret-only."

8 years agoCompile JNI stubs for verify-profile and interpret-only.
Vladimir Marko [Mon, 23 May 2016 14:32:42 +0000 (15:32 +0100)]
Compile JNI stubs for verify-profile and interpret-only.

This is the intended behavior to have a good JNI transition
performance.

Bug: 28902384

(cherry picked from commit 8c185bf0c6f18a5349bc87a7e3751ba06d90f461)

Change-Id: I52767909b916ada3c619206c8838b85bff5ac316

8 years agoMerge "Enforce class definition ordering rules in v37 Dex files."
Roland Levillain [Tue, 24 May 2016 10:26:42 +0000 (10:26 +0000)]
Merge "Enforce class definition ordering rules in v37 Dex files."

8 years agoMerge "Avoid the need for the black color for the baker-style read barrier."
Treehugger Robot [Mon, 23 May 2016 18:52:23 +0000 (18:52 +0000)]
Merge "Avoid the need for the black color for the baker-style read barrier."

8 years agoAvoid the need for the black color for the baker-style read barrier.
Hiroshi Yamauchi [Tue, 22 Dec 2015 19:09:18 +0000 (11:09 -0800)]
Avoid the need for the black color for the baker-style read barrier.

We used to set marked-through non-moving objects to black to
distinguish between an unmarked object and a marked-through
object (both would be white without black). This was to avoid a rare
case where a marked-through (white) object would be incorrectly set to
gray for a second time (and left gray) after it's marked
through (white/unmarked -> gray/marked -> white/marked-through ->
gray/incorrect). If an object is left gray, the invariant would be
broken that all objects are white when GC isn't running. Also, we
needed to have an extra pass over non-moving objects to change them
from black to white after the marking phase.

To avoid the need for the black color, we use a 'false gray' stack to
detect such rare cases and register affected objects on it and change
the objects to white at the end of the marking phase. This saves some
GC time because we can avoid the gray-to-black CAS per non-moving
object as well as the extra pass over non-moving objects.

Ritzperf EAAC (N6):
  Avg GC time:  232 ->  183 ms (-21%)
Total GC time: 15.3 -> 14.1 s  (-7.7%)

Bug: 12687968
Change-Id: Idb29c3dcb745b094bcf6abc4db646dac9cbd1f71

8 years agoMerge "Revert "Revert "Move rewritten StringFactory call results into dex registers...
Mingyao Yang [Mon, 23 May 2016 16:50:47 +0000 (16:50 +0000)]
Merge "Revert "Revert "Move rewritten StringFactory call results into dex registers for deopt"""

8 years agoMerge "Do not set property jpda.settings.syncPort in JDWP tests."
Treehugger Robot [Mon, 23 May 2016 09:22:31 +0000 (09:22 +0000)]
Merge "Do not set property jpda.settings.syncPort in JDWP tests."

8 years agoMerge "Only fill methods with 0xFE on debug builds"
Mathieu Chartier [Sat, 21 May 2016 00:03:41 +0000 (00:03 +0000)]
Merge "Only fill methods with 0xFE on debug builds"

8 years agoOnly fill methods with 0xFE on debug builds
Mathieu Chartier [Thu, 19 May 2016 17:13:04 +0000 (10:13 -0700)]
Only fill methods with 0xFE on debug builds

The GC scans classes without holding any locks, we can not fill
the methods if it is running. Added a GC critical section to address
this. Fixes random crash when scanning classes' methods.

Only for debug builds to not hurt performance.

(cherry picked from commit 22bd2a1b5ec2a5038cc3ae1964781f30aef0315f)

Bug: 28699001
Change-Id: If96155eaf3fc0e6df31f57dcf32fbd4063b09345

8 years agoRevert "Revert "Move rewritten StringFactory call results into dex registers for...
Mingyao Yang [Thu, 19 May 2016 17:48:40 +0000 (10:48 -0700)]
Revert "Revert "Move rewritten StringFactory call results into dex registers for deopt""

Potential gc points can make the result value stale. We now set the result value
to null proactively once it's moved to shadow frame registers. IsStringInit()
is written in a way that does string comparison instead of requiring method
resolution so that it doesn't have a gc point. Also we don't cache the callee
method during frame unwinding since the method may be rewritten already.

Bug: 28555675

Change-Id: Ic51511a4a0fc84a852d8d907f91e7835f49ac478

8 years agoDo not set property jpda.settings.syncPort in JDWP tests.
Roland Levillain [Fri, 20 May 2016 17:16:54 +0000 (18:16 +0100)]
Do not set property jpda.settings.syncPort in JDWP tests.

Let the OS choose the port automatically.

Bug: 28869570
Change-Id: I79775f9e72f7f8d0f9ec3d68c6f0bdb057ca13ff

8 years agoMerge "ARM: Add new String.compareTo intrinsic."
Vladimir Marko [Fri, 20 May 2016 13:55:13 +0000 (13:55 +0000)]
Merge "ARM: Add new String.compareTo intrinsic."

8 years agoARM: Add new String.compareTo intrinsic.
Scott Wakeling [Mon, 18 Apr 2016 08:00:11 +0000 (09:00 +0100)]
ARM: Add new String.compareTo intrinsic.

Benchmarked on Nexus6P big, little, and all cores. The new intrinsic is
faster than pStringCompareTo for compare lengths on [1,512], so the
runtime call is no longer needed.

Change-Id: If853b592dfc5e561ea3389b51729f37a2c89c18e

8 years agoMerge "ARM64: Move BIC after branch in StringCompareTo intrinsic."
Vladimir Marko [Fri, 20 May 2016 10:53:11 +0000 (10:53 +0000)]
Merge "ARM64: Move BIC after branch in StringCompareTo intrinsic."

8 years agoARM64: Move BIC after branch in StringCompareTo intrinsic.
Scott Wakeling [Fri, 20 May 2016 09:41:38 +0000 (10:41 +0100)]
ARM64: Move BIC after branch in StringCompareTo intrinsic.

Change-Id: Ic785dd93daab73b4b37917097c8c8ea2de797ed2

8 years agoMerge "Add missing check for IsShuttingDown in profile saver"
Treehugger Robot [Fri, 20 May 2016 02:26:43 +0000 (02:26 +0000)]
Merge "Add missing check for IsShuttingDown in profile saver"

8 years agoMerge "ART: Check whether an oat file exists before opening"
Treehugger Robot [Fri, 20 May 2016 01:37:46 +0000 (01:37 +0000)]
Merge "ART: Check whether an oat file exists before opening"

8 years agoAdd missing check for IsShuttingDown in profile saver
Calin Juravle [Wed, 18 May 2016 22:49:36 +0000 (15:49 -0700)]
Add missing check for IsShuttingDown in profile saver

Bug: 28814718

(cherry picked from commit 0233a413ba42aa34a92c357c8dcfbe48871788b9)

Change-Id: I709fc30147047c7a420cd6ff2f0c3b57c54c2021

8 years agoART: Check whether an oat file exists before opening
Andreas Gampe [Thu, 19 May 2016 04:10:42 +0000 (21:10 -0700)]
ART: Check whether an oat file exists before opening

The two-stage process of dlopen and our own loader is expensive.
Considering that the OatFileAssistant needs to check two locations,
one of which is unlikely to have a file for the common case of apps
installed in data, do a file existence check before attempting to
load the file.

Remove an unused variable.

Saves about 0.25ms on a N6P.

Bug: 28801010

(cherry picked from commit d9a720bcb5df2c135f161c7c6da2d25db4400dca)

Change-Id: I0aff9c276c0f539723f8a92663f14ce72160c44d

8 years agoMerge "Do not allow OSR jump while debugging is active."
Aart Bik [Thu, 19 May 2016 20:30:19 +0000 (20:30 +0000)]
Merge "Do not allow OSR jump while debugging is active."

8 years agoMerge changes I0bbdf83d,I70156f98
Treehugger Robot [Thu, 19 May 2016 19:02:16 +0000 (19:02 +0000)]
Merge changes I0bbdf83d,I70156f98

* changes:
  ART: Fix Mac build
  ART: Optimize PreSetup pass for oat-file open

8 years agoDo not allow OSR jump while debugging is active.
Aart Bik [Wed, 18 May 2016 22:44:07 +0000 (15:44 -0700)]
Do not allow OSR jump while debugging is active.

Rationale:
This prevents dangerous transitions between interpreter
and osr compiled code while e.g. single stepping through
a method that is becoming hot.

BUG=28672961

Change-Id: Ife8e641c05b3e3eb01284212270595c8677d6673

8 years agoMerge "Clean up JNI calling convention callee saves."
Vladimir Marko [Thu, 19 May 2016 17:37:39 +0000 (17:37 +0000)]
Merge "Clean up JNI calling convention callee saves."

8 years agoMerge "MIPS32: java.lang.Math.round(float)"
Aart Bik [Thu, 19 May 2016 17:25:26 +0000 (17:25 +0000)]
Merge "MIPS32: java.lang.Math.round(float)"

8 years agoMerge "Fix profile saver initial wait"
Mathieu Chartier [Thu, 19 May 2016 17:17:54 +0000 (17:17 +0000)]
Merge "Fix profile saver initial wait"

8 years agoClean up JNI calling convention callee saves.
Vladimir Marko [Thu, 19 May 2016 09:37:24 +0000 (10:37 +0100)]
Clean up JNI calling convention callee saves.

Precalculate callee saves at compile time and return them
as ArrayRef<> instead of keeping then in a std::vector<>.

Change-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef

8 years agoMerge "Revert "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64"""
Nicolas Geoffray [Thu, 19 May 2016 17:11:23 +0000 (17:11 +0000)]
Merge "Revert "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64"""

8 years agoFix profile saver initial wait
Mathieu Chartier [Thu, 19 May 2016 02:51:23 +0000 (19:51 -0700)]
Fix profile saver initial wait

Was using TimedWait for the initial wait, but this can return
early if the process receives any interrupt (due to futex). The
solution is to use a wait loop. If the wait returned early, not
enough classes were including in the profile. This negatively
affected application launch times in some scenarios.

Sample wait times before the change:
Waited 2.002s
Waited 97.808ms
Waited 182.676ms
Waited 2.000s
Waited 1.678s

Bug: 27688727

(cherry picked from commit 0ec065d55ccc4eb0956b0a2231bcc8c1a6d1d273)

Change-Id: I7cfdda9dcff942c7618d6022a0c31f872fb76fcf

8 years agoART: Fix Mac build
Andreas Gampe [Thu, 19 May 2016 04:27:00 +0000 (21:27 -0700)]
ART: Fix Mac build

Follow-up to 9821cceebf077cb747aed543582b3d740a03ea7f.

Bug: 28801010

(cherry picked from commit 17fc4bda7987654709dcc24ea5a7bd6a859e0966)

Change-Id: I0bbdf83d64ea81e56824aa19bfae3baa341a2b73

8 years agoART: Optimize PreSetup pass for oat-file open
Andreas Gampe [Wed, 18 May 2016 20:09:54 +0000 (13:09 -0700)]
ART: Optimize PreSetup pass for oat-file open

The PreSetup pass for opening an oatfile with dlopen parses all
shared objects and tries to retrieve the corresponding mem map
(so as to have a fake MemMap to reserve the space for any scanning
operations and so on). Optimistically optimize this pass by counting
the number of shared objects before the dlopen, and skipping as
many afterwards.

This saves about half a millisecond on an N6P.

Bug: 28801010

(cherry picked from commit 9821cceebf077cb747aed543582b3d740a03ea7f)

Change-Id: I70156f9875e89c5af3c9e36e8f01c5662e3f736e

8 years agoMerge "Allow libcore and JDWP tests to be executed without JIT."
Treehugger Robot [Thu, 19 May 2016 12:19:53 +0000 (12:19 +0000)]
Merge "Allow libcore and JDWP tests to be executed without JIT."

8 years agoAllow libcore and JDWP tests to be executed without JIT.
Roland Levillain [Thu, 19 May 2016 11:24:17 +0000 (12:24 +0100)]
Allow libcore and JDWP tests to be executed without JIT.

To use AOT compiling, pass `--no-jit` option to
run-libcore-tests.sh and run-jdwp-tests.sh

Change-Id: I16efce1f48747ecbf8b900427be73c5694b5fb13

8 years agoMerge "Catch classes inheriting from themselves in the class linker."
Roland Levillain [Thu, 19 May 2016 11:13:44 +0000 (11:13 +0000)]
Merge "Catch classes inheriting from themselves in the class linker."

8 years agoMerge "Revert "Move rewritten StringFactory call results into dex registers for deopt""
Treehugger Robot [Thu, 19 May 2016 01:06:25 +0000 (01:06 +0000)]
Merge "Revert "Move rewritten StringFactory call results into dex registers for deopt""

8 years agoRevert "Move rewritten StringFactory call results into dex registers for deopt"
Hiroshi Yamauchi [Thu, 19 May 2016 00:15:12 +0000 (00:15 +0000)]
Revert "Move rewritten StringFactory call results into dex registers for deopt"

This reverts commit 8ca33bf04060fadd5b35fa93fa56547c62fe52e7.

597-deopt-new-string is failing.

Bug: 28846692
Bug: 28555675
Change-Id: Ibfb59ec36e089c987ea64e4af4ca3709e536412a

8 years agoMerge "Make a fake libart for misbehaving apps."
Alex Light [Wed, 18 May 2016 21:05:41 +0000 (21:05 +0000)]
Merge "Make a fake libart for misbehaving apps."

8 years agoMerge "Move rewritten StringFactory call results into dex registers for deopt"
Mingyao Yang [Wed, 18 May 2016 17:45:27 +0000 (17:45 +0000)]
Merge "Move rewritten StringFactory call results into dex registers for deopt"

8 years agoCatch classes inheriting from themselves in the class linker.
Roland Levillain [Wed, 18 May 2016 14:52:54 +0000 (15:52 +0100)]
Catch classes inheriting from themselves in the class linker.

(cherry picked from commit 90328ac545f65759a8e4fb217a75332906795518)

Bug: 28685551
Bug: 27682580
Bug: 28830038

Change-Id: If568013bf3c82c1df9b282522712d9af5ca5945d

8 years agoMerge "Mark concrete HIR instructions as FINAL."
Treehugger Robot [Wed, 18 May 2016 12:50:03 +0000 (12:50 +0000)]
Merge "Mark concrete HIR instructions as FINAL."

8 years agoMark concrete HIR instructions as FINAL.
Vladimir Marko [Wed, 18 May 2016 11:48:17 +0000 (12:48 +0100)]
Mark concrete HIR instructions as FINAL.

This allows the compiler to apply more optimizations.

Change-Id: Ic7d8a457ea4e7d5853195cc4b56482703a1176d5

8 years agoEnforce class definition ordering rules in v37 Dex files.
Roland Levillain [Wed, 18 May 2016 10:41:33 +0000 (11:41 +0100)]
Enforce class definition ordering rules in v37 Dex files.

These new checks also reject classes extending or
implementing themselves directly or transitively within
a single Dex file.

Bug: 28812524
Bug: 28797012
Bug: 28685551
Bug: 27682580

Change-Id: I51c43f8b4b6a7abaade63682411e61f21767f5d4

8 years agoMerge "ART: Fix systrace monitor logging"
Treehugger Robot [Wed, 18 May 2016 05:15:59 +0000 (05:15 +0000)]
Merge "ART: Fix systrace monitor logging"

8 years agoART: Fix systrace monitor logging
Andreas Gampe [Tue, 17 May 2016 17:13:10 +0000 (10:13 -0700)]
ART: Fix systrace monitor logging

Thinlock unlocking was incorrectly unconditionally ending a block.

Bug: 28423466

(cherry picked from commit 825ab1c3f44fd84e5967f023c2dd8d36c6906f08)

Change-Id: Ifaebd9e959041e157e292d4cba05675a37e9c700

8 years agoMerge "ART: Blacklist a libcore test for investigation"
Nicolas Geoffray [Wed, 18 May 2016 03:08:54 +0000 (03:08 +0000)]
Merge "ART: Blacklist a libcore test for investigation"

8 years agoART: Blacklist a libcore test for investigation
Andreas Gampe [Wed, 18 May 2016 02:00:23 +0000 (19:00 -0700)]
ART: Blacklist a libcore test for investigation

Blacklist dalvik.system.DexClassLoaderTest#testDexThenPathClassLoader
for investigation.

Bug: 28826195
Change-Id: Ibff00293af3c7bc272e3b419f4065c0fd8c069cf

8 years agoMake a fake libart for misbehaving apps.
Alex Light [Fri, 15 Apr 2016 19:41:09 +0000 (12:41 -0700)]
Make a fake libart for misbehaving apps.

Bug: 27775991
Change-Id: I22864aa22d4864d85e055a5b1d3ff1faf122011b
(cherry picked from commit b270b9e6cba453209e226b0f621c75f2e51f122a)

8 years agoMove rewritten StringFactory call results into dex registers for deopt
Mingyao Yang [Mon, 16 May 2016 18:01:49 +0000 (11:01 -0700)]
Move rewritten StringFactory call results into dex registers for deopt

Bug: 28555675
Change-Id: I9236df283f2e83ca5dcde01f73dc0522d745cd59

8 years agoMerge "Fix an assert during jdwp debugging."
Mingyao Yang [Tue, 17 May 2016 22:11:33 +0000 (22:11 +0000)]
Merge "Fix an assert during jdwp debugging."

8 years agoMerge "Keep oat file unique pointers until they are no longer used."
Treehugger Robot [Tue, 17 May 2016 22:06:51 +0000 (22:06 +0000)]
Merge "Keep oat file unique pointers until they are no longer used."

8 years agoMerge "ART: Return native debuggable status of the app."
Mathieu Chartier [Tue, 17 May 2016 21:53:10 +0000 (21:53 +0000)]
Merge "ART: Return native debuggable status of the app."

8 years agoKeep oat file unique pointers until they are no longer used.
Jeff Hao [Tue, 26 Apr 2016 21:27:31 +0000 (14:27 -0700)]
Keep oat file unique pointers until they are no longer used.

Before, the unique pointer would be deleted before we were finished
using the dex file we opened from the oat file.

Bug: 28359191

(cherry-picked from commit a6d46161aea07ebd1cbd6ab78b2b323f940e9c1e)

Change-Id: I737d17536967af48d8748bde2b266a82410830b7

8 years agoART: Return native debuggable status of the app.
Oleksiy Vyalov [Thu, 31 Mar 2016 03:27:00 +0000 (20:27 -0700)]
ART: Return native debuggable status of the app.

Bug: 27942453

(cherry picked from commit dfbbeef151d52ec9c5bbc9f12449d4c74b8ec19e)

Change-Id: Ie474f4d830237d015436158829264b8bdf0a7194

8 years agoMerge "Fix debug leftover in profman"
Mathieu Chartier [Tue, 17 May 2016 20:28:33 +0000 (20:28 +0000)]
Merge "Fix debug leftover in profman"

8 years agoFix debug leftover in profman
Calin Juravle [Tue, 29 Mar 2016 13:03:10 +0000 (14:03 +0100)]
Fix debug leftover in profman

(cherry picked from commit 309eb7b11e6250b974c574f256d1c760cafa814e)

Bug: 27600652
Change-Id: I32466623379928cdaad839303e6ea3a39d673cd4

8 years agoMerge "Support to pass <uses-library> option through to dex2oat."
Treehugger Robot [Tue, 17 May 2016 18:53:31 +0000 (18:53 +0000)]
Merge "Support to pass <uses-library> option through to dex2oat."

8 years agoSupport to pass <uses-library> option through to dex2oat.
Jeff Hao [Tue, 29 Mar 2016 03:39:50 +0000 (20:39 -0700)]
Support to pass <uses-library> option through to dex2oat.

This change takes an app's shared libraries specified by <uses-library>
and passes it through to dex2oat to be used during compilation.

Part of a multi-project change.

Bug: 26880306

(cherry-picked from commit 26e8a2f150cd7f7195a10650ab8a5b6fa5014bc8)

Change-Id: I72a352abdfc37eacd8bedfa6c218e3809ca8e39c

8 years agoMerge "Add null checks to weak DexCache references"
Mathieu Chartier [Tue, 17 May 2016 17:10:07 +0000 (17:10 +0000)]
Merge "Add null checks to weak DexCache references"

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 "Clean up String.indexOf() intrinsics."
Vladimir Marko [Tue, 17 May 2016 17:05:15 +0000 (17:05 +0000)]
Merge "Clean up String.indexOf() intrinsics."

8 years agoMerge "Revert "Reject classes inheriting from themselves directly or transitively.""
Roland Levillain [Tue, 17 May 2016 15:50:29 +0000 (15:50 +0000)]
Merge "Revert "Reject classes inheriting from themselves directly or transitively.""

8 years agoRevert "Reject classes inheriting from themselves directly or transitively."
Roland Levillain [Tue, 17 May 2016 15:50:00 +0000 (15:50 +0000)]
Revert "Reject classes inheriting from themselves directly or transitively."

This reverts commit 498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9.

Reverting not to break apps that do not follow the class
definition order rules.

Bug: 28797012
Bug: 28685551
Bug: 27682580
Change-Id: I2491b5aefe3ca8a364a05f7dfbc899c5a5757712

8 years agoMerge "Revert "Reject classes implementing themselves as interface directly or transi...
Roland Levillain [Tue, 17 May 2016 15:48:48 +0000 (15:48 +0000)]
Merge "Revert "Reject classes implementing themselves as interface directly or transitively.""

8 years agoRevert "Reject classes implementing themselves as interface directly or transitively."
Roland Levillain [Tue, 17 May 2016 15:48:10 +0000 (15:48 +0000)]
Revert "Reject classes implementing themselves as interface directly or transitively."

This reverts commit 34598460015962699eb6b85b5fdb39400759280e.

Reverting not to break apps that do not follow the class
definition order rules.

Bug: 28797012
Change-Id: I77844a77f2d070563294fa0b01f8f68383c93fb8

8 years agoClean up String.indexOf() intrinsics.
Vladimir Marko [Tue, 17 May 2016 15:10:20 +0000 (16:10 +0100)]
Clean up String.indexOf() intrinsics.

Additional cleanup after
    https://android-review.googlesource.com/223260

Bug: 28330359
Change-Id: I88def196babec70123896ef581ec8d61bb1b9a9a

8 years agoMerge "Adjust ProfileSaver strategy"
Treehugger Robot [Tue, 17 May 2016 01:31:48 +0000 (01:31 +0000)]
Merge "Adjust ProfileSaver strategy"

8 years agoMerge "Visit IMT of all classes during image writing"
Mathieu Chartier [Tue, 17 May 2016 01:23:31 +0000 (01:23 +0000)]
Merge "Visit IMT of all classes during image writing"

8 years agoVisit IMT of all classes during image writing
Mathieu Chartier [Mon, 16 May 2016 21:58:01 +0000 (14:58 -0700)]
Visit IMT of all classes during image writing

We still need to visit the IMT for classes that does not have any
methods. It is required to visit the IMT of every class to assign
image offsets for the conflict table methods.

Added regression test.

Bug: 28707801

(cherry picked from commit 54689b7d5568dcf01ff42d69435d0af7ae4e4d8e)

Change-Id: I4806685c32df7f2707f6018e21a489bfd48af6f7

8 years agoAdjust ProfileSaver strategy
Calin Juravle [Fri, 29 Apr 2016 15:44:11 +0000 (16:44 +0100)]
Adjust ProfileSaver strategy

Change to a notification based strategy (instead of polling):
- the JIT notifies the ProfileSaver everytime it attempts a compilation
or generate (in a task) a ProfileInfo object for the method
- once a certain number of hot methods notification are received,
ProfileSaver wakes up the thread to do the analysis
- a wake up does not equal to I/O since the during processing we might
realized that's actually not enough new data.
- ProfileSaver throtles the request and ensures it doesn't do the
processing more often than kMinSavePeriodNs.

The new strategy avoids waking the thread unnecessary during extended
idle periods when we don't JIT.

Bug: 26815940

(cherry picked from commit 5fbb0fe0625a1f76aa33cd78ccf1a17b00d8f6d1)

Change-Id: Ifbac3a53c025e00a3faab6784bbfa679c6b42acb

8 years agoFix an assert during jdwp debugging.
Mingyao Yang [Tue, 10 May 2016 21:30:41 +0000 (14:30 -0700)]
Fix an assert during jdwp debugging.

When debugger attaches, we patch entry points of methods in framework code.
During that process, it's possible that some method's declaring class isn't
resolved yet. We need to relax one assert for that case.

Bug: 28630805
Change-Id: I59fd488ad75417a64b52321677ffcac6ccdc5ce1

8 years agoMerge "SafeStack-friendly stack protection in ART."
Evgenii Stepanov [Mon, 16 May 2016 20:17:17 +0000 (20:17 +0000)]
Merge "SafeStack-friendly stack protection in ART."

8 years agoMerge "Make quick frames of proxy methods visited if they're constructors."
Treehugger Robot [Mon, 16 May 2016 18:19:11 +0000 (18:19 +0000)]
Merge "Make quick frames of proxy methods visited if they're constructors."

8 years agoSafeStack-friendly stack protection in ART.
Evgenii Stepanov [Fri, 13 May 2016 21:01:41 +0000 (14:01 -0700)]
SafeStack-friendly stack protection in ART.

This code takes an address of a stack variable to find the current
stack top. With SafeStack, such variables can be allocated on a
separate, "unsafe" stack, generating a completely bogus address.

Use __builtin_frame_address(0) instead.

Change-Id: I84fe3161bdd01cebbb4e9bebf2aca86783cc6f15

8 years agoMake quick frames of proxy methods visited if they're constructors.
Jeff Hao [Fri, 13 May 2016 21:46:28 +0000 (14:46 -0700)]
Make quick frames of proxy methods visited if they're constructors.

Also adds a test case for getting annotations during moving GC.

Bug: 28510922

(cherry-picked from commit 12c08f03f65acc1c308491fc7ab6c57f682e2f24)

Change-Id: I0d5cc9d5bb8bbff6bd6b108f7486a63402a15993

8 years agoMerge "Typos and stylistic fixes."
Treehugger Robot [Mon, 16 May 2016 15:48:49 +0000 (15:48 +0000)]
Merge "Typos and stylistic fixes."

8 years agoTypos and stylistic fixes.
Roland Levillain [Thu, 12 May 2016 15:24:36 +0000 (16:24 +0100)]
Typos and stylistic fixes.

Change-Id: I1c88af9bd1d2cac6c803c8c61088c569a3847e01

8 years agoMerge "Reject classes implementing themselves as interface directly or transitively."
Roland Levillain [Mon, 16 May 2016 14:04:38 +0000 (14:04 +0000)]
Merge "Reject classes implementing themselves as interface directly or transitively."

8 years agoMerge "Reject classes inheriting from themselves directly or transitively."
Roland Levillain [Mon, 16 May 2016 12:39:43 +0000 (12:39 +0000)]
Merge "Reject classes inheriting from themselves directly or transitively."

8 years agoReject classes implementing themselves as interface directly or transitively.
Roland Levillain [Mon, 16 May 2016 11:22:55 +0000 (12:22 +0100)]
Reject classes implementing themselves as interface directly or transitively.

Also enforce class definition ordering with respect to
implemented interfaces within a Dex file.

Change-Id: I1cb991b1a976933f952d45ed08d8a189000ae4f5

8 years agoMerge "Fix the benchmark fail by caliper's change"
Paul Duffin [Mon, 16 May 2016 10:10:34 +0000 (10:10 +0000)]
Merge "Fix the benchmark fail by caliper's change"

8 years agoRevert "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64""
Serguei Katkov [Mon, 16 May 2016 05:53:15 +0000 (11:53 +0600)]
Revert "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64""

This reverts commit 0997d24e67d78f2146ebae2888eda0d7d254789a.

ART_HEAP_POISONING=true mode is fixed.

Change-Id: I83f6d5c101ea6a86802753f81b3e4348a263fb21
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
8 years agoMerge "Fix JNIEnv-on-wrong-thread abort message."
Treehugger Robot [Fri, 13 May 2016 20:40:06 +0000 (20:40 +0000)]
Merge "Fix JNIEnv-on-wrong-thread abort message."

8 years agoFix JNIEnv-on-wrong-thread abort message.
Daniel Erat [Wed, 11 May 2016 00:07:18 +0000 (18:07 -0600)]
Fix JNIEnv-on-wrong-thread abort message.

Update an incorrect abort message that claimed that thread A
was using the JNIEnv from thread A (when the JNIEnv was in
fact from another thread). Now, the message is e.g.

  JNI DETECTED ERROR IN APPLICATION: thread
  Thread[1,tid=628,Native,Thread*=0xb038b400,peer=0x75efc1f0,"main"]
  using JNIEnv* from thread
  Thread[6,tid=640,Runnable,Thread*=0xaa890800,peer=0x12c00ca0,"Binder:628_1"]

Change-Id: I877a78c47e88d1e8a28bade8ea40be6bed58439f

8 years agoMerge "Use _exit instead of exit for the system exit."
Hiroshi Yamauchi [Fri, 13 May 2016 18:07:16 +0000 (18:07 +0000)]
Merge "Use _exit instead of exit for the system exit."

8 years agoReject classes inheriting from themselves directly or transitively.
Roland Levillain [Thu, 12 May 2016 15:12:47 +0000 (16:12 +0100)]
Reject classes inheriting from themselves directly or transitively.

Also enforce class definition ordering with respect to super
classes within a Dex file.

Bug: 28685551
Bug: 27682580
Change-Id: If3eba782538eb4328d4b8a542236632379e7c050

8 years agoMerge "Ensure that java.lang.reflect.Field is initialized"
Przemyslaw Szczepaniak [Fri, 13 May 2016 12:26:22 +0000 (12:26 +0000)]
Merge "Ensure that java.lang.reflect.Field is initialized"

8 years agoEnsure that java.lang.reflect.Field is initialized
Przemyslaw Szczepaniak [Thu, 12 May 2016 13:55:48 +0000 (14:55 +0100)]
Ensure that java.lang.reflect.Field is initialized

Recent change in libcore (a move of clinit code
to register function for java.net.InetAddress
class) was triggering a failure in 119-noimage-patchoat
test. Failure was occurring when the test was running
without the image. This was caused by the
java.lang.reflect.Field not being initialized when
running InetAddress.<clinit>, which is a side effect
of calling JNIEnv->GetMethodId inside the libcore JNI_OnLoad.

This changes makes sure that this class is initialized
when we're running without image.

Bug: 28153851
Change-Id: I8aeb5eb312a163c452c40b851112544a8340e488

8 years agoMerge "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64""
Nicolas Geoffray [Fri, 13 May 2016 09:30:18 +0000 (09:30 +0000)]
Merge "Revert "ART: Reference.getReferent intrinsic for x86 and x86_64""

8 years agoRevert "ART: Reference.getReferent intrinsic for x86 and x86_64"
Nicolas Geoffray [Fri, 13 May 2016 09:29:01 +0000 (09:29 +0000)]
Revert "ART: Reference.getReferent intrinsic for x86 and x86_64"

Fails heap poisoning configuration.

This reverts commit afdc97ebcb4e58afb7cf54d846d30314e6499d83.

Change-Id: I50e53756a2b85059b89cfb8950f8c9e2b032743c

8 years agoMerge "Fix oatdump crash on arm64/arm code. Also adds 16 bit literal information."
Aart Bik [Thu, 12 May 2016 18:53:32 +0000 (18:53 +0000)]
Merge "Fix oatdump crash on arm64/arm code. Also adds 16 bit literal information."

8 years agoMerge "Don't expect permission to open foreign dex use marks."
Treehugger Robot [Thu, 12 May 2016 17:13:48 +0000 (17:13 +0000)]
Merge "Don't expect permission to open foreign dex use marks."

8 years agoMerge "Hold a ClassLoader reference in NativeAllocationRegistry."
Richard Uhler [Thu, 12 May 2016 17:05:13 +0000 (17:05 +0000)]
Merge "Hold a ClassLoader reference in NativeAllocationRegistry."

8 years agoFix oatdump crash on arm64/arm code.
Aart Bik [Wed, 11 May 2016 17:30:47 +0000 (10:30 -0700)]
Fix oatdump crash on arm64/arm code.
Also adds 16 bit literal information.

Rationale:
When "run-away" instructions are disassembled, the literal
addresses may go out of range, causing oatdump to crash.
This CL guards memory access against the full memory range
allocated to assembly instructions and data (it is possible
but not really necessary to refine this a bit). Out of range
arguments are now displayed as (?) to denote the issue, which
is a lot nicer than crashing.

BUG=28670871

Change-Id: I51e9b6a6a99162546fe31059f14278e8980451c2

8 years agoDon't expect permission to open foreign dex use marks.
Richard Uhler [Tue, 10 May 2016 21:01:18 +0000 (14:01 -0700)]
Don't expect permission to open foreign dex use marks.

sepolicy says we can create the mark files, but open requires
additional permissions we don't need. Don't print a warning when we
aren't given those additional permissions.

Bug: 28241500

(cherry picked from commit 12e4157666bfdc2ca38f459f6447385b80c7ddff)

Change-Id: I272befdb4fa58a0adf550fde52ddab5b5f5a9fe3

8 years agoMerge "ART: Reference.getReferent intrinsic for x86 and x86_64"
Roland Levillain [Thu, 12 May 2016 15:28:38 +0000 (15:28 +0000)]
Merge "ART: Reference.getReferent intrinsic for x86 and x86_64"

8 years agoMerge "Fix another case of live_in at irreducible loop entry."
Nicolas Geoffray [Thu, 12 May 2016 07:58:53 +0000 (07:58 +0000)]
Merge "Fix another case of live_in at irreducible loop entry."

8 years agoFix another case of live_in at irreducible loop entry.
Nicolas Geoffray [Tue, 10 May 2016 13:35:34 +0000 (14:35 +0100)]
Fix another case of live_in at irreducible loop entry.

GVN was implicitly extending the liveness of an instruction across
an irreducible loop.

Fix this problem by clearing the value set at loop entries that contain
an irreducible loop.

bug:28252896

(cherry picked from commit 77ce6430af2709432b22344ed656edd8ec80581b)

Change-Id: Ie0121e83b2dfe47bcd184b90a69c0194d13fce54

8 years agoUse _exit instead of exit for the system exit.
Hiroshi Yamauchi [Thu, 12 May 2016 02:27:44 +0000 (19:27 -0700)]
Use _exit instead of exit for the system exit.

We get DCHECK failures in ~Mutex() called from an atexit handler on
System.exit() in some tests. To avoid it, use _exit instead of exit.

Bug: 28106055
Change-Id: I2a6d2ad8170327553c9c9f0049829e3fd3937180

8 years agoMerge "Add histogram for native allocations"
Mathieu Chartier [Wed, 11 May 2016 21:57:28 +0000 (21:57 +0000)]
Merge "Add histogram for native allocations"

8 years agoAdd histogram for native allocations
Mathieu Chartier [Wed, 11 May 2016 18:35:39 +0000 (11:35 -0700)]
Add histogram for native allocations

Shows up in traces.txt, sample output:
Histogram of native allocation 0:4315,131072:33,1179648:3 bucket size 131072
Histogram of native free 0:995,131072:19,1179648:2 bucket size 131072

Bug: 28680116

(cherry picked from commit 0dce75dc6945c221a054eb9c479fb60efd193719)

Change-Id: Iaa07c6b8da0d6bab64a8fd4af8a02fc0b8c70e9e

8 years agoMerge "Prevent ArtMethod clearing race"
Mathieu Chartier [Wed, 11 May 2016 20:57:07 +0000 (20:57 +0000)]
Merge "Prevent ArtMethod clearing race"