summaryrefslogtreecommitdiffstats
path: root/compiler/driver
Commit message (Collapse)AuthorAgeFilesLines
* Fallback to quick in case of soft verification errorsCalin Juravle2015-04-102-0/+11
| | | | | | | | | | | Add a regression test: using uninitialized values triggers a soft verification error and optimizing should not crash. Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report. Bug: 19988704 Change-Id: I2493f737efd3fad72f6b41fb60eff1d3731613fb
* ART: Remove LLVM cruftAndreas Gampe2015-04-072-44/+0
| | | | Change-Id: I133ebed6101bf12a0642ed71e13f332c0c4f14e7
* Merge "Prevent verified method from being deleted by compiler driver."Jeff Hao2015-04-062-2/+7
|\
| * Prevent verified method from being deleted by compiler driver.Jeff Hao2015-04-062-2/+7
| | | | | | | | | | | | The results of it will be needed by future optimizing compiler changes. Change-Id: Ifbdf47e7564906b74193f80a4ba0459eed87c0f7
* | Fix JNI compiler for mips64Goran Jakovljevic2015-04-061-4/+2
|/ | | | | | | | Fix assembly instructions in JNI stub to store the right size. Fix callee-saves in JNI calling convention to reflect return registers. Fix pointer size in mips64 assembler. Change-Id: I4eccd1f56f62fa9119918192ec424e9073398bc7
* Explicitly specify the C libraries that have mallinfo(3).Elliott Hughes2015-04-021-1/+1
| | | | Change-Id: Ib6d22134cb246e30452a7ed9acabbde42b3ef091
* Refactor RelativePatcher out of OatWriter.Vladimir Marko2015-04-022-0/+6
| | | | | | | | | Move the relative patcher classes to compiler/linker/ and compiler/linker/<arch>/ . Refactor them to avoid OatWriter dependency so that they can be unit tested. Add tests for x86 and x86-64. Change-Id: I1b42baa9fc431378e4cce1399bec590c5b5a409f
* Merge "Fixed layout for dex caches in boot image."Vladimir Marko2015-03-312-4/+20
|\
| * Fixed layout for dex caches in boot image.Vladimir Marko2015-03-312-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define a fixed layout for dex cache arrays (type, method, string and field arrays) for dex caches in the boot image. This gives those arrays fixed offsets from the boot image code and allows PC-relative addressing of their elements. Use the PC-relative load on arm64 for relevant instructions, i.e. invoke-static, invoke-direct, const-string, const-class, check-cast and instance-of. This reduces the arm64 boot.oat on Nexus 9 by 1.1MiB. This CL provides the infrastructure and shows on the arm64 the gains that we can achieve by having fixed dex cache arrays' layout. To fully use this for the boot images, we need to implement the PC-relative addressing for other architectures. To achieve similar gains for apps, we need to move the dex cache arrays to a .bss section of the oat file. These changes will be implemented in subsequent CLs. (Also remove some compiler_driver.h dependencies to reduce incremental build times.) Change-Id: Ib1859fa4452d01d983fd92ae22b611f45a85d69b
* | ART: PathClassLoader for compilerAndreas Gampe2015-03-271-3/+2
|/ | | | | | | | | | | | | | | | | | | | Use an actual PathClassLoader when compiling apps, instead of a side structure and cutout. This CL sets up a minimal object 'cluster' that recreates the Java side of a regular ClassLoader such that the Class-Linker will recognize it and use the internal native fast-path. This CL removes the now unnecessary compile-time-classpath and replaces it with a single 'compiling-the-boot-image' flag in the compiler callbacks. Note: This functionality is *only* intended for the compiler, as the objects have not been completely initialized. Bug: 19781184 Change-Id: I7f36af12dd7852d21281110a25c119e8c0669c1d
* Revert "Revert "Inline across dex files.""Nicolas Geoffray2015-03-252-8/+23
| | | | | | This reverts commit 6a816cf624ba56bf2872916d7b65b18fd9a411ef. Change-Id: I36cb524108786dd7996f2aea0443675be1f1b859
* Enable more direct code for JITMathieu Chartier2015-03-201-1/+4
| | | | | | | | Hard to measure the performance impact, but it should be faster. Bug: 17950037 Change-Id: Ib8d216bb3b305dc390b5df7ee92427fd6bd8aab3
* Add verify-at-runtime compiler filterMathieu Chartier2015-03-203-13/+40
| | | | | | | | | | | | | Verifies at runtime only, instead of at compilation time. AOSP HH boot time after clean-oat: ~30s instead of ~35s if enabled. Also helps install time if enabled there. TODO: See if there is any possible deadlocks that can result from this. Bug: 19762303 Change-Id: Ibfba77148da9039e8d7d7497c05486bc044eefe7
* Fix 003-omnibus-opcodes flaky failures with GSS GC.Hiroshi Yamauchi2015-03-191-1/+1
| | | | | | | | Fix a moving GC bug in Class::SetStatus(). Bug: 19828874 Change-Id: I6bef49a7ce964e8a7e316f282aaf1b8544efe76d
* Add more info to who called SuspendAllMathieu Chartier2015-03-131-1/+1
| | | | | | Helps diagnose related jank. Change-Id: I38191cdda723c6f0355d0197c494a3dff2b6653c
* Merge "ART: Check that boot image classes are verified"Andreas Gampe2015-03-121-0/+6
|\
| * ART: Check that boot image classes are verifiedAndreas Gampe2014-11-241-0/+6
| | | | | | | | | | | | | | | | | | In a debug build, check that all classes in the boot image are at least fully verified. This is to avoid issues when we need to bring up a runtime quickly and without verification, e.g., the decryption screen. Change-Id: I819683d8d35b6ffb50c6387a0f8091b9f130980d
* | Trim arenas for JITMathieu Chartier2015-03-092-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moved arena pool into the runtime. Added arena trimming to arena pool. When called, this madvises the used memory. Changed the JIT compiler to trim arenas after compilation. Changed the arena mmap name to dalvik-LinearAlloc. Native PSS before: 80353 kB: Native 80775 kB: Native 78116 kB: Native After: 73357 kB: Native 70181 kB: Native 70306 kB: Native Bug: 17950037 Bug: 17643507 Bug: 19264997 Change-Id: I63e7a898fd6e909c2c677fa57b5917a7b1398930
* | Merge "Compute the right catch location for the debugger."Nicolas Geoffray2015-03-091-4/+4
|\ \
| * | Compute the right catch location for the debugger.Nicolas Geoffray2015-03-091-4/+4
| | | | | | | | | | | | | | | | | | Also remove tls ThrowLocation, it is not needed anymore. Change-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9
* | | Initial support for quick compiler on MIPS64r6.Maja Gagic2015-03-061-2/+4
| | | | | | | | | | | | Change-Id: I6f43027b84e4a98ea320cddb972d9cf39bf7c4f8
* | | ART: Add option to abort dex2oat on hard failureAndreas Gampe2015-03-054-2/+28
| | | | | | | | | | | | | | | | | | | | | Add an option that aborts dex2oat when a hard verifier failure occurs. Bug: 19606409 Change-Id: I53195284e22fe6207274101e85745af763c06271
* | | ART: Fix compile-time-init failAndreas Gampe2015-03-041-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is possible that a class that isn't itself marked as an image class and would be skipped for compile-time-initialization by the compiler driver is initialized when initializing a second class that is an image class. If the second class only depended on the first class during initialization, e.g., to read field values, the compiler driver may discard the class object (not reachable from image classes), but record the oat class status as initialized (as it has been). In that case we miss the initialization when we load the class at runtime. Ensure that all initialized classes with a class initializer are considered image classes and retained. Bug: 19323020 Change-Id: I4e537f328d9a4ea23ed5ff7166d532b8855f7acd
* | | Merge "ART: Add debuggable compiler flag"Andreas Gampe2015-03-042-0/+9
|\ \ \ | |/ / |/| |
| * | ART: Add debuggable compiler flagAndreas Gampe2015-03-042-0/+9
| | | | | | | | | | | | | | | | | | Add a flag to compiler options that shows debuggability. Change-Id: Id17ec72babe2ee88713a0d274eff86508de30666
* | | Merge "Remove ART_SMALL_MODE ifdefs."Jeff Hao2015-03-031-4/+0
|\ \ \ | |/ / |/| |
| * | Remove ART_SMALL_MODE ifdefs.Jeff Hao2015-03-021-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | WITH_ART_SMART_MODE now sets --compiler-filter options instead. Has a corresponding change to /build Bug: 19460766 Change-Id: I295ebbd49caa5341834141f7c2bbf8df830131ed
* | | Merge "Follow-up 128393"Sebastien Hertz2015-03-031-2/+1
|\ \ \
| * | | Follow-up 128393Sebastien Hertz2015-03-031-2/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoids false warning when initializing the exception's class by marking the transaction aborted after throwing the InternalError exception. Also uses VLOG(compiler) to print the warning since it's only useful when investigating ahead-of-time class initialization. Bug: 19202032 Change-Id: I3c53639cbb888086ad345d668d1e5b73c5aaf861
* | | Fix JIT direct call to interpreter bridgeMathieu Chartier2015-02-261-0/+8
|/ / | | | | | | | | | | | | | | | | FormulaEvaluationActions.EvaluateAndApplyChanges on hammerhead eng: Before: 3550ms After: 2540 Bug: 17950037 Change-Id: If7acaea20d4adb5418d00ef13192e2d4c29032af
* | Revert "Revert "Add JIT""Mathieu Chartier2015-02-243-54/+154
| | | | | | | | | | | | | | | | Added missing EntryPointToCodePointer. This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399. Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af
* | Revert "Add JIT"Nicolas Geoffray2015-02-243-154/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sorry, run-test crashes on target: 0-05 12:15:51.633 I/DEBUG (27995): Abort message: 'art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast<uintptr_t>(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc=71e3366b code=0x71e3362d size=ad000000' 10-05 12:15:51.633 I/DEBUG (27995): r0 00000000 r1 0000542b r2 00000006 r3 00000000 10-05 12:15:51.633 I/DEBUG (27995): r4 00000006 r5 b6f9addc r6 00000002 r7 0000010c 10-05 12:15:51.633 I/DEBUG (27995): r8 b63fe1e8 r9 be8e1418 sl b6427400 fp b63fcce0 10-05 12:15:51.633 I/DEBUG (27995): ip 0000542b sp be8e1358 lr b6e9a27b pc b6e9c280 cpsr 40070010 10-05 12:15:51.633 I/DEBUG (27995): Bug: 17950037 This reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4. Change-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3
* | Add JITMathieu Chartier2015-02-233-54/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently disabled by default unless -Xjit is passed in. The proposed JIT is a method JIT which works by utilizing interpreter instrumentation to request compilation of hot methods async during runtime. JIT options: -Xjit / -Xnojit -Xjitcodecachesize:N -Xjitthreshold:integervalue The JIT has a shared copy of a compiler driver which is accessed by worker threads to compile individual methods. Added JIT code cache and data cache, currently sized at 2 MB capacity by default. Most apps will only fill a small fraction of this cache however. Added support to the compiler for compiling interpreter quickened byte codes. Added test target ART_TEST_JIT=TRUE and --jit for run-test. TODO: Clean up code cache. Delete compiled methods after they are added to code cache. Add more optimizations related to runtime checks e.g. direct pointers for invokes. Add method recompilation. Move instrumentation to DexFile to improve performance and reduce memory usage. Bug: 17950037 Change-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca
* | Move arenas into runtimeMathieu Chartier2015-02-191-1/+1
| | | | | | | | | | | | | | | | | | | | Moved arena pool into the runtime. Motivation: Allow GC to use arena allocators, recycle arena pool for linear alloc. Bug: 19264997 Change-Id: I8ddbb6d55ee923a980b28fb656c758c5d7697c2f
* | Revert "Revert "Allow preopted apps to have sharpened calls for non-x86 ↵Jeff Hao2015-02-051-1/+9
| | | | | | | | | | | | | | | | | | architectures."" Should really say it allows pre-linked calls instead of sharpened calls. Bug: 19100762 Change-Id: Ia2045a9eda92255e87a7f6187de18d6370b8f060
* | Fix transaction abortingSebastien Hertz2015-02-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During compilation, a java.lang.InternalError is used to indicate that class initialization failed and the enclosing transaction should be aborted and the changes rolled back. However there is nothing preventing the code executed from a class initializer from catching that exception (like catching Throwable and ignore it). Therefore we may return from the class initializer with no pending exception, even if the transaction was aborted, and not rollback the changes properly. To fix this, we now rely on the new Transaction::aborted_ field to know whether a transaction aborted. When returning from the class initializer without pending exception, we now check wether we aborted the enclosing transaction. If that's the case, we set the status of the class to kStatusError and throw a new java.lang.InternalError with the original abort message. This CL also contains some cleanup: - Renames Transaction::Abort to Transaction::Rollback which is less ambiguous and more reflect what is done. - Moves the code throwing the java.lang.InternalError exception into the Transaction::ThrowInternalError method so we do not duplicate code. Now we may abort transaction more than once (because we may have caught the java.lang.InternalError then execute code causing new transaction abort), we only keep the first abort message to throw the exception. - Updates transaction_test with more cases and more checks. - Bumps oat version to force recompilation with this fix. Bug: 19202032 Change-Id: Iedc6969528a68bbdf3123146e990df4dbc57834b
* | Revert "Allow preopted apps to have sharpened calls for non-x86 architectures."Brian Carlstrom2015-01-311-17/+9
| | | | | | | | This reverts commit 1e3dfff2b73e142c568625a0310c1764658218c4.
* | Merge "Allow preopted apps to have sharpened calls for non-x86 architectures."Jeff Hao2015-01-291-9/+17
|\ \
| * | Allow preopted apps to have sharpened calls for non-x86 architectures.Jeff Hao2015-01-271-9/+17
| | | | | | | | | | | | | | | Bug: 19100762 Change-Id: Idce391a06a85b881ce138756155b36e3ed7319c1
* | | Clean up pass driverMathieu Chartier2015-01-282-37/+91
|/ / | | | | | | | | | | | | | | | | | | | | | | Added pass manager to hold the state which used to be in global variables. Static variables caused issues with Runtime.exit since they are destroyed by the global destructors while threads are still executing. Bug: 17950037 Change-Id: Ie0e4546dc9e48909c8df996a5c135be682d50044
* | ART: More Quick cleanupAndreas Gampe2015-01-261-1/+0
| | | | | | | | | | | | | | | | Remove frontend, move code to QuickCompiler. Fix some includes. Change-Id: Iedd8f339ec76635e48b166e285f7fc571fc948ac
* | Merge "ART: Some Quick cleanup"Andreas Gampe2015-01-262-2/+1
|\ \
| * | ART: Some Quick cleanupAndreas Gampe2015-01-262-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make several fields const in CompilationUnit. May benefit some Mir2Lir code that repeats tests, and in general immutability is good. Remove compiler_internals.h and refactor some other headers to reduce overly broad imports (and thus forced recompiles on changes). Change-Id: I898405907c68923581373b5981d8a85d2e5d185a
* | | Implicit stack overflow checks and null checks are the norm now.Nicolas Geoffray2015-01-231-2/+2
|/ / | | | | | | | | | | | | Make the default to true so that unit tests don't need to use the full CompilerOptions constructor. Change-Id: Ieb52235af73dce2fa03f12932e22ebe2294c805b
* | ART: Curb dex2oat verbosityAndreas Gampe2015-01-202-14/+16
| | | | | | | | | | | | Only print dedupe collisions in a debug build or on verbose logging. Change-Id: I08bd04a453d95b6dba6cf6955b5741cd97daf480
* | Merge "ART: Allow to compile interpret-only mips64 files"Andreas Gampe2015-01-151-1/+2
|\ \
| * | ART: Allow to compile interpret-only mips64 filesAndreas Gampe2015-01-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include enough infrastructure to allow cross-compiling for mips64, interpret-only. This includes the instruction-set-features, frame size info and utils assembler. Also add a disassembler for oatdump, and support in patchoat. Note: the runtime cannot run mips64, yet. Change-Id: Id106581fa76b478984741c62a8a03be0f370d992
* | | Merge "ART: dex2oat flag for HGraphVisualizer dump file"David Brazdil2015-01-152-1/+9
|\ \ \ | |/ / |/| |
| * | ART: dex2oat flag for HGraphVisualizer dump fileDavid Brazdil2015-01-132-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a new '--dump-cfg=<file>' flag to dex2oat which specifies the file that HGraphVisualizer will store its output into. Until now the graph was dumped to 'art.cfg' in the current working directory. To make Checker work with run-test, the output directory needs to be customizable. Change-Id: I4a940f7708b88deea5a0e51d13aed13e52199349
| * | Revert "ART: dex2oat flag for HGraphVisualizer dump file"Andreas Gampe2015-01-132-9/+1
| | | | | | | | | | | | | | | | | | | | | | | | Breaks compilation of tests. This reverts commit 54953dfdcb3bb8896d8af2d20adef84fb740ce77. Change-Id: I868b876c3130be61f1169c5fccdffc0368bee11e