summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm.cc
AgeCommit message (Collapse)Author
2020-09-03Improve disasembly of BL to thread entrypoint trampoline.Vladimir Marko
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
2018-09-20Revert^2 "ART: Refactor typedef to using"Andreas Gampe
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
2018-09-20Revert "ART: Refactor typedef to using"Andreas Gampe
This reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd. Reason for revert: Attributes on the wrong side. Bug: 32619234 Change-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b
2018-09-19ART: Refactor typedef to usingAndreas Gampe
Add clang-tidy's modernize-use-using. Bug: 32619234 Test: WITH_TIDY=1 mmma art Change-Id: If50d37b5152af4270784e3cde7951292a9e19033
2018-08-28Use 'final' and 'override' specifiers directly in ART.Roland Levillain
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
2017-12-18ARM: Fix breaking changes from recent VIXL update.Artem Serov
Test: test-art-target, test-art-host Change-Id: I31de1e2075226542b9919f6ca054fd5bf237e690
2017-07-24ART: Include cleanupAndreas Gampe
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
2016-11-25ARM: VIXL32: Fix breaking changes from recent VIXL update.Scott Wakeling
Test: m test-art-host Test: m test-art-target Change-Id: I02a608bf51b889a2bfff43272a3619582bf9cf20
2016-09-27ARM64: Update the disassembler after the VIXL update.Alexandre Rames
Test: top-level `make -j40` `mma -j40 test-art-target-test-optimizing dist` `mma -j40 test-art-host dist` Change-Id: I173976998dc8e3e466ca8502c3fdc447f9019cee
2016-09-16ARM: VIXL32: Implement a disassembler.Anton Kirilov
Test: m test-art-host Test: m test-art-target Test: manual comparison with the previous oatdump output Change-Id: I21ae26406200e455b8b036f53d585ea0b1bd11be
2016-09-08ART: Detach libart-disassembler from libartAndreas Gampe
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
2016-08-19ART: Add thread offset printing hook to disassemblerAndreas Gampe
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
2016-08-02Merge "ARM: Embed 0.0 in VCMP."Vladimir Marko
2016-08-02ARM: Embed 0.0 in VCMP.Vladimir Marko
Test: Run ART test suite on Nexus 5. Change-Id: I5cbbd98c4d64a4d9213e27adcae929ead5099a39
2016-08-01ART: Convert pointer size to enumAndreas Gampe
Move away from size_t to dedicated enum (class). Bug: 30373134 Bug: 30419309 Test: m test-art-host Change-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269
2016-07-12ARM: Shorter fast-path for read barrier field load.Vladimir Marko
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
2016-06-28ARM assembler support for VCNT and VPADDL.xueliang.zhong
Test: Gtest assembler_thumb2_test. Change-Id: I8a0e47da746e1c67650cb68196a9f661deed7383
2016-05-12Fix oatdump crash on arm64/arm code.Aart Bik
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
2016-04-21Thumb2: Fix disassembly of the b.w offset.Vladimir Marko
Bug: 28311085 Change-Id: If729af888be65e1f24362b9c4ed79f124446024d
2016-04-06Thumb2: Show the immediate in ROR (immediate) disassembly.Vladimir Marko
Now disassembled as "mov ., ., ror #imm5". Change-Id: Iad201662fd6aa3f87b95c7293fafe030c4bbdbf3
2016-02-10ART/Thumb2: Disassemble SBFX/UBFX.Vladimir Marko
Change-Id: I856206de81f41959f68de0653db021903dd1a210
2015-08-17ART: Some header cleaning around bit-utilsAndreas Gampe
Try to remove dependencies where they are not necessary. Change-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e
2015-08-12Remove unnecessary `explicit` qualifiers on constructors.Roland Levillain
Change-Id: Id12e392ad50f66a6e2251a68662b7959315dc567
2015-08-04ARM/ARM64: Implement numberOfLeadingZeros intrinsic.Scott Wakeling
Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b
2015-01-06Improve Thumb disassembler for LDR/STR/PUSH/POP/BKPT.Vladimir Marko
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
2014-12-11ARM: Combine multiply accumulate operations.Ningsheng Jian
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
2014-11-04ART: More warningsAndreas Gampe
Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general, and -Wunused-but-set-parameter for GCC builds. Change-Id: I81bbdd762213444673c65d85edae594a523836e5
2014-10-22C++11 related clean-up of DISALLOW_..Ian Rogers
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
2014-10-22Tidy up logging.Ian Rogers
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
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 errorsAndreas 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 oatdumpBrian 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 helpersDave 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 detectionDmitriy 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 literalBrian 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