OSDN Git Service

android-x86/art.git
8 years agoMerge "Address some code comments"
Mathieu Chartier [Tue, 29 Sep 2015 17:04:17 +0000 (17:04 +0000)]
Merge "Address some code comments"

8 years agoMerge "Optimizing: Simplify UShr+And, Shr+And."
Vladimir Marko [Tue, 29 Sep 2015 16:33:44 +0000 (16:33 +0000)]
Merge "Optimizing: Simplify UShr+And, Shr+And."

8 years agoMerge "Fix a bug in DeadPhiHandling around conflicting phis."
Nicolas Geoffray [Tue, 29 Sep 2015 15:18:29 +0000 (15:18 +0000)]
Merge "Fix a bug in DeadPhiHandling around conflicting phis."

8 years agoFix a bug in DeadPhiHandling around conflicting phis.
Nicolas Geoffray [Tue, 29 Sep 2015 12:42:22 +0000 (13:42 +0100)]
Fix a bug in DeadPhiHandling around conflicting phis.

Change-Id: I44ec40f71a7e05eb4295bea55f6045cb86017329

8 years agoMerge "Optimizing: Tag arena allocations in code generators."
Vladimir Marko [Tue, 29 Sep 2015 14:56:04 +0000 (14:56 +0000)]
Merge "Optimizing: Tag arena allocations in code generators."

8 years agoOptimizing: Simplify UShr+And, Shr+And.
Vladimir Marko [Fri, 25 Sep 2015 13:44:17 +0000 (14:44 +0100)]
Optimizing: Simplify UShr+And, Shr+And.

Eliminate And from UShr+And if the And-mask contains all the
bits that can be non-zero after UShr. Transform Shr+And to
UShr if the And-mask precisely clears the shifted-in sign
bits.

This prepares for detecting the Rotate pattern, i.e.
  (x << N) | (x >>> (SIZE - N))
in code that unnecessarily masks the UShr, for example
  (x << 1) | ((x >>> 31) & 1) ,
or uses Shr, for example
  (x << 8) | ((x >> 24) & 0xff) .

Change-Id: I684c4b752547d9b1057d0d4c4d44550bb1a3ffb4

8 years agoMerge "Quick: Avoid shifting -1 left (undefined behavior)."
Vladimir Marko [Tue, 29 Sep 2015 10:37:49 +0000 (10:37 +0000)]
Merge "Quick: Avoid shifting -1 left (undefined behavior)."

8 years agoQuick: Avoid shifting -1 left (undefined behavior).
Vladimir Marko [Tue, 29 Sep 2015 10:25:48 +0000 (11:25 +0100)]
Quick: Avoid shifting -1 left (undefined behavior).

C++11 clarifies that shifting left a negative value is
undefined behavior. Fix legacy code that shifted -1 left.

Bug: 24489455
Change-Id: Iaf4f26c7cde175f039b6a2cad12af6f0b1624fba

8 years agoOptimizing: Tag arena allocations in code generators.
Vladimir Marko [Mon, 28 Sep 2015 11:17:40 +0000 (12:17 +0100)]
Optimizing: Tag arena allocations in code generators.

And completely remove the deprecated GrowableArray.

Replace GrowableArray with ArenaVector in code generators
and related classes and tag arena allocations.

Label arrays use direct allocations from ArenaAllocator
because Label is non-copyable and non-movable and as such
cannot be really held in a container. The GrowableArray
never actually constructed them, instead relying on the
zero-initialized storage from the arena allocator to be
correct. We now actually construct the labels.

Also avoid StackMapStream::ComputeDexRegisterMapSize() being
passed null references, even though unused.

Change-Id: I26a46fdd406b23a3969300a67739d55528df8bf4

8 years agoMerge "Use dominance information for null optimization in write barrier."
Nicolas Geoffray [Tue, 29 Sep 2015 09:18:46 +0000 (09:18 +0000)]
Merge "Use dominance information for null optimization in write barrier."

8 years agoUse dominance information for null optimization in write barrier.
Nicolas Geoffray [Mon, 28 Sep 2015 15:25:37 +0000 (16:25 +0100)]
Use dominance information for null optimization in write barrier.

Change-Id: I8b57dafcd321c9afa1bbfc6a0674cbea15cbf10c

8 years agoAddress some code comments
Mathieu Chartier [Fri, 25 Sep 2015 23:54:59 +0000 (16:54 -0700)]
Address some code comments

Change-Id: I0a38a387c4328d45bbc04d095bf3388c27495c12

8 years agoMerge "ART: Single-frame deopt"
Andreas Gampe [Mon, 28 Sep 2015 22:40:18 +0000 (22:40 +0000)]
Merge "ART: Single-frame deopt"

8 years agoART: Single-frame deopt
Andreas Gampe [Wed, 3 Jun 2015 18:22:45 +0000 (11:22 -0700)]
ART: Single-frame deopt

Add deoptimization of a single frame. Works by removing the managed
code frame and jumping into the quick-to-interpreter bridge, and
the bridge understanding a stored ShadowFrame.

We need a separate fixup pass. For x86, we leave the return address
on the stack so we don't need to push it there.

Bug: 21611912
Change-Id: I06625685ced8b054244f8685ab50b238a705b9d2

8 years agoMerge "Don't unload shared libraries for null class loader."
Mathieu Chartier [Mon, 28 Sep 2015 17:52:52 +0000 (17:52 +0000)]
Merge "Don't unload shared libraries for null class loader."

8 years agoDon't unload shared libraries for null class loader.
Mathieu Chartier [Mon, 28 Sep 2015 17:33:00 +0000 (10:33 -0700)]
Don't unload shared libraries for null class loader.

If we load a shared library in the boot class loader (null),
then we create the SharedLibrary with a null class loader. We
shouldn't unload this shared library if the class loader decodes to
null since it may still be in use.

Fixes some hangs in gcstress tests.

Bug: 22720414
Change-Id: I52eca4cdba2c5ddd8e3dc7d133d253e5626c5b44

8 years agoMerge "ART: Run arch specific Checker tests on host"
David Brazdil [Mon, 28 Sep 2015 15:23:06 +0000 (15:23 +0000)]
Merge "ART: Run arch specific Checker tests on host"

8 years agoART: Run arch specific Checker tests on host
David Brazdil [Mon, 28 Sep 2015 15:15:50 +0000 (16:15 +0100)]
ART: Run arch specific Checker tests on host

The run-test script would not pass an architecture to Checker when
not in target mode and tests specific to x86(_64) would therefore not
be run.

Change-Id: Ibcbad0135e7a870e6ad3f09ab612fe276c97bcb8

8 years agoMerge "ART: Use unique_ptr for alloca-ed ShadowFrames"
Andreas Gampe [Mon, 28 Sep 2015 15:13:57 +0000 (15:13 +0000)]
Merge "ART: Use unique_ptr for alloca-ed ShadowFrames"

8 years agoMerge "Use make TARGET_LINKER= instead of overriding linker flags."
Nicolas Geoffray [Mon, 28 Sep 2015 15:11:19 +0000 (15:11 +0000)]
Merge "Use make TARGET_LINKER= instead of overriding linker flags."

8 years agoUse make TARGET_LINKER= instead of overriding linker flags.
Nicolas Geoffray [Mon, 28 Sep 2015 15:08:42 +0000 (16:08 +0100)]
Use make TARGET_LINKER= instead of overriding linker flags.

This solves building mips32 with gcc.

That's a temporary measure until we can set a custom target.

Change-Id: I1e8acfb0f5ca7e28d2ba3fb230b42800d5782973

8 years agoMerge "ART: Fix DeadPhiHandling creating >2 equivalents"
David Brazdil [Mon, 28 Sep 2015 14:37:25 +0000 (14:37 +0000)]
Merge "ART: Fix DeadPhiHandling creating >2 equivalents"

8 years agoART: Fix DeadPhiHandling creating >2 equivalents
David Brazdil [Mon, 28 Sep 2015 13:11:09 +0000 (14:11 +0100)]
ART: Fix DeadPhiHandling creating >2 equivalents

Run test 531 failed a DCHECK because the DeadPhiHandling algorithm
would generate three phis of the same type:
  (0) loop phi [#0, ref] with equivalents void & object
  (1) type object equivalent by its first input => int & int
  (2) request object equivalent by a user => int & int & object
  (3) type second => int & object & object (dead)
  (4) type first => object & object & object

This patch fixes the issue by skipping (1) when the phi already has
a type, thus not creating the third equivalent for the phi's user.

Change-Id: I00c990a5982ddc1f7de013f72bbcfb1c649a6e5f

8 years agoMerge "Address HPackedSwitch issues raised after merge"
David Brazdil [Mon, 28 Sep 2015 12:22:17 +0000 (12:22 +0000)]
Merge "Address HPackedSwitch issues raised after merge"

8 years agoAddress HPackedSwitch issues raised after merge
Mark Mendell [Thu, 24 Sep 2015 12:43:40 +0000 (08:43 -0400)]
Address HPackedSwitch issues raised after merge

There were some stylistic comments about the merged files.  Fix those.

Add a test that PackedSwitch can be removed by DCE.

Change-Id: Idf45833956e9b58051f942a52b06a1e416606e2e
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
8 years agoMerge "Revert "Revert "lambda: Experimental support for capture-variable and liberate...
Igor Murashkin [Mon, 28 Sep 2015 02:55:40 +0000 (02:55 +0000)]
Merge "Revert "Revert "lambda: Experimental support for capture-variable and liberate-variable"""

8 years agoRevert "Revert "lambda: Experimental support for capture-variable and liberate-variable""
Igor Murashkin [Mon, 28 Sep 2015 02:19:06 +0000 (19:19 -0700)]
Revert "Revert "lambda: Experimental support for capture-variable and liberate-variable""

This reverts commit 7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4.

Change-Id: If806ce5c6c5e96fdb2c3761dee096f74e7e5b001

8 years agoMerge "Revert "lambda: Experimental support for capture-variable and liberate-variable""
Nicolas Geoffray [Sun, 27 Sep 2015 19:50:57 +0000 (19:50 +0000)]
Merge "Revert "lambda: Experimental support for capture-variable and liberate-variable""

8 years agoRevert "lambda: Experimental support for capture-variable and liberate-variable"
Nicolas Geoffray [Sun, 27 Sep 2015 19:50:40 +0000 (19:50 +0000)]
Revert "lambda: Experimental support for capture-variable and liberate-variable"

Test fails.

This reverts commit b72123440d8541362ebdb131436f9dbdda5fd329.

Change-Id: Ic9ed92f8c826d8465eb36b746dc44af05caf041c

8 years agoMerge "MIPS64: Implement intrinsics from java.lang.Math:"
Andreas Gampe [Sat, 26 Sep 2015 02:45:05 +0000 (02:45 +0000)]
Merge "MIPS64: Implement intrinsics from java.lang.Math:"

8 years agoMerge "Disable class unloading test for tracing tests"
Mathieu Chartier [Sat, 26 Sep 2015 00:26:35 +0000 (00:26 +0000)]
Merge "Disable class unloading test for tracing tests"

8 years agoDisable class unloading test for tracing tests
Mathieu Chartier [Sat, 26 Sep 2015 00:12:48 +0000 (17:12 -0700)]
Disable class unloading test for tracing tests

Temporary fix.

Bug: 24414774
Change-Id: I6f04d6b3bb7eafa009391f46fe16cf2f363e0d70

8 years agoMerge "lambda: Experimental support for capture-variable and liberate-variable"
Igor Murashkin [Fri, 25 Sep 2015 23:55:58 +0000 (23:55 +0000)]
Merge "lambda: Experimental support for capture-variable and liberate-variable"

8 years agoMIPS64: Implement intrinsics from java.lang.Math:
Chris Larsen [Fri, 4 Sep 2015 19:54:28 +0000 (12:54 -0700)]
MIPS64: Implement intrinsics from java.lang.Math:

- abs(double)           - abs(float)            - abs(int)
- abs(long)             - ceil(double)          - floor(double)
- max(double, double)   - max(float, float)     - max(int, int)
- max(long, long)       - min(double, double)   - min(float, float)
- min(int, int)         - min(long, long)       - rint(double)
- sqrt(double)

The math intrinsics:

- round(double)         - round(float)

aren't implemented because there is no simple mapping from these Java
functions into MIPS assembly code.

Change-Id: I37ee5224d3d64f7162ed98521ba566fbc58d7905

8 years agolambda: Experimental support for capture-variable and liberate-variable
Igor Murashkin [Fri, 25 Sep 2015 21:22:08 +0000 (14:22 -0700)]
lambda: Experimental support for capture-variable and liberate-variable

Supports capturing/liberating any primitive variables.
No support for capturing objects/lambdas yet since they would both
need GC changes to track roots through closures.

Change-Id: Ibfb68bfe4c579dbf93823aac4c0e6ac8f6360c5d

8 years agoMerge "Fix tests 116 and 118 for no-prebuild"
Mathieu Chartier [Fri, 25 Sep 2015 22:48:01 +0000 (22:48 +0000)]
Merge "Fix tests 116 and 118 for no-prebuild"

8 years agoFix tests 116 and 118 for no-prebuild
Mathieu Chartier [Fri, 25 Sep 2015 22:40:30 +0000 (15:40 -0700)]
Fix tests 116 and 118 for no-prebuild

Added missing "JNI_OnLoad called" in the expected output.

Change-Id: I619aae215c767bd75494933fd3480ec7e91b0570

8 years agoMerge "MIPS64: Implement intrinsics from libcore.io.Memory:"
Andreas Gampe [Fri, 25 Sep 2015 22:14:19 +0000 (22:14 +0000)]
Merge "MIPS64: Implement intrinsics from libcore.io.Memory:"

8 years agoMerge "Fix bug in WaitForCompilationToFinish"
Mathieu Chartier [Fri, 25 Sep 2015 21:59:28 +0000 (21:59 +0000)]
Merge "Fix bug in WaitForCompilationToFinish"

8 years agoFix bug in WaitForCompilationToFinish
Mathieu Chartier [Fri, 25 Sep 2015 21:39:40 +0000 (14:39 -0700)]
Fix bug in WaitForCompilationToFinish

We now pass the barrier inside of Finalize, previously we did it in
Run. This was buggy since Finalize is called after Run and there was
a race condition where WaitForCompilationToFinish would delete the
task before we called Finalize.

Change-Id: I3f624fa9cdfcf2b266775c6927c336fb987dd58c

8 years agoMerge "ART: Move code from RA to T9 in Mips64 longjump"
Andreas Gampe [Fri, 25 Sep 2015 21:46:35 +0000 (21:46 +0000)]
Merge "ART: Move code from RA to T9 in Mips64 longjump"

8 years agoMerge "Fix JIT for class unloading"
Mathieu Chartier [Fri, 25 Sep 2015 20:20:27 +0000 (20:20 +0000)]
Merge "Fix JIT for class unloading"

8 years agoFix JIT for class unloading
Mathieu Chartier [Fri, 25 Sep 2015 18:34:45 +0000 (11:34 -0700)]
Fix JIT for class unloading

Keep declaring class of method live to prevent unloading.
Wait for JIT to finish compiling before calling Runtime.gc(), this
prevents flaky failures due to classes not being unloaded.

Bug: 22720414

Change-Id: I9fe5e5e39d681bcd22acc2d2f34b0dbc9887708d

8 years agoART: Move code from RA to T9 in Mips64 longjump
Andreas Gampe [Fri, 25 Sep 2015 15:24:13 +0000 (08:24 -0700)]
ART: Move code from RA to T9 in Mips64 longjump

Do not use the return address. It should not be clobbered as we
may need it, e.g., for single-frame deopt.

Change-Id: I401d7b0034bc4e210bda231ec78ee31242053b36

8 years agoMerge "MIPS64: Implement miscellaneous bit manipulation intrinsics"
Andreas Gampe [Fri, 25 Sep 2015 19:51:10 +0000 (19:51 +0000)]
Merge "MIPS64: Implement miscellaneous bit manipulation intrinsics"

8 years agoMerge "Call JNI_OnUnload when class loaders get collected"
Mathieu Chartier [Fri, 25 Sep 2015 18:34:32 +0000 (18:34 +0000)]
Merge "Call JNI_OnUnload when class loaders get collected"

8 years agoCall JNI_OnUnload when class loaders get collected
Mathieu Chartier [Wed, 23 Sep 2015 21:52:39 +0000 (14:52 -0700)]
Call JNI_OnUnload when class loaders get collected

Added test case to 141-class-unload.

Bug: 22720414
Change-Id: I0575fae72521520a17587e8b0088bf8112705ad8

8 years agoMIPS64: Implement intrinsics from libcore.io.Memory:
Chris Larsen [Fri, 4 Sep 2015 17:15:27 +0000 (10:15 -0700)]
MIPS64: Implement intrinsics from libcore.io.Memory:

- peekByte(long address)
- peekShort(long address)
- peekInt(long address)
- peekLong(long address)
- pokeByte(long address, byte value)
- pokeShort(long address, short value)
- pokeInt(long address, int value)
- pokeLong(long address, long value)

Change-Id: Ic5996ea035bf7e622b6fc85b9526ee8318cb6b1f

8 years agoMerge "ART: Reject PackedSwitch with overflowing keys"
David Brazdil [Fri, 25 Sep 2015 16:45:09 +0000 (16:45 +0000)]
Merge "ART: Reject PackedSwitch with overflowing keys"

8 years agoART: Reject PackedSwitch with overflowing keys
David Brazdil [Fri, 25 Sep 2015 15:57:53 +0000 (16:57 +0100)]
ART: Reject PackedSwitch with overflowing keys

As stated in "Dalvik bytecode" sections on switch payload format,
switch case keys must be stored in ascending order. Verifier enforced
this for sparse-switch but not for packed-switch.

Bug: 24399945
Change-Id: I0802d38e2bfae93c0dffe8ebfce2e9693a63ec02

8 years agoMerge "Optimizing: Add comment on DCE's packed-switch value check."
Vladimir Marko [Fri, 25 Sep 2015 16:26:18 +0000 (16:26 +0000)]
Merge "Optimizing: Add comment on DCE's packed-switch value check."

8 years agoOptimizing: Add comment on DCE's packed-switch value check.
Vladimir Marko [Fri, 25 Sep 2015 16:10:15 +0000 (17:10 +0100)]
Optimizing: Add comment on DCE's packed-switch value check.

Change-Id: I0c264d00b889917f88347c16c53e7647d0d8fd0f

8 years agoMerge "Enable class unloading"
Mathieu Chartier [Fri, 25 Sep 2015 15:50:24 +0000 (15:50 +0000)]
Merge "Enable class unloading"

8 years agoMerge "ART: Show the previous failure type in init rejection"
Andreas Gampe [Fri, 25 Sep 2015 15:46:06 +0000 (15:46 +0000)]
Merge "ART: Show the previous failure type in init rejection"

8 years agoMerge "ART: Fix misleading error message in method verifier."
Vladimir Marko [Fri, 25 Sep 2015 15:37:14 +0000 (15:37 +0000)]
Merge "ART: Fix misleading error message in method verifier."

8 years agoART: Fix misleading error message in method verifier.
Vladimir Marko [Fri, 25 Sep 2015 14:57:36 +0000 (15:57 +0100)]
ART: Fix misleading error message in method verifier.

Change-Id: I4805de0060b74168fa36e077a6a7ea59e9d72d46

8 years agoMerge "Optimizing: Tag more arena allocations."
Vladimir Marko [Fri, 25 Sep 2015 13:59:08 +0000 (13:59 +0000)]
Merge "Optimizing: Tag more arena allocations."

8 years agoMerge "Optimizing: Rewrite DCE's MarkReachableBlocks()."
Vladimir Marko [Fri, 25 Sep 2015 13:58:00 +0000 (13:58 +0000)]
Merge "Optimizing: Rewrite DCE's MarkReachableBlocks()."

8 years agoOptimizing: Rewrite DCE's MarkReachableBlocks().
Vladimir Marko [Thu, 24 Sep 2015 15:52:33 +0000 (16:52 +0100)]
Optimizing: Rewrite DCE's MarkReachableBlocks().

Replace a recursive implementation with a loop using a work
list to avoid stack overflow that we would presumably hit
for 702-LargeBranchOffset in host debug build with -O0, once
the DCE block elimination is enabled for methods containing
try-catch.

Bug: 24133462
Change-Id: I41288ba368722bcb5d68259c7c147552c8928099

8 years agoOptimizing: Tag more arena allocations.
Vladimir Marko [Thu, 17 Sep 2015 16:03:26 +0000 (17:03 +0100)]
Optimizing: Tag more arena allocations.

Replace GrowableArray with ArenaVector and tag arena
allocations with new allocation types.

As part of this, make the register allocator a bit more
efficient, doing bulk insert/erase. Some loops are now
O(n) instead of O(n^2).

Change-Id: Ifac0871ffb34b121cc0447801a2d07eefd308c14

8 years agoMerge "ART: SsaBuilder clean up"
David Brazdil [Fri, 25 Sep 2015 10:59:35 +0000 (10:59 +0000)]
Merge "ART: SsaBuilder clean up"

8 years agoART: SsaBuilder clean up
David Brazdil [Tue, 22 Sep 2015 13:39:58 +0000 (14:39 +0100)]
ART: SsaBuilder clean up

Adds DCHECKs which verify assumptions about catch blocks. Uses HPhi::
IsVRegEquivalentOf instead of a local function.

Change-Id: I1b6db5ff2da5263d61261963308b6d65453a6d56

8 years agoMerge "ART: Preserve loop headers with try/catch"
David Brazdil [Fri, 25 Sep 2015 09:50:18 +0000 (09:50 +0000)]
Merge "ART: Preserve loop headers with try/catch"

8 years agoART: Preserve loop headers with try/catch
David Brazdil [Tue, 22 Sep 2015 12:04:14 +0000 (13:04 +0100)]
ART: Preserve loop headers with try/catch

Algorithm for inserting HTryBoundary instructions would generate a
non-natural loop when a loop header block was covered by a TryItem.
This patch changes the approach to fix the issue.

Bug: 23895756
Change-Id: I0e1ee6cf135cea326a96c97954907d202c9793cc

8 years agoEnable class unloading
Mathieu Chartier [Sat, 19 Sep 2015 19:44:38 +0000 (12:44 -0700)]
Enable class unloading

Also added class unloading test. Added a missing write barrier in
the class linker to fix a heap corruption error.

Bug: 22720414
Change-Id: Iff615d69b574a4438e91d4c844279d202f4f2736

8 years agoMerge "dexdump2 won't be optional when it replaces dexdump."
Elliott Hughes [Thu, 24 Sep 2015 23:26:30 +0000 (23:26 +0000)]
Merge "dexdump2 won't be optional when it replaces dexdump."

8 years agoART: Use unique_ptr for alloca-ed ShadowFrames
Andreas Gampe [Tue, 1 Sep 2015 21:45:00 +0000 (14:45 -0700)]
ART: Use unique_ptr for alloca-ed ShadowFrames

To enable automated calls of the destructor (for extensions of
ShadowFrame), return a unique_ptr with a custom deleter. Use a
macro so that the alloca happens in the caller.

Change-Id: Id28a6ea131f108e4a94ff1699fc22e7b44aec018

8 years agodexdump2 won't be optional when it replaces dexdump.
Elliott Hughes [Thu, 24 Sep 2015 06:01:31 +0000 (23:01 -0700)]
dexdump2 won't be optional when it replaces dexdump.

So it should just be in /system/bin, not sad and lonely in /system/xbin.

Change-Id: I2edda827d36486f46fdcfd77f0ee6eec1345974c

8 years agoMerge "Optimizing: Rewrite HGraph::FindBackEdges()."
Vladimir Marko [Thu, 24 Sep 2015 17:13:16 +0000 (17:13 +0000)]
Merge "Optimizing: Rewrite HGraph::FindBackEdges()."

8 years agoMerge "Optimizing: Rewrite HGraph::ComputeDominanceInformation()."
Vladimir Marko [Thu, 24 Sep 2015 17:04:38 +0000 (17:04 +0000)]
Merge "Optimizing: Rewrite HGraph::ComputeDominanceInformation()."

8 years agoOptimizing: Rewrite HGraph::FindBackEdges().
Vladimir Marko [Thu, 24 Sep 2015 12:11:31 +0000 (13:11 +0100)]
Optimizing: Rewrite HGraph::FindBackEdges().

Replace a recursive implementation with a loop using a work
list to avoid stack overflow for 702-LargeBranchOffset in
host debug build with -O0, 512KiB thread pool worker stack.

Change-Id: Iaa91f006fa1099913aeffc9c764879bd004d56de

8 years agoOptimizing: Rewrite HGraph::ComputeDominanceInformation().
Vladimir Marko [Wed, 23 Sep 2015 15:07:14 +0000 (16:07 +0100)]
Optimizing: Rewrite HGraph::ComputeDominanceInformation().

Replace a recursive implementation with a loop using a work
list to avoid stack overflow for 702-LargeBranchOffset in
host debug build with -O0.

Bug: 24133462
Change-Id: I444cc85733a9212403a071ea98b9ddfb52bfc402

8 years agoMerge "ART: mprotect() bottom page of ThreadPoolWorker stacks."
Vladimir Marko [Thu, 24 Sep 2015 12:19:32 +0000 (12:19 +0000)]
Merge "ART: mprotect() bottom page of ThreadPoolWorker stacks."

8 years agoMerge "ART: Refactor run-test 482-loop-back-edge-use"
David Brazdil [Thu, 24 Sep 2015 11:16:17 +0000 (11:16 +0000)]
Merge "ART: Refactor run-test 482-loop-back-edge-use"

8 years agoART: mprotect() bottom page of ThreadPoolWorker stacks.
Vladimir Marko [Thu, 24 Sep 2015 09:41:33 +0000 (10:41 +0100)]
ART: mprotect() bottom page of ThreadPoolWorker stacks.

This will catch stack overflows instead of creating hard
to find issues later on.

Bug: 24133462
Change-Id: I3ae5d5da70b8167867936b2561830f3ff47f14fc

8 years agoMerge "Minor cleanup in range analysis."
Aart Bik [Thu, 24 Sep 2015 01:44:04 +0000 (01:44 +0000)]
Merge "Minor cleanup in range analysis."

8 years agoMinor cleanup in range analysis.
Aart Bik [Thu, 24 Sep 2015 00:50:50 +0000 (17:50 -0700)]
Minor cleanup in range analysis.

(1) replaced min/max macro as previously required.
(2) removed some redundant code by merging min/max into one.

Change-Id: I610879a06d550346bfac7e6e12ec0299ba226a37

8 years agoMerge "Various improvements in finding induction variables."
Aart Bik [Wed, 23 Sep 2015 23:34:54 +0000 (23:34 +0000)]
Merge "Various improvements in finding induction variables."

8 years agoVarious improvements in finding induction variables.
Aart Bik [Wed, 16 Sep 2015 19:50:25 +0000 (12:50 -0700)]
Various improvements in finding induction variables.

Rationale:
(1) Analyze multi-way phis (requested by Nicolas, Igor, and Mingyao).
(2) Analyze trip count for restricted != loops
(3) Added unit test for public API of range analysis (static methods
    were already well-tested).

Change-Id: I9285d22d3bb927f141204cc4697ea6fe5120994d

8 years agoMerge "Replaced INT_MIN/MAX with modern-day limits."
Aart Bik [Wed, 23 Sep 2015 18:43:56 +0000 (18:43 +0000)]
Merge "Replaced INT_MIN/MAX with modern-day limits."

8 years agoMerge "Add benchmark for jobject functions"
Mathieu Chartier [Wed, 23 Sep 2015 18:35:57 +0000 (18:35 +0000)]
Merge "Add benchmark for jobject functions"

8 years agoReplaced INT_MIN/MAX with modern-day limits.
Aart Bik [Wed, 23 Sep 2015 18:18:57 +0000 (11:18 -0700)]
Replaced INT_MIN/MAX with modern-day limits.

Change-Id: Ia6a0df1e8c6a543c338db0acd75437e1d19701e3

8 years agoMerge "Fix falkiness in 117-nopatchoat"
Alex Light [Wed, 23 Sep 2015 16:41:24 +0000 (16:41 +0000)]
Merge "Fix falkiness in 117-nopatchoat"

8 years agoFix falkiness in 117-nopatchoat
Alex Light [Sat, 19 Sep 2015 00:09:43 +0000 (17:09 -0700)]
Fix falkiness in 117-nopatchoat

Previously if the image chose a relocation delta of 0 this test would
fail. Now we check for this state directly.

Bug: 24192015

Change-Id: Ie818701edc5605fed590547f0e8b1e97d1d994e3

8 years agoART: Refactor run-test 482-loop-back-edge-use
David Brazdil [Wed, 23 Sep 2015 10:24:56 +0000 (11:24 +0100)]
ART: Refactor run-test 482-loop-back-edge-use

The test used to rely on absolute liveness positions of instructions.
This was painful but worked on all architectures because all passes
were platform agnostic. This does not apply any more and the test
needed to be rewritten.

Change-Id: I423e61ba64a9522361f8e20c27b1975656419f67

8 years agoMerge "Don't use ninja to build targets."
Nicolas Geoffray [Wed, 23 Sep 2015 11:04:28 +0000 (11:04 +0000)]
Merge "Don't use ninja to build targets."

8 years agoDon't use ninja to build targets.
Nicolas Geoffray [Wed, 23 Sep 2015 11:02:56 +0000 (12:02 +0100)]
Don't use ninja to build targets.

Ninja does not preserve the -e option given to make.

Change-Id: I3b540aa420a57369b67565477a31c6ff2c17afaf

8 years agoAdd benchmark for jobject functions
Mathieu Chartier [Wed, 23 Sep 2015 01:14:29 +0000 (18:14 -0700)]
Add benchmark for jobject functions

Measures performance of:
Add/RemoveLocalRef
Add/RemoveGlobalRef
Add/RemoveWeakGlobalRef
Decoding local, weak, global, handle scope jobjects.

N5 results:
benchmark    ns linear runtime
AddRemoveGlobal 476.7 ===========================
AddRemoveLocal  42.0 ==
AddRemoveWeakGlobal 519.7 ==============================
DecodeGlobal  69.9 ====
DecodeHandleScopeRef  38.9 ==
DecodeLocal  70.7 ====
DecodeWeakGlobal 119.7 ======

Change-Id: Iba014a9993909ee45fd52ae48d6dea8428a86bf2

8 years agoMerge "ART: PathClassLoader test"
Andreas Gampe [Tue, 22 Sep 2015 23:19:35 +0000 (23:19 +0000)]
Merge "ART: PathClassLoader test"

8 years agoART: PathClassLoader test
Andreas Gampe [Mon, 21 Sep 2015 18:25:10 +0000 (11:25 -0700)]
ART: PathClassLoader test

Add a test checking that subclassing PathClassLoader works as
expected.

Change-Id: Ic6bb733b748df5e29b21df021f302ed4237b0f99

8 years agoMerge "Some clean up for mark sweep files"
Mathieu Chartier [Tue, 22 Sep 2015 23:05:14 +0000 (23:05 +0000)]
Merge "Some clean up for mark sweep files"

8 years agoMerge "[optimizing] Add basic PackedSwitch support"
Andreas Gampe [Tue, 22 Sep 2015 23:05:00 +0000 (23:05 +0000)]
Merge "[optimizing] Add basic PackedSwitch support"

8 years agoMerge "Clear allocator in image writer"
Mathieu Chartier [Tue, 22 Sep 2015 23:04:55 +0000 (23:04 +0000)]
Merge "Clear allocator in image writer"

8 years agoClear allocator in image writer
Mathieu Chartier [Tue, 22 Sep 2015 22:18:04 +0000 (15:18 -0700)]
Clear allocator in image writer

Doesn't fix any active bugs, just precautionary.

Change-Id: I32a89e00b1d5964ad77fb53eded55263fea5df00

8 years agoSome clean up for mark sweep files
Mathieu Chartier [Tue, 22 Sep 2015 21:53:32 +0000 (14:53 -0700)]
Some clean up for mark sweep files

Bug: 19534862
Change-Id: Ib619e8c4b9d902269d123baa18be56c94114e070

8 years agoMerge "Fix static build when libbacktrace links llvm libraries."
Yabin Cui [Tue, 22 Sep 2015 21:18:55 +0000 (21:18 +0000)]
Merge "Fix static build when libbacktrace links llvm libraries."

8 years agoMerge "Fix CreateLinearAlloc bug"
Mathieu Chartier [Tue, 22 Sep 2015 18:23:19 +0000 (18:23 +0000)]
Merge "Fix CreateLinearAlloc bug"

8 years agoMerge "Various improvements in range analysis."
Aart Bik [Tue, 22 Sep 2015 18:05:39 +0000 (18:05 +0000)]
Merge "Various improvements in range analysis."

8 years agoFix CreateLinearAlloc bug
Mathieu Chartier [Tue, 22 Sep 2015 18:04:26 +0000 (11:04 -0700)]
Fix CreateLinearAlloc bug

Should have been using IsAotCompiler since the JIT has IsCompiler
as true but no low 4 GB arena pool.

Fixes 64 bit JIT tests.

Change-Id: Idc4d3e66c573eacd31ae85c66f8493b418d221d7

8 years agoMerge "Revert "Revert "Add one LinearAlloc per ClassLoader"""
Mathieu Chartier [Tue, 22 Sep 2015 16:28:12 +0000 (16:28 +0000)]
Merge "Revert "Revert "Add one LinearAlloc per ClassLoader"""