summaryrefslogtreecommitdiffstats
path: root/compiler/dex/dex_to_dex_compiler.cc
Commit message (Collapse)AuthorAgeFilesLines
* Move mirror::ArtMethod to nativeMathieu Chartier2015-06-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Replace NULL with nullptrMathieu Chartier2015-04-221-1/+1
| | | | | | | Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
* Move ArtField to nativeMathieu Chartier2015-04-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
* Change RETURN_VOID_BARRIER to RETURN_VOID_NO_BARRIERMathieu Chartier2015-03-191-12/+11
| | | | | | | | We want to default to having a barrier for the case where we don't dex to dex. Bug: 19762303 Change-Id: I60348d89eaf0b9e1e480298afcecbb5f52e8661b
* Fix incompatible class change error for JIT stress modeMathieu Chartier2015-03-111-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | There was a problem with miranda methods, when we would dequicken to one of these, it wouldn't resolve as virtual during the method lowering resolve. The solution is to try resolving as interface if we fail to resolve as virtual. Fixed a bug in dequickening where unreachable register lines with quick invokes would cause CHECK failuers. In this case we punt to the interpreter (test 435-try-*). Added test regression test. Example failure: java.lang.IncompatibleClassChangeError: The method 'void Main$TheInterface.m()' was expected to be of type virtual but instead was found to be of type interface (declaration of 'java.lang.reflect.ArtMethod' appears in out/host/linux-x86/framework/core-libart-hostdex.jar) at Main.DoStuff(Main.java:37) at Main.main(Main.java:44) Bug: 17950037 Change-Id: I39c32cc8849bf02032a4f61a7ce57462b7fcac75
* ART: Templatize IsInt & IsUintAndreas Gampe2015-02-181-2/+2
| | | | | | Ensure that things are used correctly. Change-Id: I76f082b32dcee28bbfb4c519daa401ac595873b3
* Add missing iget quick for bool, byte, char, shortMathieu Chartier2014-12-101-0/+16
| | | | | | Bug: 17791557 Bug: 17671806 Change-Id: Ifac4fbfba6c3a3f97131e85914b24756fb7f9722
* Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.Ian Rogers2014-11-031-4/+5
| | | | | | | | | | | Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
* Reduced memory usage of primitive fields smaller than 4-bytesFred Shih2014-08-251-3/+13
| | | | | | | | | | Reduced memory used by byte and boolean fields from 4 bytes down to a single byte and shorts and chars down to two bytes. Fields are now arranged as Reference followed by decreasing component sizes, with fields shuffled forward as needed. Bug: 8135266 Change-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752
* Cache field lowering info in mir_graph.Vladimir Marko2014-03-031-4/+4
| | | | Change-Id: I9f9d76e3ae6c31e88bdf3f59820d31a625da020f
* Add VerfiedMethod to DexCompilationUnit.Vladimir Marko2014-01-281-5/+5
| | | | | | Avoid some mutex locking and map lookups. Change-Id: I8e0486af77e38dcd065569572a6b985eb57f4f63
* Remove unused method in DEX-to-DEX.Sebastien Hertz2013-12-111-6/+0
| | | | Change-Id: Ice5f91b45a0ad85576475a613193f143fd76ad9f
* Use class def index from java.lang.Class.Ian Rogers2013-09-191-1/+1
| | | | | | | | | | | | Bug: 10244719 Depends on: https://googleplex-android-review.git.corp.google.com/362363 This removes the computation of the dex file index, when necessary this is computed by searching the dex file. Its only necessary in dalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the latter not showing up significantly in profiling with this change. Change-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c
* Move disassembler out of runtime.Ian Rogers2013-09-091-0/+1
| | | | | Bug: 9877500. Change-Id: Ica6d9f5ecfd20c86e5230a2213827bd78cd29a29
* Refactor CompilerDriver::Compute..FieldInfoIan Rogers2013-09-061-2/+2
| | | | | | | Don't use non-const reference arguments. Move ins before outs. Change-Id: I7b251156388d8f07513b3da62ebfd29e5fd9ff76
* Refactor CompilerDriver::ComputeInvokeInfoIan Rogers2013-09-061-4/+5
| | | | | | | Don't use non-const reference arguments. Move ins before outs. Change-Id: I4a7b8099abe91ea60f93a56077f4989303fa4876
* Merge "Disable devirtualization detection in DEX-to-DEX compiler." into ↵Sebastien Hertz2013-09-061-2/+3
|\ | | | | | | dalvik-dev
| * Disable devirtualization detection in DEX-to-DEX compiler.Sebastien Hertz2013-09-061-2/+3
| | | | | | | | | | | | | | | | | | This CL allows the DEX-to-DEX compiler to disable devirtualization detection. This allows to quicken invoke-virtual/range instructions that used to be eligible for devirtualization. Bug: 10632943 Change-Id: I6c9f4d3249cf42b47f004be5825b3186fa83501e
* | Make DexFiles opened from files readonly by default, but writable during dex2oatBrian Carlstrom2013-08-291-53/+0
|/ | | | | Bug: 9618388 Change-Id: I83f2e16ee8446a79a94a84971146d807bb0c9ee0
* Refactor java.lang.reflect implementationBrian Carlstrom2013-08-131-2/+2
| | | | | | | | | | | Cherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1. Move to ArtMethod/Field instead of AbstractMethod/Field and have java.lang.reflect APIs delegate to ArtMethod/ArtField. Bug: 10014286. Change-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7
* Don't add barriers to clinit methods.Ian Rogers2013-07-311-2/+2
| | | | Change-Id: I13e6c008feb8c19e452d6e2f88b2bbbcac997de5
* Adds a DEX-to-DEX compilation level.Sebastien Hertz2013-07-311-13/+22
| | | | | | | | This CL adds a DEX-to-DEX compilation level which allows the DEX-to-DEX compiler to ensure correctness on classes with soft-failed verification. Bug: 9307738 Change-Id: If051336bf81370bca55872c8c75ccd573d8ca391
* Fix cpplint whitespace/comments issuesBrian Carlstrom2013-07-261-2/+2
| | | | Change-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496
* am 9b7085a4: Fix cpplint readability/braces issuesBrian Carlstrom2013-07-191-2/+2
|\ | | | | | | | | * commit '9b7085a4e7c40e7fa01932ea1647a4a33ac1c585': Fix cpplint readability/braces issues
| * Fix cpplint readability/braces issuesBrian Carlstrom2013-07-181-2/+2
| | | | | | | | Change-Id: I56b88956510077b0e13aad4caee8898313fab55b
* | Support check-cast elision in DEX-to-DEX compiler.Sebastien Hertz2013-07-161-27/+58
|/ | | | | | | | Bug: 9648428 Replaces safe check-cast by 2 consecutive nop instructions. Change-Id: I2cd99c629a6a00a6e0effc853c3439bc92683d6d
* Create separate Android.mk for main build targetsBrian Carlstrom2013-07-121-0/+302
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