db16f2a0a71503fe046e41fb8d249a1a25e0658e |
|
05-Aug-2016 |
Mathieu Chartier <mathieuc@google.com> |
Card mark holding class instead of declaring class For profiling info, we need to mark the card of the holding class instead of declaring class. This is required for GC correctness since the GC relies on the card table to track cross space references. Test: test-art-host ART_TEST_JIT=true Bug: 30655270 (cherry picked from commit 65975776f807d55c83af6cca1e447f8daa794413) Change-Id: I3de518693d3cac1ad9770eae671db740ebdf1d8d
|
99c959f3868512bb95432cf02a1f0ad3971698bf |
|
30-Jul-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Put the deletion of profiling info under a GC critical section. Otherwise the GC could see dangling pointers. bug:30033802 (cherry picked from commit cf48fa030780c3185f225d558b704c396f7713cc) Change-Id: I2c43e973878f50dc147aa0af81551ecc942a790d
|
e2d066d0337b7c81d47e4806e6025b70d83fcd56 |
|
19-Apr-2016 |
Calin Juravle <calin@google.com> |
ProfileSaver: query profiling_infos instead of the code_map This is the first step in being able to record profiles without jit being active. Bug: 27916886 Change-Id: I2fcbd03560e109e6866ad6d82c79b902a889e620
|
f3f9cf6b65c4bcf9ea44253188d8d910b7cf7e64 |
|
14-Apr-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add weight to compiled/interpreter transitions. Also: - Cleanup logging. - Check ArtMethod status before adding compilation requests. - Don't request osr compilation if we know AddSamples does not come from a back edge. Bug: 27865109 (cherry picked from commit 71cd50fb67fa48667b0ab59aa436a582c04ba43d) Change-Id: Icbe89fe6cc495b113616391a8f257758d34b4b60
|
454b3b6774fe07765273b917ccc97da2eba776ac |
|
07-Apr-2016 |
buzbee <buzbee@google.com> |
ART: Fix race in on-stack replacement The expected sequence of events for on-stack replacement is: 1. Method goes warm, triggering enhanced profiling 2. Method goes hot, triggering method compilation 3. Method goes really hot, triggering an osr method compilation. 4. Interpreter polls for the existence of an osr entry point, and transitons to compiled code if found. We have a race problem if #2 and #3 happen closely together, and the osr method compilation begins before the regular method compilation. In that case, the jit sees that the method is already being compiled (the osr method - but it does not distinguish the two), and discards the normal compilation request. So, the osr version is compiled and the normal version is discarded. In #4, the MaybeDoOnStackReplacement() check assumes that a normal version of the compiled method must exist before doing an on-stack replacement, so it keeps returning false. This is why we were seeing sporadic timeout failures of 570-checker-osr when the mterp fast branch profiling was introduced. The branch profiling performance enhancements greatly reduced the time between #2 and #3, increasing the liklihood of losing the race. Further, the new code clamped hotness to avoid wrap-around. The race existed (and likely occurred) in the previous version, but because hotness counters were allowed to overflow and wrap around you'd eventually hit the threshold a second time and try again - masking the problem. Tip 'o the hat to Serguei Katkov for identifying the problem. A possible solution (taken in this CL) is to differentiate osr compilations from normal method compilations. Bug: 27939339 Change-Id: I71044516b35dc69de9fc2d2a445e33809ac650ed
|
9d07e3d128ccfa0ef7670feadd424a825e447d1d |
|
31-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
Clean up OatQuickMethodHeader after Quick removal. This reduces the size of the pre-header by 8 bytes, reducing oat file size and mmapped .text section size. The memory needed to store a CompiledMethod by dex2oat is also reduced, for 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The aosp_flounder-userdebug 32-bit and 64-bit boot.oat are each about 1.1MiB smaller. Disable the broken StubTest.IMT, b/27991555 . Change-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039
|
933330a192d43d7c7304120999907857a89c2f96 |
|
16-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add more statistics for memory use of the JIT. Collect data for stack maps, profiling info, and compiled code. bug:27520994 Change-Id: Ic87361230c96ce0090027a37d750e948d806c597
|
07e3ca9a46801990d662c48d0fddedc63c4c053c |
|
11-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix thread race when fetching the ProfilingInfo object. Problem is: 1) Compiler fetches the ProfilingInfo of A, it's null. 2) Mutator creates the ProfilingInfo. 3) Compiler notifies it's not using A anymore, calls ProfilingInfo::DecrementInlineUse -> Crash as we expected ProfilingInfo::IncrementUse to be called before. Also update some namings to better reflect what is going on. Change-Id: I55ea4c5d81988131467095e18a0d13a8be9d0ef7
|
b6e20ae17d0881a66c22532e4152ce6779454a92 |
|
07-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Clear inline caches at each full GC. This fixes occasional failures of 141-class-unload. Also fix a bug where clearing inline caches also cleared the dex pc associated with it. bug:26846185 bug:23128949 Change-Id: I77bf1dee229d7764c3cc21440829c7fba7b37001
|
9abb2978f09643227664ab70c0677744b8f6e946 |
|
04-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix very rare bug around JIT code cache collection. The bug is the following: 1) JIT thread: We start a code cache collection. 2) JIT thread: We mark all code that is in the call stack of all threads. 3) Mutator thread: after marking its stack, resumes and does call that pushes JIT compiled code to the call stack. 4) Mutator thread: deoptimizes compiled code of ArtMethod Foo, and therefore updates the entry point of Foo through JitCodeCache::InvalidateCompiledCodeFor. (Note that updating the entrypoint could also be done through instrumentation). 5) JIT thread: Call JitCodeCache::RemoveUnusedAndUnmarkedCode. The method used to remove entries that were not entrypoints. It sees the compiled code for Foo but that is not an entrypoint anymore, so deletes it. 6) Mutator thread problem: it now has compiled code in its call stack that is deleted. If it's only one mutator thread, we only hit a DCHECK when walking the stack, as we are now seeing an invalid pc. The deoptimization will longjmp to the caller of that invalid entry anyway. However, if multiple mutator threads are involved, one thread might invalidate the compiled code while the other is still running it. And we end up deleting code that is in the call stack of a thread, and we will crash. The fix is to mark entrypoints before marking call stacks, so that anything a thread might jump to is marked and kept. bug:27424509 bug:23128949 bug:26846185 Change-Id: I07cd08cedd96b9900629f7535e95404f622104ea
|
bcd94c8ea9bde4e075c25fbdfb3a2ef6858eed7b |
|
03-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Refine statistics around the JIT. - Better namings. - Now also time the code cache collection time. - Random cleanups. bug:23128949 bug:27445008 bug:27442890 Change-Id: I1dd52544bea678af868e7c47907f7a0fc9a146c3
|
af3f5e0136277bd0c01e7e2b7c4797c63ecddca6 |
|
02-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Use the interpreter as a heartbeat for the JIT."" Bug: 27398183 Bug: 23128949 Bug: 26846185 This reverts commit a96917a6983a5abbe973255a3846fda549fb1657. (cherry picked from commit 35122443e5f8606cc5a660ac32745a06aefb341b) Change-Id: Ib02401c76bf28e1aac6bbce01f97ddd0373c1ba5
|
35122443e5f8606cc5a660ac32745a06aefb341b |
|
02-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Use the interpreter as a heartbeat for the JIT."" Bug: 27398183 Bug: 23128949 Bug: 26846185 This reverts commit a96917a6983a5abbe973255a3846fda549fb1657. Change-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347
|
a96917a6983a5abbe973255a3846fda549fb1657 |
|
01-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use the interpreter as a heartbeat for the JIT." Hits a DCHECK testing libcore. art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second->GetProfilingInfo(sizeof(void*)) != nullptr Bug: 27398183 Bug: 23128949 Bug: 26846185 This reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8. Change-Id: I6614a82e775ea71aa16f041313f67546db41eac8
|
1e7da9bd04bdd2664a4196f1d7e285c010f8881f |
|
01-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Do a TryLock when allocating a ProfilingInfo from the interpreter. This removes some thread contentions just for allocating ProfilingInfo. bug:23128949 Change-Id: I9ff7d44c4b0ee272425cf4c6248d3065f67958f3
|
7273a5d045d3ceb3ff011ad65765356b69b155e8 |
|
29-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Use the interpreter as a heartbeat for the JIT. When doing a partial code cache collection, update all entrypoints to interpreter, so that the next full collection will remove code that wasn't executed during that window. bug:27398183 bug:23128949 bug:26846185 Change-Id: I4423f5c4810dac183dc8973078bf218818745e80
|
5b3fbd26a9f8b8c15e8e85db2403b3545536cd87 |
|
25-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Dump the number of OSR compiled code. bug:23128949 (cherry picked from commit fcdd72941810f03460a8efca0c6255439be80c35) Change-Id: I7f6c428511ee7fe346c665be8f02880bcc317cae
|
82de410ad37ea90f43e61fb5dc44ab420a159b54 |
|
23-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Introduce partial code cache collection. It will collect code that is known unused (because it deoptimized), and osr code. bug:26846185 (cherry picked from commit 8d37250f7b9a7839b11488f45a1842b025026f94) Change-Id: Iffe87e356066a3f0bd28cb3df41c17bf2ac9ea0f
|
fcdd72941810f03460a8efca0c6255439be80c35 |
|
25-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Dump the number of OSR compiled code. Change-Id: I20efc80e8556da8220dab92c3a7947f883d48cf8
|
8d37250f7b9a7839b11488f45a1842b025026f94 |
|
23-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Introduce partial code cache collection. It will collect code that is known unused (because it deoptimized), and osr code. bug:26846185 Change-Id: Ic27dfeb944efb2ca464039007ba365c1e0d4a040
|
812e118043357c83800aa07a1133a32c3597c7c0 |
|
23-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Don't allocate mspaces of less than a page. Fixes jit tests in debug mode. bug:26846185 (cherry picked from commit 7ca4b77c98ffdf7a4db26fd9f84b2cfcc274c4aa) Change-Id: I73d357ee47f532c3d7ae65ddacbd5c88170dfe1d
|
7ca4b77c98ffdf7a4db26fd9f84b2cfcc274c4aa |
|
23-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Don't allocate mspaces of less than a page. Fixes jit tests in debug mode. Change-Id: I34565e03683cee063e26975a461d8e75ad4a205f
|
65b83d875e4f9c021bc8380024455c9f1e658b14 |
|
22-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add a new kReservedCapacity to decide when to start GC code. Change-Id: Ib9d0ad9bc86c66ac29975f7f907f79f842342500
|
38ea9bd50debc63ceb77ec1e65036d8e2070ec7d |
|
19-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Track memory usage of code cache. Needed once we start having a strategy based on how full the code cache is. Change-Id: I181ad05e1c216afabf106f91ac54bbf144d7406a
|
b88d59ef4fe611fe47e50a6a19785e03bbd5f93b |
|
17-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Be a bit smarter with JIT code triggering deoptimization. Do not re-use an OSR method that triggered deoptimization. Also add a stack overflow check before doing OSR. bug:27094810 Change-Id: I6ff6a7fb9b3df9b7c0ff37e3610595efa70ad067
|
b331febbab8e916680faba722cc84b66b84218a3 |
|
05-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Implement on-stack replacement for arm/arm64/x86/x86_64."" This reverts commit bd89a5c556324062b7d841843b039392e84cfaf4. Change-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44
|
bd89a5c556324062b7d841843b039392e84cfaf4 |
|
05-Feb-2016 |
David Brazdil <dbrazdil@google.com> |
Revert "Implement on-stack replacement for arm/arm64/x86/x86_64." DCHECK whether loop headers are covered fails. This reverts commit 891bc286963892ed96134ca1adb7822737af9710. Change-Id: I0f9a90630b014b16d20ba1dfba31ce63e6648021
|
891bc286963892ed96134ca1adb7822737af9710 |
|
29-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement on-stack replacement for arm/arm64/x86/x86_64. High-level overview: - osr_method_threshold is used to know when to compile a method in osr mode (-> treat all loops as irreducible). - branch instructions in the compiler query whether they can jump to an osr method. - An osr entry point is found through the stack maps: if a stack map is duplicated in the CodeInfo, it is an osr entry point. Change-Id: Ifb39338cd281e2c7eccce67f4e18d46428be71e4
|
b4eddd21c364c51b6fc5c439cda6958ae255dcd5 |
|
14-Jan-2016 |
Calin Juravle <calin@google.com> |
Add profile support for apps with shared runtime. - extend ProfileSaver to track different dex locations to different profile files. - allow repeated calls to Runtime::RegisterAppInfo() which will register a new pair <profile_file, locations_to_track> with the profile saver. Bug: 26080105 Change-Id: I58c4587d5f462c557411ad7126a00c29cd7db3a6
|
0a52223d9173315aeaca05217b8c792b3088ea7d |
|
19-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Keep track of number of JIT compilations. Change-Id: Ic436bc3f939f6236190ddd840955cb72f76e8f85
|
a25dce9b452ba17ef7cef768926c884177a3025e |
|
12-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Support --perf with jitted code. Change-Id: I76f29d815234e9506efc59d4865780e52b2381a1
|
4d77b6a511659f26fdc711e23825ffa6e7feed7a |
|
01-Dec-2015 |
Calin Juravle <calin@google.com> |
Save profile information in a separate thread. Previously we would save the profiling information only when the app was sent to background. This missed on an important number of updates on the jit code cache and it didn't work for background processes. Bug: 26080105 Change-Id: I84075629870e69b3ed372f00f4806af1e9391e0f
|
66f55237679db90cb0a0a265043a787932b466f8 |
|
08-Dec-2015 |
Calin Juravle <calin@google.com> |
Pass down to the runtime the application code paths. When registering the app with the runtime the framework needs to pass down the list of application code paths. This will be used by JIT to know what profile info to persist. This fixes the reliance on OatFileManager::GetPrimaryOatFile which may produce inconsistent results based on external factors (i.e. class path order or failing to compile the first dex file from the class path) Bug: 26080105 Change-Id: Iadcebd2684fcd48569e8f76ef21bd4d117fedc05
|
aee2156e308f3f346ac4df76ba1d33ee9b11be84 |
|
15-Dec-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add some dumping when SIGQUIT for the JIT. Change-Id: Iad68bdc8a4ab53e810feb3bc8507b7f42e79b1f7
|
e6465bc8a52cfa3995b4072810cdb7ab397a7793 |
|
15-Dec-2015 |
Dimitry Ivanov <dimitry@google.com> |
Remove references to dlmalloc specific functions Remove references to internal libc dlmalloc_* functions so that we can hide them for lp64 Change-Id: I13977bea63d900e1819052140e3bd6bc1f2fc759
|
73be1e8f8609708f6624bb297c9628de44fd8b6f |
|
17-Sep-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Inline monomorphic calls. Change-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f
|
31f2c155975c5794d481df03eb0947cb48d2c6b5 |
|
23-Oct-2015 |
Calin Juravle <calin@google.com> |
Save jit profiling info to file. Currently saves only the hot method references and omits the inline cache. Change-Id: I79e91f855f6b52dc19a9a86662604f2eee16613c
|
0a3be1620a3560253cfa789cb9819013293c5654 |
|
18-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Increase code cache after 1 full collection. Also add a max capacity option. Change-Id: Icd442b72e9be0c6b091b588b4c4473c69b7cde10
|
a5891e81a2fb833307cf7c7e7267070dc0223dc8 |
|
06-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix interaction between JIT and instrumentation. - The JIT needs to go through the instrumentation to update entry points. - The instrumention needs to know if a method got JITted to know if needs to deoptimize. bug:25438583 Change-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1
|
d28b969c273ab777ca9b147b87fcef671b4f695f |
|
04-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Code cleanup to avoid CompilerDriver abstractions in JIT. Avoids allocating a CompiledMethod. Change-Id: I35b4aa0d7c74daba68e827a01e71c300fce3b3bf
|
26705e2b1245b65989a0341b24c5dbf2658d4bb6 |
|
28-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add support for collection ProfilingInfo objects. Change-Id: I8bb6069530253a7372acdf2b5aee71e1de644822
|
1dad3f68b7f5a4a4cb2b281413357adc2309a8fd |
|
23-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Support garbage collection of JITted code. Change-Id: I9afc544460ae4fb31149644b6196ac7f5182c784
|
0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4 |
|
15-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Use DlMallocSpace for the JIT code cache. - Also tidy up some code in the JIT compiler. - And mprotect code space to be writable only when allocating. Change-Id: I46ea5c029aec489f2af63452de31db3736aebc20
|
5550ca8bcc742b109d77e62f3a0877c667d894d3 |
|
21-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Record profiling information before Jitting. - 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
|
90443477f9a0061581c420775ce3b7eeae7468bc |
|
17-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move to newer clang annotations Also enable -Wthread-safety-negative. Changes: Switch to capabilities and negative capabilities. Future work: Use capabilities to implement uninterruptible annotations to work with AssertNoThreadSuspension. Bug: 20072211 Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|
414369a2e3f23e1408fc1cbf4f623014bd95cb8f |
|
04-May-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add some more DISALLOW_COPY_AND_ASSIGN May help prevent bugs maybe. (cherry picked from commit 3130cdf29eb203be0c38d1107a65d920ec39c106) Change-Id: Ie73d469dfcd078492ecb3aa28682b42707221202
|
3130cdf29eb203be0c38d1107a65d920ec39c106 |
|
04-May-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add some more DISALLOW_COPY_AND_ASSIGN May help prevent bugs maybe. Change-Id: Ie73d469dfcd078492ecb3aa28682b42707221202
|
2cebb24bfc3247d3e9be138a3350106737455918 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Replace NULL with nullptr Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
|
bce416f7f22f1e73250f020be1178a1c7db72330 |
|
23-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add code cache test Bug: 17950037 Change-Id: I13913667517db5bb9b7224f0639c2b39cf3a1973
|
e5f13e57ff8fa36342beb33830b3ec5942a61cca |
|
24-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Add JIT"" Added missing EntryPointToCodePointer. This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399. Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af
|
a5ca888d715cd0c6c421313211caa1928be3e399 |
|
24-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Add JIT" 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
|
2535abe7d1fcdd0e6aca782b1f1932a703ed50a4 |
|
17-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add JIT 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
|