OSDN Git Service

android-x86/art.git
10 years agoMerge "AArch64: Enable LONG_* and INT_* opcodes."
Bill Buzbee [Thu, 22 May 2014 22:37:49 +0000 (22:37 +0000)]
Merge "AArch64: Enable LONG_* and INT_* opcodes."

10 years agoMerge "Revert "Fix an outstanding compaction bug in interpreter.""
Mathieu Chartier [Thu, 22 May 2014 22:07:37 +0000 (22:07 +0000)]
Merge "Revert "Fix an outstanding compaction bug in interpreter.""

10 years agoRevert "Fix an outstanding compaction bug in interpreter."
Mathieu Chartier [Thu, 22 May 2014 22:06:51 +0000 (22:06 +0000)]
Revert "Fix an outstanding compaction bug in interpreter."

This reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.

Change-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1

10 years agoMerge "Move SetMonitorEnterObject outside of blocked thread state change."
Mathieu Chartier [Thu, 22 May 2014 21:57:59 +0000 (21:57 +0000)]
Merge "Move SetMonitorEnterObject outside of blocked thread state change."

10 years agoMove SetMonitorEnterObject outside of blocked thread state change.
Mathieu Chartier [Thu, 22 May 2014 21:43:37 +0000 (14:43 -0700)]
Move SetMonitorEnterObject outside of blocked thread state change.

Race condition:
Thread is suspended in monitor kBlocked, GC decides to run the
checkpoint on it. The GC sees that the object is non null, and goes
to mark it, but then the thread does SetMonitorObject(nullptr).
Which causes a null object to be marked.

Change-Id: Ie8a5074112947ec07d01ccb813ca2c1bb9ac7066

10 years agoMerge "Add support for jemalloc instead of dlmalloc."
Christopher Ferris [Thu, 22 May 2014 21:41:01 +0000 (21:41 +0000)]
Merge "Add support for jemalloc instead of dlmalloc."

10 years agoAdd support for jemalloc instead of dlmalloc.
Christopher Ferris [Tue, 13 May 2014 21:47:50 +0000 (14:47 -0700)]
Add support for jemalloc instead of dlmalloc.

Bug: 981363
Change-Id: I226ce3249c0d982eb1a9fdb9d04b25737f77345d

10 years agoMerge "ART: Topological Sort Traversal Implementation"
Bill Buzbee [Thu, 22 May 2014 20:15:39 +0000 (20:15 +0000)]
Merge "ART: Topological Sort Traversal Implementation"

10 years agoART: Topological Sort Traversal Implementation
Jean Christophe Beyler [Tue, 29 Apr 2014 21:40:41 +0000 (14:40 -0700)]
ART: Topological Sort Traversal Implementation

- Added a topological sort implementation for traversal.
  - Useful for traversals that require traversing the predecessors first.
- Added a function to BasicBlock to detect if it is an exception block.

Change-Id: I573da1768a635c6fd0259573dbb46b112132e129
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Signed-off-by: Yixin Shou <yixin.shou@intel.com>
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Signed-off-by: Udayan Banerji <udayan.banerji@intel.com>
10 years agoMerge "Fix an outstanding compaction bug in interpreter."
Mathieu Chartier [Thu, 22 May 2014 17:57:52 +0000 (17:57 +0000)]
Merge "Fix an outstanding compaction bug in interpreter."

10 years agoMerge "Move modify_ldt_lock into global lock order."
Ian Rogers [Thu, 22 May 2014 17:50:20 +0000 (17:50 +0000)]
Merge "Move modify_ldt_lock into global lock order."

10 years agoFix an outstanding compaction bug in interpreter.
Mathieu Chartier [Thu, 15 May 2014 19:39:19 +0000 (12:39 -0700)]
Fix an outstanding compaction bug in interpreter.

Fixed a bug in DoFieldPut where the FieldHelper GetType could cause
thread suspension which would result in a stale obj.

Added more handles in the class linker to facilitate moving fiels
and methods in the future.

Removed un-necessarly passing handle references since these are value
types and don't need to be passed by reference.

Added a special NullHandle type which allows null handles without a
handle scope.

Change-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b

10 years agoMerge "Fixes style nitpick"
Dan Albert [Thu, 22 May 2014 17:39:44 +0000 (17:39 +0000)]
Merge "Fixes style nitpick"

10 years agoMerge "Add a read barrier for weak roots in monitors."
Hiroshi Yamauchi [Thu, 22 May 2014 17:34:44 +0000 (17:34 +0000)]
Merge "Add a read barrier for weak roots in monitors."

10 years agoFixes style nitpick
Dan Albert [Thu, 22 May 2014 17:27:29 +0000 (10:27 -0700)]
Fixes style nitpick

Change-Id: Ic3a7119ce7ca9bfae0dbf7af4d285f44d3a72a3e

10 years agoMove modify_ldt_lock into global lock order.
Chao-ying Fu [Wed, 21 May 2014 18:20:52 +0000 (11:20 -0700)]
Move modify_ldt_lock into global lock order.

Mutex modify_ldt_lock was being removed during runtime shutdown while
daemons thread may still detach. Avoid this by placing in global lock
order.
This fixes cts dalvik vm-tests-tf that hang on some x86 devices.

By irogers: also, tidy global locks to agree with enum constants and
add extra verification that the global annotalysis order agrees with
the LockLevel order. Bumped the oat version and moved the locks as
LockLevel additions previously caused entrypoints to be moved. Make
unattached lock not handle the default mutex level case by moving the
allocated thread ids lock into the global order.

Change-Id: I9d03f19d44ea254accf0ceae8022563c77f7a02f
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
10 years agoMerge "Move art host to libc++"
Dan Albert [Thu, 22 May 2014 17:22:00 +0000 (17:22 +0000)]
Merge "Move art host to libc++"

10 years agoAArch64: Enable LONG_* and INT_* opcodes.
Serban Constantinescu [Thu, 22 May 2014 14:10:18 +0000 (15:10 +0100)]
AArch64: Enable LONG_* and INT_* opcodes.

This patch fixes some of the issues with LONG and INT opcodes. The patch
has been tested and passes all the dalvik tests except for 018 and 107.

Change-Id: Idd1923ed935ee8236ab0c7e5fa969eaefeea8708
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
10 years agoMerge "Support new VMRuntime native methods"
Sebastien Hertz [Thu, 22 May 2014 14:47:06 +0000 (14:47 +0000)]
Merge "Support new VMRuntime native methods"

10 years agoMerge "ART: Pass driver generalization"
Bill Buzbee [Thu, 22 May 2014 13:44:31 +0000 (13:44 +0000)]
Merge "ART: Pass driver generalization"

10 years agoART: Pass driver generalization
James C Scott [Thu, 1 May 2014 12:52:04 +0000 (05:52 -0700)]
ART: Pass driver generalization

- Generalizing Pass Driver.
- Migrating ME Pass Driver to use the new generalized Pass Driver.

There will be some more changes after in the compiler code to generalize
 it a bit more by separating what is being done by the optimizing passes
 and post-pass cleanups.

Change-Id: I140a70e88483d7c3991b7d336bd593b2613ae194
Signed-off-by: James C Scott <james.c.scott@intel.com>
10 years agoMerge "ART: MIR, SSARepresentation, and BasicBlock Additional API"
Bill Buzbee [Thu, 22 May 2014 13:11:27 +0000 (13:11 +0000)]
Merge "ART: MIR, SSARepresentation, and BasicBlock Additional API"

10 years agoART: MIR, SSARepresentation, and BasicBlock Additional API
Jean Christophe Beyler [Thu, 17 Apr 2014 19:47:24 +0000 (12:47 -0700)]
ART: MIR, SSARepresentation, and BasicBlock Additional API

Adding the API calls to the MIR structure to help with higher level code.
Some code has been added to BasicBlock as well for the removal.
Some code has also been added to SSARepresentation.
A constructor has been added to DecodedInstruction.

Change-Id: Ie65948d53d83fd8250545c94c88b442a68d702c7
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Signed-off-by: Yixin Shou <yixin.shou@intel.com>
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Signed-off-by: Udayan Banerji <udayan.banerji@intel.com>
10 years agoMerge "Quick compiler: free up space in MIR."
buzbee [Thu, 22 May 2014 12:32:10 +0000 (12:32 +0000)]
Merge "Quick compiler: free up space in MIR."

10 years agoMerge "Method inlining across dex files in boot image."
Vladimir Marko [Thu, 22 May 2014 09:14:18 +0000 (09:14 +0000)]
Merge "Method inlining across dex files in boot image."

10 years agoSupport new VMRuntime native methods
Sebastien Hertz [Fri, 16 May 2014 14:56:45 +0000 (16:56 +0200)]
Support new VMRuntime native methods

Implements vmInstructionSet, is64Bit and isCheckJniEnabled methods.

Bug: 14888999
Bug: 14888124
Change-Id: I8a2d3f22f84a093be2fbc74464af6aa7b2a2bebb

10 years agoMethod inlining across dex files in boot image.
Vladimir Marko [Wed, 21 May 2014 11:08:39 +0000 (12:08 +0100)]
Method inlining across dex files in boot image.

Fix LoadCodeAddress() and LoadMethodAddress() to use the dex
file in addition to the method index to uniquely identify
the literal. With that fix in place, when we have both the
direct code and the direct method, we can safely pass the
actual target method id instead of the method id from the
same dex file in the method lowering info. This was already
done for calls from apps into boot image (and thus there was
a bug with a tiny risk of the wrong literal being used) and
now we also do that for calls within the boot image. The
latter allows the inlining pass to inline many more methods
than before in the boot image.

Bug: 15021903
Change-Id: Ic765ce9809b43ef07e7db32b8e3fbc9acb09147f

10 years agoMerge "Secure move-exception in intepreter"
Sebastien Hertz [Thu, 22 May 2014 06:52:00 +0000 (06:52 +0000)]
Merge "Secure move-exception in intepreter"

10 years agoAdd a read barrier for weak roots in monitors.
Hiroshi Yamauchi [Thu, 22 May 2014 04:10:23 +0000 (21:10 -0700)]
Add a read barrier for weak roots in monitors.

A weak root requires a read barrier for the to-space invariant to hold
because the object pointed to by a weak root can't be marked/forwarded
like the one pointed to by a strong root (GC does not know if it's
alive or not at that point) and because, without a read barrier, a
mutator could access it and obtain a from-space reference, which would
violate the to-space invariant.

TODO: do similar for the other types of weak roots.

Bug: 12687968
Change-Id: I563a0fa4f875e0c21ac96f57696959454e13b15a

10 years agoMerge "Use decltype() instead of typeof()"
Dan Albert [Thu, 22 May 2014 03:50:35 +0000 (03:50 +0000)]
Merge "Use decltype() instead of typeof()"

10 years agoMerge "Change profiler file name parsing option"
Brian Carlstrom [Thu, 22 May 2014 03:49:21 +0000 (03:49 +0000)]
Merge "Change profiler file name parsing option"

10 years agoUse decltype() instead of typeof()
Dan Albert [Thu, 22 May 2014 03:31:55 +0000 (20:31 -0700)]
Use decltype() instead of typeof()

This fixes a build failure on Mac.

Change-Id: Iee73ba990d2494fd925fd237da68cf753709a248

10 years agoMove art host to libc++
Dan Albert [Wed, 21 May 2014 21:55:02 +0000 (14:55 -0700)]
Move art host to libc++

Change-Id: Ia51a4fdfdbae7377130a43c401c2d8d241671d1e

10 years agoChange profiler file name parsing option
Wei Jin [Thu, 22 May 2014 01:35:19 +0000 (18:35 -0700)]
Change profiler file name parsing option

This patch renames the option for profile output file name to -Xprofile-filename: to avoid conflicts.

Change-Id: I5ba1cf10a7763f083028b8262f9ce2421400c4f3
Signed-off-by: Wei Jin <wejin@google.com>
10 years agoMerge "Fix build."
Mathieu Chartier [Thu, 22 May 2014 00:53:32 +0000 (00:53 +0000)]
Merge "Fix build."

10 years agoFix build.
Mathieu Chartier [Thu, 22 May 2014 00:48:25 +0000 (17:48 -0700)]
Fix build.

Old Atomic things were rebased over.

Change-Id: I437041af3247c316f2a75f5ef4bd35286fc8e2b1

10 years agoMerge "Begin migration of art::Atomic to std::atomic."
Ian Rogers [Wed, 21 May 2014 23:19:19 +0000 (23:19 +0000)]
Merge "Begin migration of art::Atomic to std::atomic."

10 years agoQuick compiler: free up space in MIR.
buzbee [Wed, 21 May 2014 21:53:51 +0000 (14:53 -0700)]
Quick compiler: free up space in MIR.

The width field in MIR isn't especially useful - it could always
be recalculated from the Dalvik instruction.  This CL eliminates
it to allow the 16 bits it occupied to be used for the ID of the
parent BasicBlock.

Change-Id: I75ab8562ca217f0f819ecfc417014dee74bc587e

10 years agoMerge "ART: Fix stub test inline assembly for x86"
Andreas Gampe [Wed, 21 May 2014 22:20:22 +0000 (22:20 +0000)]
Merge "ART: Fix stub test inline assembly for x86"

10 years agoMerge "Fix test-art-target-oat for multi target"
Brian Carlstrom [Wed, 21 May 2014 22:11:02 +0000 (22:11 +0000)]
Merge "Fix test-art-target-oat for multi target"

10 years agoFix test-art-target-oat for multi target
Sebastien Hertz [Wed, 21 May 2014 14:06:49 +0000 (16:06 +0200)]
Fix test-art-target-oat for multi target

Avoids running dalvikvm with 32-bit native library. When the primary target is
64-bit, dalvikvm is a symlink to dalvikvm64 which can't load 32-bit native
library.

Bug: 15131102
Change-Id: I29c2f3b5a62b5f507674f3f6d1b9f3f2e5a9de23

10 years agoART: Fix stub test inline assembly for x86
Andreas Gampe [Wed, 21 May 2014 21:39:45 +0000 (14:39 -0700)]
ART: Fix stub test inline assembly for x86

Clang can handle the register pressure, but GCC can't. Make one
a memory constraint.

Change-Id: I49f048b29f5677449bf6ee6282516462332ee645

10 years agoMerge "ART: Make StubTest IMT sanity check a warning"
Andreas Gampe [Wed, 21 May 2014 21:20:18 +0000 (21:20 +0000)]
Merge "ART: Make StubTest IMT sanity check a warning"

10 years agoMerge "Work around Mac assembler differences."
Ian Rogers [Wed, 21 May 2014 21:18:13 +0000 (21:18 +0000)]
Merge "Work around Mac assembler differences."

10 years agoMerge "ART: Fix libjavacore dependency"
Andreas Gampe [Wed, 21 May 2014 21:16:28 +0000 (21:16 +0000)]
Merge "ART: Fix libjavacore dependency"

10 years agoART: Make StubTest IMT sanity check a warning
Andreas Gampe [Wed, 21 May 2014 21:12:18 +0000 (14:12 -0700)]
ART: Make StubTest IMT sanity check a warning

It seems we can't rely on the specific test against a framework
class. Make the sanity check a warning right now, and fix this up
later.

Change-Id: I673edf33cb4a61e20a4ec806b311deebce86e4de

10 years agoMerge "ART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architectures"
Andreas Gampe [Wed, 21 May 2014 18:14:35 +0000 (18:14 +0000)]
Merge "ART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architectures"

10 years agoART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architectures
Andreas Gampe [Wed, 21 May 2014 15:28:48 +0000 (08:28 -0700)]
ART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architectures

"Generalize" the return type notion of the interface helpers.

Includes a simple test for imt_conflict. The other interface
trampolines are as of yet untested.

Change-Id: I30fc75f5103766d57628ff22bcbac7c7f81037e3

10 years agoART: Fix libjavacore dependency
Andreas Gampe [Wed, 21 May 2014 18:02:08 +0000 (11:02 -0700)]
ART: Fix libjavacore dependency

Add a dependency for libjavacore for the secondary architecture.

Change-Id: I30f07c200e1cbb7d50b026fa6b21d09ab9aadd66

10 years agoMerge "Change zygote_creation_lock_ to be member instead of static."
Mathieu Chartier [Wed, 21 May 2014 18:00:06 +0000 (18:00 +0000)]
Merge "Change zygote_creation_lock_ to be member instead of static."

10 years agoChange zygote_creation_lock_ to be member instead of static.
Mathieu Chartier [Wed, 21 May 2014 17:44:32 +0000 (10:44 -0700)]
Change zygote_creation_lock_ to be member instead of static.

Static variables aren't thread safe and could cause the zygote to be
created twice.

Bug: 15133494
Change-Id: I65c8f089bed8de93f895b62b3dcff4c936931860

10 years agoMerge "64-bit temp register support."
buzbee [Wed, 21 May 2014 15:08:33 +0000 (15:08 +0000)]
Merge "64-bit temp register support."

10 years ago64-bit temp register support.
buzbee [Tue, 13 May 2014 22:59:07 +0000 (15:59 -0700)]
64-bit temp register support.

Add a 64-bit temp register allocation path.  The recent physical
register handling rework supports multiple views of the same
physical register (or, such as for Arm's float/double regs,
different parts of the same physical register).

This CL adds a 64-bit core register view for 64-bit targets. In
short, each core register will have a 64-bit name, and a 32-bit
name.  The different views will be kept in separate register pools,
but aliasing will be tracked.  The core temp register allocation
routines will be largely identical - except for 32-bit targets,
which will continue to use pairs of 32-bit core registers for holding
long values.

Change-Id: I8f118e845eac7903ad8b6dcec1952f185023c053

10 years agoSecure move-exception in intepreter
Sebastien Hertz [Wed, 21 May 2014 08:07:42 +0000 (10:07 +0200)]
Secure move-exception in intepreter

Copies exception into the shadow frame before clearing it from its thread so
it's always reachable.

Change-Id: Ifdc68280424f5099aacf0724da94889881a99551

10 years agoWork around Mac assembler differences.
Ian Rogers [Wed, 21 May 2014 06:52:19 +0000 (23:52 -0700)]
Work around Mac assembler differences.

Change-Id: Iba46c1794044e92f5a25bf7f836e0d919ed1f38c

10 years agoBegin migration of art::Atomic to std::atomic.
Ian Rogers [Tue, 20 May 2014 23:40:37 +0000 (16:40 -0700)]
Begin migration of art::Atomic to std::atomic.

Change-Id: I4858d9cbed95e5ca560956b9dabd976cebe68333

10 years agoMerge "Simplify Class::IsArtFieldClass()."
Hiroshi Yamauchi [Wed, 21 May 2014 01:08:10 +0000 (01:08 +0000)]
Merge "Simplify Class::IsArtFieldClass()."

10 years agoSimplify Class::IsArtFieldClass().
Hiroshi Yamauchi [Tue, 20 May 2014 20:46:00 +0000 (13:46 -0700)]
Simplify Class::IsArtFieldClass().

Fix the slight glitch that when ImageSpace::VerifyImageAllocations()
called in ImageSpace::Create(), the ArtField and ArtMethod class roots
weren't set, which were used by DCHECKs in Object::Size(), which
VerifyImageAllocations() calls, by delaying the point of the
VerifyImageAllocations() call to Runtime::Init() at which point the
class linker has set the class roots.

To completely disable read barriers from Object::SizeOf(), the
ReadBarrierOption template parameter should have been added to
Class::GetInstanceField(), which calls GetFieldObject(), when it's
called from Class::IsArtFieldClass(). This change fixes this by
removing the need for the call, instead of adding the
ReadBarrierOption parameter.

Bug: 12687968
Change-Id: Ibbecc08f4e3b898851805d690dff8ccac55e94f2

10 years agoMerge "Move another LOG to VLOG(signals)"
Brian Carlstrom [Wed, 21 May 2014 00:32:45 +0000 (00:32 +0000)]
Merge "Move another LOG to VLOG(signals)"

10 years agoMerge "Add context to LinkFields asserts since the previous_size check failed"
Brian Carlstrom [Wed, 21 May 2014 00:16:23 +0000 (00:16 +0000)]
Merge "Add context to LinkFields asserts since the previous_size check failed"

10 years agoAdd context to LinkFields asserts since the previous_size check failed
Brian Carlstrom [Tue, 20 May 2014 22:36:53 +0000 (15:36 -0700)]
Add context to LinkFields asserts since the previous_size check failed

Change-Id: If7a6c4219f52fd772141e6f070bb7d9a1d9464c0

10 years agoMerge "Use strtod to read a double rather than operator >>"
Dave Allison [Tue, 20 May 2014 23:03:34 +0000 (23:03 +0000)]
Merge "Use strtod to read a double rather than operator >>"

10 years agoMerge "Add DALVIKVM_FLAGS to test invocation."
Mathieu Chartier [Tue, 20 May 2014 22:40:41 +0000 (22:40 +0000)]
Merge "Add DALVIKVM_FLAGS to test invocation."

10 years agoAdd DALVIKVM_FLAGS to test invocation.
Mathieu Chartier [Sun, 18 May 2014 22:30:10 +0000 (15:30 -0700)]
Add DALVIKVM_FLAGS to test invocation.

Now, only gtest don't use these flags.

Running tests with GC options e.g:
DALVIK_VM="-Xgc:GSS" mm test-art-host-oat

Added a --runtime-option to test/run-test which passes the args to
the test:
test/run-test --runtime-option -Xgc:GSS --runtime-option -XX:UseTLAB 080

Change-Id: Ic928df32cb5aa36d3b0b55456e8b535e82ee9e97

10 years agoMerge "Improve heap verification for invalid roots."
Mathieu Chartier [Tue, 20 May 2014 22:16:33 +0000 (22:16 +0000)]
Merge "Improve heap verification for invalid roots."

10 years agoUse strtod to read a double rather than operator >>
Dave Allison [Tue, 20 May 2014 22:16:02 +0000 (15:16 -0700)]
Use strtod to read a double rather than operator >>

The >> operator doesn't work on the x86_64 build in the emulator.  This
works around the issue by using strtod instead.

Bug: 15086512
Change-Id: Id7f13889df608ed37e1e8fdef7a449f2d272b9b5

10 years agoImprove heap verification for invalid roots.
Mathieu Chartier [Mon, 19 May 2014 23:55:27 +0000 (16:55 -0700)]
Improve heap verification for invalid roots.

The new root verification prints the root type and owner thread id as
well as the type of the object.

Also a bit of work for planned multi-threaded verification.

Bug: 14289301

Change-Id: Ia73c517dc11ec6dd82f3d945604ee3836b3db536

10 years agoMove another LOG to VLOG(signals)
Brian Carlstrom [Tue, 20 May 2014 01:56:13 +0000 (18:56 -0700)]
Move another LOG to VLOG(signals)

Bug: 15024631
Change-Id: I5ef79292a69fe268fa52663731a38cfb3b856f32

10 years agoMerge "Workaround stack overflow issue with clang"
Brian Carlstrom [Tue, 20 May 2014 21:10:08 +0000 (21:10 +0000)]
Merge "Workaround stack overflow issue with clang"

10 years agoWorkaround stack overflow issue with clang
Sebastien Hertz [Tue, 20 May 2014 18:09:45 +0000 (20:09 +0200)]
Workaround stack overflow issue with clang

Bug: 14882674
Change-Id: I633251eb5229f0a65c27c6d771a7ff21f616a0f3

10 years agoMerge "ART: Randomize mem_map start address for linear scan search"
Andreas Gampe [Tue, 20 May 2014 18:47:40 +0000 (18:47 +0000)]
Merge "ART: Randomize mem_map start address for linear scan search"

10 years agoMerge "Add use-artd-full."
Hiroshi Yamauchi [Tue, 20 May 2014 18:31:54 +0000 (18:31 +0000)]
Merge "Add use-artd-full."

10 years agoART: Randomize mem_map start address for linear scan search
Andreas Gampe [Tue, 20 May 2014 00:01:13 +0000 (17:01 -0700)]
ART: Randomize mem_map start address for linear scan search

When using linear scan for mem_map, randomize the start of the
search with getauxval(AT_RANDOM).

Change-Id: Id1e4c86b928147d74b9b0b73ff704de5d87b4500

10 years agoMerge "Fix race condition between GCDaemon and DeleteLocalReference"
Mathieu Chartier [Tue, 20 May 2014 17:45:08 +0000 (17:45 +0000)]
Merge "Fix race condition between GCDaemon and DeleteLocalReference"

10 years agoFix race condition between GCDaemon and DeleteLocalReference
Yevgeny Rouban [Mon, 19 May 2014 09:19:36 +0000 (16:19 +0700)]
Fix race condition between GCDaemon and DeleteLocalReference

There is a race condition between the GCDaemon visiting
thread local roots starting from the thread's indirect ref table (IRT)
and another thread calling JNI::DeleteLocalReference, which is clearing
one of the indirect references.

To cope with the race condition the DeleteLocalReference used to transit
from suspended to running state by creating a ScopedObjectReference(env).
But this transition was removed with the following patch:
https://android.googlesource.com/platform/art/+/ef28b14268ed0f9db0c7bbd571aa514354a360bd%5E!/#F0

If so the GCDaemon must be careful to work with IRT entries.

This new patch:
1. calls the visitor only if the reference is not null. This if-null
   behavior of ART GC is consistent with what Dalvik GC does.
2. But this might be not enough for some future sophisticated GC algorithms.
   For example, if GC moves an object, then the IRT entry must be changed
   with CAS only if it has not been cleared. So, for the safety reasons
   the patch put backs the ScopedObjectReference soa(env) to
   DeleteLocalReference.

Only one of those two changes would be enough.

mathieuc note: I decided to delete the root null check but kept the
ScopedObjectAccess in DeleteLocalRef and added missing annotations as
well as more ScopedObjectAccess in jni internals.

Bug: 14626564

Change-Id: I90d4b8494f61404579ecdd2918d1482093d99387
Signed-off-by: Yevgeny Rouban <yevgeny.y.rouban@intel.com>
Signed-off-by: Yang Chang <yang.chang@intel.com>
10 years agoMerge "Improve stack walk performance."
Vladimir Marko [Tue, 20 May 2014 15:46:29 +0000 (15:46 +0000)]
Merge "Improve stack walk performance."

10 years agoMerge "Allow X86 QBE to be extended"
Ian Rogers [Tue, 20 May 2014 15:36:05 +0000 (15:36 +0000)]
Merge "Allow X86 QBE to be extended"

10 years agoAllow X86 QBE to be extended
Mark Mendell [Wed, 30 Apr 2014 18:13:18 +0000 (14:13 -0400)]
Allow X86 QBE to be extended

Enhancements and updates to allow X86Mir2LIR Backend to be subclassed
for experimentation.  Add virtual in a whole bunch of places, and make
some other changes to get this to work.

Change-Id: I0980a19bc5d5725f91660f98c95f1f51c17ee9b6
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
10 years agoImprove stack walk performance.
Vladimir Marko [Wed, 14 May 2014 15:51:16 +0000 (16:51 +0100)]
Improve stack walk performance.

Move a few functions from art_method.cc to art_method-inl.h
and introduce new overloads that take already known partial
results; do not rely on the compiler to magically merge the
identical but non-trivial paths. The partial results are
DCHECKed to be correct.

Change-Id: I342c3001bbff08a2bbbb9a7b62ae67188ad8cffc

10 years agoMerge "Arm64 - update fp callee save base"
buzbee [Tue, 20 May 2014 13:32:09 +0000 (13:32 +0000)]
Merge "Arm64 - update fp callee save base"

10 years agoArm64 - update fp callee save base
buzbee [Tue, 20 May 2014 13:28:55 +0000 (06:28 -0700)]
Arm64 - update fp callee save base

Hit commit button too quickly - this should have been part
of CL 95013.

Change-Id: I4a733414db74d6e9cab2d8fbe2eb9b398fff3f45

10 years agoMerge "AArch64: fixes in A64 code generation."
Bill Buzbee [Tue, 20 May 2014 13:24:17 +0000 (13:24 +0000)]
Merge "AArch64: fixes in A64 code generation."

10 years agoMerge "Fix art-host build rule."
Nicolas Geoffray [Tue, 20 May 2014 08:48:35 +0000 (08:48 +0000)]
Merge "Fix art-host build rule."

10 years agoFix art-host build rule.
Nicolas Geoffray [Tue, 20 May 2014 08:43:15 +0000 (09:43 +0100)]
Fix art-host build rule.

Use HOST_CORE_IMG_OUT, now that the image is being generated in a
platform dependent directory.

Change-Id: I5509012e9ed0d745b70b2a58227213b027227c97

10 years agoMerge "Remove cleaning obsolete 2ND_ART_NATIVETEST_DIR and 2ND_ART_TEST_DIR directories"
Brian Carlstrom [Tue, 20 May 2014 06:19:40 +0000 (06:19 +0000)]
Merge "Remove cleaning obsolete 2ND_ART_NATIVETEST_DIR and 2ND_ART_TEST_DIR directories"

10 years agoMerge "Up-to-date odex files should take precedence over profile checks"
Brian Carlstrom [Tue, 20 May 2014 06:19:14 +0000 (06:19 +0000)]
Merge "Up-to-date odex files should take precedence over profile checks"

10 years agoRemove cleaning obsolete 2ND_ART_NATIVETEST_DIR and 2ND_ART_TEST_DIR directories
Brian Carlstrom [Tue, 20 May 2014 06:14:42 +0000 (23:14 -0700)]
Remove cleaning obsolete 2ND_ART_NATIVETEST_DIR and 2ND_ART_TEST_DIR directories

Change-Id: Iba1735bc7762fbd6610191f75c13979e831851d6

10 years agoUp-to-date odex files should take precedence over profile checks
Brian Carlstrom [Mon, 19 May 2014 05:37:51 +0000 (22:37 -0700)]
Up-to-date odex files should take precedence over profile checks

Change-Id: I70b1e2537dc7c45334a70a4b9ec75329221090bc

10 years agoMerge "Fix typo in option parsing."
Ian Rogers [Tue, 20 May 2014 06:15:00 +0000 (06:15 +0000)]
Merge "Fix typo in option parsing."

10 years agoMerge "Fix the sense of when mutexes are used for longs in atomic support."
Ian Rogers [Tue, 20 May 2014 06:07:40 +0000 (06:07 +0000)]
Merge "Fix the sense of when mutexes are used for longs in atomic support."

10 years agoFix typo in option parsing.
Ian Rogers [Tue, 20 May 2014 05:57:34 +0000 (22:57 -0700)]
Fix typo in option parsing.

Change-Id: I3fd7ad6e445babde0677179f3b49f76de3f6894f

10 years agoFix the sense of when mutexes are used for longs in atomic support.
Ian Rogers [Tue, 20 May 2014 05:55:00 +0000 (22:55 -0700)]
Fix the sense of when mutexes are used for longs in atomic support.

Change-Id: Ice50519a511e98fdc2fe74cd9eb77c32872022b4

10 years agoMerge "Fix DexFile.getClassNameList."
Ian Rogers [Tue, 20 May 2014 05:42:50 +0000 (05:42 +0000)]
Merge "Fix DexFile.getClassNameList."

10 years agoFix DexFile.getClassNameList.
Ian Rogers [Tue, 20 May 2014 05:31:22 +0000 (22:31 -0700)]
Fix DexFile.getClassNameList.

Bug: 15086891
Change-Id: I8eaf0d19a56ecaea236e93e84131f5e4ff0843f6

10 years agoMerge "Now we have a proper C++ library, use std::unique_ptr."
Ian Rogers [Tue, 20 May 2014 05:29:04 +0000 (05:29 +0000)]
Merge "Now we have a proper C++ library, use std::unique_ptr."

10 years agoNow we have a proper C++ library, use std::unique_ptr.
Ian Rogers [Mon, 19 May 2014 23:49:03 +0000 (16:49 -0700)]
Now we have a proper C++ library, use std::unique_ptr.

Also remove the Android.libcxx.mk and other bits of stlport compatibility
mechanics.

Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61

10 years agoMerge "Updating clean-oat again"
Brian Carlstrom [Tue, 20 May 2014 05:12:31 +0000 (05:12 +0000)]
Merge "Updating clean-oat again"

10 years agoMerge "Quick compiler, out of registers fix"
buzbee [Tue, 20 May 2014 03:10:48 +0000 (03:10 +0000)]
Merge "Quick compiler, out of registers fix"

10 years agoQuick compiler, out of registers fix
buzbee [Sun, 18 May 2014 06:16:26 +0000 (23:16 -0700)]
Quick compiler, out of registers fix

It turns out that the register pool sanity checker was not
working as expected, leaving some inconsistencies unreported.
This could result in "out of registers" failures, as well
as other more subtle problems.

This CL fixes the sanity checker, adds a lot more check and cleans
up the previously undetected episodes of insanity.

Cherry-pick of internal change 468162

Change-Id: Id2da97e99105a4c272c5fd256205a94b904ecea8

10 years agoUpdating clean-oat again
Brian Carlstrom [Mon, 19 May 2014 23:09:42 +0000 (16:09 -0700)]
Updating clean-oat again

Also fix test-art-host-oat dex2oat'ing to use the proper new directory layout.

Change-Id: I4a65e88910a72dbe342c814551e4364d73e26e9c