OSDN Git Service

android-x86/art.git
10 years agoMerge "Refactor object reference visiting logic."
Mathieu Chartier [Mon, 24 Mar 2014 23:39:22 +0000 (23:39 +0000)]
Merge "Refactor object reference visiting logic."

10 years agoRefactor object reference visiting logic.
Mathieu Chartier [Tue, 18 Feb 2014 22:37:05 +0000 (14:37 -0800)]
Refactor object reference visiting logic.

Refactored the reference visiting logic to be in mirror::Object
instead of MarkSweep.

Change-Id: I773249478dc463d83b465e85c2402320488577c0

10 years agoMerge "Fixes to mem_map wraparound and ARM64 quick_invoke assembly"
Andreas Gampe [Mon, 24 Mar 2014 18:53:17 +0000 (18:53 +0000)]
Merge "Fixes to mem_map wraparound and ARM64 quick_invoke assembly"

10 years agoMerge "Avoid strerror until we are sure there is an error"
Andreas Gampe [Mon, 24 Mar 2014 18:27:39 +0000 (18:27 +0000)]
Merge "Avoid strerror until we are sure there is an error"

10 years agoAvoid strerror until we are sure there is an error
Brian Carlstrom [Mon, 24 Mar 2014 06:47:25 +0000 (23:47 -0700)]
Avoid strerror until we are sure there is an error

Change-Id: I8f0c5a9cb1b07bfffd5ce9f9ca33f53c8834e9f5

10 years agoMerge "Refactor and optimize GC code."
Mathieu Chartier [Mon, 24 Mar 2014 16:52:54 +0000 (16:52 +0000)]
Merge "Refactor and optimize GC code."

10 years agoRefactor and optimize GC code.
Mathieu Chartier [Thu, 20 Mar 2014 19:41:23 +0000 (12:41 -0700)]
Refactor and optimize GC code.

Fixed the reference cache mod union table, and re-enabled it by
default. Added a boolean flag to count how many null objects,
immune, fast path, slow path objects we marked.

Slight speedup in mark stack processing, large speedup in image mod
union table scanning.
EvaluateAndApplyChanges Before:
Process mark stack time for full GC only:
12.464089s, 12.357870s, 12.538028s
Time spent marking mod image union table ~240ms.
After:
Process mark stack time: 12.299375s, 12.217142s, 12.187076s
Time spent marking mod image union table ~40ms.

TODO: Refactor reference visiting logic into mirror::Object.

Change-Id: I91889ded9d3f2bf127bc0051c1b1ff77e792e94f

10 years agoFixes to mem_map wraparound and ARM64 quick_invoke assembly
Andreas Gampe [Sat, 22 Mar 2014 00:25:57 +0000 (17:25 -0700)]
Fixes to mem_map wraparound and ARM64 quick_invoke assembly

There are only 6 free GPRs for passing in a non-static invoke. This
corrupted one register for long-signature methods.

The wrap-around did not actually wrap around correctly.

Change-Id: I62658dadeb83bb22960b9455e211d26ffaa20f6f

10 years agoMerge "Deduplicate the code that hardcodes the array header layout."
Hiroshi Yamauchi [Fri, 21 Mar 2014 23:30:33 +0000 (23:30 +0000)]
Merge "Deduplicate the code that hardcodes the array header layout."

10 years agoDeduplicate the code that hardcodes the array header layout.
Hiroshi Yamauchi [Fri, 21 Mar 2014 23:18:30 +0000 (16:18 -0700)]
Deduplicate the code that hardcodes the array header layout.

Get rid of HeaderSize() in array-inl.h and use DataOffset() instead.

Bug: 12687968
Change-Id: Ic81cf3fa6bb9b2440d351a73f5fd6a2d6908d15b

10 years agoMerge "Revoke rosalloc thread-local buffers at the checkpoint."
Hiroshi Yamauchi [Fri, 21 Mar 2014 23:25:42 +0000 (23:25 +0000)]
Merge "Revoke rosalloc thread-local buffers at the checkpoint."

10 years agoMerge "Don't return null for null utf in AllocFromModifiedUtf8."
Mathieu Chartier [Fri, 21 Mar 2014 22:49:00 +0000 (22:49 +0000)]
Merge "Don't return null for null utf in AllocFromModifiedUtf8."

10 years agoDon't return null for null utf in AllocFromModifiedUtf8.
Mathieu Chartier [Fri, 21 Mar 2014 21:09:35 +0000 (14:09 -0700)]
Don't return null for null utf in AllocFromModifiedUtf8.

If you pass in a null utf string it should not be the same behavior
as out of memory.

This previously caused serious problems in:
https://android-review.googlesource.com/#/c/80768/

Change-Id: I9dfb710b57f6cc91064812f52a3db64254769461

10 years agoMerge "Fix sign problem, implement low-mem mmap wraparound"
Andreas Gampe [Fri, 21 Mar 2014 21:43:34 +0000 (21:43 +0000)]
Merge "Fix sign problem, implement low-mem mmap wraparound"

10 years agoRevoke rosalloc thread-local buffers at the checkpoint.
Hiroshi Yamauchi [Thu, 20 Mar 2014 23:15:37 +0000 (16:15 -0700)]
Revoke rosalloc thread-local buffers at the checkpoint.

In the mark sweep collector, rosalloc thread-local buffers were
revoked during the pause. Now, they are revoked at the thread
checkpoint, as opposed to during the pause, which appears to help
reduce the pause time.

In Ritz MemAllocTest, the average sticky pause time went down ~20%
(925 us -> 724 us).

Bug: 13394464
Bug: 9986565
Change-Id: I104992a11b46d59264c0b9aa2db82b1ccf2826bc

10 years agoFix sign problem, implement low-mem mmap wraparound
Andreas Gampe [Fri, 21 Mar 2014 18:44:43 +0000 (11:44 -0700)]
Fix sign problem, implement low-mem mmap wraparound

A signed value comparison meant that on 64b systems comparisons
were false when pointers > 2GB were in use (as happens in long-running
tests). Fix this to be uint.

Implement a simple wrap-around in the MAP_32BIT emulation code.

Change-Id: I09870b4755f2dca676e42e701fbb6f6eb4bb95d0

10 years agoMerge "Improvements to Field.get/set."
Ian Rogers [Fri, 21 Mar 2014 18:43:36 +0000 (18:43 +0000)]
Merge "Improvements to Field.get/set."

10 years agoImprovements to Field.get/set.
Ian Rogers [Fri, 21 Mar 2014 18:21:29 +0000 (11:21 -0700)]
Improvements to Field.get/set.

Avoid unnecessary repeated computation in Field.get/set.
Refactor FromReflectedField and FromReflectedMethod into common helpers in
mirror::ArtField and mirror::ArtMethod, and make use of thereby avoiding
transitions through JNI.
Avoid JNI use from within FromReflectedField and FromReflectedMethod.
Tidy up Field.get/set wrt moving collector support.
Bug: 12189533

Change-Id: I643ab3474bade4abac3a3ae2b6e373b2bb0891c8

10 years agoMerge "Move saved SSA map to ScopedArenaAllocator to save memory."
Vladimir Marko [Fri, 21 Mar 2014 17:48:07 +0000 (17:48 +0000)]
Merge "Move saved SSA map to ScopedArenaAllocator to save memory."

10 years agoMerge "Refactor the garbage collector driver (GarbageCollector::Run)."
Hiroshi Yamauchi [Fri, 21 Mar 2014 17:47:50 +0000 (17:47 +0000)]
Merge "Refactor the garbage collector driver (GarbageCollector::Run)."

10 years agoMove saved SSA map to ScopedArenaAllocator to save memory.
Vladimir Marko [Fri, 21 Mar 2014 17:10:58 +0000 (17:10 +0000)]
Move saved SSA map to ScopedArenaAllocator to save memory.

Bug: 13564922
Change-Id: I917d451267ca6fceb2f6b2ff33b872ee8c209893

10 years agoMerge "Free Arenas from the ArenaStack before running codegen."
Vladimir Marko [Fri, 21 Mar 2014 16:10:12 +0000 (16:10 +0000)]
Merge "Free Arenas from the ArenaStack before running codegen."

10 years agoMerge "Fix method index for GDB information"
Andreas Gampe [Fri, 21 Mar 2014 15:15:31 +0000 (15:15 +0000)]
Merge "Fix method index for GDB information"

10 years agoFix method index for GDB information
Mark Mendell [Fri, 21 Mar 2014 15:00:18 +0000 (08:00 -0700)]
Fix method index for GDB information

This was pointed out to me by Vladimir Marko.  Just use the correct
value.

Change-Id: Ia0948ef9fb313acdd714fc23420328b2e21569eb
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
10 years agoFree Arenas from the ArenaStack before running codegen.
Vladimir Marko [Fri, 21 Mar 2014 14:21:20 +0000 (14:21 +0000)]
Free Arenas from the ArenaStack before running codegen.

Since the ArenaStack is used only by the MIRGraph and not by
the memory hungry codegen, freeing the ArenaStack's Arenas
just before running the codegen should reduce the compiler's
peak memory usage.

Bug: 13564922
Change-Id: I1cb49d367e4e81d71a03cac89b3739ed61e4f966

10 years agoMerge "Support inlining detection from debugger."
Sebastien Hertz [Fri, 21 Mar 2014 14:19:17 +0000 (14:19 +0000)]
Merge "Support inlining detection from debugger."

10 years agoSupport inlining detection from debugger.
Sebastien Hertz [Fri, 21 Mar 2014 10:31:51 +0000 (11:31 +0100)]
Support inlining detection from debugger.

In the context of the compiler, every method and field should be resolved. The
InlineMethodAnalyser uses that property so we don't inline unresolved methods
or methods accessing unresolved fields. In the context of the debugger, this is
not true. We may install a breakpoint in a method that's never been resolved
yet for instance.

This CL weaks that property so we can detect getter/setter methods can be
inlined even if they're not resolved yet. To differentiate both contexts, we
pass a null inline method pointer to InlineMethodAnalyser::AnalyseIGetMethod.

Bug: 12187616
Change-Id: I247f315b9abd6b065d5a7ec4116de15a6cce7649

10 years agoMerge "Fix and clean up intrinsic Math.abs(long)."
Vladimir Marko [Fri, 21 Mar 2014 13:18:33 +0000 (13:18 +0000)]
Merge "Fix and clean up intrinsic Math.abs(long)."

10 years agoFix and clean up intrinsic Math.abs(long).
Vladimir Marko [Thu, 20 Mar 2014 17:38:43 +0000 (17:38 +0000)]
Fix and clean up intrinsic Math.abs(long).

On ARM, make sure we don't clobber a register that we still
need for the next insn. On x86, don't free a source register
for temps if it's overlapping a result register as that
would allow the sign_reg temporary to alias with the result.

Change-Id: I785f2f607900ae8ceb2fa0b8f3eefafdf6fab5c7

10 years agoMerge "Fix issue parsing implicit_checks property"
Dave Allison [Fri, 21 Mar 2014 00:00:05 +0000 (00:00 +0000)]
Merge "Fix issue parsing implicit_checks property"

10 years agoFix issue parsing implicit_checks property
Dave Allison [Thu, 20 Mar 2014 21:45:17 +0000 (14:45 -0700)]
Fix issue parsing implicit_checks property

It was missing the initial value.

Change-Id: Id7554c9286947791a46358b0c07339e4d0eac1ee

10 years agoMerge "Fix RecordFree to take signed parameters."
Mathieu Chartier [Thu, 20 Mar 2014 22:54:25 +0000 (22:54 +0000)]
Merge "Fix RecordFree to take signed parameters."

10 years agoMerge "Add Heap::RunningOnValgrind and call it from the spaces."
Mathieu Chartier [Thu, 20 Mar 2014 22:54:09 +0000 (22:54 +0000)]
Merge "Add Heap::RunningOnValgrind and call it from the spaces."

10 years agoAdd Heap::RunningOnValgrind and call it from the spaces.
Mathieu Chartier [Thu, 20 Mar 2014 22:40:37 +0000 (15:40 -0700)]
Add Heap::RunningOnValgrind and call it from the spaces.

Makes it easier to disable valgrind support.

Change-Id: I1bde792f1b76a2dd968fa03c6142e92fcc3670b0

10 years agoFix RecordFree to take signed parameters.
Mathieu Chartier [Thu, 20 Mar 2014 22:12:30 +0000 (15:12 -0700)]
Fix RecordFree to take signed parameters.

RecordFree can get negative bytes allocated when background
compaction foreground transitions occur. This caused a DCHECK to
fail on debug builds. Also did some refactoring in
PreProcessReferences.

Bug: 13568814
Change-Id: I57543f1c78544a94f1d241459698b736dba8cfa8

10 years agoMerge "64bit: make runtime offsets more deterministic."
Ian Rogers [Thu, 20 Mar 2014 21:49:56 +0000 (21:49 +0000)]
Merge "64bit: make runtime offsets more deterministic."

10 years ago64bit: make runtime offsets more deterministic.
Ian Rogers [Thu, 20 Mar 2014 15:10:17 +0000 (08:10 -0700)]
64bit: make runtime offsets more deterministic.

STL implementations vary causing offsets not to be consistent. Place member
variables we care about the offsets of at the start of Runtime.

Change-Id: I3ad7fe606cb99bcdd884a8fdbdd06bd7e047cd84

10 years agoMerge "Fix a libartd.so boot DCHECK failure with the GSS collector."
Hiroshi Yamauchi [Thu, 20 Mar 2014 21:11:23 +0000 (21:11 +0000)]
Merge "Fix a libartd.so boot DCHECK failure with the GSS collector."

10 years agoMerge "HACK: force target art executables to be compiled for 32-bit"
Colin Cross [Thu, 20 Mar 2014 20:37:15 +0000 (20:37 +0000)]
Merge "HACK: force target art executables to be compiled for 32-bit"

10 years agoFix a libartd.so boot DCHECK failure with the GSS collector.
Hiroshi Yamauchi [Thu, 20 Mar 2014 20:31:37 +0000 (13:31 -0700)]
Fix a libartd.so boot DCHECK failure with the GSS collector.

Bug: 11650816
Change-Id: Ibbdf1e66d2c1afe92351ee7a0ca84702bd07035d

10 years agoHACK: force target art executables to be compiled for 32-bit
Colin Cross [Thu, 20 Mar 2014 19:55:13 +0000 (12:55 -0700)]
HACK: force target art executables to be compiled for 32-bit

64-bit dex2oat doesn't support 32-bit targets yet, force all
art executables to compile 32-bit for now.

Change-Id: If69f0a45e55104a5e915a9c58afa9009aa68b71c

10 years agoRefactor the garbage collector driver (GarbageCollector::Run).
Hiroshi Yamauchi [Thu, 20 Mar 2014 19:03:02 +0000 (12:03 -0700)]
Refactor the garbage collector driver (GarbageCollector::Run).

Bug: 12687968

Change-Id: Ifc9ee86249f7938f51495ea1498cf0f7853a27e8

10 years agoMerge "Make all gc maps with 0 entries identical."
Vladimir Marko [Thu, 20 Mar 2014 17:38:29 +0000 (17:38 +0000)]
Merge "Make all gc maps with 0 entries identical."

10 years agoMerge "Clean up intrinsic Math.abs(float/double)."
Vladimir Marko [Thu, 20 Mar 2014 17:37:38 +0000 (17:37 +0000)]
Merge "Clean up intrinsic Math.abs(float/double)."

10 years agoMake all gc maps with 0 entries identical.
Vladimir Marko [Thu, 20 Mar 2014 15:08:57 +0000 (15:08 +0000)]
Make all gc maps with 0 entries identical.

Change-Id: Ie4fee22ffed07d23d103f52e4ab39ef083678d85

10 years agoMerge "Add soft reference pre processing."
Mathieu Chartier [Thu, 20 Mar 2014 16:27:20 +0000 (16:27 +0000)]
Merge "Add soft reference pre processing."

10 years agoAdd soft reference pre processing.
Mathieu Chartier [Thu, 20 Mar 2014 00:08:17 +0000 (17:08 -0700)]
Add soft reference pre processing.

Soft reference pre-processing does soft reference preservation with
mutators running. After this is done, it does another pass with
mutators paused in the ProcessReference code. This helps lower pauses
since most preserved soft references have their referents recursive
marked outside the pause.

Changed ergonomics to have non sticky collectors always clear the
soft references.

Maps pauses ~10ms -> ~3ms on Nexus 4.

Bug: 13421927

Change-Id: I1370f7bb6934034869aa5afca0c377876267aa8e

10 years agoMerge "Add FINAL and OVERRIDE to calling conventions of the JNI compiler"
Andreas Gampe [Thu, 20 Mar 2014 16:13:41 +0000 (16:13 +0000)]
Merge "Add FINAL and OVERRIDE to calling conventions of the JNI compiler"

10 years agoAdd FINAL and OVERRIDE to calling conventions of the JNI compiler
Andreas Gampe [Thu, 20 Mar 2014 15:34:03 +0000 (08:34 -0700)]
Add FINAL and OVERRIDE to calling conventions of the JNI compiler

Change-Id: I72d75e6eabbef334a9244668a1b20f7113f76c2b

10 years agoClean up intrinsic Math.abs(float/double).
Vladimir Marko [Wed, 19 Mar 2014 11:56:59 +0000 (11:56 +0000)]
Clean up intrinsic Math.abs(float/double).

Don't load 0x7fffffff into register.

Change-Id: I0197f9f3ad33db1f6eb09a9b4113299c00f500e3

10 years agoMerge "Fix message in 083-compiler_regressions test"
buzbee [Thu, 20 Mar 2014 14:58:55 +0000 (14:58 +0000)]
Merge "Fix message in 083-compiler_regressions test"

10 years agoFix message in 083-compiler_regressions test
buzbee [Thu, 20 Mar 2014 14:07:53 +0000 (07:07 -0700)]
Fix message in 083-compiler_regressions test

Fix test failure message to reflect expected result.

Change-Id: I75ae3e882671aa429ecb17487188720c19ff4d32

10 years agoMerge "Fix GenArithOpInt to work with RA correctly"
Bill Buzbee [Thu, 20 Mar 2014 14:04:52 +0000 (14:04 +0000)]
Merge "Fix GenArithOpInt to work with RA correctly"

10 years agoMerge "ART: API changes"
Bill Buzbee [Thu, 20 Mar 2014 14:04:24 +0000 (14:04 +0000)]
Merge "ART: API changes"

10 years agoFix GenArithOpInt to work with RA correctly
Serguei Katkov [Fri, 14 Mar 2014 06:33:33 +0000 (13:33 +0700)]
Fix GenArithOpInt to work with RA correctly

In a case of mul-int/2addr bytecode when source operand is in
memory implementation should first load value of destination
and then evaluate location for destination. Otherwise load will
be skipped because after evaluation of physical register for
destination load will be ignored due to register allocator
thinks that value is already in register.

Change-Id: Iecee5a07d0fba16b421b8c49d42c5d8623794ad7
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
10 years agoMerge "Fix JDWP ObjectReference.InvokeMethod for virtual method call."
Sebastien Hertz [Thu, 20 Mar 2014 10:22:36 +0000 (10:22 +0000)]
Merge "Fix JDWP ObjectReference.InvokeMethod for virtual method call."

10 years agoMerge "Fix thread suspension in ObjectReference.MonitorInfo JDWP command."
Sebastien Hertz [Thu, 20 Mar 2014 09:07:14 +0000 (09:07 +0000)]
Merge "Fix thread suspension in ObjectReference.MonitorInfo JDWP command."

10 years agoMerge "Do not send JDWP data in case of error."
Sebastien Hertz [Thu, 20 Mar 2014 09:06:51 +0000 (09:06 +0000)]
Merge "Do not send JDWP data in case of error."

10 years agoFix JDWP ObjectReference.InvokeMethod for virtual method call.
Sebastien Hertz [Thu, 20 Mar 2014 08:57:40 +0000 (09:57 +0100)]
Fix JDWP ObjectReference.InvokeMethod for virtual method call.

Fixes virtual method call by invoking the concrete method in sirt reference
after devirtualization, not the original method.

Bug: 13526099
Change-Id: I2e3548eca2f5434e8cece64c22aaf80d1cd8badf

10 years agoMerge "Some more ARM64 tests that are invalid at the moment"
Andreas Gampe [Thu, 20 Mar 2014 03:42:42 +0000 (03:42 +0000)]
Merge "Some more ARM64 tests that are invalid at the moment"

10 years agoSome more ARM64 tests that are invalid at the moment
Andreas Gampe [Thu, 20 Mar 2014 03:41:16 +0000 (20:41 -0700)]
Some more ARM64 tests that are invalid at the moment

Change-Id: I7e5a3c093bb0b0fd04ef588946f8b843993f6d4e

10 years agoMerge "Parts of ARM64 should not be enabled, yet"
Andreas Gampe [Thu, 20 Mar 2014 03:00:17 +0000 (03:00 +0000)]
Merge "Parts of ARM64 should not be enabled, yet"

10 years agoParts of ARM64 should not be enabled, yet
Andreas Gampe [Thu, 20 Mar 2014 02:51:17 +0000 (19:51 -0700)]
Parts of ARM64 should not be enabled, yet

The managed register test exercises tests that are supposed to hold
in the final product, but the infrastructure is not at that point yet.

Change-Id: I32bee942a13819620d9f6b1c0d9a8a14c9951764

10 years agoMerge "Fix test-art 083-compiler-regressions with work around"
Brian Carlstrom [Thu, 20 Mar 2014 01:56:39 +0000 (01:56 +0000)]
Merge "Fix test-art 083-compiler-regressions with work around"

10 years agoFix test-art 083-compiler-regressions with work around
Brian Carlstrom [Thu, 20 Mar 2014 01:34:17 +0000 (18:34 -0700)]
Fix test-art 083-compiler-regressions with work around

(cherry picked from commit cac04f21b35152c3f6e5c09b6699685255491b4a)

Change-Id: I99f66c7531a61f36328db607a961137a6345cbe0

10 years agoMerge "Make test-art pass with heap reference poisoning enabled."
Hiroshi Yamauchi [Thu, 20 Mar 2014 01:10:26 +0000 (01:10 +0000)]
Merge "Make test-art pass with heap reference poisoning enabled."

10 years agoMerge "AArch64: Add arm64 runtime support."
Andreas Gampe [Thu, 20 Mar 2014 00:20:21 +0000 (00:20 +0000)]
Merge "AArch64: Add arm64 runtime support."

10 years agoAArch64: Add arm64 runtime support.
Stuart Monteith [Wed, 12 Mar 2014 13:32:32 +0000 (13:32 +0000)]
AArch64: Add arm64 runtime support.

Adds support for arm64 to ART. Assembler stubs are sufficient for
down calls into interpreter. JNI compiler and generics are not finished.

Basic Generic JNI functionality.

Change-Id: I4a07c79d1e037b9f5746673480e32cf456867b82

10 years agoMerge "Optimize stack overflow handling."
Mathieu Chartier [Wed, 19 Mar 2014 22:58:23 +0000 (22:58 +0000)]
Merge "Optimize stack overflow handling."

10 years agoMerge "Fix Quick compiler "out of registers""
buzbee [Wed, 19 Mar 2014 22:45:41 +0000 (22:45 +0000)]
Merge "Fix Quick compiler "out of registers""

10 years agoFix Quick compiler "out of registers"
buzbee [Wed, 19 Mar 2014 19:28:16 +0000 (12:28 -0700)]
Fix Quick compiler "out of registers"

There are a few places in the Arm backend that expect to be
able to survive on a single temp register - in particular
entry code generation and argument passing.  However, in the
case of a very large frame and floating point ld/st, the
existing code could end up using 2 temps.

In short, if there is a displacement overflow we try to use
indexed load/store instructions (slightly more efficient).
However, there are none for floating point - so we ended up
burning yet another register to construct a direct pointer.
This CL detects this case and doesn't try to use the indexed
load/store mechanism for floats.

Fix for https://code.google.com/p/android/issues/detail?id=67349

Change-Id: I1ea596ea660e4add89fd4fddb8cbf99a54fbd343

10 years agoOptimize stack overflow handling.
Mathieu Chartier [Wed, 19 Mar 2014 17:17:28 +0000 (10:17 -0700)]
Optimize stack overflow handling.

We now subtract the frame size from the stack pointer for methods
which have a frame smaller than a certain size. Also changed code to
use slow paths instead of launchpads.

Delete kStackOverflow launchpad since it is no longer needed.

ARM optimizations:
One less move per stack overflow check (without fault handler for
stack overflows). Use ldr pc instead of ldr r12, b r12.
Code size (boot.oat):
Before: 58405348
After: 57803236

TODO: X86 doesn't have the case for large frames. This could case an
incoming signal to go past the end of the stack (unlikely however).

Change-Id: Ie3a5635cd6fb09de27960e1f8cee45bfae38fb33

10 years agoMake test-art pass with heap reference poisoning enabled.
Hiroshi Yamauchi [Wed, 19 Mar 2014 19:57:56 +0000 (12:57 -0700)]
Make test-art pass with heap reference poisoning enabled.

Heap reference poisoning is currently interpreter only. This change
disables one compiler driver test that actually invokes compiled code
if heap reference poisoning is enabled.

Bug: 12687968
Change-Id: Ia9516f4067d84e9a4de50d9ff44cfbe38f282d16

10 years agoFix thread suspension in ObjectReference.MonitorInfo JDWP command.
Sebastien Hertz [Wed, 19 Mar 2014 17:16:50 +0000 (18:16 +0100)]
Fix thread suspension in ObjectReference.MonitorInfo JDWP command.

Uses ThreadList::SuspendAll and ThreadList::ResumeAll to suspend/resume all
the threads so we collect monitor info while all threads are suspended.

Bug: 13528439
Change-Id: I81ad0698a759cae428aa6a0149dafda3db4cd198

10 years agoMerge "Run Java tests with the optimizing compiler."
Nicolas Geoffray [Wed, 19 Mar 2014 08:52:14 +0000 (08:52 +0000)]
Merge "Run Java tests with the optimizing compiler."

10 years agoRun Java tests with the optimizing compiler.
Nicolas Geoffray [Tue, 18 Mar 2014 17:59:20 +0000 (17:59 +0000)]
Run Java tests with the optimizing compiler.

Also fix a vector.reserve -> vector.resize braino, and build
a GC map that dex2oat expects.

Change-Id: I6acf2f90a4c32f90b79bf7709bf2e43931b98757

10 years agoART: API changes
Jean Christophe Beyler [Thu, 13 Mar 2014 21:54:59 +0000 (14:54 -0700)]
ART: API changes

- Moved AppendMIR to BasicBlock
- Moved PrependMIR to BasicBlock
- Moved InsertMIRAfter to BasicBlock
- Moved GetNextUnconditionalMir to BasicBlock

Change-Id: Id261434e9f7d5d93f1bce0c87c9276a20077c483
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
10 years agoMerge "Fix stack overflow for mutual recursion."
Mathieu Chartier [Tue, 18 Mar 2014 20:46:21 +0000 (20:46 +0000)]
Merge "Fix stack overflow for mutual recursion."

10 years agoFix stack overflow for mutual recursion.
Brian Carlstrom [Fri, 14 Mar 2014 01:10:08 +0000 (18:10 -0700)]
Fix stack overflow for mutual recursion.

There was an error where we would have a pc that was in the method
which generated the stack overflow. This didn't work however
because the stack overflow check was before we stored the method in
the stack. The result was that the stack overflow handler had a PC
which wasnt necessarily in the method at the top of the stack. This
is now fixed by always restoring the link register before branching
to the throw entrypoint.

Slight code size regression on ARM/Mips (unmeasured). Regression on ARM
is 4 bytes of code per stack overflow check. Some of this regression is
mitigated by having one less GC safepoint.

Also adds test case for StackOverflowError issue (from bdc).

Tests passing: ARM, X86, Mips
Phone booting: ARM

Bug: https://code.google.com/p/android/issues/detail?id=66411
Bug: 12967914
Change-Id: I96fe667799458b58d1f86671e051968f7be78d5d

(cherry-picked from c0f96d03a1855fda7d94332331b94860404874dd)

10 years agoMerge "Use the card table to speed up the GSS collector."
Hiroshi Yamauchi [Tue, 18 Mar 2014 18:29:22 +0000 (18:29 +0000)]
Merge "Use the card table to speed up the GSS collector."

10 years agoMerge "Early inlining of simple methods."
Vladimir Marko [Tue, 18 Mar 2014 16:27:20 +0000 (16:27 +0000)]
Merge "Early inlining of simple methods."

10 years agoEarly inlining of simple methods.
Vladimir Marko [Thu, 2 Jan 2014 16:40:37 +0000 (16:40 +0000)]
Early inlining of simple methods.

Inlining "special" methods: empty methods, methods returning
constants or their arguments, simple getters and setters.

Bug: 8164439
Change-Id: I8c7fa9c14351fbb2470000b378a22974daaef236

10 years agoDo not send JDWP data in case of error.
Sebastien Hertz [Tue, 18 Mar 2014 11:19:52 +0000 (12:19 +0100)]
Do not send JDWP data in case of error.

When sending JDWP reply packet with an error, we want to ignore any data in the
buffer. While we reflect that in the packet's length (first 4 bytes), we used
to send all data in the buffer. This causes the receiver to read malformed JDWP
packet.

This CL adds "length" argument to JdwpNetStateBase::WritePacket so we control
the amount of data we send. If the reply has no error, it is set to the length
of the buffer. Otherwise it is the length of JDWP packet header indicating no
data is available.

Bug: 13366758
Change-Id: Ib72c10d5faf065fb44901c34b2732496b6667efa

10 years agoMerge "Fix lint error, and Makefile that could be confused with local files."
Nicolas Geoffray [Tue, 18 Mar 2014 12:00:54 +0000 (12:00 +0000)]
Merge "Fix lint error, and Makefile that could be confused with local files."

10 years agoFix lint error, and Makefile that could be confused with local files.
Nicolas Geoffray [Tue, 18 Mar 2014 11:58:24 +0000 (11:58 +0000)]
Fix lint error, and Makefile that could be confused with local files.

Change-Id: I780cc0d6593eadd6f82e1126d7ad445894af666c

10 years agoMerge "Plug new optimizing compiler in compilation pipeline."
Nicolas Geoffray [Tue, 18 Mar 2014 11:25:25 +0000 (11:25 +0000)]
Merge "Plug new optimizing compiler in compilation pipeline."

10 years agoPlug new optimizing compiler in compilation pipeline.
Nicolas Geoffray [Mon, 17 Mar 2014 10:20:19 +0000 (10:20 +0000)]
Plug new optimizing compiler in compilation pipeline.

Also rename accessors to ART's conventions.

Change-Id: I344807055b98aa4b27215704ec362191464acecc

10 years agoMerge "ART change: Script is using function(), which is bash specific."
Nicolas Geoffray [Tue, 18 Mar 2014 08:55:39 +0000 (08:55 +0000)]
Merge "ART change: Script is using function(), which is bash specific."

10 years agoMerge "Fix comment typo."
Ian Rogers [Mon, 17 Mar 2014 23:55:16 +0000 (23:55 +0000)]
Merge "Fix comment typo."

10 years agoFix comment typo.
Ian Rogers [Mon, 17 Mar 2014 23:51:53 +0000 (16:51 -0700)]
Fix comment typo.

Change-Id: Ib03f4e5dbdf380f9c94f7a18c1ea755b03c1fe3e

10 years agoMerge "Quick typo fix in the 4GB lowmem code"
Andreas Gampe [Mon, 17 Mar 2014 20:05:40 +0000 (20:05 +0000)]
Merge "Quick typo fix in the 4GB lowmem code"

10 years agoQuick typo fix in the 4GB lowmem code
Andreas Gampe [Mon, 17 Mar 2014 19:57:08 +0000 (12:57 -0700)]
Quick typo fix in the 4GB lowmem code

Change-Id: I3371776b0468cd8690e3811c7a1e57f5444e9d8f

10 years agoMerge "AArch64: Add memory allocation in low 4GB"
Andreas Gampe [Mon, 17 Mar 2014 18:33:38 +0000 (18:33 +0000)]
Merge "AArch64: Add memory allocation in low 4GB"

10 years agoMerge "Test code generation for field accesses."
Ian Rogers [Mon, 17 Mar 2014 18:33:12 +0000 (18:33 +0000)]
Merge "Test code generation for field accesses."

10 years agoAArch64: Add memory allocation in low 4GB
Stuart Monteith [Wed, 12 Mar 2014 12:44:01 +0000 (12:44 +0000)]
AArch64: Add memory allocation in low 4GB

MAP_32BIT is implemented for only x86_64. Other 64bit platforms
don't have an equivalent.

This is a unsophisticated implemention of a scheme using msync and
MAP_FIXED to reproduce the functionality of MAP_32BIT.

Adds MAP_FIXED to RemapAtEnd, as the address used for the new mmap
doesn't get located correctly without it on aarch64.

Add MemMap::next_mem_pos_ to store last position. Add a safety assert.

Change-Id: I61871ff7fc327554c43e1d7f448c3d376490f1ea

10 years agoART change: Script is using function(), which is bash specific.
Nicolas Geoffray [Mon, 17 Mar 2014 18:26:00 +0000 (18:26 +0000)]
ART change: Script is using function(), which is bash specific.

Change-Id: Ieb2a9674c95aafadbdb26c060f186f3f2d0f5e15

10 years agoTest code generation for field accesses.
Ian Rogers [Mon, 17 Mar 2014 17:33:19 +0000 (10:33 -0700)]
Test code generation for field accesses.

Bug: 11549140
Change-Id: I33e6fa16a7b53b61807395eb41b9c0483654137b

10 years agoMerge "Class initialization check elimination."
Vladimir Marko [Mon, 17 Mar 2014 15:07:45 +0000 (15:07 +0000)]
Merge "Class initialization check elimination."

10 years agoClass initialization check elimination.
Vladimir Marko [Fri, 17 Jan 2014 17:49:33 +0000 (17:49 +0000)]
Class initialization check elimination.

Also, move null check elimination temporaries to the
ScopedArenaAllocator and reuse the same variables in the
class initialization check elimination.

Change-Id: Ic746f95427065506fa6016d4931e4cb8b34937af

10 years agoMerge "Fix debugger crash in native method frames."
Sebastien Hertz [Mon, 17 Mar 2014 08:23:53 +0000 (08:23 +0000)]
Merge "Fix debugger crash in native method frames."