History log of /art/build/Android.gtest.mk
Revision Date Author Comments
62746d8d9c4400e4764f162b22bfb1a32be287a9 09-Dec-2014 Andreas Gampe <agampe@google.com> ART: Swap-space in the compiler

Introduce a swap-space and corresponding allocator to transparently
switch native allocations to memory backed by a file.

Bug: 18596910
Change-Id: I131448f3907115054a592af73db86d2b9257ea33
e7bc70b7c5d704a9ecc5d3b6e0851921e59ba9af 20-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Link libsigchain.a instead of sigchain.o

Relative paths may sometimes lead to failed builds
if sources are built in particular order.

Also it is possible to export symbols from static lib
with LOCAL_WHOLE_STATIC_LIBRARIES variable.

(cherry picked from commit e49a4f6db74f4e66486a6aaf6564f997a94e230f)

Bug: 18701723
Change-Id: I6d62594c2e84020d67254747c1fd465e1144920e
e05d1d5fd86867afc7513b1c546375dba11eee50 03-Nov-2014 Mathieu Chartier <mathieuc@google.com> Add hash set

More memory efficient than libcxx since we do not box the values.

Change intern table to use new hash set. Clean up intern table by
removing const casts and deleting unnecessary code.

Changed the class linker to use a hash set, also added a pre-zygote
class table.

5 samples of:
adb shell stop && adb shell start && sleep 60 && adb shell dumpsys meminfo
Before:
165929 kB: Native
175859 kB: Native
168434 kB: Native
166559 kB: Native
169958 kB: Native

After:
160972 kB: Native
159439 kB: Native
157204 kB: Native
165093 kB: Native
163039 kB: Native

TODO: Add HashTable which is implemented by using a HashSet.
TODO: Use for DexFile::find_class_def_misses_.
TODO: Investigate using mem maps instead of native heap.

Bug: 17808975

Change-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a
f4450a359a08c09b88cb64c4a2ea25f983535dfb 15-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Fix mac build (second attempt)

It appears that the version of mac ld with
-export_dynamic is pretty recent.

Remove -export_dynamic to fix build for older
mac versions (?)

(cherry picked from commit 8b5b69813ef4d718db2e38e51867883511a3eeea)

Change-Id: I272d4b2c95411cc8126f27468f5199ff932fc9ef
09eff05e08865660c049d1d38cdeb93662e95f0d 14-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Fixing mac build

MacOS static linker does not understand --export-dynamic
and --version-script. According to man ld there is
-export_dynamic option which should do the same
thing.

(cherry picked from commit 1d74e57fa22fbcad1e14d776c771472b2d8438fb)

Change-Id: If9c096e099c8c070b62dda87dd0ed3ce77addcd6
4b70d11dc00b163328c500b0061e9f956dd18903 14-Oct-2014 Dmitriy Ivanov <dimitry@google.com> Untie gtest executables from LD_PRELOAD

Bug: 15345057
Bug: 15426766

(cherry picked from commit 8508a436efa7979ad54f644e60dad483c8499be2)

Change-Id: Id710c87c050f573fec1e4c36f06f88def5de5887
34fa79ece5b3a1940d412cd94dbdcc4225aae72f 15-Sep-2014 Brian Carlstrom <bdc@google.com> Avoid printing absolute addresses in oatdump

- Added printing of OatClass offsets.
- Added printing of OatMethod offsets.
- Added bounds checks for code size size, code size, mapping table, gc map, vmap table.
- Added sanity check of 100k for code size.
- Added partial disassembly of questionable code.
- Added --no-disassemble to disable disassembly.
- Added --no-dump:vmap to disable vmap dumping.
- Reordered OatMethod info to be in file order.

Bug: 15567083
Change-Id: Id86a21e06d4a28f29f16fd018cba7e55c57f849a
95b4c65da93500cdbdcaa3e01010771ef3f466f1 15-Aug-2014 Jeff Hao <jeffhao@google.com> Prevent stubs from being installed in java.lang.reflect.Proxy.<init>.

This CL is a better fix for proxy tracing and undoes the changes in
https://android-review.googlesource.com/#/c/103025/

Bug: 16386215

(cherry picked from commit db8a664e0b68c7c4d36270cd21dce8de1912d7f9)

Change-Id: Ic9e0ea2af7cb2da5d90c56aa009de92dba14cc47
4bf8d11df5dccc1b276cd9c40a98e8a14d79a9c8 25-Jul-2014 Jeff Hao <jeffhao@google.com> Fix proxy tracing and enable tests that now work with tracing.

Also updates proxy_test to generate an image for GetQuickOatCodeFor.

Bug: 16386215

(cherry picked from commit f0a3f09c3d54646166a55c05a6b39c7dd504129c)

Change-Id: I138edbad9e1646db8590f2b1b73f2788d9710e68
2c26501d24d929abe096ecce44f91410290b33c0 06-Aug-2014 Mathieu Chartier <mathieuc@google.com> Add card table test.

Tests some of the functionality supported by the card table.

Removed some logcat spam from monitor_pool.

Change-Id: I1423816a72572f78aca44552effa2b4c6aac46c8
1fd4821f6b3ac57a44c2ce91025686da4641d197 10-Jul-2014 Vladimir Marko <vmarko@google.com> Rewrite topological sort order and improve GVN.

Rewrite the topological sort order to include a full loop
before the blocks that go after the loop. Add a new iterator
class LoopRepeatingTopologicalSortIterator that differs from
the RepeatingTopologicalSortIterator by repeating only loops
and repeating them early. It returns to the loop head if the
head needs recalculation when we reach the end of the loop.

In GVN, use the new loop-repeating topological sort iterator
and for a loop head merge only the preceding blocks' LVNs
if we're not currently recalculating this loop.

Also fix LocalValueNumbering::InPlaceIntersectMaps() which
was keeping only the last element of the intersection, avoid
some unnecessary processing during LVN merge and add some
missing braces to MIRGraph::InferTypeAndSize().

Bug: 16398693

(cherry picked from 55fff044d3a4f7196098e25bab1dad106d9b54a2)

Change-Id: Id7bcd99c8abed1b7500b9ef723313d4c5fc6f1e8
55fff044d3a4f7196098e25bab1dad106d9b54a2 10-Jul-2014 Vladimir Marko <vmarko@google.com> Rewrite topological sort order and improve GVN.

Rewrite the topological sort order to include a full loop
before the blocks that go after the loop. Add a new iterator
class LoopRepeatingTopologicalSortIterator that differs from
the RepeatingTopologicalSortIterator by repeating only loops
and repeating them early. It returns to the loop head if the
head needs recalculation when we reach the end of the loop.

In GVN, use the new loop-repeating topological sort iterator
and for a loop head merge only the preceding blocks' LVNs
if we're not currently recalculating this loop.

Also fix LocalValueNumbering::InPlaceIntersectMaps() which
was keeping only the last element of the intersection, avoid
some unnecessary processing during LVN merge and add some
missing braces to MIRGraph::InferTypeAndSize().

Bug: 16398693
Change-Id: I4e10d4acb626a5b8a28ec0de106a7b37f9cbca32
99ea58cc68b51837c065f4a2a54efbf208dd76fa 02-Jul-2014 Nicolas Geoffray <ngeoffray@google.com> Add a new stack map scheme that encodes compilation info per pc.

Encodes stack mask, register mask, dex register values, and inlining
info. The encoding is currently very straightforward: there is no
clever encoding, nor compression.

Change-Id: I5fd9ae28189a5513cd9e3c8d52c648463207643d
147eb41b53729ec8d5c188d1cac90964a51afb8a 11-Jul-2014 Dave Allison <dallison@google.com> Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86""""

This reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1.

Bug: 16256184
Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73

Conflicts:
compiler/dex/quick/arm64/target_arm64.cc
compiler/image_test.cc
runtime/fault_handler.cc
1a43dd78d054dbad8d7af9ba4829ea2f1cb70b53 17-Jul-2014 Nicolas Geoffray <ngeoffray@google.com> Add write barriers to optimizing compiler.

Change-Id: I43a40954757f51d49782e70bc28f7c314d6dbe17
69dfe51b684dd9d510dbcb63295fe180f998efde 11-Jul-2014 Dave Allison <dallison@google.com> Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86""""

This reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1.

Bug: 16256184
Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73
e63db27db913f1a88e2095a1ee8239b2bb9124e8 16-Jul-2014 Ian Rogers <irogers@google.com> Break apart header files.

Create libart-gtest for common runtime and compiler gtest routines.
Rename CompilerCallbacksImpl that is quick compiler specific.
Rename trace clock source constants to not use the overloaded profiler term.

Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
7fb36ded9cd5b1d254b63b3091f35c1e6471b90e 10-Jul-2014 Dave Allison <dallison@google.com> Revert "Revert "Add implicit null and stack checks for x86""

Fixes x86_64 cross compile issue. Removes command line options
and property to set implicit checks - this is hard coded now.

This reverts commit 3d14eb620716e92c21c4d2c2d11a95be53319791.

Change-Id: I5404473b5aaf1a9c68b7181f5952cb174d93a90d
0025a86411145eb7cd4971f9234fc21c7b4aced1 11-Jul-2014 Nicolas Geoffray <ngeoffray@google.com> Revert "Revert "Revert "Add implicit null and stack checks for x86"""

Broke the build.

This reverts commit 7fb36ded9cd5b1d254b63b3091f35c1e6471b90e.

Change-Id: I9df0e7446ff0913a0e1276a558b2ccf6c8f4c949
34e826ccc80dc1cf7c4c045de6b7f8360d504ccf 29-May-2014 Dave Allison <dallison@google.com> Add implicit null and stack checks for x86

This adds compiler and runtime changes for x86
implicit checks. 32 bit only.

Both host and target are supported.
By default, on the host, the implicit checks are null pointer and
stack overflow. Suspend is implemented but not switched on.

Change-Id: I88a609e98d6bf32f283eaa4e6ec8bbf8dc1df78a
95a059793c4c194f026afc74c713cc295d75d91a 30-May-2014 Vladimir Marko <vmarko@google.com> Global Value Numbering.

Implement the Global Value Numbering for optimization
purposes. Use it for the null check and range check
elimination as the LVN used to do.

The order of evaluation of basic blocks needs improving as
we currently fail to recognize some obviously identical
values in methods with more than one loop. (There are three
disabled tests that check this. This is just a missed
optimization, not a correctness issue.)

Change-Id: I0d0ce16b2495b5a3b17ad1b2b32931cd69f5a25a
74240819ae09e29b2753ef38f4eb4be1c2762e2e 17-Apr-2014 Andreas Gampe <agampe@google.com> Use memory chunks for monitors on LP64

Monitor IDs in lock words are only 30b. On a 32b system that works
fine, as memory is usually aligned enough that shifting works out.
On 64b systems, the virtual memory space is too large for that.
This adds memory chunks into which we allocate the monitors so that
we have base_addr + offset and can use the offset as the monitor ID.
To allow for relatively compact but growable storage, we use a list
of chunks.

Added a global lock for the monitor pool.

Change-Id: I0e290c4914a2556e0b2eef9902422d7c4dcf536d
3d14eb620716e92c21c4d2c2d11a95be53319791 10-Jul-2014 Dave Allison <dallison@google.com> Revert "Add implicit null and stack checks for x86"

It breaks cross compilation with x86_64.

This reverts commit 34e826ccc80dc1cf7c4c045de6b7f8360d504ccf.

Change-Id: I34ba07821fc0a022fda33a7ae21850957bbec5e7
1a2f84e80e852b1e210ed54fa995f3d781a23bd3 08-Jul-2014 Ian Rogers <irogers@google.com> Fix dex file dependencies for oat tests.

The initial prerequisit used as an argument to "cp" wasn't set causing dex2oat
to attempt to compile dex2oat. Make the setting of host and target dex
dependencies more explicit in build-art-test-dex and update the test rules
appropriately.

Change-Id: I4f591f817537043bcb0328c7623fe7e2f0830b60
1af6a1fa35ff7dc0a5c653f19dbc8a91c914aa42 20-Jun-2014 Elena Sayapina <elena.v.sayapina@intel.com> ART: Update Monitor::Wait so it releases monitor_lock_ before throwing an exception

Thread should release monitor_lock_ Mutex (which guards shared structures behind Java monitor)
in Monitor::Wait before throwing any exception. Otherwise the thread may be suspended by GC
during that time still holding the lock. This may cause deadlock during GC in case
some other thread needs to acquire the monitor_lock_. The other thread can't be suspended
by GC then waiting for exclusive lock and "thread suspend timeout" occurs.

Change-Id: Id02f45052e1cfc01e676a43434125817564d7874
Signed-off-by: Elena Sayapina <elena.v.sayapina@intel.com>
86797a791d692f81def5c1b5f0918992c49ed122 19-Jun-2014 Serban Constantinescu <serban.constantinescu@arm.com> AArch64: Add memcmp16() for Arm64; ensure xSELF not clobbered

This patch modifies memcmp() to memcmp16(). Please note that this
implementation of memcmp16() is based on the bionic's memcmp().

However, to reflect a recent specification change, the file has been
modified to respect the new String.compareTo() behavior.

A test for memcmp16() has been added. The string_compareto test in
stub_test has been changed to invoke __memcmp16 in assembly stubs.

Add artIsAssignableFromCode to the list of native downcalls to
store and reload x18. Remove CheckSuspendFromCode, as it is unused.

Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
Change-Id: Ie0b5425ecfb62906d29a5d02e84c7e07ffb34a11
327e6b49230c2adcb142fe59ea03a6a13cfe346c 27-Jun-2014 Brian Carlstrom <bdc@google.com> We can no longer use "adb shell sh -c ..." internally

Change-Id: I9357ca59f73b79fa56686d221c83e024137eee35
4d1231d61862b17bc9dce8ff65c5ada93bdcfb15 01-Jul-2014 Nicolas Geoffray <ngeoffray@google.com> The host build has changed from lib32/lib to lib/lib64.

Use the correct build variable for library dependency.

Change-Id: I2f12d13b595d97b2806eb709613e2cc358f4cad4
eb85f2bab0b402094a56276558afbf0e137176eb 25-Jun-2014 Brian Carlstrom <bdc@google.com> Further refine gtest dependencies.

(cherry picked from commit 4ac5c69266a7deab188e65df0e528eadc66e1c06)

Change-Id: I3603776efbc697bae21e79f6976afbd21baf150d
4ac5c69266a7deab188e65df0e528eadc66e1c06 25-Jun-2014 Brian Carlstrom <bdc@google.com> Further refine gtest dependencies.

Change-Id: I9af90d2b7f5b499cfe6f8378cf5bac52ea1a7dad
d0996831baeeb1daeae1bb1cd77dd041238e46d0 25-Jun-2014 Ian Rogers <irogers@google.com> Fix various test dependencies.

(cherry picked from commit 665de8a1710d2418f60d3bffdc99bdac32252530)

Change-Id: I461b1a963262d48b5caa0e3492b7b923b29755c8
665de8a1710d2418f60d3bffdc99bdac32252530 25-Jun-2014 Ian Rogers <irogers@google.com> Fix various test dependencies.

Change-Id: I2e4761f4cc061f74319a7b64ebe67c553d5297df
afd9acc30bdd11cdd12d8209eb994cb371c65e33 17-Jun-2014 Ian Rogers <irogers@google.com> Multilib ART host.

Build ART for the host as a multilib project with dalvikvm32 and dalvikvm64
running as 32 or 64-bit repsectfully. Note, currently multilib host builds
are not the default, you make the so by setting BUILD_HOST_64bit=1.
Extend tests to execute in both 32 and 64-bit modes. By default both 32 and
64-bit tests are run, add 32 or 64 to the end of a test name to run it in
purely that flavor.
Given the extra spam, modify oat tests to only generate console output when
the test fails.
Change the test harness so that common commands are run when a test should be
skipped, when it passes or when it fails. Use these commands to generate a
summary of passing, skipped and failing tests. Tests will be skipped if they
are known to be broken or if a test has already failed. Setting the variable
TEST_ART_KEEP_GOING=true will force working tests not to be skipped.
In this change all tests running on the optimizing compiler are marked broken
due to breakages running them in a multilib environment.
Break apart Android.common.mk into its constituent parts, along with other
pieces of reorganization.

Stylistic nit, we refer to make rule targets as targets thereby overloading
the term target. While consistent with make's terminology, its confusing with
the Android notion of target. I've switched to just calling targets rules to
avoid confusion in host tests.

Change-Id: I5190fc3de46800a949fbb06b3f4c258ca89ccde9
532714abd50c547f0fdbe830f811d99e621e2d34 25-Jun-2014 Brian Carlstrom <bdc@google.com> Fix test-art-target error

Change-Id: If1f800a056b3f95252037163784ab3ae26d9fa6d
df10b32c4d0adfa86201169692eaa7ef038b642c 12-Jun-2014 Andreas Gampe <agampe@google.com> ART: Dex file verifier needs to check proto idx of method id.

Bug: 15570490
Change-Id: I4e90aea6e77711ee37d14d96a1fc9a2fbb980d94
c5f17732d8144491c642776b6b48c85dfadf4b52 06-Jun-2014 Ian Rogers <irogers@google.com> Remove deprecated WITH_HOST_DALVIK.

Bug: 13751317
Fix the Mac build:
- disable x86 selector removal that causes OS/X 10.9 kernel panics,
- madvise don't need does zero memory on the Mac, factor into MemMap
routine,
- switch to the elf.h in elfutils to avoid Linux kernel dependencies,
- we can't rely on exclusive_owner_ being available from other pthread
libraries so maintain our own when futexes aren't available (we
can't rely on the OS/X 10.8 hack any more),
- fix symbol naming in assembly code,
- work around C library differences,
- disable backtrace in DumpNativeStack to avoid a broken libbacktrace
dependency,
- disable main thread signal handling logic,
- align the stack in stub_test,
- use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables.

Not all host tests are passing on the Mac with this change. dex2oat
works as does running HelloWorld.
Change-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3
41c507a9dae44b8329a857da3d9810fab2e9ddc6 15-May-2014 Alexei Zavjalov <alexei.zavjalov@intel.com> ART: Generalize code to find PC for artInvokeInterfaceTrampoline

This allows to determine target method when the interface method has
no dex index, now also for X86-64 and ARM64.

Add constexpr functions to callee_save_frame.h to have compile-time
sizes of callee-save frames. Add a test that ensures they agree
with computations by the corresponding ArtMethod methods.

Move some instruction-set functions into the header file to allow
inlining them. Move arch-specific pointer sizes and alignment sizes
out of globals.h to instruction_set.h to reduce dependencies.

Change-Id: I2997592c7dd1f4dd2bd497522c64bd235ae615a6
Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
d1c606f280797be81e2592c483869a6ec836a9f3 09-Jun-2014 Narayan Kamath <narayan@google.com> Add locking around boot image generation.

If zygote aborts due to an error, it will restart and
spawn another dex2oat process while the old one is still
running. If this happens fast enough, the system will
eventually need a kernel reboot since neither the zygote
nor dex2oat are killable.

This brings boot image generation in line with dex2oat
generation, which uses a similar pattern of advisory
locking.

bug: 15415316

Change-Id: Iaccd274d3d96ab002b04e246ec4b3ef9a422ff7c
ec7e4727e99aa1416398ac5a684f5024817a25c7 06-Jun-2014 Nicolas Geoffray <ngeoffray@google.com> Fix some bugs in graph construction/simplification methods.

Also fix a brano during SSA construction. The code should
not have been commented out. Added a test to cover what the code
intends.

Change-Id: Ia00ae79dcf75eb0d412f07649d73e7f94dbfb6f0
dadc7dcc06057bcebfb118e5fe352c3ff5a95dd9 05-Jun-2014 Dave Allison <dallison@google.com> Disable thumb assembler test to fix art build

Having difficulty getting this to run on the build server.
Disable until I can figure out how to do it.

Change-Id: I4f356fd1168b213b770426adc34bf62b8fb56b8f
65fcc2cf3c5cd97b84330c094908f3a6a7a8d4e7 28-Apr-2014 Dave Allison <dallison@google.com> Thumb2 assembler for JNI compiler and optimizing compiler

This provides a programmatic assembler for the thumb2 instruction set for
ARM. The interface is the same as the ARM assembler and the ARM assembler has
been moved into Arm32Assembler. The assembler handles most 16 and 32 bit instructions
and also allows relocations due to branch expansion. It will also rewrite cbz/cbnz
instructions if they go out of range.

It also changes the JNI compiler to use the thumb2 assembler as opposed
to forcing it to use ARM32. The trampoline compiler still uses ARM due to the
way it returns the address of its generated code. A trampoline in thumb2 is the
same size as that in ARM anyway (8 bytes).

Provides gtest for testing the thumb2 instruction output. This gtest only runs
on the host as it uses arm-eabi-objdump to disassemble the generated code. On the
target the output is not checked but the assembler will still be run to perform
all its checks.

Change-Id: Icd9742b6f13541bec5b23097896727392e3a6fb6
4352b4556c138eb9f583367d678531930b5b8fb0 05-Jun-2014 Andreas Gampe <agampe@google.com> ART: Add a test checking TLS offsets and entrypoints

Add a test (runtime for now, as compile-time checks seem not
possible with current infrastructure) that checks the structure
of the thread tls and entrypoint structs. A failure of the test
indicates a structural change, which hints at a necessary oat
version bump.

Change-Id: I500b5cd940c916ebfc1580e9dd2c287c4d263956
5ca4eaace8ba513f97309bbdc2e156de4b1d648a 29-May-2014 Andreas Gampe <agampe@google.com> ART: Make LOCAL_CLANG architecture dependent for the target

Be selective for which target we compile with Clang. Currently we
only want to compile with Clang for ARM64, which means we need to
be careful about ARM, which is the second architecture for that.

Bug: 15014252

(cherry picked from commit 9689e3768621130b2536564f4e00fcb6b3d25df4)

Change-Id: I312e1caea08f2f3a20304b27f979d3c7b72b0a04
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 03-Jun-2014 Tim Murray <timmurray@google.com> DO NOT MERGE

Merge ART from AOSP to lmp-preview-dev.

Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
9689e3768621130b2536564f4e00fcb6b3d25df4 29-May-2014 Andreas Gampe <agampe@google.com> ART: Make LOCAL_CLANG architecture dependent for the target

Be selective for which target we compile with Clang. Currently we
only want to compile with Clang for ARM64, which means we need to
be careful about ARM, which is the second architecture for that.

Bug: 15014252
Change-Id: I239591f65eab537deac39a25bd20530dce5c4786
a7062e05e6048c7f817d784a5b94e3122e25b1ec 22-May-2014 Nicolas Geoffray <ngeoffray@google.com> Add a linear scan register allocator to the optimizing compiler.

This is a "by-the-book" implementation. It currently only deals
with allocating registers, with no hint optimizations.

The changes remaining to make it functional are:
- Allocate spill slots.
- Resolution and placements of Move instructions.
- Connect it to the code generator.

Change-Id: Ie0b2f6ba1b98da85425be721ce4afecd6b4012a4
4e3d23aa1523718ea1fdf3a32516d2f9d81e84fe 22-May-2014 Nicolas Geoffray <ngeoffray@google.com> Import Dart's parallel move resolver.

And write a few tests while at it.

A parallel move resolver will be needed for performing multiple moves
that are conceptually parallel, for example moves at a block
exit that branches to a block with phi nodes.

Change-Id: Ib95b247b4fc3f2c2fcab3b8c8d032abbd6104cd7
2a0e954ecf7c60e6ec62d64b9382cc4ee447e224 21-May-2014 Dan Albert <danalbert@google.com> Move art host to libc++

Change-Id: Ia51a4fdfdbae7377130a43c401c2d8d241671d1e
700a402244a1a423da4f3ba8032459f4b65fa18f 20-May-2014 Ian Rogers <irogers@google.com> 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
ba0c51fd282c4f47b95230c5444e76f342900cfa 16-May-2014 Ian Rogers <irogers@google.com> Switch ART to libc++.

TODO: remove all vestiges of stlport.

Change-Id: I95a3cb0b53d0898f0a5d388b606e79522f4d85e0
ddb311fdeca82ca628fed694c4702f463b5c4927 16-May-2014 Nicolas Geoffray <ngeoffray@google.com> Build live ranges in preparation for register allocation.

Change-Id: I7ae24afaa4e49276136bf34f4ba7d62db7f28c01
0e12bdc49744eb6d5c29b9611a8dbe10bac4cd53 15-May-2014 Brian Carlstrom <bdc@google.com> Add ISA directory to image and odex pathnames.

Bug: 14882223
Bug: 14694978
Change-Id: Ic1b5ae836b8e91ea461dcd4f3da8e38dc3bec00f
ec245a42e04adbde15b75d8123287c54fd9fa7b3 16-May-2014 Tsu Chiang Chuang <tsu@google.com> add make target variables for gtests

Change-Id: I109dca4ffdb35484cdee49751cb5bb3be10dcb60
0d3f578909d0d1ea072ca68d78301b6fb7a44451 14-May-2014 Nicolas Geoffray <ngeoffray@google.com> Linearize the graph before creating live ranges.

Change-Id: I02eb5671e3304ab062286131745c1366448aff58
eb8167a4f4d27fce0530f6724ab8032610cd146b 08-May-2014 Mathieu Chartier <mathieuc@google.com> Add Handle/HandleScope and delete SirtRef.

Delete SirtRef and replaced it with Handle. Handles are value types
which wrap around StackReference*.

Renamed StackIndirectReferenceTable to HandleScope.

Added a scoped handle wrapper which wraps around an Object** and
restores it in its destructor.

Renamed Handle::get -> Get.

Bug: 8473721

Change-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a
622d9c31febd950255b36a48b47e1f630197c5fe 12-May-2014 Nicolas Geoffray <ngeoffray@google.com> Add loop recognition and CFG simplifications in new compiler.

We do three simplifications:
- Split critical edges, for code generation from SSA (new).
- Ensure one back edge per loop, to simplify loop recognition (new).
- Ensure only one pre header for a loop, to simplify SSA creation (existing).

Change-Id: I9bfccd4b236a00486a261078627b091c8a68be33
804d09372cc3d80d537da1489da4a45e0e19aa5d 02-May-2014 Nicolas Geoffray <ngeoffray@google.com> Build live-in, live-out and kill sets for each block.

This information will be used when computing live ranges of
instructions.

Change-Id: I345ee833c1ccb4a8e725c7976453f6d58d350d74
11d9f06a96a6909905c248ed684366190140095c 23-Apr-2014 Narayan Kamath <narayan@google.com> Use instruction specific dalvik cache dirs.

- All oat & art files are now placed under /data/dalvik-cache/<isa>/.
- GetDalvikCacheOrDie now requires a mandatory subdirectory argument,
and is implicitly rooted under /data/.
- Added helper methods to convert InstructionSet enums into strings
and vice versa.

(cherry picked from commit 2974bc3d8a5d161d449dd66826d668d87bdc3cbe)

Change-Id: Ic7986938e6a7091a2af675ebafec768f7b5fb8cd
5a4fa82ab42af6e728a60e3261963aa243c3e2cd 01-Apr-2014 Andreas Gampe <agampe@google.com> x86_64 Assembler Test Infrastructure, fix x86_64 assembler

Some infrastructure to do real assembler testing. Need to extend to
other assemblers, and a lot more tests.

Fix some of the cases of the x86_64 assembler.

Change-Id: I15b5f3a094af469130db68a95a66602cf30d8fc4
2974bc3d8a5d161d449dd66826d668d87bdc3cbe 23-Apr-2014 Narayan Kamath <narayan@google.com> Use instruction specific dalvik cache dirs.

- All oat & art files are now placed under /data/dalvik-cache/<isa>/.
- GetDalvikCacheOrDie now requires a mandatory subdirectory argument,
and is implicitly rooted under /data/.
- Added helper methods to convert InstructionSet enums into strings
and vice versa.

Change-Id: I9bff2e2ca534e0b93842a50d5b272ddf6d5745f3
c32e770f21540e4e9eda6dc7f770e745d33f1b9f 24-Apr-2014 Nicolas Geoffray <ngeoffray@google.com> Add a Transform to SSA phase to the optimizing compiler.

Change-Id: Ia9700756a0396d797a00b529896487d52c989329
5c1e4352614d61fed6868567e58b96682828cb4d 22-Apr-2014 Andreas Gampe <agampe@google.com> Add "arch_test" gtest for assembly stub constants, add some ARM64 assembly code

Add a test that (1) checks all callee-save method frame sizes for
all architectures, (2) checks thread offsets for the runtime
architecture and (3) checks callee-save method offsets for the
runtime architecture.

The "asm_support_XXX.h" files now only contain definitions that are
common between all architectures. Architecture-specific definitions
(i.e., special registers names) have been pushed into the corresponding
.S file. This change was required to be able to undefine definitions
in the test, so that multiple tests can be written in one file.

Test (1) above is in a sense two-stage. The arch_test gtest compares
constants (if it finds them) against the frame size as reported by
the ArtMethods created by the Runtime. This works for all architectures
as we can provide the instruction-set to CreateCalleeSaveMethod. The
second stage of the "test" are preprocessor tests with "#error" in the
case that the constants are not the expected value.

Optimally I'd like to change that to an actual runtime test exercising
the assembly code, which would also allow to check whether the right
registers are stored.

Also added missing assembly code for ARM64 for the callee-save macros.

Also fix X86_64 compilation for Clang 3.5.

Change-Id: I018e6433dffd3d31ba3bfcd75661653f4c7b6552
525cde2dd7cc7ad4212765ad3975cf260a934d3e 23-Apr-2014 Andreas Gampe <agampe@google.com> Add a GTest for Assembly Stubs, Add some ARM64 and X86-64 Stubs

This GTest adds some runtime testing for the stubs that does not
rely on the compiler. This should allow to add or update the stubs
and do testing, especially on architectures without working compiler.

This test is a bit dangerous: if it doesn't know how to handle an
architecture, it will only log a warning. This is so that testing
does not break at the moment. The warning is forced to stdout, too,
so that it is always visible.

Add art_quick_check_cast to ARM64 and X86-64. Add art_quick_memcpy
to X86-64. The latter should be removed in a good compiler, as it is
practically only overhead. Add minor CFI information in ARM.

Change-Id: Ia9c6d0f4035eb1527c12b5f6067dece59e25528d
2fe07927610177e9b83809e5bdb6d2b3d835a076 21-Apr-2014 Andreas Gampe <agampe@google.com> Fix dependencies in the test suite for multi-target tests

Change-Id: I94dd767490a7cd8cceddc158d90f56f5bd3fef26
bd5ea6a2f7c61c4cd7b66fead1bedd96e938369d 17-Apr-2014 Ian Rogers <irogers@google.com> Preparation for transition to libc++.

Move the dependency on libc++ to its own makefile so that we can switch in a
single place between libc++ and stlport.

Change-Id: Ie61e7d054dcd049e36d5e7298c27d8a4abe6edf7
01bc96d007b67fdb7fe349232a83e4b354ce3d08 11-Apr-2014 Nicolas Geoffray <ngeoffray@google.com> Long support in optimizing compiler.

- Add stack locations to the Location class.
- Change logic of parameter passing/setup by setting the
location of such instructions the ones for the calling
convention.

Change-Id: I4730ad58732813dcb9c238f44f55dfc0baa18799
135016a1feee5576014f377e8006057837ee73a2 03-Apr-2014 Dmitry Petrochenko <dmitry.petrochenko@intel.com> 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>
15523731549152276f23dcf94d81b1a9ce9c5038 02-Apr-2014 Serban Constantinescu <serban.constantinescu@arm.com> 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>
afbaa1aab02cfe519d00336870b1bcd24b61378d 26-Mar-2014 Andreas Gampe <agampe@google.com> Build changes to build multilib tests

Test files will be emitted into directories for both first and second
target architectures. Going with the naming scheme for binaries,
single-architecture and 32b cases have the standard name, and
64b goes into a directory with "64" suffix.

In multi-architecture setups, the default concrete test targets are
extended with a "32" and "64" suffix, e.g., test-art-target-oat-JniTest64.
The suffix-less form is linked to the primary architecture target (usually 64).
That means running combined targets, e.g., test-art-target-oat, will only
test the primary architecture right now.

Fixed target run tests calling the right dalvikvm. Fixed library search
path for tests derived from CommonRuntimeTest.

Missing in this work-in-progress is correct handling of dex2oat for the
secondary architecture. To make it work on 64b, comment out line 101
in build/Android.executable.mk

Change-Id: I3d260994e6efe8b73b56c71994053cc9392943a9
cae10f73bdad63774a3a8bc67d568b131f9bd591 01-Apr-2014 Andrew Hsieh <andrewhsieh@google.com> Add -lpthread -ldl to link executable/tests

The new binutils-2.23 based linker in
prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6
no longer implicity adds dependencies on *so an executable needs.
eg.

ld -o barrier_test barrier_test.o common_runtime_test.o ... -lartd

produces error messages read

art/runtime/thread-inl.h:43: error: undefined reference to 'pthread_getspecific'
art/runtime/common_runtime_test.h:219: error: undefined reference to 'dlsym'
external/gtest/src/../include/gtest/internal/gtest-port.h:1482: error: undefined reference to 'pthread_getspecific'

because libartd.so DT_NEEDED libdl.so and libpthread.so, and new linker no longer
implicitly add both to dependencies. Explicitly add -lpthread -ldl to fix the issue

Change-Id: Ic29c68480b2ed55d282be949640b9158411f213d
7f2e3da1052132854dcace88af75e2f5c067295d 26-Mar-2014 Brian Carlstrom <bdc@google.com> Fix host gtests compiled with gcc

(cherry picked from commit d016e1fab648093706f85cc78b63da0f3f487733)

Change-Id: I5d2b8061278fd5a477ec87395fca435a3da801a3
d016e1fab648093706f85cc78b63da0f3f487733 26-Mar-2014 Brian Carlstrom <bdc@google.com> Fix host gtests compiled with gcc

Change-Id: I39bd2a47d15227c82598811d288bf548ea10b194
0ab4461e0cfa4ccb0acd8db25b764ba8fd78289b 20-Mar-2014 Tim Murray <timmurray@google.com> Fix missing link line for libgtest_host.

bug 13435344

Change-Id: If4197ddb97b235c731e4c771968eae46483d55b3
bfea9c29e809e04bde4a46591fea64c5a7b922fb 17-Jan-2014 Vladimir Marko <vmarko@google.com> 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
53b8b09fc80329539585dcf43657bc5f4ecefdff 14-Mar-2014 Ian Rogers <irogers@google.com> Refactor reflective method invocation.

Move invocation code out of JNI internal into reflection, including ArgArray
code. Make reflective invocation use the ArgArray to build arguments rather
than allocating a jvalue[] and unboxing arguments into that.
Move reflection part of jni_internal_test into reflection_test.
Make greater use of fast JNI.

Change-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057
b7054baf28d4d652fbd98a94b089344a31898d53 13-Mar-2014 Sebastien Hertz <shertz@google.com> Fix debugger crashes in presence of proxy objects.

Fix ClassHelper::NumDirectInterfaces to use IfTable::Count instead of the
iftable array's length (which is twice the interface count). This happens when
processing ReferenceType::Interfaces command and was causing a crash.

Return ABSENT_INFORMATION error code when we're asked for the source file of a
proxy class. Otherwise we call ClassHelper::GetSourceFile which expect the
class has a corresponding ClassDef item in the DEX file which is not true for
proxy classes.

Add new proxy_test to check ClassHelper works correctly with proxy classes.

Bug: 13426918
Change-Id: I5c1212b1a697dd7dc1ab18e99552ee113c533a5a
e0dcd46314d07eeb332edea292f5110178e4e3d2 09-Mar-2014 Ian Rogers <irogers@google.com> JNI down call fixes.

Ensure SIRT isn't accessed via quick callee save frame.
Some tidying of code.

Change-Id: I8fec3e89aa6d2e86789c60a07550db2e92478ca7
ed8dd492e43cbaaa435c4892447072c84dbaf2dc 11-Feb-2014 Serban Constantinescu <serban.constantinescu@arm.com> AArch64: Add ARM64 Assembler

This patch adds the ARM64 Assembler and ManagedRegister backend.
The implementation of the Arm64Assembler class is based on VIXL (a
programmatic A64 Assembler - see external/vixl ).

Change-Id: I842fd574637a953c19631eedf26f6c70d9ed7f9e
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
d4dd255db1d110ceb5551f6d95ff31fb57420994 28-Feb-2014 Nicolas Geoffray <ngeoffray@google.com> Add codegen support to the optimizing compiler.

Change-Id: I9aae76908ff1d6e64fb71a6718fc1426b67a5c28
491ca9e75fad381468dd7f5fdbff56d1a9738dd7 03-Mar-2014 Brian Carlstrom <bdc@google.com> Add ART -help and -showversion

Bug: https://code.google.com/p/android/issues/detail?id=62149
Change-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3
24651ecef33eac8ea155ce36681ca7331340547a 27-Feb-2014 Andreas Gampe <agampe@google.com> Further split of the space tests

Split the random-size allocations from the static-size allocation tests
Have all tests have distinguished names

Bug: 13117676
Change-Id: I40130b04d11715b9bd1d1ea8d76720f83af6ba82
b48b9eb6d181a1f52e2e605cf26a21505f1d46ed 01-Mar-2014 Ian Rogers <irogers@google.com> Fix clang to compile and run host tests.

Don't use the computed goto interpreter with clang 3.4 as it causes compilation
to hang.
Avoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it
sets clang incompatible cflags.
Most fixes are self-evident, for the quick dex file method inliner the enums
were being used with ostreams, so fix the enums and operator out python script
to allow this.
Note this change effects portable but this is untestable as portable was broken
by ELF file and mc linker changes.

Change-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903
a1ce1fef2d49d1d537776a5308ace7102a815fe5 25-Feb-2014 Brian Carlstrom <bdc@google.com> Split up CommonTest into CommonRuntimeTest and CommonCompilerTest

Change-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70
be9a92aa804c0d210f80966b74ef8ed3987f335a 25-Feb-2014 Nicolas Geoffray <ngeoffray@google.com> Add conditional branches, and build dominator tree.

Change-Id: I4b151a07b72692961235a1419b54b6b45cf54e63
a7433515114ae725c3427cd510f76b84107170a1 21-Feb-2014 Andreas Gampe <agampe@google.com> Split space_test into separate checks

Split space_test by space type: dlmalloc, rosalloc and large object space to facilitate parallelized testing.

Bug: 13117676
Change-Id: I152dc03717c26dfcf14e93ba2b39f83612a5f560
f59f18b2bd5432bb083205680c69fe64aaf60f39 17-Feb-2014 Vladimir Marko <vmarko@google.com> Fix and rewrite local value numbering.

Fix memory versioning to take aliasing and method calls
into account. Use more instructions for the null check
elimination. Return the local value name of the register
defined by the instruction if applicable.

Change-Id: I4560bc680ae1ad553a7a00fa092c937e3da9fbbe
818f2107e6d2d9e80faac8ae8c92faffa83cbd11 18-Feb-2014 Nicolas Geoffray <ngeoffray@google.com> Re-apply: Initial check-in of an optimizing compiler.

The classes and the names are very much inspired by V8/Dart.
It currently only supports the RETURN_VOID dex instruction,
and there is a pretty printer to check if the building of the
graph is correct.

Change-Id: I28e125dfee86ae6ec9b3fec6aa1859523b92a893
1af0c0b88a956813eb0ad282664cedc391e2938f 19-Feb-2014 Nicolas Geoffray <ngeoffray@google.com> Revert "Initial check-in of an optimizing compiler."

g++ warnings turned into errors.

This reverts commit 68a5fefa90f03fdf5a238ac85c9439c6b03eae96.

Change-Id: I09bb95d9cc13764ca8a266c41af04801a34b9fd0
68a5fefa90f03fdf5a238ac85c9439c6b03eae96 18-Feb-2014 Nicolas Geoffray <ngeoffray@google.com> Initial check-in of an optimizing compiler.

The classes and the names are very much inspired by V8/Dart.
It currently only supports the RETURN_VOID dex instruction,
and there is a pretty printer to check if the building of the
graph is correct.

Change-Id: Id5ef1b317ab997010d4e3888e456c26bef1ab9c0
dc781a13ddb4dabf646bb45d0c53b65cab948e5b 05-Feb-2014 Colin Cross <ccross@android.com> art: convert makefiles to support multilib build

Convert makefiles to allow for building two architectures at the
same time. More changes may be necessary to get the tests to
build.

Change-Id: I02ba11706b7e5b5592d76e43c167bcbf0e665b93
d2fe10a3a34af171bf1631219cd2d6ff6b7778b5 15-Jan-2014 Sebastien Hertz <shertz@google.com> Remove blacklist

Removes the class initialization blacklist and use transaction to detect and
revert class initialization attempting to invoke native method. This only
concerns class initialization happening at compilation time when generating an
image (like boot.art for the system).

In transactional mode, we log every object's field assignment and array update.
Therefore we're able to abort a transaction to restore values of fields and
array as they were before the transaction starts. We also log changes to the
intern string table so we can restore its state prior to transaction start.

Since transactional mode only happens at compilation time, we don't need to log
all these changes at runtime. In order to reduce the overhead of testing if
transactional mode is on/off, we templatize interfaces of mirror::Object and
mirror::Array, respectively responsible for setting a field and setting an
array element.

For various reasons, we skip some specific fields from transaction:
- Object's class and array's length must remain unchanged so garbage collector
can compute object's size.
- Immutable fields only set during class loading: list of fields, method,
dex caches, vtables, ... as all classes have been loaded and verified before a
transaction occurs.
- Object's monitor for performance reason.

Before generating the image, we browse the heap to collect objects that need to
be written into it. Since the heap may still holds references to unreachable
objects due to aborted transactions, we trigger one collection at the end of
the class preinitialization phase.

Since the transaction is held by the runtime and all compilation threads share
the same runtime, we need to ensure only one compilation thread has exclusive
access to the runtime. To workaround this issue, we force class initialization
phase to run with only one thread. Note this is only done when generating image
so application compilation is not impacted. This issue will be addressed in a
separate CL.

Bug: 9676614
Change-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9
43b2e0f9105848da6470458e7c04bf1fd7fcb25c 31-Jan-2014 Ian Rogers <irogers@google.com> Fix multi-line hex dumping and add unit test.

Change-Id: I7657018fef5d9c17410a9a634db275555f180014
500793f33b8af8bc7ccf5595a66b4b13bce766bc 15-Nov-2013 Ian Rogers <irogers@google.com> LEB128 tests and performance measurements.

Change-Id: I1850a2ff9225cfab8f896619c212b1b55f03ae94
86aed2a0b7972bf5a5f564d710e7b270589bbddc 14-Nov-2013 Ian Rogers <irogers@google.com> Fix testing all valgrind tests and make errors abort.

Change-Id: I6185e26cf89fde6fc8642fd4f7c5285a6f33f835
d912e5c36f952db8ff027d67979724fe0e56b35a 13-Nov-2013 Ian Rogers <irogers@google.com> Allow host valgrind gtests to be run individually.

Change-Id: I80976600034046cb42e8565bfd38f75811d7a08e
1bd2ceb3a8c68ae6ea1f9627b588a7bc7a74487f 06-Nov-2013 Brian Carlstrom <bdc@google.com> Make missing DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES an error

Change-Id: I3ca23e4db80c8ab8a86da6408cf38daccd4cfaf1
7020278bce98a0735dc6abcbd33bdf1ed2634f1d 23-Oct-2013 Dave Allison <dallison@google.com> Support hardware divide instruction

Bug: 11299025

Uses sdiv for division and a combo of sdiv, mul and sub for modulus.
Only does this on processors that are capable of the sdiv instruction, as determined
by the build system.

Also provides a command line arg --instruction-set-features= to allow cross compilation.
Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults
it to something obtained from the target architecture.

Provides a GetInstructionSetFeatures() function on CompilerDriver that can be
queried for various features. The only feature supported right now is hasDivideInstruction().

Also adds a few more instructions to the ARM disassembler

b/11535253 is an addition to this CL to be done later.

Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
ba150c37d582eeeb8c11ba5245edc281cf31793c 28-Aug-2013 Brian Carlstrom <bdc@google.com> Omit OatMethodOffsets for classes without compiled code

Change-Id: If0d290f4aebc778ff12d8fed017c270ad2ac3220
413e89f277ec6ba1bdf2040f5b5611f29a27a447 22-Oct-2013 Brian Carlstrom <bdc@google.com> Refactor ArenaBitVector to create more general BitVector

Change-Id: Ib26f2884de9ce7d620048bdf5ed6dec639622e41
193bad9b9cfd10642043fa2ebbfc68bd5f9ede4b 30-Aug-2013 Mathieu Chartier <mathieuc@google.com> Multi threaded hashed deduplication during compilation.

Moved deduplication to be in the compiler driver instead of oat
writer. This enables deduplication to be performed on multiple
threads. Also added a hash function to avoid excessive comparison
of byte arrays.

Improvements:
Before (alloats host):
real 1m6.967s
user 4m22.940s
sys 1m22.610s

Thinkfree.apk (target mako):
0m23.74s real 0m50.95s user 0m9.50s system
0m24.62s real 0m50.61s user 0m10.07s system
0m24.22s real 0m51.44s user 0m10.09s system
0m23.70s real 0m51.05s user 0m9.97s system
0m23.50s real 0m50.74s user 0m10.63s system

After (alloats host):
real 1m5.705s
user 4m44.030s
sys 1m29.990s

Thinkfree.apk (target mako):
0m23.32s real 0m51.38s user 0m10.00s system
0m23.49s real 0m51.20s user 0m9.80s system
0m23.18s real 0m50.80s user 0m9.77s system
0m23.52s real 0m51.22s user 0m10.02s system
0m23.50s real 0m51.55s user 0m9.46s system

Bug: 10552630

Change-Id: Ia6d06a747b86b0bfc4473b3cd68f8ce1a1c7eb22
0e480cad5d2cf0904b98b7b56e90280e9b97ba30 16-Aug-2013 Ian Rogers <irogers@google.com> Move output_stream files out of runtime.

Also move image_test and oat_test that are more writing tests.

Change-Id: I6af1400d8e745bbf87f626ca87dae3e2d85b40f1
4446ab9e70dde779d97f451c4904f6b8770232bd 10-Aug-2013 Anwar Ghuloum <anwarg@google.com> Systrace fixups and refactoring for TimingLogger

Fixed systrace bounds for timing logger in GC. Refactored CumulativeLogger a bit to
allow for multiple identical entries. Added ScopedSplit, now composes with explicit
start/end/new splits. Adds some unit tests.
Bug: 10036801

Change-Id: If0afb88b48ec3a1e19462ed354babb274a9517a7
597e46bf300244a45d1e214c618e89250b39912b 08-Aug-2013 Dragos Sbirlea <dragoss@google.com> Added tests for SEA IR intermediate representation.

Change-Id: Ibc55fc3d1f6f753381a9d508d250944c2c45531d
423fb4d70f2ac36bf9f630146b4150771a8e7e76 06-Aug-2013 Dragos Sbirlea <dragoss@google.com> Add tests for SEA IR types infrastructure.

type_data_test.cc: Tests the type store used to record info on
the types of results from instructions.
type_inferecen_visitor_test.cc: Tests type merging and related
operations.
Android.gtest.mk: Included new tests.
type_inference_visitor.h/.cc: Marked function as const
and made public.
scoped_hashtable_test.cc: Included full header path in #include.

Change-Id: I868461dcaed1e7f75db15958b83a3db7e17f6a64
834b394ee759ed31c5371d8093d7cd8cd90014a8 31-Jul-2013 Brian Carlstrom <bdc@google.com> Merge remote-tracking branch 'goog/dalvik-dev' into merge-art-to-dalvik-dev

Change-Id: I323e9e8c29c3e39d50d9aba93121b26266c52a46
025218c7e4330a4942b14f9a8f1f68bd3390261c 31-Jul-2013 Elliott Hughes <enh@google.com> Clean up stlport usage.

Change-Id: I133cd88f1da37f6f801a9e07a78ae23b671cf4f1
7655f29fabc0a12765de828914a18314382e5a35 29-Jul-2013 Ian Rogers <irogers@google.com> Portable refactorings.

Separate quick from portable entrypoints.
Move architectural dependencies into arch.

Change-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c
9004cb6591781d1e6c5ec6d7bc6dc99d9ecee124 27-Jul-2013 Brian Carlstrom <bdc@google.com> Allow MemMap to support empty map requests

Discovered trying to use ZipEntry::ExtractToMemMap on an empty preloaded-classes.

Bug: 8659045
Change-Id: Icfbbe6b313e2d1ee708b44a8d8d354d6203fd669
166db04e259ca51838c311891598664deeed85ad 26-Jul-2013 Ian Rogers <irogers@google.com> Move assembler out of runtime into compiler/utils.

Other directory layout bits of clean up. There is still work to separate quick
and portable in some files (e.g. argument visitor, proxy..).

Change-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351
19e776ceb178397661b0323a9a982f6db249a56d 23-Jul-2013 Brian Carlstrom <bdc@google.com> Enable darwin target build for art.

Change-Id: I8fc04258360d663d2fcd07c307fdfdd2981cdd19
17bfe263d8a37aa4da4c5088e4245dedaebc3ff8 17-Jul-2013 Brian Carlstrom <bdc@google.com> Use LOCAL_REQUIRED_MODULES instead of LOCAL_ADDITIONAL_DEPENDENCIES so we only relink the tests on libart changes but do not recompile them.

Change-Id: I47d7cdaa51749970eccac8528b032448a26b6e91
0cb7853dec0ccc99c5d21f6b591b315710a15922 17-Jul-2013 Brian Carlstrom <bdc@google.com> Fix typo in makefile

Change-Id: I462df0f268472460171c355d322eafc58a46a522
3795f2517f47702764f372086367c47d4cd776d9 15-Jul-2013 Brian Carlstrom <bdc@google.com> Use non-PHONY dependency to avoid rebuilding art gtests repeatedly.

Change-Id: I675552b68c3375204eb9ef356ce80aa9615f4ccf
4478eb0a14a154fbdbaeef075dce8a5f8a33b25c 15-Jul-2013 Brian Carlstrom <bdc@google.com> Include dex2oatd along with libart and libartd-compiler

Change-Id: I154fccef2667d640141f9fc484697d5cf6531608
58cc497e7382d4eeb6d39bcc98d222689909ba39 13-Jul-2013 Brian Carlstrom <bdc@google.com> Move ScopedHashtable files out of art/src

Change-Id: If854ee34dc81abb81bc7e021bc59c7b151cd6ab5
7940e44f4517de5e2634a7e07d58d0fb26160513 12-Jul-2013 Brian Carlstrom <bdc@google.com> Create separate Android.mk for main build targets

The runtime, compiler, dex2oat, and oatdump now are in seperate trees
to prevent dependency creep. They can now be individually built
without rebuilding the rest of the art projects. dalvikvm and jdwpspy
were already this way. Builds in the art directory should behave as
before, building everything including tests.

Change-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81
8cc5162f19d64eb6414e7e421cea4413debe671e 21-Jun-2013 Dragos Sbirlea <dragoss@google.com> Semi-pruned SSA support for sea-ir.

Added the following:

Per file:
sea_ir/sea.*: IDominator pass, dominance frontiers, global variables for ssa
transformation, phi-function insertion pass, SSA renaming pass.
sea_ir/instruction_tools.*: These tools provide info needed by dataflow analysis
that is dependent on dex format.
compiler/utils/scoped_hashtable.h: Scoped hashtable implementation that
allows fast SSA renaming.
src/compiler/utils/scoped_hashtable_test.cc: Test for scoped_hashtable.h.
dex_instruction.cc: Changed semantics of the VRegA,B,C function
to return NO_REGISTER instead
of aborting if the instruction does not
have register operands.
Android.common.mk: Added support for scoped_hashtable test.

Change-Id: I990fe4c213d241a033e43a04a67c6083fca4b347
51c2467e8771b56e25ae4f17f66522f979f57a7e 12-Jul-2013 Brian Carlstrom <bdc@google.com> libart-compiler cleanup

- Move compile-time code to src/compiler and libart-compiler
OatWriter, ImageWriter, ElfWriter, ElfFixup, ElfStripper, stub generation
- Move ClassReference and MethodReference to remove MethodVerifier dependency on CompilerDriver
- Move runtime_support_llvm.cc out of src/compiler and next to runtime_support.cc
- Change dex2oat and gtests to directly depend on libart-compiler
- Move non-common definitions from Android.common.mk to more specific makefiles
- Add LOCAL_ADDITIONAL_DEPENDENCIES on appropriate makefiles

Change-Id: I897027e69945914128f21f317a92caf9255bc600
cd5d0422ac07b03220970a3606f8b402a3636528 18-May-2013 Ian Rogers <irogers@google.com> Clang build support, -Wthread-safety with GCC 4.6.

Change-Id: Idccb4daa012c66a6ece3f7a037c9c2c029beba64
52e55cbc6d18694556176b58ef79b5ae52c8039c 22-Mar-2013 Brian Carlstrom <bdc@google.com> Remove gcc-based tsan support

Change-Id: I145331e295f69e99408e03cb59df26fb337510f5
c928de90ad22ecdf83c18a07008409595f13d3b1 27-Feb-2013 Ian Rogers <irogers@google.com> Remove Iceland.

ART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER
is used in #ifdefs.

Change-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55
700c8d31733534a3d978b75a03f6f7e177dc7e81 05-Nov-2012 Brian Carlstrom <bdc@google.com> Move .oat files to ELF format

Generates .oat in ELF file format using MCLinker
- Uses MCLinker IRBuilder to create a synthetic .o from OatWriter output.
- Uses new ElfFile for prelinking to support art image optimizations.

Adapted OatFile to load using dlopen, ElfFile, or memory, removing raw MemMap mechanism.

Changed image code to not assume oat data will be immediately after
image to allow space for ELF headers.

Passes test-art and works with installd.

Change-Id: Idc026eddb5de93f4b97490c405f3ed7b39589749
0e4627e593bc39f8e3d89c31f8977d55054c07cc 24-Oct-2012 Mathieu Chartier <mathieuc@google.com> Add thread pool class

Added a thread pool class loosely based on google3 code.

Modified the compiler to have a single thread pool instead of creating new threads in ForAll.

Moved barrier to be in top level directory as it is not GC specific code.

Performance Timings:

Reference:
boot.oat: 14.306596s
time mm oat-target:
real 2m33.748s
user 10m23.190s
sys 5m54.140s

Thread pool:
boot.oat: 13.111049s
time mm oat-target:
real 2m29.372s
user 10m3.130s
sys 5m46.290s

The speed increase is probably just noise.

Change-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49
c531cefbfb5394413122e9f57d211ba436cff012 18-Oct-2012 buzbee <buzbee@google.com> Eliminate #ifdef ART_USE_QUICK_COMPILER

One of several steps towards having a single compiler build.
In this CL, we introduce a compiler_backend command-line option
to select between Quick, Quick w/ GBC, Portable and Iceland
back ends. The Iceland option is temporary, and will go away once
we combine with Portable. The Quick variants are with
and without GBC conversion. In time, those will converge to a
single option.

All uses of "#if defined(ART_USE_QUICK_COMPILER)" are eliminated. All
previous uses in the Quick compiler have been converted to runtime
tests. On the llvm side, ART_USE_QUICK_COMPILER was previously
used to differentiate between Portable and Iceland builds. Those
usages have been replaced with ART_USE_PORTABLE_COMPILER, and in
a following CL will also be converted to run-time tests.

As of this CL, we're still generating separate libraries for
Quick and Portable/Iceland. Next up is elminating the target-specific
libraries for Quick-arm, Quick-x86 and Quick-mips. Once that is
complete, we will consoldate Quick and Portable into a single build.

To build either Iceland or Portable, touch USE_PORTABLE_COMPILER or
USE_LLVM_COMPILER as usual. Otherwise, the build will default
to Quick (non-GBC).

Change-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47
21d28f510eb590f52810c83f1f3f37fe5f4adf46 12-Jun-2012 Shih-wei Liao <sliao@google.com> GBC Expander. Removed lir.

Change-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa
871599a0289b6b81f83caafae7ba755718186205 06-Sep-2012 Brian Carlstrom <bdc@google.com> Restore tests tag for target

Change-Id: Iee24512e5baac2bc0b068558e29e16000a7b2869
3bdcd3dc77b8564d443c0f9e2fbbfda0124b5508 24-Aug-2012 Brian Carlstrom <bdc@google.com> Remove build warnings due to now unnecessary LOCAL_MODULE_TAGS

Change-Id: I90b413525b00de930ab9319546c32dece0ec1e77
971bf3f9184010d68b9a3ad30b396fa401af91a3 01-May-2012 Logan Chien <loganchien@google.com> Compile method one-by-one.

Change-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c
eaec3ae9ef61e461ac5d2a1453a6f20b70b5d806 18-Jun-2012 Brian Carlstrom <bdc@google.com> chmod +x before running a gtest on the target

otherwise binaries written by flashing userdata.img cannot be run.

Change-Id: I495ca3cde4e5d7cbdf6b535b5d38345da4846e90
eb02a124afcd6869ada475712bca8cbe0de20222 12-Jun-2012 Elliott Hughes <enh@google.com> Use our own 'main' for gtest tests.

This lets us include the test name in crashes.

Change-Id: Id8ed130589b5bc058bedc835a7fe06bbc6178be5
2cfc639fc803bf67e3d2a961f2b637220c86d5f7 07-May-2012 buzbee <buzbee@google.com> Foundation for Quick LLVM compiler

Ready for review - probably better get this cleaned up and
checked in even though much work remains.

Basic conversion from MIR to GreenlandIR and from GreenlandIR
back to LIR. Support sufficient to run Fibonacci test.

Note some structural changes in MIR to support this work:
o retaining incoming label for phi nodes
o constant propagation
o include object reference detection in type inference pass

Change-Id: I8ba63c73e76d071aa40cae0f744e598b96f68699
e94d9b23c52ec0f36c8a132914eac33bc707faff 22-May-2012 Shih-wei Liao <sliao@google.com> Add dex_lang as common frontend to lir and LLVM. dex_lang + bc2lir =
Greenland

First commit of Greenland compiler: It's working in the sense of oat
tests. E.g., mm test-art-host-oat-Fibonacci. It shows the correct
bitcode before lir.

Change-Id: I91cbb02188325eb1fa605ed71ec7108fd2b0dbb9
b0aa9d313b2cc36a0b6420266131631bee2da807 08-Apr-2012 Brian Carlstrom <bdc@google.com> Fix target gtest depenencies

The main ingredient was moving the include of Android.gest.mk earlier.
But then to keep host gtests dependencies working, their dependencies
were made to mirror how the target works, to hopefully avoid similar
issues in the future.

Change-Id: If7223b8a6f3a2fef449616494b14558e1752226d
b264f081424642b06b0bbe7102781895d41faa9d 07-Apr-2012 Elliott Hughes <enh@google.com> Implement native method return value and upcall argument type checking.

Also clean up the CheckJNI testing a bit. I still need to do some work so that
JniAbort catches more of the detail, but this is a step forward.

Change-Id: Ibf5e32867d56123cff902ebf602406b731f567d2
b4669208ee02f16c198eb21332701b6a0c5af278 25-Mar-2012 TDYa127 <tdy@google.com> Fix space_test for (USE_LLVM_COMPILER) build.

If we use libcutils, it will link bionic's dlmalloc. And we will call
bionic's init_mparams(). The init_mparams() initializes a "static"
variable, mparams. So, if we don't call ART's copy of init_mparams(), our
own mparams will not be initialized. Later, when we call
mspace_set_footprint_limit(), which only exists in ART's copy of
dlmalloc, it can not successfully set limit.

The problematic code path is as follows:

Most recent callee is:
art::Runtime::VisitRoots at art/src/runtime.cc:839
art::MarkSweep::MarkRoots at art/src/mark_sweep.cc:91
art::Heap::CollectGarbageInternal at art/src/heap.cc:581

art::Heap::AllocateLocked at art/src/heap.cc:465
art::Heap::AllocateLocked at art/src/heap.cc:421
art::Heap::AllocObject at art/src/heap.cc:281
art::Array::Alloc at art/src/object.cc:1252
art::PrimitiveArray<unsigned short>::Alloc at art/src/object.cc:1280
art::String::Alloc at art/src/object.cc:1392
art::String::AllocFromModifiedUtf8 at art/src/object.cc:1380
art::String::AllocFromModifiedUtf8 at art/src/object.cc:1375
art::InternTable::InternStrong at art/src/intern_table.cc:136
art::ClassLinker::AllocDexCache at art/src/class_linker.cc:1042
art::ClassLinker::AppendToBootClassPath at art/src/class_linker.cc:1607
art::ClassLinker::InitFromCompiler at art/src/class_linker.cc:314
art::ClassLinker::CreateFromCompiler at art/src/class_linker.cc:213
art::Runtime::Init at art/src/runtime.cc:666
art::Runtime::Create at art/src/runtime.cc:495
which is the oldest callee.

This will happen to (!USE_LLVM_COMPILER) build as well:
When creating runtime.class_linker_, it should allocate DexCache.
When initializing DexCache, it needs to allocate managed Object.

Then, when running (USE_LLVM_COMPILER) build, allocate without growth failed.
See space->AllocWithoutGrowth() at heap.cc:442.
Then, (USE_LLVM_COMPILER) build will call CollectGarbageInternal, which will call
through Runtime::VisitRoots(). VisitRoots needs class_linker. But at that time,
we are still initializing runtime::class_linker_!

In general, this could be a bug for (!USE_LLVM_COMPILER) build too, when
we need to run GC before class_linker_ is initialized.

(cherry picked from commit 8771a2fe9f5892fa4646cf50ae728f54b427356f)

Change-Id: I02b313b4153bb7ff7554aaf3d0dc760c5bdb2087
8771a2fe9f5892fa4646cf50ae728f54b427356f 25-Mar-2012 TDYa127 <tdy@google.com> Fix space_test for (USE_LLVM_COMPILER) build.

If we use libcutils, it will link bionic's dlmalloc. And we will call
bionic's init_mparams(). The init_mparams() initializes a "static"
variable, mparams. So, if we don't call ART's copy of init_mparams(), our
own mparams will not be initialized. Later, when we call
mspace_set_footprint_limit(), which only exists in ART's copy of
dlmalloc, it can not successfully set limit.

The problematic code path is as follows:

Most recent callee is:
art::Runtime::VisitRoots at art/src/runtime.cc:839
art::MarkSweep::MarkRoots at art/src/mark_sweep.cc:91
art::Heap::CollectGarbageInternal at art/src/heap.cc:581

art::Heap::AllocateLocked at art/src/heap.cc:465
art::Heap::AllocateLocked at art/src/heap.cc:421
art::Heap::AllocObject at art/src/heap.cc:281
art::Array::Alloc at art/src/object.cc:1252
art::PrimitiveArray<unsigned short>::Alloc at art/src/object.cc:1280
art::String::Alloc at art/src/object.cc:1392
art::String::AllocFromModifiedUtf8 at art/src/object.cc:1380
art::String::AllocFromModifiedUtf8 at art/src/object.cc:1375
art::InternTable::InternStrong at art/src/intern_table.cc:136
art::ClassLinker::AllocDexCache at art/src/class_linker.cc:1042
art::ClassLinker::AppendToBootClassPath at art/src/class_linker.cc:1607
art::ClassLinker::InitFromCompiler at art/src/class_linker.cc:314
art::ClassLinker::CreateFromCompiler at art/src/class_linker.cc:213
art::Runtime::Init at art/src/runtime.cc:666
art::Runtime::Create at art/src/runtime.cc:495
which is the oldest callee.

This will happen to (!USE_LLVM_COMPILER) build as well:
When creating runtime.class_linker_, it should allocate DexCache.
When initializing DexCache, it needs to allocate managed Object.

Then, when running (USE_LLVM_COMPILER) build, allocate without growth failed.
See space->AllocWithoutGrowth() at heap.cc:442.
Then, (USE_LLVM_COMPILER) build will call CollectGarbageInternal, which will call
through Runtime::VisitRoots(). VisitRoots needs class_linker. But at that time,
we are still initializing runtime::class_linker_!

In general, this could be a bug for (!USE_LLVM_COMPILER) build too, when
we need to run GC before class_linker_ is initialized.

Change-Id: Ie1246adf77c7a656827ed3dcd3b9759c5a1ca262
c4c9881e5d22432f3f1a30eeec5aa109dfc08a7d 11-Mar-2012 Shih-wei Liao <sliao@google.com> Fix the LLVM build. Separate out libart-compiler-llvm.so.

After this refactoring:
If (!USE_LLVM_COMPILER), I pass the test-art and boot the phone alright.
The behavior is the same for non-LLVM builds as before. Multi-target
art-compiler shared libraries are generated as before.
If (USE_LLVM_COMPILER), I generate libart-compiler-llvm.so successfully.

Note that the ideal refactoring for the next step will be to always build
art-compiler and LLVM-[arm|mips|x86] shared libraries. Currently, we
haven't removed all the ifdefs for libart.so yet, so this is not ideal yet.
Reason for not-done-yet is that the next step requires discussions.
I can remove all the ifdefs today, but then the (!USE_LLVM_COMPILER)
build will incur extra fields and overhead.

This refactoring allows us to restore the LLVM build situation to be before
the breakage yesterday, so we can continue making forward progress again.

One difficulty in the refactoring is that LLVM is not a method compiler
in default, unlike (!USE_LLVM_COMPILER). LLVM actually compiles an LLVM module
at a time normally. So we need to do more call backs and tell
libart-compiler-llvm.so in each invocation where we are in terms of
OatCompilationUnit.

Another difficulty is that currently our LLVM compiler is not
multithreaded and requires locking, unlike (!USE_LLVM_COMPILER). So more
callbacks are needed. This will be fixed when we fix the multithreading
issue.

Change-Id: I93bce21b6d673254188f2a60b1a7f91b508e497f
5b8b1edc803a85bb3172560826d6a23fb23c3452 24-Feb-2012 Shih-wei Liao <sliao@google.com> Implement Link-loading and pass 62 tests in JniInternalTest.

The passed tests include the 12 originally ARM-only tests. Now it works
on x86 as well if defined(ART_USE_LLVM_COMPILER).

Change-Id: I03092637fa4f0979ca77e0cac06e5d31a867e465
282dab03fd0c80819fa988ef2e81b2bae1c36287 29-Feb-2012 Brian Carlstrom <bdc@google.com> Add Java_MyClass_sbar to list of test symbols

Change-Id: Ib34abfb5c1d2542ff3c3ae9417cd65d174bb6834
06e3ad4a651c2c58dba5e865cd06d2f98462bf1d 07-Feb-2012 Elliott Hughes <enh@google.com> Turn on some basic tsan annotations.

The most useful bit here is that tsan now knows the names of our threads.

Change-Id: I8eef8f31e954ffc373555b392d6d9678d76ead34
32b4b2a30636360756058524f8491ee4cd81c423 01-Feb-2012 Brian Carlstrom <bdc@google.com> Test changes to support tradefed

- move jar files for gtest support to /data/nativetest/art
- tag jar files in /data/art-test as "tests"

Change-Id: I43fe38bee4a47096754ee41c3207a93a3d3ad830
0f09676a8f61809c474e71b4a677093615bfba19 31-Jan-2012 Elliott Hughes <enh@google.com> Fix test-art-target on the Mac.

We only want to avoid using GNU ld options when building host binaries for the
Mac.

Change-Id: I10da9dcbb74ebf68877d16384c962daf40c8d56c
cfede668645d1fd40ff500974188cab5fb49d11c 30-Jan-2012 Brian Carlstrom <bdc@google.com> Fix Mac build

Change-Id: I81ee45431604de5c788dd572faf2e582b477a498
b9cc1ca34adec5e9254f78e9ee40d57348aa2fd0 27-Jan-2012 Brian Carlstrom <bdc@google.com> Remove need for libarttest.so for gtests for tradefed

Change-Id: I18b39b9fc6f0bfa163ef7e7063864696d6958ad0
6717d0d2dfd84e895794aea08ec45bfe60b0a856 25-Jan-2012 Brian Carlstrom <bdc@google.com> Move target gtests to /data/nativetest for tradefed

Change-Id: I937061dc25139fefc2f26efdd908a4efc2a21cf1
659526d5899fbed659b08fedba31c36f7f31724a 21-Jan-2012 Elliott Hughes <enh@google.com> Work around unexplained $(filter-out) trouble.

($filter-out) was leaving us with the empty list. Manually write out the
two choices.

Change-Id: Ib79677164f25b447418d75382b831659d0c7332d
34cf51471a40d55dd63897daf855fec8179b0f7f 21-Jan-2012 Elliott Hughes <enh@google.com> Work around the fact that Linux and Mac OS have opposite requirements for libgtest.

This should let us keep the working Mac build without breaking the Linux build!

Change-Id: I2ec44b7043c8ac9be49f0068d9eb7e18e9c88c7d
e71719d5aae738e61024127f3f75c221c1ddc579 21-Jan-2012 Elliott Hughes <enh@google.com> Fix the Mac build. Really. I have binaries and everything.

Change-Id: I7bb27f6ebbb09162c803764f23520e6f682555c7
29e7ac74a3f9aec192099fec381baadaa55730ad 06-Dec-2011 Brian Carlstrom <bdc@google.com> Moving from libdvm to libart (1 of 5)

Change-Id: I6541802c5f403a4ba4424818084b94bebe71dfca
47a0d5a6f221066c3daf7f67f2122ed9c9cd217c 13-Oct-2011 Brian Carlstrom <bdc@google.com> Move art content to /data

oat tests, gtests, and run-test content to /data/art-test
boot.oat and boot.art to /data/art-cache

Change-Id: I68f9f6798bc4ea0596642ff5624f3e77dec6ccbe
7178e733005d40cb50cbfea4a9355765ccf05ee7 13-Oct-2011 Brian Carlstrom <bdc@google.com> Fix gtest build and execution

Change-Id: I495f6e32873e7ea5ffde25490678b571312e34cd
0796af03edc06d92bb8d631f1c0c23befdae2315 12-Oct-2011 Brian Carlstrom <bdc@google.com> Fix Object::IsSoftReference

Also changed -Xzygote to default boot.art and log arguments

Finally Makefile work:
- separate out test dependencies
- changed zygote with art to work by replacing libdvm with libart[d]
- changed Makefile defines to name and error check their arguments
This was to fix bug in generating ART_TARGET_EXECUTABLES
where we used $(1) when we meant $(3)

Change-Id: I7ef6008eff1fe99b59d151b6793e8fd8ea5304d4
bbf1e41e8d9b2446756e729f30c2501fb3e682c1 18-Sep-2011 Brian Carlstrom <bdc@google.com> Move main method tests from gtests to oat tests

Change-Id: Ifffa4d083488114d6cc14d578ec2be7db8a7553f