summaryrefslogtreecommitdiff
path: root/compiler/optimizing/dex_cache_array_fixups_arm.cc
AgeCommit message (Collapse)Author
2017-06-07Use ArtMethod* .bss entries for HInvokeStaticOrDirect.Vladimir Marko
Test: m test-art-host-gtest Test: testrunner.py --host Test: testrunner.py --target Test: Nexus 6P boots. Test: Build aosp_mips64-userdebug. Bug: 30627598 Change-Id: I0e54fdd2e91e983d475b7a04d40815ba89ae3d4f
2017-03-16Revert "Revert "ARM: VIXL32: Use VIXL backend by default.""Nicolas Geoffray
bug:35977033 This reverts commit 25275bef429dc6a48b79411e0d0b32207294523b. Change-Id: I440bf8415e2bf550607595499701fb3e7c33b37e
2017-03-14Revert "ARM: VIXL32: Use VIXL backend by default."Nicolas Geoffray
Revert while investigating. bug:35977033 This reverts commit e6316892821287b1d1906b9962eae129fbdc37be. Change-Id: I51e24a6e539072a6d0d470dfe41855a4847f3e96
2017-02-21ARM: VIXL32: Use VIXL backend by default.Scott Wakeling
export ART_USE_OLD_ARM_BACKEND=true to use the previous backend. Test: mma test-art-host && mma test-art-target Change-Id: I4024a4ea15fa8ce1269c0837f6ea001b6c809df5
2017-01-23Allow multiple HArmDexCacheArrayBase.Nicolas Geoffray
So that even graphs with irreducible loops can use it and avoid loading methods through KDexCacheViaMethod. Test: test-art-target Change-Id: I913eece1c134ebe9ea989064e477f694b8895d8f
2017-01-17Merge "Put inlined ArtMethod pointer in stack maps."Nicolas Geoffray
2017-01-16Put inlined ArtMethod pointer in stack maps.Nicolas Geoffray
Currently done for JIT. Can be extended for AOT and inlined boot image methods. Also refactor the lookup of a inlined method at runtime to not rely on the dex cache, but look at the class loader tables. bug: 30933338 test: test-art-host, test-art-target Change-Id: I58bd4d763b82ab8ca3023742835ac388671d1794
2017-01-16Remove HLoadClass::LoadKind::kDexCachePcRelative.Vladimir Marko
Test: m test-art-host Test: m test-art-target-run-test-552-checker-sharpening Bug: 30627598 Change-Id: Ic809b0f3a8ed0bd4dc7ab67aa64866f9cdff9bdb
2016-12-05ARM: VIXL32: Implement Invoke, LoadClass, LoadString dispatch.Artem Serov
Implemented dispatch optimizations for InvokeStaticOrDirect, LoadClass, LoadString (excluding cases that use Literals). Performed a cleanup of VIXL backend. Test: export ART_USE_VIXL_ARM_BACKEND=true && \ mma test-art-host dist && mma test-art-target dist Change-Id: Ib37a6b7e7657196b13caec999d190be747857c1d
2016-10-04Revert "Revert "Store resolved Strings for AOT code in .bss.""Vladimir Marko
Fixed oat_test to keep dex files alive. Fixed mips build. Rewritten the .bss GC root visiting and added write barrier to the artResolveStringFromCode(). Test: build aosp_mips-eng Test: m ART_DEFAULT_GC_TYPE=SS test-art-target-host-gtest-oat_test Test: Run ART test suite on host and Nexus 9. Bug: 20323084 Bug: 30627598 This reverts commit 5f926055cb88089d8ca27243f35a9dfd89d981f0. Change-Id: I07fa2278d82b8eb64964c9a4b66cb93726ccda6b
2016-09-30Revert "Store resolved Strings for AOT code in .bss."Vladimir Marko
There are some issues with oat_test64 on host and aosp_mips-eng. Also reverts "compiler_driver: Fix build." Bug: 20323084 Bug: 30627598 This reverts commit 63dccbbefef3014c99c22748d18befcc7bcb3b41. This reverts commit 04a44135ace10123f059373691594ae0f270a8a4. Change-Id: I568ba3e58cf103987fdd63c8a21521010a9f27c4
2016-09-29Store resolved Strings for AOT code in .bss.Vladimir Marko
And do some related refactorings. Bug: 20323084 Bug: 30627598 Test: Run ART test suite including gcstress on host and Nexus 9. Test: Run ART test suite including gcstress with baker CC on host and Nexus 9. Test: Build aosp_mips64-eng. Change-Id: I1b12c1570fee8e5da490b47f231050142afcbd1e
2016-09-23Clean-up sharpening and compiler driver.Nicolas Geoffray
Remove dependency on compiler driver for sharpening and dex2dex (the methods called on the compiler driver were doing unnecessary work), and remove the now unused methods in compiler driver. Also remove test that is now invalid, as sharpening always succeeds. test: m test-art-host m test-art-target Change-Id: I54e91c6839bd5b0b86182f2f43ba5d2c112ef908
2016-08-26ARM/MIPS: Avoid dead dex cache arrays base for intrinsics.Vladimir Marko
Test: Run ART test suite on host and Nexus 6. Change-Id: Ie2ad70f1e3f125eae5dad53a6384d405e0311505
2016-06-21Improve HLoadClass code generation.Vladimir Marko
For classes in the boot image, use either direct pointers or PC-relative addresses. For other classes, use PC-relative access to the dex cache arrays for AOT and direct address of the type's dex cache slot for JIT. For aosp_flounder-userdebug: - 32-bit boot.oat: -252KiB (-0.3%) - 64-bit boot.oat: -412KiB (-0.4%) - 32-bit dalvik cache total: -392KiB (-0.4%) - 64-bit dalvik-cache total: -2312KiB (-1.0%) (contains more files than the 32-bit dalvik cache) For aosp_flounder-userdebug forced to compile PIC: - 32-bit boot.oat: -124KiB (-0.2%) - 64-bit boot.oat: -420KiB (-0.5%) - 32-bit dalvik cache total: -136KiB (-0.1%) - 64-bit dalvik-cache total: -1136KiB (-0.5%) (contains more files than the 32-bit dalvik cache) Bug: 27950288 Change-Id: I4da991a4b7e53c63c92558b97923d18092acf139
2016-03-29Optimizing: Improve const-string code generation.Vladimir Marko
For strings in the boot image, use either direct pointers or pc-relative addresses. For other strings, use PC-relative access to the dex cache arrays for AOT and direct address of the string's dex cache slot for JIT. For aosp_flounder-userdebug: - 32-bit boot.oat: -692KiB (-0.9%) - 64-bit boot.oat: -948KiB (-1.1%) - 32-bit dalvik cache total: -900KiB (-0.9%) - 64-bit dalvik cache total: -3672KiB (-1.5%) (contains more files than the 32-bit dalvik cache) For aosp_flounder-userdebug forced to compile PIC: - 32-bit boot.oat: -380KiB (-0.5%) - 64-bit boot.oat: -928KiB (-1.0%) - 32-bit dalvik cache total: -468KiB (-0.4%) - 64-bit dalvik cache total: -1928KiB (-0.8%) (contains more files than the 32-bit dalvik cache) Bug: 26884697 Change-Id: Iec7266ce67e6fedc107be78fab2e742a8dab2696
2016-01-14Implement irreducible loop support in optimizing.Nicolas Geoffray
So we don't fallback to the interpreter in the presence of irreducible loops. Implications: - A loop pre-header does not necessarily dominate a loop header. - Non-constant redundant phis will be kept in loop headers, to satisfy our linear scan register allocation algorithm. - while-graph optimizations, such as gvn, licm, lse, and dce need to know when they are dealing with irreducible loops. Change-Id: I2cea8934ce0b40162d215353497c7f77d6c9137e
2015-12-01Move PC-relative addressing bases to a better position.Vladimir Marko
Move the platform-specific HX86ComputeBaseMethodAddress and HArmDexCacheArraysBase to the latest dominator of their uses outside any loop. This brings the base closer to the first use (previously, it was in the entry block) and relieves some pressure on the register allocator while avoiding recalculation of the base in a loop. Change-Id: I231aa81eb5b4de9af2d0167054d06b65eb18a636
2015-12-01Optimizing/ARM: Implement kDexCachePcRelative dispatch.Vladimir Marko
Change-Id: I0fe2da50a30a3f62bec8ea01688dd1fec84b1831