OSDN Git Service

android-x86/art.git
10 years agoart: Use SIRT::GetAlignedSirtSizeTarget in calling convention
Dmitry Petrochenko [Thu, 3 Apr 2014 07:35:54 +0000 (14:35 +0700)]
art: Use SIRT::GetAlignedSirtSizeTarget in calling convention

Calculate frame size based on SIRT::GetAlignedSirtSizeTarget existing method.

Make offset functions pointer-size-dependent for cross-compiling. Add
a test to check whether our computations are correct.

Change-Id: Ic66daf6f9908890eda906bdcbbc4444c4fef614f
Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
10 years agoMerge "AArch64 code alignment is 4 for OatWriter"
Andreas Gampe [Thu, 10 Apr 2014 02:16:32 +0000 (02:16 +0000)]
Merge "AArch64 code alignment is 4 for OatWriter"

10 years agoAArch64 code alignment is 4 for OatWriter
Andreas Gampe [Thu, 10 Apr 2014 00:28:11 +0000 (17:28 -0700)]
AArch64 code alignment is 4 for OatWriter

OatWriter DCHECKs against ARM alignment, which is 8 and <= all
other architectures *except* AArch64, so that was fine before.

Change-Id: I55a11fe60cfbec889f2e8d8b0f489fe0930ebf6f

10 years agoMerge "Change FindClass in GetQuickInvokedMethod to use reg_types_."
Mathieu Chartier [Thu, 10 Apr 2014 00:03:56 +0000 (00:03 +0000)]
Merge "Change FindClass in GetQuickInvokedMethod to use reg_types_."

10 years agoMerge "Revert "Revert "Revert "Use trampolines for calls to helpers""""
Dave Allison [Wed, 9 Apr 2014 23:36:43 +0000 (23:36 +0000)]
Merge "Revert "Revert "Revert "Use trampolines for calls to helpers""""

10 years agoRevert "Revert "Revert "Use trampolines for calls to helpers"""
Dave Allison [Wed, 9 Apr 2014 23:36:15 +0000 (23:36 +0000)]
Revert "Revert "Revert "Use trampolines for calls to helpers"""

This reverts commit f9487c039efb4112616d438593a2ab02792e0304.

Change-Id: Id48a4aae4ecce73db468587967968a3f7618b700

10 years agoChange FindClass in GetQuickInvokedMethod to use reg_types_.
Mathieu Chartier [Wed, 9 Apr 2014 22:45:08 +0000 (15:45 -0700)]
Change FindClass in GetQuickInvokedMethod to use reg_types_.

FindClass can do ScopedThreadStateChange which causes check failures
during SIGQUIT.

Bug: 13929160
Change-Id: I00be4972423c04254a922de3aa731e8edb38ca02

10 years agoMerge "Add mean GC duration to DumpGcPerformanceInfo."
Mathieu Chartier [Wed, 9 Apr 2014 22:30:26 +0000 (22:30 +0000)]
Merge "Add mean GC duration to DumpGcPerformanceInfo."

10 years agoMerge "Revert "Revert "Use trampolines for calls to helpers"""
Dave Allison [Wed, 9 Apr 2014 21:05:36 +0000 (21:05 +0000)]
Merge "Revert "Revert "Use trampolines for calls to helpers"""

10 years agoMerge "Switch profiler off by default"
Dave Allison [Wed, 9 Apr 2014 21:04:43 +0000 (21:04 +0000)]
Merge "Switch profiler off by default"

10 years agoSwitch profiler off by default
Dave Allison [Wed, 9 Apr 2014 20:51:55 +0000 (13:51 -0700)]
Switch profiler off by default

Change-Id: I40fdbfa1145a2e80644125932756b8ec7eafd4a2

10 years agoRevert "Revert "Use trampolines for calls to helpers""
Dave Allison [Tue, 8 Apr 2014 23:08:12 +0000 (23:08 +0000)]
Revert "Revert "Use trampolines for calls to helpers""

This reverts commit 081f73e888b3c246cf7635db37b7f1105cf1a2ff.

Change-Id: Ibd777f8ce73cf8ed6c4cb81d50bf6437ac28cb61

Conflicts:
compiler/dex/quick/mir_to_lir.h

10 years agoAdd mean GC duration to DumpGcPerformanceInfo.
Mathieu Chartier [Wed, 9 Apr 2014 18:41:49 +0000 (11:41 -0700)]
Add mean GC duration to DumpGcPerformanceInfo.

Change-Id: Ibd68e9d8cae71d0ceb769fc975f1148287e9ca4a

10 years agoMerge "ARM64: Fix array out of bounds access in DoLongJump"
Andreas Gampe [Wed, 9 Apr 2014 18:03:22 +0000 (18:03 +0000)]
Merge "ARM64: Fix array out of bounds access in DoLongJump"

10 years agoMerge "Adjust sticky GC ergonomics."
Mathieu Chartier [Wed, 9 Apr 2014 17:54:10 +0000 (17:54 +0000)]
Merge "Adjust sticky GC ergonomics."

10 years agoARM64: Fix array out of bounds access in DoLongJump
Andreas Gampe [Wed, 9 Apr 2014 17:25:11 +0000 (10:25 -0700)]
ARM64: Fix array out of bounds access in DoLongJump

Only copy the "real" 32 registers, not the virtual 33rd XZR.

Change-Id: I911a56e3ae3a4e76fd29da5eb7caae5c000fdc28

10 years agoAdjust sticky GC ergonomics.
Mathieu Chartier [Tue, 8 Apr 2014 20:44:04 +0000 (13:44 -0700)]
Adjust sticky GC ergonomics.

Added an adjustment factor that causes sticky GC to occur more often.
Currently, we adjust the throughput by 5 / 4 comapred to the non
sticky GC. This improves the MemAllocTest score by 50-100. I believe
this happens since the sticky GC uses less memory bandwidth than
partial/full GC. No benchmark score regression on
EvaluateAndApplyChanges though total GC time is increased by ~0.5s.

Bug: 13818507
Change-Id: Ic721a1bff069ddaf8acc55e776b8bc26e171d46e

10 years agoMerge "GSS: Fix the bump pointer space only collection."
Hiroshi Yamauchi [Wed, 9 Apr 2014 00:04:32 +0000 (00:04 +0000)]
Merge "GSS: Fix the bump pointer space only collection."

10 years agoMerge "Fix ARM64 invoke stubs, correct CFI directives"
Andreas Gampe [Tue, 8 Apr 2014 23:41:06 +0000 (23:41 +0000)]
Merge "Fix ARM64 invoke stubs, correct CFI directives"

10 years agoGSS: Fix the bump pointer space only collection.
Hiroshi Yamauchi [Tue, 8 Apr 2014 23:21:52 +0000 (16:21 -0700)]
GSS: Fix the bump pointer space only collection.

Fixes b/13912464 where the clear soft reference behavior accidentally
disabled the bump pointer space only collection.

Changed the collector name so that the GC logs would indicate the
generational mode and the collection mode.

Peformance enhancement: instead of triggering the whole heap
collection every 5 collections, count the bytes promoted since the
last whole heap collection and use it to decide when to trigger the
whole heap collection. This improves MemAllocTest by 5-10% (N4 and
host).

Bug: 13912464
Bug: 11650816
Bug: 9986565
Change-Id: I653a0dca62a8b54adf69abe2940a41eac70f809b

10 years agoFix ARM64 invoke stubs, correct CFI directives
Andreas Gampe [Mon, 7 Apr 2014 19:08:28 +0000 (12:08 -0700)]
Fix ARM64 invoke stubs, correct CFI directives

The stubs do not advance over the arguments array when they cannot
place the parameter in a register. Fixed.

Changed the frame code for the invoke stubs so that CFI is easier
to apply. Also defined two macros to unite the parts that are
identical between static and dynamic invoke. With moving one statement
and accepting 12B increased (dead) code size one could almost fully
unite the implementations.

Corrected CFI directives for the CALLEE_SAVE macros.

Change-Id: Idf593fc46f0b6e1eb579010d0cdcf9c1a71730b1

10 years agoMerge "Reset GC timings after SIGQUIT."
Mathieu Chartier [Tue, 8 Apr 2014 19:30:43 +0000 (19:30 +0000)]
Merge "Reset GC timings after SIGQUIT."

10 years agoMerge "Better error reporting when loading dex files"
Andreas Gampe [Tue, 8 Apr 2014 19:29:40 +0000 (19:29 +0000)]
Merge "Better error reporting when loading dex files"

10 years agoBetter error reporting when loading dex files
Andreas Gampe [Tue, 8 Apr 2014 17:32:19 +0000 (10:32 -0700)]
Better error reporting when loading dex files

Collect all partial error messages and return them as cause
exceptions for the top-level exception returned.

Change-Id: I9661b8aed2a571dc88bf0f06d447108eeaed1409

10 years agoReset GC timings after SIGQUIT.
Mathieu Chartier [Tue, 8 Apr 2014 18:14:54 +0000 (11:14 -0700)]
Reset GC timings after SIGQUIT.

We now reset the GC timings when a SIGQUIT happens, this is useful
for excluding GCs which happen during the initialization of an app
when measuring GC performance.

Change-Id: I68c79bdb279290c12ae588bc7e95ac24908c157e

10 years agoMerge "ART: A workaround for a wrongly-read caller's frame"
Andreas Gampe [Tue, 8 Apr 2014 14:55:16 +0000 (14:55 +0000)]
Merge "ART: A workaround for a wrongly-read caller's frame"

10 years agoMerge "Tweaked profile significant_difference."
Calin Juravle [Tue, 8 Apr 2014 13:37:43 +0000 (13:37 +0000)]
Merge "Tweaked profile significant_difference."

10 years agoMerge "Profile: made startImmediately settable"
Calin Juravle [Tue, 8 Apr 2014 13:37:27 +0000 (13:37 +0000)]
Merge "Profile: made startImmediately settable"

10 years agoMerge "Test control flow instruction with optimizing compiler."
Nicolas Geoffray [Tue, 8 Apr 2014 07:53:48 +0000 (07:53 +0000)]
Merge "Test control flow instruction with optimizing compiler."

10 years agoTest control flow instruction with optimizing compiler.
Nicolas Geoffray [Mon, 7 Apr 2014 14:26:35 +0000 (15:26 +0100)]
Test control flow instruction with optimizing compiler.

Add support for basic instructions to implement these tests.

Change-Id: I3870bf9301599043b3511522bb49dc6364c9b4c0

10 years agoMerge "Quick compiler: fix CmpLong pair handling"
buzbee [Tue, 8 Apr 2014 04:47:11 +0000 (04:47 +0000)]
Merge "Quick compiler: fix CmpLong pair handling"

10 years agoMerge "Implement rosalloc page trimming without suspending threads."
Hiroshi Yamauchi [Mon, 7 Apr 2014 23:13:17 +0000 (23:13 +0000)]
Merge "Implement rosalloc page trimming without suspending threads."

10 years agoImplement rosalloc page trimming without suspending threads.
Hiroshi Yamauchi [Mon, 7 Apr 2014 20:52:31 +0000 (13:52 -0700)]
Implement rosalloc page trimming without suspending threads.

Also, making it more efficient by not going through the chunks smaller
than the page size by not using InspectAll().

Change-Id: I79ceb0374cb8aba5f6b8dde1afbace9af98b6cff

10 years agoMerge "Use LIRSlowPath for throwing div by zero exception."
Mingyao Yang [Mon, 7 Apr 2014 22:47:42 +0000 (22:47 +0000)]
Merge "Use LIRSlowPath for throwing div by zero exception."

10 years agoMerge "Add monitor deflation."
Mathieu Chartier [Mon, 7 Apr 2014 21:30:39 +0000 (21:30 +0000)]
Merge "Add monitor deflation."

10 years agoUse LIRSlowPath for throwing div by zero exception.
Mingyao Yang [Mon, 7 Apr 2014 19:42:16 +0000 (12:42 -0700)]
Use LIRSlowPath for throwing div by zero exception.

Get rid of launchpads for throwing div by zero exception and
use LIRSlowPath instead. Add a CallRuntimeHelper that takes no
argument for the runtime function.

Bug: 13170824
Change-Id: I7e0563e736c6f92bd63e3fbdfe3a777ad333e338

10 years agoAdd monitor deflation.
Mathieu Chartier [Mon, 31 Mar 2014 23:36:35 +0000 (16:36 -0700)]
Add monitor deflation.

We now deflate the monitors when we perform a heap trim. This causes
a pause but it shouldn't matter since we should be in a state where
we don't care about pauses. Memory savings are hard to measure.

Fixed integer overflow bug in GetEstimatedLastIterationThroughput.

Bug: 13733906
Change-Id: I4e0e68add02e7f43370b3a5ea763d6fe8a5b212c

10 years agoMerge "AArch64: Fix Managed Register unit tests"
Andreas Gampe [Mon, 7 Apr 2014 20:28:28 +0000 (20:28 +0000)]
Merge "AArch64: Fix Managed Register unit tests"

10 years agoQuick compiler: fix CmpLong pair handling
buzbee [Mon, 7 Apr 2014 19:35:39 +0000 (12:35 -0700)]
Quick compiler: fix CmpLong pair handling

OpCmpLong wasn't properly extracting the low register of a
pair.

Change-Id: I6d6cc3de1f543f4316e561648f371f793502fddb

10 years agoMerge "Revert "Use trampolines for calls to helpers""
Dave Allison [Mon, 7 Apr 2014 19:01:40 +0000 (19:01 +0000)]
Merge "Revert "Use trampolines for calls to helpers""

10 years agoRevert "Use trampolines for calls to helpers"
Dave Allison [Mon, 7 Apr 2014 18:58:07 +0000 (18:58 +0000)]
Revert "Use trampolines for calls to helpers"

This reverts commit 754ddad084ccb610d0cf486f6131bdc69bae5bc6.

Change-Id: Icd979adee1d8d781b40a5e75daf3719444cb72e8

10 years agoMerge "Inlining synthetic accessors."
Vladimir Marko [Mon, 7 Apr 2014 18:03:26 +0000 (18:03 +0000)]
Merge "Inlining synthetic accessors."

10 years agoMerge "Use trampolines for calls to helpers"
Dave Allison [Mon, 7 Apr 2014 17:34:12 +0000 (17:34 +0000)]
Merge "Use trampolines for calls to helpers"

10 years agoMerge "Inlining setters that return one of their arguments."
Vladimir Marko [Mon, 7 Apr 2014 17:13:53 +0000 (17:13 +0000)]
Merge "Inlining setters that return one of their arguments."

10 years agoART: A workaround for a wrongly-read caller's frame
Vladimir Kostyukov [Wed, 2 Apr 2014 11:42:20 +0000 (18:42 +0700)]
ART: A workaround for a wrongly-read caller's frame

The quick-trampoline treats caller's frame in a different way
then it was formed by quck-invoke stub for hard float ABI targets
such as x86_64 and aarch64. The patch workarounds the issue of
wrongly-read stack arguments due to no contract between quick-invoke
stub and quick-trampoline/shadow-frame-builder regarding the reg-
spill area.

Change-Id: I302f212b4ea5e38632527a5ace03f136b21ef806
Signed-off-by: Vladimir Kostyukov <vladimir.kostyukov@intel.com>
10 years agoAArch64: Fix Managed Register unit tests
Serban Constantinescu [Wed, 2 Apr 2014 12:18:05 +0000 (13:18 +0100)]
AArch64: Fix Managed Register unit tests

Fixes the XZR change introduced by one of the previous patches. It
also adds extra testing for VIXL register integration.

Change-Id: I4935f06726e25829613ef7bb6ac052d82056812c
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
10 years agoInlining synthetic accessors.
Vladimir Marko [Wed, 2 Apr 2014 14:24:05 +0000 (15:24 +0100)]
Inlining synthetic accessors.

Bug: 11549140
Change-Id: I0d6a38c51887f55563414c240ac42ee64bdb5426

10 years agoProfile: made startImmediately settable
Calin Juravle [Mon, 7 Apr 2014 15:07:43 +0000 (18:07 +0300)]
Profile: made startImmediately settable

By default the profiler starts immediately upon app startup. To delay the
startup by some random offset use -Xprofile-start_lazy.

Bug: 12877748
Change-Id: Ifc1bb7f79f9f9aa53204b2fb1fbae3cd5c780cac

10 years agoInlining setters that return one of their arguments.
Vladimir Marko [Fri, 4 Apr 2014 13:52:53 +0000 (14:52 +0100)]
Inlining setters that return one of their arguments.

Useful for builder classes and synthetic setters. The latter
are not inlined yet since they are static methods, i.e. they
don't use "this" as the object for IPUT.

Change-Id: I3d34156c3629b837a0a95ccc34a8aae3f4a636d5

10 years agoMerge "Add support for taking parameters in optimizing compiler."
Nicolas Geoffray [Mon, 7 Apr 2014 14:35:31 +0000 (14:35 +0000)]
Merge "Add support for taking parameters in optimizing compiler."

10 years agoAdd support for taking parameters in optimizing compiler.
Nicolas Geoffray [Mon, 7 Apr 2014 12:20:42 +0000 (13:20 +0100)]
Add support for taking parameters in optimizing compiler.

- Fix stack layout to mimic Quick's.
- Implement some sub operations.

Change-Id: I8cf75a4d29b662381a64f02c0bc61d859482fc4e

10 years agoTweaked profile significant_difference.
Calin Juravle [Mon, 7 Apr 2014 13:36:21 +0000 (16:36 +0300)]
Tweaked profile significant_difference.

- renamed to 'change_thr'
- now it represents how much the top K leading samples need to change
(in percents) in order to trigger compilation.
- extracted ProfileData & file parsing in profiler.h

Bug: 12877748
Change-Id: I10f66120dd5e68b8a690bfa0e9914c07f63c50d5

10 years agoMerge "JDWP request is parsed incorrectly due to junk in the descriptor"
Sebastien Hertz [Mon, 7 Apr 2014 08:23:33 +0000 (08:23 +0000)]
Merge "JDWP request is parsed incorrectly due to junk in the descriptor"

10 years agoJDWP request is parsed incorrectly due to junk in the descriptor
nikolay serdjuk [Mon, 7 Apr 2014 06:54:24 +0000 (13:54 +0700)]
JDWP request is parsed incorrectly due to junk in the descriptor

The ClassHelper object is created and deleted on the same line.
Therefore it is wrong to refer to any class members of the object in
the next line. Any references to the object and the object itself
must have the same live ranges.

Change-Id: I792d7baa3828b0389254f2941705e006cab092cd
Signed-off-by: nikolay serdjuk <nikolay.y.serdjuk@intel.com>
10 years agoMerge "Revert "Inlining setters that return one of their arguments.""
Mathieu Chartier [Sat, 5 Apr 2014 01:29:36 +0000 (01:29 +0000)]
Merge "Revert "Inlining setters that return one of their arguments.""

10 years agoMerge "Revert "Inlining synthetic accessors.""
Mathieu Chartier [Sat, 5 Apr 2014 01:29:02 +0000 (01:29 +0000)]
Merge "Revert "Inlining synthetic accessors.""

10 years agoRevert "Inlining setters that return one of their arguments."
Mathieu Chartier [Sat, 5 Apr 2014 01:02:08 +0000 (18:02 -0700)]
Revert "Inlining setters that return one of their arguments."

Bug: 13817614

This reverts commit 8e40c3e662d852da87b6bcfe79355f96ab9e91c7.

Change-Id: Ia7ed2d933514781150b2e0b9855244e383c60187

10 years agoRevert "Inlining synthetic accessors."
Mathieu Chartier [Sat, 5 Apr 2014 01:02:04 +0000 (18:02 -0700)]
Revert "Inlining synthetic accessors."

This reverts commit 505ebb0e7b42e7facc8354515b06333ee8b84b10.

10 years agoMerge "Fix wrong handling of Generic JNI not finding native method."
Andreas Gampe [Fri, 4 Apr 2014 23:34:23 +0000 (23:34 +0000)]
Merge "Fix wrong handling of Generic JNI not finding native method."

10 years agoFix wrong handling of Generic JNI not finding native method.
Andreas Gampe [Fri, 4 Apr 2014 23:20:13 +0000 (16:20 -0700)]
Fix wrong handling of Generic JNI not finding native method.

Code did not properly call JNIMethodEnd, such that locks etc
where not correctly handled.

Add a test case to jni_compiler_test.

Change-Id: If2d5c628517d65a56dd6bb5c4cabdff77c7664a1

10 years agoMerge "Fix using kArm instead of kThumb2."
Mathieu Chartier [Fri, 4 Apr 2014 23:16:12 +0000 (23:16 +0000)]
Merge "Fix using kArm instead of kThumb2."

10 years agoFix using kArm instead of kThumb2.
Mathieu Chartier [Fri, 4 Apr 2014 23:10:05 +0000 (16:10 -0700)]
Fix using kArm instead of kThumb2.

Change-Id: I0f3bf93b38d910bc57d017693675829b6a39bc18

10 years agoUse trampolines for calls to helpers
Dave Allison [Wed, 19 Feb 2014 22:05:39 +0000 (14:05 -0800)]
Use trampolines for calls to helpers

This is an ARM specific optimization to the compiler
that uses trampoline islands to make calls to runtime
helper functions.  The intention is to reduce the size
of the generated code (by 2 bytes per call) without
affecting performance.

By default this is on when generating an OAT file.  It is
off when compiling to memory.

To switch this off in dex2oat, use the command line option:
--no-helper-trampolines

Enhances disassembler to print the trampoline entry on the
BL instruction like this:

0xb6a850c0: f7ffff9e  bl      -196 (0xb6a85000)  ; pTestSuspend

Bug: 12607709
Change-Id: I9202bdb7cf21252ad807bd48701f1f6ce8e3d0fe

10 years agoMerge "art_quick_lock_object uses registers incorrectly"
Ian Rogers [Fri, 4 Apr 2014 22:29:04 +0000 (22:29 +0000)]
Merge "art_quick_lock_object uses registers incorrectly"

10 years agoMerge "ARM: enable optimisation for easy multiply, add modulus pattern."
Ian Rogers [Fri, 4 Apr 2014 22:13:22 +0000 (22:13 +0000)]
Merge "ARM: enable optimisation for easy multiply, add modulus pattern."

10 years agoMerge "Check the machine type of an ELF file when loading."
Andreas Gampe [Fri, 4 Apr 2014 22:08:03 +0000 (22:08 +0000)]
Merge "Check the machine type of an ELF file when loading."

10 years agoCheck the machine type of an ELF file when loading.
Andreas Gampe [Fri, 4 Apr 2014 00:50:24 +0000 (17:50 -0700)]
Check the machine type of an ELF file when loading.

This ensures that we reject wrong target ELF files,
and should result in a recompile for the right
target.

Change-Id: I898dddc4f2bb9b1607a7436083d0ba7619b6007b

10 years agoMerge "Improve invalid root dumping."
Mathieu Chartier [Fri, 4 Apr 2014 18:37:41 +0000 (18:37 +0000)]
Merge "Improve invalid root dumping."

10 years agoImprove invalid root dumping.
Mathieu Chartier [Fri, 4 Apr 2014 18:09:41 +0000 (11:09 -0700)]
Improve invalid root dumping.

The invalid root dumping now attempts to print the root type.

Change-Id: Ie821296d569f34909ba6e2705f5c347cd2143a3a

10 years agoMerge "Disable use of R4 as a promotable register"
Dave Allison [Fri, 4 Apr 2014 17:25:33 +0000 (17:25 +0000)]
Merge "Disable use of R4 as a promotable register"

10 years agoMerge "Inlining synthetic accessors."
Vladimir Marko [Fri, 4 Apr 2014 17:19:02 +0000 (17:19 +0000)]
Merge "Inlining synthetic accessors."

10 years agoMerge "Inlining setters that return one of their arguments."
Vladimir Marko [Fri, 4 Apr 2014 16:42:17 +0000 (16:42 +0000)]
Merge "Inlining setters that return one of their arguments."

10 years agoInlining synthetic accessors.
Vladimir Marko [Wed, 2 Apr 2014 14:24:05 +0000 (15:24 +0100)]
Inlining synthetic accessors.

Bug: 11549140
Change-Id: Ie0034a6840b1beaa3df92f26bf9d315119c81e34

10 years agoInlining setters that return one of their arguments.
Vladimir Marko [Fri, 4 Apr 2014 13:52:53 +0000 (14:52 +0100)]
Inlining setters that return one of their arguments.

Useful for builder classes and synthetic setters. The latter
are not inlined yet since they are static methods, i.e. they
don't use "this" as the object for IPUT.

Change-Id: I946cf570195be83ecec5fb32851bcaefad45f8a5

10 years agoMerge "Re-enable DEX-to-DEX compilation path"
Sebastien Hertz [Fri, 4 Apr 2014 15:07:26 +0000 (15:07 +0000)]
Merge "Re-enable DEX-to-DEX compilation path"

10 years agoRe-enable DEX-to-DEX compilation path
Sebastien Hertz [Fri, 4 Apr 2014 13:59:53 +0000 (15:59 +0200)]
Re-enable DEX-to-DEX compilation path

Bug: 13807032
Change-Id: I6de7adb81a0f955a93257b83db9ad689ebcd90ad

10 years agoMerge "Fix LoadValueWide to not call MarkLive for high reg that is equal to low reg"
Bill Buzbee [Fri, 4 Apr 2014 14:00:12 +0000 (14:00 +0000)]
Merge "Fix LoadValueWide to not call MarkLive for high reg that is equal to low reg"

10 years agoMerge "Clean up special method inlining."
Vladimir Marko [Fri, 4 Apr 2014 13:18:51 +0000 (13:18 +0000)]
Merge "Clean up special method inlining."

10 years agoClean up special method inlining.
Vladimir Marko [Fri, 4 Apr 2014 11:37:07 +0000 (12:37 +0100)]
Clean up special method inlining.

Mark inlined getter/setter INVOKEs as NOP to allow implicit
null checks (SIGSEGV-based) rather than the explicit checks
in GenInvoke().

Avoid inlining wide setter and returning wide argument if
the wide source is not in consecutive dalvik registers in
INVOKE. This is valid dalvik bytecode and we should treat it
correctly even if we're currently unaware of any tools that
would generate such INVOKEs.

Remove bogus MIR_INLINED checks from LVN.

Change-Id: I7e75a832fcf9bd0550e21b1c8b3813c6166197dd

10 years agoMerge "Use target-specific word instead of runtime word."
Nicolas Geoffray [Fri, 4 Apr 2014 10:13:53 +0000 (10:13 +0000)]
Merge "Use target-specific word instead of runtime word."

10 years agoUse target-specific word instead of runtime word.
Nicolas Geoffray [Fri, 4 Apr 2014 09:50:14 +0000 (10:50 +0100)]
Use target-specific word instead of runtime word.

Change-Id: Ia11dc3cc520a1a5c7bd017013e5699af9570ce91

10 years agoMerge "Disassemble Thumb2 shifts and more VFP instructions."
Vladimir Marko [Fri, 4 Apr 2014 09:14:00 +0000 (09:14 +0000)]
Merge "Disassemble Thumb2 shifts and more VFP instructions."

10 years agoMerge "Add support for new-instance and invoke-direct."
Nicolas Geoffray [Fri, 4 Apr 2014 09:07:17 +0000 (09:07 +0000)]
Merge "Add support for new-instance and invoke-direct."

10 years agoMerge "Please clang by making explicit instantiations non-static."
Nicolas Geoffray [Fri, 4 Apr 2014 09:06:06 +0000 (09:06 +0000)]
Merge "Please clang by making explicit instantiations non-static."

10 years agoPlease clang by making explicit instantiations non-static.
Nicolas Geoffray [Fri, 4 Apr 2014 08:55:27 +0000 (09:55 +0100)]
Please clang by making explicit instantiations non-static.

Change-Id: I4112bf62c69b4f28ca369c4bf3c626be43692afd

10 years agoAdd support for new-instance and invoke-direct.
Nicolas Geoffray [Thu, 3 Apr 2014 17:49:58 +0000 (18:49 +0100)]
Add support for new-instance and invoke-direct.

Change-Id: I2daed646904f7711972a7da15d88be7573426932

10 years agoMerge "Explicitly instantiate artInvokeCommon to please analysis tool."
Nicolas Geoffray [Fri, 4 Apr 2014 08:35:57 +0000 (08:35 +0000)]
Merge "Explicitly instantiate artInvokeCommon to please analysis tool."

10 years agoExplicitly instantiate artInvokeCommon to please analysis tool.
Nicolas Geoffray [Fri, 4 Apr 2014 08:26:24 +0000 (09:26 +0100)]
Explicitly instantiate artInvokeCommon to please analysis tool.

Change-Id: I5c078a197c5026e9bd886d0ba1e188054b5ffa75

10 years agoMerge "Insert an empty read barrier call."
Hiroshi Yamauchi [Fri, 4 Apr 2014 04:34:09 +0000 (04:34 +0000)]
Merge "Insert an empty read barrier call."

10 years agoInsert an empty read barrier call.
Hiroshi Yamauchi [Thu, 3 Apr 2014 00:32:54 +0000 (17:32 -0700)]
Insert an empty read barrier call.

Bug: 12687968
Change-Id: Ie1d28658e16e09f6a983cb5c1f0d5b375b7ae069

10 years agoMerge "Fix Object::Clone()'s pre-fence barrier."
Hiroshi Yamauchi [Fri, 4 Apr 2014 02:54:16 +0000 (02:54 +0000)]
Merge "Fix Object::Clone()'s pre-fence barrier."

10 years agoart_quick_lock_object uses registers incorrectly
Serguei Katkov [Thu, 3 Apr 2014 08:17:26 +0000 (15:17 +0700)]
art_quick_lock_object uses registers incorrectly

x86 implementation of art_quick_lock_object uses registers
incorrectly in the case of .Lalready_thin. eax points to object
while it is used as holding the lock word.

The patch fixes this.

Change-Id: Iacf1a40c6570fae78a5504ca3b2f1218631f7a8f
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
10 years agoMerge "Restore the args in the invoke trampoline slow paths."
Mathieu Chartier [Fri, 4 Apr 2014 00:47:42 +0000 (00:47 +0000)]
Merge "Restore the args in the invoke trampoline slow paths."

10 years agoFix Object::Clone()'s pre-fence barrier.
Hiroshi Yamauchi [Thu, 3 Apr 2014 23:28:10 +0000 (16:28 -0700)]
Fix Object::Clone()'s pre-fence barrier.

Pass in a pre-fence barrier object that sets in the array length
instead of setting it after returning from AllocObject().

Fix another potential bug due to the wrong default pre-fence barrier
parameter value. Since this appears error-prone, removed the default
parameter value and make it an explicit parameter.

Fix another potential moving GC bug due to a lack of a SirtRef.

Bug: 13097759
Change-Id: I466aa0e50f9e1a5dbf20be5a195edee619c7514e

10 years agoRestore the args in the invoke trampoline slow paths.
Mathieu Chartier [Thu, 3 Apr 2014 22:25:30 +0000 (15:25 -0700)]
Restore the args in the invoke trampoline slow paths.

Previously, there were errors caused by not restoring the args for
the slow path in artInvokeInterfaceTrampoline and artInvokeCommon. The
slow path in artInvokeInterfaceTrampoline occurs when you attempt
to do an interface dispatch of a method in another dex file. The slow
path in artInvokeCommon occurs when the method in dex cache is not
already resolved.

Since FindMethodFromCode may resolve a method, it can occasionally
cause thread suspension/GC. If a moving GC occurred at this point it
resulted in this_object being invalid after the trampoline returned
the code pointer. This caused a native crash in one of the money runs
since there was an unbundeled app which did a List.iterator call.

Bug: 12934910
Change-Id: Ib454faad14bef0d7732a6d7f1ca5803472d502a6

10 years agoDisable use of R4 as a promotable register
Dave Allison [Thu, 3 Apr 2014 23:33:48 +0000 (16:33 -0700)]
Disable use of R4 as a promotable register

When we are using implicit suspend checks we can potentially
use r4 as a register into which variables can be promoted.  However
the runtime doesn't save this and thus will corrupt it.  Not good.

This disables the promotion of r4 until we can figure out how
to make the runtime save it properly.

Change-Id: Ib95ce93579e1c364de5ecc8e728f2cb7990da77a

10 years agoFix LoadValueWide to not call MarkLive for high reg that is equal to low reg
Chao-ying Fu [Thu, 3 Apr 2014 22:09:37 +0000 (15:09 -0700)]
Fix LoadValueWide to not call MarkLive for high reg that is equal to low reg

For x86 double FP registers, LoadValueWide should not call MarkLive for
high reg that is equal to low reg.

Change-Id: Ie6a59307c9ff93303bd489c15529432cfdeceaa4
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
10 years agoMerge "Do not output ARM64 assembler debug code."
Andreas Gampe [Thu, 3 Apr 2014 20:46:07 +0000 (20:46 +0000)]
Merge "Do not output ARM64 assembler debug code."

10 years agoMerge "Make frame size dependent on arch-specific constants."
Andreas Gampe [Thu, 3 Apr 2014 20:43:06 +0000 (20:43 +0000)]
Merge "Make frame size dependent on arch-specific constants."

10 years agoMerge "Add OpEndIT() for marking the end of OpIT blocks"
Dave Allison [Thu, 3 Apr 2014 20:41:20 +0000 (20:41 +0000)]
Merge "Add OpEndIT() for marking the end of OpIT blocks"