summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Cleanup thread access in StackVisitor"Sebastien Hertz2015-09-156-21/+31
|\
| * Cleanup thread access in StackVisitorSebastien Hertz2015-09-156-21/+31
| | | | | | | | | | | | | | | | | | Adds method StackVisitor::GetThread to give access to the visited Thread* so we no longer need to copy that pointer in subclasses. Also adds a few missing const and DISALLOW_COPY_AND_ASSIGN. Change-Id: I57649ee7742ef4ef1e01447ac2fbb66f977b22eb
* | Merge "ART: Fix 004-ReferenceMap run test"David Brazdil2015-09-155-9/+21
|\ \
| * | ART: Fix 004-ReferenceMap run testDavid Brazdil2015-09-155-9/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a new option to ArtMethod::ToNativeQuickPc to select the order of iteration over stack maps. The method is only used by the runtime to find native_pc of catch blocks, but also by the 004-ReferenceMap test which uses it to find native_pc of a safepoint. Change-Id: Idb2b34aabf1ac7249c30a00806af7d63d7e682dd
* | | Merge "Use $ for f registers to please clang."Nicolas Geoffray2015-09-151-6/+6
|\ \ \ | |/ / |/| |
| * | Use $ for f registers to please clang.Nicolas Geoffray2015-09-151-6/+6
|/ / | | | | | | Change-Id: I723ce53e344ee98334a556fbe231d8588fa7d1b6
* | Merge "Revert "Revert "ART: Register allocation and runtime support for ↵David Brazdil2015-09-1526-205/+1352
|\ \ | | | | | | | | | try/catch"""
| * | Revert "Revert "ART: Register allocation and runtime support for try/catch""David Brazdil2015-09-1526-205/+1352
| | | | | | | | | | | | | | | | | | | | | | | | | | | The original CL triggered b/24084144 which has been fixed by Ib72e12a018437c404e82f7ad414554c66a4c6f8c. This reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362. Change-Id: Id8980436172457d0fcb276349c4405f7c4110a55
* | | Merge "ART: Fix bug in reference type propagation"David Brazdil2015-09-157-4/+131
|\ \ \
| * | | ART: Fix bug in reference type propagationDavid Brazdil2015-09-157-4/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference type propagation assumed that type is exact if the class is final. This does not hold for arrays which are always final and the component type needs to be considered. Bug: 24084144 Change-Id: Ib72e12a018437c404e82f7ad414554c66a4c6f8c
* | | | Merge "Temporarly disable SSA creation in try/catch/debuggable."Nicolas Geoffray2015-09-151-0/+6
|\ \ \ \ | |/ / / |/| | |
| * | | Temporarly disable SSA creation in try/catch/debuggable.Nicolas Geoffray2015-09-151-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is to enable optimizations when the debuggable flag is set. bug:24054676 Change-Id: I34eef2481ae44ad3550e04ec6f796d421d03adc0
* | | | Merge "Revert "Revert "Re-enable Clang's -Wpessimizing-move"""Pirama Arumuga Nainar2015-09-141-10/+0
|\ \ \ \
| * | | | Revert "Revert "Re-enable Clang's -Wpessimizing-move""Pirama Arumuga Nainar2015-09-141-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 4a37953377092ade93c15c72ad49cde4adaabd94. Change-Id: Iae3bab9b104c1391070b329ef6a6a73b836189c8
* | | | | Merge "Revert "ART: Register allocation and runtime support for try/catch""David Brazdil2015-09-1426-1352/+205
|\ \ \ \ \ | | |_|/ / | |/| | |
| * | | | Revert "ART: Register allocation and runtime support for try/catch"David Brazdil2015-09-1426-1352/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Breaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate. This reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb. Change-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f
* | | | | Merge "Convert ART benchmarks into caliper benchmarks"Mathieu Chartier2015-09-1416-273/+289
|\ \ \ \ \
| * | | | | Convert ART benchmarks into caliper benchmarksMathieu Chartier2015-09-1416-273/+289
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the ART benchmarks into the benchmarks directory and make them caliper friendly. To run you need to build libartbenchmark.so and sync it then use vogar --benchmark. Bug: 24055147 Change-Id: Idc9caf8dc8022190d737840ba0eb9e356f9872cb
* | | | | | Merge "ART: Fix mac build"Andreas Gampe2015-09-141-0/+1
|\ \ \ \ \ \
| * | | | | | ART: Fix mac buildAndreas Gampe2015-09-141-0/+1
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parameter is unused in the mac build. We now build the test libraries in checkbuild, which exposed the issue. Change-Id: Ib246d87927740e2e65a63111bdf0cc4f261b4c1c
* | | | | | Merge "ART: Build tests in checkbuild"Andreas Gampe2015-09-141-1/+1
|\ \ \ \ \ \
| * | | | | | ART: Build tests in checkbuildAndreas Gampe2015-09-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should build the tests when a checkbuild is run. That is the standard configuration to test that everything compiles. Bug: 24059936 Change-Id: I5a72d9a1b7accdd3e0dcb14edaeccde7ec126d44
* | | | | | | Merge "ART: Register allocation and runtime support for try/catch"David Brazdil2015-09-1426-205/+1352
|\ \ \ \ \ \ \ | | |_|/ / / / | |/| | | | |
| * | | | | | ART: Register allocation and runtime support for try/catchDavid Brazdil2015-09-1426-205/+1352
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch completes a series of CLs that add support for try/catch in the Optimizing compiler. With it, Optimizing can compile all methods containing try/catch, provided they don't contain catch loops. Future work will focus on improving performance of the generated code. SsaLivenessAnalysis was updated to propagate liveness information of instructions live at catch blocks, and to keep location information on instructions which may be caught by catch phis. RegisterAllocator was extended to spill values used after catch, and to allocate spill slots for catch phis. Catch phis generated for the same vreg share a spill slot as the raw value must be the same. Location builders and slow paths were updated to reflect the fact that throwing an exception may not lead to escaping the method. Instruction code generators are forbidden from using of implicit null checks in try blocks as live registers need to be saved before handing over to the runtime. CodeGenerator emits a stack map for each catch block, storing locations of catch phis. CodeInfo and StackMapStream recognize this new type of stack map and store them separate from other stack maps to avoid dex_pc conflicts. After having found the target catch block to deliver an exception to, QuickExceptionHandler looks up the dex register maps at the throwing instruction and the catch block and copies the values over to their respective locations. The runtime-support approach was selected because it allows for the best performance in the normal control-flow path, since no propagation of catch phi values is necessary until the exception is thrown. In addition, it also greatly simplifies the register allocation phase. ConstantHoisting was removed from LICMTest because it instantiated (now abstract) HConstant and was bogus anyway (constants are always in the entry block). Change-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e
* | | | | | Merge "Remove unnecessary std::move from test_dex_file_builder"Pirama Arumuga Nainar2015-09-141-1/+1
|\ \ \ \ \ \ | |/ / / / / |/| | | | |
| * | | | | Remove unnecessary std::move from test_dex_file_builderPirama Arumuga Nainar2015-09-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This stops Clang from warning about -Wpessimizing-move. Change-Id: Id40acf1c398c615faf6486ef700df6975a5f013f
* | | | | | Merge "Fix the DequeuePendingReference crash."Hiroshi Yamauchi2015-09-142-12/+34
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | |
| * | | | | Fix the DequeuePendingReference crash.Hiroshi Yamauchi2015-09-142-12/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In DequeuePendingReference, acknowledge a black/white Reference object in the queue if its referent was marked right after it's enqueued. Bug: 12687968 Bug: 23896462 Change-Id: I33c802e04e1688a54a70ad3935628e3853c46e44
* | | | | | Merge "Revert "Re-enable Clang's -Wpessimizing-move""Pirama Arumuga Nainar2015-09-141-0/+10
|\ \ \ \ \ \ | | |_|_|/ / | |/| | | |
| * | | | | Revert "Re-enable Clang's -Wpessimizing-move"Pirama Arumuga Nainar2015-09-141-0/+10
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 8f5d2d84efb90e7220dd42c7aa104dbc19c52f4e. Change-Id: I24fa681c0639bc4bf7af1b821f620780cd7a474d
* | | | | Merge "Re-enable Clang's -Wpessimizing-move"Pirama Arumuga Nainar2015-09-141-10/+0
|\| | | |
| * | | | Re-enable Clang's -Wpessimizing-movePirama Arumuga Nainar2015-09-121-10/+0
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | The warning on variant_map.h is fixed by https://android-review.googlesource.com/#/c/170745/. Change-Id: I802dd26538637ff276b7c24c1f5bca280b0bc428
* | | | Merge "Be very patient with the emulator."Nicolas Geoffray2015-09-141-4/+16
|\ \ \ \
| * | | | Be very patient with the emulator.Nicolas Geoffray2015-09-111-4/+16
| | | | | | | | | | | | | | | | | | | | Change-Id: I9f1f3a5d825fea85115b3331da317eefd3dbe17b
* | | | | Merge "Optimizing: Tag basic block allocations with their source."Vladimir Marko2015-09-1427-331/+302
|\ \ \ \ \
| * | | | | Optimizing: Tag basic block allocations with their source.Vladimir Marko2015-09-0827-331/+302
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace GrowableArray with ArenaVector in HBasicBlock and, to track the source of allocations, assign one new and two Quick's arena allocation types to these vectors. Rename kArenaAllocSuccessor to kArenaAllocSuccessors. Bug: 23736311 Change-Id: Ib52e51698890675bde61f007fe6039338cf1a025
* | | | | | Merge "ART: Add some utilities for working with containers."Vladimir Marko2015-09-148-20/+61
|\| | | | | | |_|/ / / |/| | | |
| * | | | ART: Add some utilities for working with containers.Vladimir Marko2015-09-088-20/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add utility functions for searching, removing and replacing existing values in a container, to be used with std::vector (including the ArenaVector alias) and other containers. Also move UniqueCPtr<> and MakeUnique() to base/stl_utils.h and clean up related includes. Change-Id: I1e61762df91c046866591bda167d42bf8b67a692
* | | | | Merge "Remove unnecessary std::move from variant_map.h"Pirama Arumuga Nainar2015-09-131-2/+1
|\ \ \ \ \ | |_|_|_|/ |/| | | |
| * | | | Remove unnecessary std::move from variant_map.hPirama Arumuga Nainar2015-09-121-2/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | This triggers Clang's pessimizing-move warning. Change-Id: Icb33643f28d1d159a87a17235c4d210209199dac
* | | | Merge "Add and use ScopedSuspendAll"Mathieu Chartier2015-09-1114-293/+271
|\ \ \ \
| * | | | Add and use ScopedSuspendAllMathieu Chartier2015-09-1114-293/+271
| | |_|/ | |/| | | | | | | | | | | | | | | | | | Usage replaces most SuspendAll and ResumeAll calls. Change-Id: I355683a5365876242cea85a656dcb58455f7a294
* | | | Merge "Add benchmark for ScopedPrimitiveArray"Mathieu Chartier2015-09-116-1/+177
|\ \ \ \ | |/ / / |/| | |
| * | | Add benchmark for ScopedPrimitiveArrayMathieu Chartier2015-09-116-1/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | TODO: Make this into a caliper benchmark. Bug: 19664826 Change-Id: If1484a68cc62603f1d216b1662ca55cceac1d619
* | | | Merge "ART: Fix Quick-style LR vs PC core spill mask bug"Andreas Gampe2015-09-113-21/+22
|\ \ \ \
| * | | | ART: Fix Quick-style LR vs PC core spill mask bugAndreas Gampe2015-09-103-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's always been a bug that Quick marked PC as spilled instead of LR. The root cause was a mutation of the spill mask at frame exit, when LR is being restored into PC to return. A local should have been used to keep the actual spill mask safe and sound. This has only worked because nobody ever uses LR, even after long jumps for exception dispatch. However, single-frame deoptimization needs this to work, and I'd rather fix this than being forced to have machine-specific fixups. Also fix in optimizing, and bump the oat version. Change-Id: Ib032a533408bf464097fc96dcbfc5b6a68bf59a1
* | | | | Merge "Support deoptimization on exception"Sebastien Hertz2015-09-117-18/+124
|\ \ \ \ \
| * | | | | Support deoptimization on exceptionSebastien Hertz2015-09-107-18/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows to deoptimize when an exception is being thrown. We only deoptimize if an executable frame (starting from the catch handler) needs to be executed with the interpreter. Before executing deoptimized frames, the exception is restored. The interpreter starts by handling this exception at the point of the throwing instruction. Bug: 23714835 Change-Id: I0c5f7d4b257644acf12210aae8e5b6bb0f4af1f7
* | | | | | Merge "Record profiling information before Jitting."Nicolas Geoffray2015-09-1122-86/+478
|\ \ \ \ \ \
| * | | | | | Record profiling information before Jitting.Nicolas Geoffray2015-09-1122-86/+478
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add a new instrumentation kind to record dynamic invokes. - Use the JNI entry point field to store the profiling data. - Record seen receivers for every dynamic invoke. Change-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c