summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm.cc
AgeCommit message (Collapse)Author
2014-10-09Enable -Wimplicit-fallthrough. Ian Rogers
Falling through switch cases on a clang build must now annotate the fallthrough with the FALLTHROUGH_INTENDED macro. Bug: 17731372 Change-Id: I836451cd5f96b01d1ababdbf9eef677fe8fa8324
2014-09-29ART: Fix some -Wpedantic errors Andreas Gampe
Remove extra semicolons. Dollar signs in C++ identifiers are an extension. Named variadic macros are an extension. Binary literals are a C++14 feature. Enum re-declarations are not allowed. Overflow. Change-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a
2014-09-16Avoid printing absolute addresses in oatdump Brian Carlstrom
- Added printing of OatClass offsets. - Added printing of OatMethod offsets. - Added bounds checks for code size size, code size, mapping table, gc map, vmap table. - Added sanity check of 100k for code size. - Added partial disassembly of questionable code. - Added --no-disassemble to disable disassembly. - Added --no-dump:vmap to disable vmap dumping. - Reordered OatMethod info to be in file order. Bug: 15567083 (cherry picked from commit 34fa79ece5b3a1940d412cd94dbdcc4225aae72f) Change-Id: I2c368f3b81af53b735149a866f3e491c9ac33fb8
2014-07-28Implement array get and array put in optimizing. Nicolas Geoffray
Also fix a couple of assembler/disassembler issues. Change-Id: I705c8572988c1a9c4df3172b304678529636d5f6
2014-06-24Add some more instruction support to optimizing compiler. Dave Allison
This adds a few more DEX instructions to the optimizing compiler's builder (constants, moves, if_xx, etc). Also: * Changes the codegen for IF_XX instructions to use a condition rather than comparing a value against 0. * Fixes some instructions in the ARM disassembler. * Fixes PushList and PopList in the thumb2 assembler. * Switches the assembler for the optimizing compiler to thumb2 rather than ARM. Change-Id: Iaafcd02243ccc5b03a054ef7a15285b84c06740f
2014-05-01Fix a few 64-bit compilation of 32-bit code issues. Ian Rogers
Bug: 13423943 Change-Id: I939389413af0a68c0d95b23cd598b7c42afa4383
2014-04-09Revert "Revert "Revert "Use trampolines for calls to helpers""" Dave Allison
This reverts commit f9487c039efb4112616d438593a2ab02792e0304. Change-Id: Id48a4aae4ecce73db468587967968a3f7618b700
2014-04-09Revert "Revert "Use trampolines for calls to helpers"" Dave Allison
This reverts commit 081f73e888b3c246cf7635db37b7f1105cf1a2ff. Change-Id: Ibd777f8ce73cf8ed6c4cb81d50bf6437ac28cb61 Conflicts: compiler/dex/quick/mir_to_lir.h
2014-04-07Revert "Use trampolines for calls to helpers" Dave Allison
This reverts commit 754ddad084ccb610d0cf486f6131bdc69bae5bc6. Change-Id: Icd979adee1d8d781b40a5e75daf3719444cb72e8
2014-04-04Use trampolines for calls to helpers Dave Allison
This is an ARM specific optimization to the compiler that uses trampoline islands to make calls to runtime helper functions. The intention is to reduce the size of the generated code (by 2 bytes per call) without affecting performance. By default this is on when generating an OAT file. It is off when compiling to memory. To switch this off in dex2oat, use the command line option: --no-helper-trampolines Enhances disassembler to print the trampoline entry on the BL instruction like this: 0xb6a850c0: f7ffff9e bl -196 (0xb6a85000) ; pTestSuspend Bug: 12607709 Change-Id: I9202bdb7cf21252ad807bd48701f1f6ce8e3d0fe
2014-04-03Disassemble Thumb2 shifts and more VFP instructions. Vladimir Marko
Disassemble Thumb2 instructions LSL, LSR, ASR, ROR and VFP instructions VABS, VADD, VSUB, VMOV, VMUL, VNMUL, VDIV. Clean up disassembly of VCMP, VCMPE, VNEG and VSQRT. These could have been erroneously used for other insns (VSQRT for VMOV was encountered) and one VSQRT branch was unreachable. Remove duplicate VMOV opcodes from compiler. Change-Id: I160a1e3e4b6eabb6a5101ce348ffd49c0573257d
2014-04-01Allow mixing of thread offsets between 32 and 64bit architectures. Ian Rogers
Begin a more full implementation x86-64 REX prefixes. Doesn't implement 64bit thread offset support for the JNI compiler. Change-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147
2014-03-25Fix imm5 and shift_type detection Dmitriy Ivanov
Bug: 13628315 Change-Id: I8ff044cc18721b7ea50c75c796a2fb63a1e189f9
2014-03-14x86-64 disassembler support. Ian Rogers
Change-Id: I0ae39ae1ffdae2500ff368354f9e4702445176f0
2014-03-13Avoid bus error from reading unaligned 64-bit literal Brian Carlstrom
Change-Id: I5932f130e6a8d31e09ef615e8544ff0e1073ede9
2014-03-10ARM: Remove duplicated instructions; add vcvt, vmla, vmls disassembler. Zheng Xu
Remove kThumb2VcvtID in the assembler which was duplicated. Add vcvt, vmla, vmls in the disassembler. Change-Id: I14cc39375c922c9917274d8dcfcb515e888fdf26
2014-02-06Object model changes to support 64bit. Ian Rogers
Modify mirror objects so that references between them use an ObjectReference value type rather than an Object* so that functionality to compress larger references can be captured in the ObjectRefererence implementation. ObjectReferences are 32bit and all other aspects of object layout remain as they are currently. Expand fields in objects holding pointers so they can hold 64bit pointers. Its expected the size of these will come down by improving where we hold compiler meta-data. Stub out x86_64 architecture specific runtime implementation. Modify OutputStream so that reads and writes are of unsigned quantities. Make the use of portable or quick code more explicit. Templatize AtomicInteger to support more than just int32_t as a type. Add missing, and fix issues relating to, missing annotalysis information on the mutator lock. Refactor and share implementations for array copy between System and uses elsewhere in the runtime. Fix numerous 64bit build issues. Change-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822
2014-01-08Inline codegen for long-to-double on ARM. Ian Rogers
Change-Id: I4fc443c1b942a2231d680fc2c7a1530c86104584
2013-12-20Tidy up memory barriers. Ian Rogers
Change-Id: I937ea93e6df1835ecfe2d4bb7d84c24fe7fc097b
2013-11-26Intrinsic Unsafe.CompareAndSwapLong() for ARM. Vladimir Marko
(cherry picked from cb53fcd79b1a5ce608208ec454b5c19f64aaba37) Change-Id: Iadd3cc8b4ed390670463b80f8efd579ce6ece226
2013-11-19Clean up kOpCmp on ARM. Vladimir Marko
kThumb2CmnRI8M is now used. Change-Id: I300299258ed99d86c300dee45c904c360dd44638
2013-11-15Fix Thumb2 ldrd/strd disassembly. Vladimir Marko
Change-Id: Ie75aeab5b970640e90e567621ac45ce1a3a7c377
2013-11-07Disassemble Thumb2 vstm/vldm/vstr/vldr/vpush/vpop/vmov/vmrs. Vladimir Marko
Not all versions of vmov are disassembled. Change-Id: I876199f7536d2a9429106deab821016fe8972469
2013-11-05Support hardware divide instruction Dave Allison
Bug: 11299025 Uses sdiv for division and a combo of sdiv, mul and sub for modulus. Only does this on processors that are capable of the sdiv instruction, as determined by the build system. Also provides a command line arg --instruction-set-features= to allow cross compilation. Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults it to something obtained from the target architecture. Provides a GetInstructionSetFeatures() function on CompilerDriver that can be queried for various features. The only feature supported right now is hasDivideInstruction(). Also adds a few more instructions to the ARM disassembler b/11535253 is an addition to this CL to be done later. Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
2013-10-28Fix whitespace-sensitive build. Vladimir Marko
Change-Id: I82c6c49e253275543831dbaf288cb63d759ea20a
2013-10-28Add byte swap instructions for ARM and x86. Vladimir Marko
Change-Id: I03fdd61ffc811ae521141f532b3e04dda566c77d
2013-10-04Implement thumb expansion of immediates. Ian Rogers
Change-Id: Ie50c17f82cbf97a16b58350b378914030cc0499f
2013-09-09Move disassembler out of runtime. Ian Rogers
Bug: 9877500. Change-Id: Ica6d9f5ecfd20c86e5230a2213827bd78cd29a29