summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm.cc
Commit message (Collapse)AuthorAgeFilesLines
* Improve disasembly of BL to thread entrypoint trampoline.Vladimir Marko2020-09-031-0/+16
| | | | | | Test: Manual, search for "\bbl\b" in `m dump-oat` output and oatdump of an individual oat file for arm and arm64. Change-Id: Idb6d8d1a21b2aa8c77e5b72f24faf7a4e655294c
* Revert^2 "ART: Refactor typedef to using"Andreas Gampe2018-09-201-6/+6
| | | | | | | | | | | This reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1. Reason for revert: fixed attributes. Bug: 32619234 Test: m test-art-host Test: m test-art-target-gtest-unstarted_runtime_test Change-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20
* Revert "ART: Refactor typedef to using"Andreas Gampe2018-09-201-6/+6
| | | | | | | | | This reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd. Reason for revert: Attributes on the wrong side. Bug: 32619234 Change-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b
* ART: Refactor typedef to usingAndreas Gampe2018-09-191-6/+6
| | | | | | | | Add clang-tidy's modernize-use-using. Bug: 32619234 Test: WITH_TIDY=1 mmma art Change-Id: If50d37b5152af4270784e3cde7951292a9e19033
* Use 'final' and 'override' specifiers directly in ART.Roland Levillain2018-08-281-7/+7
| | | | | | | | | | | | | | | Remove all uses of macros 'FINAL' and 'OVERRIDE' and replace them with 'final' and 'override' specifiers. Remove all definitions of these macros as well, which were located in these files: - libartbase/base/macros.h - test/913-heaps/heaps.cc - test/ti-agent/ti_macros.h ART is now using C++14; the 'final' and 'override' specifiers have been introduced in C++11. Test: mmma art Change-Id: I256c7758155a71a2940ef2574925a44076feeebf
* ARM: Fix breaking changes from recent VIXL update.Artem Serov2017-12-181-6/+20
| | | | | | Test: test-art-target, test-art-host Change-Id: I31de1e2075226542b9919f6ca054fd5bf237e690
* ART: Include cleanupAndreas Gampe2017-07-241-1/+1
| | | | | | | | | | | | | | | | | | | Let clang-format reorder the header includes. Derived with: * .clang-format: BasedOnStyle: Google IncludeIsMainRegex: '(_test|-inl)?$' * Steps: find . -name '*.cc' -o -name '*.h' | xargs sed -i.bak -e 's/^#include/ #include/' ; git commit -a -m 'ART: Include cleanup' git-clang-format -style=file HEAD^ manual inspection git commit -a --amend Test: mmma art Change-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02
* ARM: VIXL32: Fix breaking changes from recent VIXL update.Scott Wakeling2016-11-251-22/+13
| | | | | | Test: m test-art-host Test: m test-art-target Change-Id: I02a608bf51b889a2bfff43272a3619582bf9cf20
* ARM64: Update the disassembler after the VIXL update.Alexandre Rames2016-09-271-2/+2
| | | | | | | | Test: top-level `make -j40` `mma -j40 test-art-target-test-optimizing dist` `mma -j40 test-art-host dist` Change-Id: I173976998dc8e3e466ca8502c3fdc447f9019cee
* ARM: VIXL32: Implement a disassembler.Anton Kirilov2016-09-161-1882/+176
| | | | | | | Test: m test-art-host Test: m test-art-target Test: manual comparison with the previous oatdump output Change-Id: I21ae26406200e455b8b036f53d585ea0b1bd11be
* ART: Detach libart-disassembler from libartAndreas Gampe2016-09-081-2/+5
| | | | | | | | | | | | Some more intrusive changes than I would have liked, as long as ART logging is different from libbase logging. Fix up some includes. Bug: 15436106 Bug: 31338270 Test: m test-art-host Change-Id: I9fbe4b85b2d74e079a4981f3aec9af63b163a461
* ART: Add thread offset printing hook to disassemblerAndreas Gampe2016-08-191-3/+2
| | | | | | | | To prepare separation of disassembler from libart, add a function hook to the disassembler options for thread offset name printing. Bug: 15436106 Change-Id: I9e9b7e565ae923952c64026f675ac527b560f51b
* Merge "ARM: Embed 0.0 in VCMP."Vladimir Marko2016-08-021-8/+2
|\
| * ARM: Embed 0.0 in VCMP.Vladimir Marko2016-08-021-8/+2
| | | | | | | | | | Test: Run ART test suite on Nexus 5. Change-Id: I5cbbd98c4d64a4d9213e27adcae929ead5099a39
* | ART: Convert pointer size to enumAndreas Gampe2016-08-011-2/+2
|/ | | | | | | | | Move away from size_t to dedicated enum (class). Bug: 30373134 Bug: 30419309 Test: m test-art-host Change-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269
* ARM: Shorter fast-path for read barrier field load.Vladimir Marko2016-07-121-84/+74
| | | | | | | | | | Reduces the aosp_hammerhead-userdebug boot.oat by 2.2MiB, i.e. ~2.2%, in the ART_USE_READ_BARRIER=true configuration. Test: Tested with ART_USE_READ_BARRIER=true on Nexus 5. Bug: 29966877 Bug: 12687968 Change-Id: I4454150003e12a1aa7f0cf451627dc1ee9a495ae
* ARM assembler support for VCNT and VPADDL.xueliang.zhong2016-06-281-0/+19
| | | | | Test: Gtest assembler_thumb2_test. Change-Id: I8a0e47da746e1c67650cb68196a9f661deed7383
* Fix oatdump crash on arm64/arm code.Aart Bik2016-05-121-3/+23
| | | | | | | | | | | | | | | | | Also adds 16 bit literal information. Rationale: When "run-away" instructions are disassembled, the literal addresses may go out of range, causing oatdump to crash. This CL guards memory access against the full memory range allocated to assembly instructions and data (it is possible but not really necessary to refine this a bit). Out of range arguments are now displayed as (?) to denote the issue, which is a lot nicer than crashing. BUG=28670871 Change-Id: I51e9b6a6a99162546fe31059f14278e8980451c2
* Thumb2: Fix disassembly of the b.w offset.Vladimir Marko2016-04-211-3/+3
| | | | | Bug: 28311085 Change-Id: If729af888be65e1f24362b9c4ed79f124446024d
* Thumb2: Show the immediate in ROR (immediate) disassembly.Vladimir Marko2016-04-061-1/+1
| | | | | | Now disassembled as "mov ., ., ror #imm5". Change-Id: Iad201662fd6aa3f87b95c7293fafe030c4bbdbf3
* ART/Thumb2: Disassemble SBFX/UBFX.Vladimir Marko2016-02-101-6/+17
| | | | Change-Id: I856206de81f41959f68de0653db021903dd1a210
* ART: Some header cleaning around bit-utilsAndreas Gampe2015-08-171-0/+1
| | | | | | Try to remove dependencies where they are not necessary. Change-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e
* Remove unnecessary `explicit` qualifiers on constructors.Roland Levillain2015-08-121-3/+2
| | | | Change-Id: Id12e392ad50f66a6e2251a68662b7959315dc567
* ARM/ARM64: Implement numberOfLeadingZeros intrinsic.Scott Wakeling2015-08-041-0/+14
| | | | Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b
* Improve Thumb disassembler for LDR/STR/PUSH/POP/BKPT.Vladimir Marko2015-01-061-232/+222
| | | | | | | | | | | | | Disassemble 16-bit Thumb PUSH, POP, BKPT. Clean up 32-bit load/store to handle all cases (including previously unrecognized indexed load/store) in one place; this also fixes LDRSH erroneously disassembled as LDRSB. Recognize more UNDEFINED instructions and other minor cleanup. Change-Id: Ifdd177745b70e3f774cc0469deb81191b035f51b
* ARM: Combine multiply accumulate operations.Ningsheng Jian2014-12-111-1/+1
| | | | | | | Try to combine integer multiply and add(sub) into a MAC operation. For AArch64, also try to combine long type multiply and add(sub). Change-Id: Ic85812e941eb5a66abc355cab81a4dd16de1b66e
* ART: More warningsAndreas Gampe2014-11-041-44/+5
| | | | | | | Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general, and -Wunused-but-set-parameter for GCC builds. Change-Id: I81bbdd762213444673c65d85edae594a523836e5
* C++11 related clean-up of DISALLOW_..Ian Rogers2014-10-221-1/+1
| | | | | | | | | | | | | | | | | | Move DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations with no definitions this prompts better warning messages so deal with these by correcting the code. Add a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object. Make X86 assembly operand types ValueObjects to fix compilation errors. Tidy the use of iostream and ostream. Avoid making cutils a dependency via mutex-inl.h for tests that link against libart. Push tracing dependencies into appropriate files and mutex.cc. x86 32-bit host symbols size is increased for libarttest, avoid copying this in run-test 115 by using symlinks and remove this test's higher than normal ulimit. Fix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it returns NULL when the heap is under construction by Runtime. Change-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b
* Tidy up logging.Ian Rogers2014-10-221-0/+1
| | | | | | | | | | | | | | | | | Move gVerboseMethods to CompilerOptions. Now "--verbose-methods=" option to dex2oat rather than runtime argument "-verbose-methods:". Move ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc except for a forward declaration. Remove ConstDumpable as Dump methods are all const (and make this so if not currently true). Make LogSeverity an enum and improve compile time assertions and type checking. Remove log_severity.h that's only used in logging.h. With system headers gone from logging.h, go add to .cc files missing system header includes. Also, make operator new in ValueObject private for compile time instantiation checking. Change-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641
* Enable -Wimplicit-fallthrough.Ian Rogers2014-10-091-5/+6
| | | | | | | | Falling through switch cases on a clang build must now annotate the fallthrough with the FALLTHROUGH_INTENDED macro. Bug: 17731372 Change-Id: I836451cd5f96b01d1ababdbf9eef677fe8fa8324
* ART: Fix some -Wpedantic errorsAndreas Gampe2014-09-291-9/+9
| | | | | | | | | | | | | | | | 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
* Avoid printing absolute addresses in oatdumpBrian Carlstrom2014-09-161-4/+10
| | | | | | | | | | | | | | | | | - 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
* Implement array get and array put in optimizing.Nicolas Geoffray2014-07-281-8/+40
| | | | | | Also fix a couple of assembler/disassembler issues. Change-Id: I705c8572988c1a9c4df3172b304678529636d5f6
* Add some more instruction support to optimizing compiler.Dave Allison2014-06-241-15/+54
| | | | | | | | | | | | | | | 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
* Fix a few 64-bit compilation of 32-bit code issues.Ian Rogers2014-05-011-3/+3
| | | | | | Bug: 13423943 Change-Id: I939389413af0a68c0d95b23cd598b7c42afa4383
* Revert "Revert "Revert "Use trampolines for calls to helpers"""Dave Allison2014-04-091-25/+5
| | | | | | This reverts commit f9487c039efb4112616d438593a2ab02792e0304. Change-Id: Id48a4aae4ecce73db468587967968a3f7618b700
* Revert "Revert "Use trampolines for calls to helpers""Dave Allison2014-04-091-5/+25
| | | | | | | | | This reverts commit 081f73e888b3c246cf7635db37b7f1105cf1a2ff. Change-Id: Ibd777f8ce73cf8ed6c4cb81d50bf6437ac28cb61 Conflicts: compiler/dex/quick/mir_to_lir.h
* Revert "Use trampolines for calls to helpers"Dave Allison2014-04-071-25/+5
| | | | | | This reverts commit 754ddad084ccb610d0cf486f6131bdc69bae5bc6. Change-Id: Icd979adee1d8d781b40a5e75daf3719444cb72e8
* Use trampolines for calls to helpersDave Allison2014-04-041-5/+25
| | | | | | | | | | | | | | | | | | | | | | 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
* Disassemble Thumb2 shifts and more VFP instructions.Vladimir Marko2014-04-031-117/+192
| | | | | | | | | | | | | 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
* Allow mixing of thread offsets between 32 and 64bit architectures.Ian Rogers2014-04-011-4/+4
| | | | | | | Begin a more full implementation x86-64 REX prefixes. Doesn't implement 64bit thread offset support for the JNI compiler. Change-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147
* Fix imm5 and shift_type detectionDmitriy Ivanov2014-03-251-3/+3
| | | | | Bug: 13628315 Change-Id: I8ff044cc18721b7ea50c75c796a2fb63a1e189f9
* x86-64 disassembler support.Ian Rogers2014-03-141-3/+0
| | | | Change-Id: I0ae39ae1ffdae2500ff368354f9e4702445176f0
* Avoid bus error from reading unaligned 64-bit literalBrian Carlstrom2014-03-131-1/+2
| | | | Change-Id: I5932f130e6a8d31e09ef615e8544ff0e1073ede9
* ARM: Remove duplicated instructions; add vcvt, vmla, vmls disassembler.Zheng Xu2014-03-101-0/+86
| | | | | | | Remove kThumb2VcvtID in the assembler which was duplicated. Add vcvt, vmla, vmls in the disassembler. Change-Id: I14cc39375c922c9917274d8dcfcb515e888fdf26
* Object model changes to support 64bit.Ian Rogers2014-02-061-1/+3
| | | | | | | | | | | | | | | | | | | | | | | 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
* Inline codegen for long-to-double on ARM.Ian Rogers2014-01-081-1/+6
| | | | Change-Id: I4fc443c1b942a2231d680fc2c7a1530c86104584
* Tidy up memory barriers.Ian Rogers2013-12-201-3/+16
| | | | Change-Id: I937ea93e6df1835ecfe2d4bb7d84c24fe7fc097b
* Intrinsic Unsafe.CompareAndSwapLong() for ARM.Vladimir Marko2013-11-261-15/+32
| | | | | | (cherry picked from cb53fcd79b1a5ce608208ec454b5c19f64aaba37) Change-Id: Iadd3cc8b4ed390670463b80f8efd579ce6ece226
* Clean up kOpCmp on ARM.Vladimir Marko2013-11-191-1/+1
| | | | | | kThumb2CmnRI8M is now used. Change-Id: I300299258ed99d86c300dee45c904c360dd44638