aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Revert "Revert "Initialize callTgt variable""" into kitkatDavor Bertovic2014-04-011-1/+1
|\
| * Revert "Revert "Initialize callTgt variable""Davor Bertovic2014-04-011-1/+1
| | | | | | | | | | | | This reverts commit 5d1ce32a68a9d4e8eaef82ce7e5362d583604a24. Change-Id: Ibc369bee8d9ab982bbf527f74ad0998255125f3e
* | Merge "Revert "Initialize callTgt variable"" into kitkatDavor Bertovic2014-03-301-1/+1
|\|
| * Revert "Initialize callTgt variable"Davor Bertovic2014-03-301-1/+1
| | | | | | | | | | | | This reverts commit 2ad51eaac2ce87c15593269ad842763bd4dc4da9. Change-Id: I8163b2af3e5082b184f495e1e30e29193d4fde7a
* | dalvik: add placeholder for future changesWei Wang2014-03-281-1/+2
|/ | | | | | add placeholder for future changes Change-Id: I09dd704a60857de71cafd7e6b64ee750c5cb95b1
* Initialize callTgt variableBernhard Rosenkränzer2014-03-281-1/+1
| | | | | | | | | | | | This silcences a clang build failure: dalvik/vm/compiler/codegen/arm/armv7-a-neon/../CodegenDriver.cpp:904:41: error: variable 'callTgt' is uninitialized when used here [-Werror,-Wuninitialized] LOAD_FUNC_ADDR(cUnit, r2, (int) callTgt); ^~~~~~~ Change-Id: Ic5b3bb492f19b842743bf7d6214c89301ff524e7 Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
* vm: Enable fast multiply on perf builds tooSteve Kondik2014-03-241-7/+0
| | | | Change-Id: I74d152ea9cfe5b15daa9a8353ca27d8afa7474d2
* Dalvik: DMB Optimisations for TracingJITDavid Butcher2013-12-181-7/+7
| | | | | | | | Makes DMB domain ISH or ISHST instead of the implicit System. ISH (Inner Shareable) should be sufficient for all cores/clusters, but is not sufficient for GPU or other memory-mapped peripherals Change-Id: Id159228daba97bc3692d2eb1ee2786bae2ee34a7
* Merge branch 'kk_2.7_rb1.9' of git://codeaurora.org/platform/dalvik into cafSteve Kondik2013-11-111-61/+331
|\ | | | | | | Change-Id: I885fab2470352d0a625c9946d0d5c9111486b713
| * dalvik: dalvik device extension pack.Xin Qi2013-10-311-61/+322
| | | | | | | | | | | | | | | | | | Add support for customer device extension Change-Id: I0402a630ba212d1c5e81cda110f61210f7b60384 (cherry picked from commit 11499df326462bfe25890a35c6abbf019ff7784e) (cherry picked from commit e03b8f8da9cf4eef64cedf39ce9ca90d26ce5124) (cherry picked from commit fb360be406f35b9591f12c61936657f03cc5880f)
* | Merge tag 'android-4.4_r1' into cm-11.0Ricardo Cerqueira2013-11-011-4/+1
|\| | | | | | | Android 4.4 Release 1.0
| * JIT: Use rsb and shift in easy multiply.Anders O Nilsson2013-06-141-4/+1
| | | | | | | | | | | | | | | | | | | | | | For easy multiplication using reverse subtract (when lit is 2^n-1) use the barrel shifter for rsb. This improves arithmetic performance for code executing in Dalvik. E.g String.hashCode. Change-Id: Ifb086dcec344b30fd3e392ac21d508b43e820cdc Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
| * JIT: Allow use of cbz/cbnz for conditional branch gen.Anders O Nilsson2013-04-181-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | Optimize conditional branch generation when comparing with zero for ARM JIT. When possible use cbz/cbnz instead of cmp+beq/cmp+bne. This improves performance for usecases involving code execution in Dalvik. Change-Id: I8f7c44c87eb73d4da00a48fd86220a62cb0515f5 Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
* | Revert "Move verification of class access flags to libdex"Ricardo Cerqueira2013-11-011-1/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit aa897b06230453519c4ec636f229c72ac0015897. Revert "Reject dex files that attempt to use unspecified class access flags" This reverts commit 2f824d3e4835479409724ea02d0a23114cd4ff81. Revert "If dalvik wants ASCII casing, it needs to ask for it." This reverts commit d91250308fc4c423d11955174c21566fa19df07c. Revert "JIT: Combine add with shift and offset for array load & store." This reverts commit a9ecd84e5f5423a1ba6bbb2bb9256b0dc382de44. Revert "JIT: Use rsb and shift in easy multiply." This reverts commit 25b94295a57290623e34882e7fd86ea10928a54e. Revert "Excessive JNI: Dump HPROF dump." This reverts commit 8d30a7402d48c4ffe2bf28ede78c6b3b52b15304. Revert "dalvik/vm: Dalvik startup with a low memory footprint" This reverts commit 15726c81059b74bf2352db29a3decfc4ea9c1428.
* | JIT: Combine add with shift and offset for array load & store.Anders O Nilsson2013-07-241-143/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optimize long and double array load / store for ARM JIT. Array load / store performs a logical shift left and add, replace it with add capable of performing shift in the same instruction. Array load / store performs an add instead of using offset for vldr/vstr. Replace the add and vldr/vstr with a vldr/vstr that is capable of handling offset. This improves performance for usecases involving long and double array code execution in Dalvik. E.g WindowOrientation. Change-Id: I90220c349ab936cdba1987139ccdf4dc31d7bbb0 Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
* | JIT: Hoist loop load operations above loop.Henrik Smiding2013-07-241-1/+2
| | | | | | | | | | | | | | | | | | | | Hoists Dalvik frame load operations outside of loops, when possible. This improves performance in most loops, and is noticable in many applications. Change-Id: Ibe42b509b50a13f19758fd923f31d703e33a51c6 Signed-off-by: Henrik Smiding <henrik.smiding@stericsson.com> Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
* | JIT: Use rsb and shift in easy multiply.Anders O Nilsson2013-07-241-4/+1
| | | | | | | | | | | | | | | | | | | | | | For easy multiplication using reverse subtract (when lit is 2^n-1) use the barrel shifter for rsb. This improves arithmetic performance for code executing in Dalvik. E.g String.hashCode. Change-Id: Ifb086dcec344b30fd3e392ac21d508b43e820cdc Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
* | JIT: Allow use of cbz/cbnz for conditional branch gen.Anders O Nilsson2013-07-241-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | Optimize conditional branch generation when comparing with zero for ARM JIT. When possible use cbz/cbnz instead of cmp+beq/cmp+bne. This improves performance for usecases involving code execution in Dalvik. Change-Id: Iffd455d9cbb3ef0b1f87caafdae1b72ba3f0d2fc Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com>
* | Add support for ARMv6J and ARMv6-VFP processor targetArne Coucheron2013-07-241-1/+1
|/ | | | Merged in code from gingerbread branch with updated code in ics.
* Optimize those StrictMath routines that are identical to Math routines.Elliott Hughes2012-09-141-6/+16
| | | | | | | We can just use the existing Math intinsics. Bug: 7146208 Change-Id: I9e78d33cf65a5dcc5a7c0133e67bd9c3c1e43f23
* Avoid sign extension in packed-switch.Elliott Hughes2012-07-171-7/+7
| | | | | | | | | | | | | | This code (at least in the ARM version) is trying to assign to r0 and r1 from C by returning a 64-bit result. The mistaken use of signed integers for pointers can lead to sign extension if the JIT code cache is at a sufficiently high address. Bug: 6799823 Bug: 6703991 (cherry-pick from 2d0c1c2dbe44458ebb199c47ce1047f266db5349.) Change-Id: I79e72228b60e195272d11899ac69bb4a76b7402f
* Missing zero-checks in JIT compilerMattias Petersson2012-07-101-1/+9
| | | | | | | | Zero-checks were not generated by the JIT compiler for some instructions. This caused crashes instead of the expected ArithmeticException. Change-Id: Ic8041741a7cccc1bd6b8c3c0723ba55a55af856b
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-081-19/+19
| | | | | | | | | See https://android-git.corp.google.com/g/#/c/157220 Also fix an occurrence of LOGW missed in an earlier change. Bug: 5449033 Change-Id: I2e3b23839e6dcd09015d6402280e9300c75e3406
* Remove unsupported experimental opcodes.Elliott Hughes2012-01-051-117/+29
| | | | | | | External developers were starting to try to get themselves into trouble with this stuff... Change-Id: I2b03bfeaa8c98b6a994bc7924fc8dcf4e4d4f6cb
* Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGESteve Block2012-01-031-2/+2
| | | | | | | See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: Ic663376d1ad6a6cb14bf81405ad9afd247cf2f60
* Fix memory barriers (Issue 3338450)buzbee2011-09-271-1/+7
| | | | | | Add extra memory barrier on volatile stores. Change-Id: Id4a4750cdfc910eda2f0b44ead0af2a569b5735e
* Use std::string rather than malloc/free for saneDirName.Elliott Hughes2011-06-071-1/+1
| | | | | | Also use std::vector instead of the cutils/array cruft. Change-Id: I273147335cafbac5d336955f53b0b29d015f0589
* Prefer printf format "%#x" over "0x%x".Dan Bornstein2011-05-261-4/+4
| | | | | | I exist to serve. Change-Id: I8e2880b20eefd466da8515d5b6b0c5cb75d56169
* Further conservation of newlines.Dan Bornstein2011-05-261-5/+5
| | | | | | Friends don't let friends end LOG() strings with newlines. Change-Id: I5a18c766c90c4ab5f03caa6acd601d34d91beb00
* am cf4a20cf: Interpreter/Debugger fix #4479968buzbee2011-05-251-1/+1
|\ | | | | | | | | * commit 'cf4a20cf0cbc53f03a5b16c7152bbb29907f7108': Interpreter/Debugger fix #4479968
| * Interpreter/Debugger fix #4479968buzbee2011-05-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This one was tricky to track down. The underlying problem arose with the consolidation of InterpState with Thread. Rather than having a state structure for each instance of the interpreter, we moved to a model that had a single thread-local struct shared by all interpreter instances running on that thread. A portion of interpreter state can't be shared - and thus was saved and restored on nested invocations of the interpreter. The bug here was that the storage for method return values was not included in the state that needed save/retore. In normal operation, it doesn't need to be saved - that storage isn't live across an invoke that could trigger a nested interpreter activation. However, when debugging, the debugger itself may hijack threads and create new interpreter instances for its own purposed - and there is a small window in which live retval can be trashed. The fix is simply to move retval into the InterpSave struct. Change-Id: Ib621824b799c5caa16fdfa8f5689a181159059df
* | am 313d430d: Another single-stepping fix in JIT self-verification mode.Ben Cheng2011-05-111-2/+1
|\| | | | | | | | | * commit '313d430d5b3b96b45370ccddee52a6d88a799f35': Another single-stepping fix in JIT self-verification mode.
| * Another single-stepping fix in JIT self-verification mode.Ben Cheng2011-05-111-2/+1
| | | | | | | | | | | | | | | | | | | | The counted single stepping check should be based on the kSubModeCountedStep submode instead. Also since the NPC value is cleared when exceptions are thrown, we can single-step instructions that can throw as well. Change-Id: Idbc1307ae0956016ef76186aebc6e3b89b119d9d
* | Establish a subclass relationships among the field types.Carl Shapiro2011-05-061-5/+5
|/ | | | Change-Id: Id349b359489bb6b1bbb4ab78d29d85c0e6b33799
* Establish a subclass relationship between ArrayObject and Object.Carl Shapiro2011-05-031-10/+10
| | | | Change-Id: I9f9fe52bd4ceebb6dde48251a89190ba6bb00ce4
* Local optimization fixes for diverences found by self verification.Ben Cheng2011-04-231-0/+2
| | | | | | | | | | | | | | | | | | 1) Only optimize each block once. Strictly speaking this is not a correctness issue however it triggers the subsequent problem. 2) Ignore dead instructions. 1: ldr r2, [r5, #8] 2: ldr r3, [r5, #8](nop) 3: str r3, [r5, #4] 4: movs r3, r2 When using instruction 1 to initiate redundant ld/st eliminations, if instruction 2 (which is already dead) is not ignored, it will be turned into a "mov r3, r2" and that will clobber r3 used by the str. Change-Id: I6b9a88d3688889d917b90f4b8f55278df1701c6a
* am 9f54185b: Set "needFallThroughBranch" flag during block split.Ben Cheng2011-04-221-0/+9
| | | | | * commit '9f54185b4186def90351903bb2e97090e06ab559': Set "needFallThroughBranch" flag during block split.
* Move the compiler into C++.Carl Shapiro2011-04-191-0/+4811
Change-Id: Idffbdb02c29e2be03a75f5a0a664603f2299504a