summaryrefslogtreecommitdiffstats
path: root/compiler/compilers.cc
Commit message (Collapse)AuthorAgeFilesLines
* Remove file added after bad cherry pick.Nicolas Geoffray2014-11-191-159/+0
| | | | | | Cherr-pick being: https://android-review.googlesource.com/#/c/115165. Change-Id: If86ce4472fd1260477817cc380cd52755924094f
* Change 64 bit ArtMethod fields to be pointer sizedMathieu Chartier2014-11-181-0/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | Changed the 64 bit entrypoint and gc map fields in ArtMethod to be pointer sized. This saves a large amount of memory on 32 bit systems. Reduces ArtMethod size by 16 bytes on 32 bit. Total number of ArtMethod on low memory mako: 169957 Image size: 49203 methods -> 787248 image size reduction. Zygote space size: 1070 methods -> 17120 size reduction. App methods: ~120k -> 2 MB savings. Savings per app on low memory mako: 125K+ per app (less active apps -> more image methods per app). Savings depend on how often the shared methods are on dirty pages vs shared. TODO in another CL, delete gc map field from ArtMethod since we should be able to get it from the Oat method header. Bug: 17643507 Change-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8 (cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)
* ART: Clean up compilerAndreas Gampe2014-08-221-143/+0
| | | | | | | Clean up the compiler: less extern functions, dis-entangle compilers, hide some compiler specifics, lower global includes. Change-Id: Ibaf88d02505d86994d7845cf0075be5041cc8438
* ART: Rework CFA frame initialization and writing codeAndreas Gampe2014-08-061-14/+0
| | | | | | | | Move eh_frame initialization code and CFI writing code to elf_writer_quick to remove hard-wired dependencies on specific Quick-compiler backends. Change-Id: I27ee8ce7245da33a20c90e0086b8d4fd0a2baf4d
* 1. Fix CFI for quick compiled code in x86 & x86_64;Tong Shen2014-07-301-3/+3
| | | | | | | | | | | | | | | | 2. Emit CFI in .eh_frame instead of .debug_frame. With CFI, we can correctly unwind past quick generated code. Now gdb should unwind to main() for both x86 & x86_64 host-side ART. Note that it does not work with relocation yet. Testing: 1. art/test/run-test --host --gdb [--64] --no-relocate 005 2. In gdb, run 'b art_quick_invoke_stub', then 'r', then 'c' a few times 3. In gdb, run 'bt'. You should see stack frames down to main() Change-Id: I5350d4097dc3d360a60cb17c94f1d02b99bc58bb
* Improve performance of invokevirtual/invokeinterface with embedded imt/vtableMingyao Yang2014-07-111-0/+1
| | | | | | | | | Add an embedded version of imt/vtable into class object. Both tables start at fixed offset within class object so method/entry point can be loaded directly from class object for invokeinterface/invokevirtual. Bug: 8142917 Change-Id: I4240d58cfbe9250107c95c0708c036854c455968
* x86_64: Unify 64-bit check in x86 compilerElena Sayapina2014-07-021-3/+2
| | | | | | | Update x86-specific Gen64Bit() check with the CompilationUnit target64 field which is set using unified Is64BitInstructionSet(InstructionSet) check. Change-Id: Ic00ac863ed19e4543d7ea878d6c6c76d0bd85ce8 Signed-off-by: Elena Sayapina <elena.v.sayapina@intel.com>
* Add x86_64 code generation supportDmitry Petrochenko2014-05-141-1/+1
| | | | | | | | Utilizes r0..r7 in register allocator, implements spill/unsill core regs as well as operations with stack pointer. Change-Id: I973d5a1acb9aa735f6832df3d440185d9e896c67 Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
* AArch64: Change arm64 backend to produce A64 code.Matteo Franchin2014-05-071-2/+1
| | | | | | | | | | | | | | The arm backend clone is changed to produce A64 code. At the moment this backend can only compile simple methods (both leaf and non-leaf). Most of the work on the assembler (assembler_arm64.cc) has been done. Some work on the LIR generation layer (functions such as OpRegRegImm & friends) is still necessary. The register allocator still needs to be adapted to the A64 instruction set (it is mostly unchanged from the arm backend). Offsets for helpers in gen_invoke.cc still need to be changed to work on 64-bit. Change-Id: I388f99eeb832857981c7d9d5cb5b71af64a4b921
* AArch64: Add fake arm64 backend, and disable it by method filter.Zheng Xu2014-05-071-0/+4
| | | | | | | | | | | | | | | | Just create an ArmCodeGenerator for arm64, but currently no code will be generated for arm64. The method filter can: 1. Skip methods with unsupported prototype. 2. Skip methods with unsupported dalvik byte code. 3. Skip methods with invocation to unsupported prototype. These are temporary codes and should be removed later. But with this patch, it won't break anything when we merge partly implemented arm64 backend later. Change-Id: Ib9180d7b8a978f0a5ebaf6b4893e7e3724897113
* Give Compiler a back reference to the driver.Ian Rogers2014-05-061-38/+37
| | | | | | | | | | The compiler driver is a single object delegating work to the compiler, rather than passing it through to every Compiler call make it a member of Compiler so that it maybe queried. This simplifies the Compiler API and makes the relationship to CompilerDriver more explicit. Remove reference arguments that contravene code style. Change-Id: Iba47f2e3cbda679a7ec7588f26188d77643aa2c6
* art: Handle x86_64 architecture equal to x86Dmitry Petrochenko2014-04-031-0/+6
| | | | | | | | This patch forces FE/ME to treat x86_64 as x86 exactly. The x86_64 logic will be revised later when assembly will be ready. Change-Id: I4a92477a6eeaa9a11fd710d35c602d8d6f88cbb6 Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
* Implement FINAL/OVERRIDE for clang.Ian Rogers2014-03-131-2/+1
| | | | | | | | | | Separate declaration from definition in certain places to work-around issues with clang. Remove bogus lock annotation at definition in compilers.cc that is already present at the declaration. Remove duplicate definition of ClassReference. Change-Id: I5368057bb36319a259110b2198610d9d2b2e5041
* Fix virt-specifiers outside class definition errors.Nicolas Geoffray2014-03-131-3/+1
| | | | Change-Id: Iab341e12e7a978aff6bc35117e9b15f3b2c2cedd
* Add command line support for enabling the optimizing compiler.Nicolas Geoffray2014-03-131-0/+152
Also run tests with the optimizing compiler enabled when the file art/USE_OPTIMIZING_COMPILER is present. Change-Id: Ibc33eed62a43547bc3b9fe786d014c0d81b5add8