| Age | Commit message (Collapse) | Author |
|
An incorrect conversion of an #ifdef to a runtime test broke
division by literals for non-Arm targets.
Change-Id: I0065606f668df8478fb33e55077fcc5b734cb3af
|
|
|
|
Two steps forward, one step back towards elimination of the
"#include" build model for target-specific compilers. This CL
does some restructuring to eliminate all of the TARGET_xxx #ifdefs
and convert them to run-time tests.
Considerable work is still required to fully eliminate the multiple
builds. In particular, much of the "common" codegen code relies on
macros defined by the target-specific [Arm|X86|Mips]Lir.h include file.
Next step is more restructuring to better isolate target-independent
code generation code.
Change-Id: If6efbde65c48031a48423344d8dc3e2ff2c4ad9d
|
|
|
|
Restore some of the optimizations turned off by CL 245592 to see if there is any
monkey run differences. This CL should be eventually reverted.
Change-Id: I9990ba07c02ca5e0b4dfa4b1abfbecbe2cc1271c
|
|
MIPS emulator boots and works now, passing all vm-tests except one
invoke-super test.
Change-Id: I3bd27f9a582412900c08f5771d5dd76749d9de89
|
|
dalvik-dev
|
|
One of several steps towards having a single compiler build.
In this CL, we introduce a compiler_backend command-line option
to select between Quick, Quick w/ GBC, Portable and Iceland
back ends. The Iceland option is temporary, and will go away once
we combine with Portable. The Quick variants are with
and without GBC conversion. In time, those will converge to a
single option.
All uses of "#if defined(ART_USE_QUICK_COMPILER)" are eliminated. All
previous uses in the Quick compiler have been converted to runtime
tests. On the llvm side, ART_USE_QUICK_COMPILER was previously
used to differentiate between Portable and Iceland builds. Those
usages have been replaced with ART_USE_PORTABLE_COMPILER, and in
a following CL will also be converted to run-time tests.
As of this CL, we're still generating separate libraries for
Quick and Portable/Iceland. Next up is elminating the target-specific
libraries for Quick-arm, Quick-x86 and Quick-mips. Once that is
complete, we will consoldate Quick and Portable into a single build.
To build either Iceland or Portable, touch USE_PORTABLE_COMPILER or
USE_LLVM_COMPILER as usual. Otherwise, the build will default
to Quick (non-GBC).
Change-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47
|
|
The emulator no longer reboots on startup, though the screen remains
black. In this change:
- Fixed compilation of kMipsDelta.
- Fixed resolution trampoline to call with reg T9 so GP can be
calculated properly.
- Supress DescribeLocks on proxy methods to allow stack dumping (not
MIPS specific).
Change-Id: I66ef62002e3ffba5a253e94a5300d022f9345934
|
|
Turn off optimization for a problematic method to see if it
changes monkey behavior. This CL should be reverted after the
monkey run completes.
Change-Id: Id0abc48ae15cf3bf8d0aaf999b2ba803adb788b5
|
|
Run-test tests 001-043 work, including 003-omnibus-opcodes. 044 is
proxy, which is still broken.
Changes made:
- Fixed argument marshalling of FP values for calls to helper functions
in the compiler.
- Fixed CheckCast compilation's mistaken use of rARG0 instead of rRET0.
- Fixed conversion calls to marshall FP arguments properly.
- Created named values for FP args, though they differ in MIPS only.
- Fixed assembly to always use T9 to hold code pointer to jump to.
- Fixed proxy offset values.
Change-Id: If121db322683a307e5a1016210f4f73283aa817c
|
|
IntMath works now. The only basic tests that aren't working are
ReferenceMap and StackWalk.
In this change:
- Fixed argument passing for compare float/double.
- Set method stubs for long multiply/divide/remainder.
- Store gp value on stack and reload after function call to preserve
value for exception delivery.
- Fixed argument passing to artThrowStackOverflowFromCode.
- Fixed assembly for unsigned shift right long.
Change-Id: I6e77454905c3620c9cfd1c089200a8dbe530df2e
|
|
In this change:
- Fixed compilation of div-int and instance-of
- Fixed VERIFY_OBJECT to compile again
- Added stack space for passing extra function arguments for
REF_ONLY_CALLEE_SAVE functions
- Fixed AbstractMethodErrorStub to match stack layout
Change-Id: I3d4540a3285a0acf49522ffc6f01d04b888bb8ef
|
|
|
|
- Fixed reversed base and destination reg in genConstString
- Changed compiler to use T9 to hold address to jump to
- Fixed compilation of instruction getting current PC
- Prevented T9 from being used as a compiler temp
- Fixed loadBaseDispBody for long form single loads
- Fixed stack setup for SaveAll callee methods to save rSELF & rSUSPEND
- Added .cpload directive to assembly to regenerate $gp when overwritten
- Fixed passing of extra arguments on the stack to account for space
reserved for $a0-$a3
- Fixed resolution trampoline to properly setup and restore stack
- Created mips stubs for interface trampoline and unresolved direct
method trampoline
Change-Id: I63a3fd0366bdfabdebebf58ec4b8bc9443cec355
|
|
Change-Id: Id49a1c13fa44cb1d7638cb8601fbf55b2f3770d6
|
|
Reuse thread-local copies of llvm context data for Quick compiler
(while continuing to regenerate fresh ones per method for Portable).
This is a transitional CL - the upcoming compiler driver change
is expected to pass pass a thread context structure to each compiler
worker thread rather than use the pthread_key mechanism.
Change-Id: I277920a5c2705748c3a9f37ceace53c903747ec2
|
|
Interface dispatch when the method we're dispatching against is known
currently goes slow path. This change makes the load of the interface
method either a load of a constant or from the resolve methods table. It
also makes the null check on the "this" pointer inline.
Change-Id: I69571a062d3d693bee2dec6e46a456e0f74411cd
|
|
Refactor code GC realted code to be in a GC folder.
Remove copy mark bits by using pointer changing instead.
Enable concurrent sweeping of system weaks.
Fix non concurrent GC plan.
Change-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263
|
|
When operating on the Quick path, we use named basic blocks
to transmit the original Dalvik offset and block type. However,
not all blocks are named. Code changed to handle that case.
Change-Id: Ibeafc18ac83e2d8d6dcf70d0f2dcfebeafc84b8f
|
|
dalvik-dev
|
|
The gtests now all work on MIPS.
Change-Id: I2883ce002f23d75e700366014517c863fb626d09
|
|
Turn bitcode function verification on for debug Quick and
Portable builds. Also in this CL, some sanity checking for
the dex2pc table and a temporary workaround for excessive filename
lengths for bitcode file dumps.
Change-Id: I430ed28824b078c03be7826cb13876cdcb8a0fec
|
|
First of 2 related CLs - this one moves to a split table, a future
CL will compress the table to save image space.
The current MappingTable mixes two flavors of entries: dex->pc and
pc(return address)->dex. The problem is that we can have two
entries with the same native pc address but two different dex pcs.
The reason is that when we go from native pc to dex, the native
pc is actually the return address from the previous call, whereas
when we go from dex to native pc, the mapping refers to the first
native instruction of the sequence.
Previously, the first entry in the mapping table was the number
of subsequent entries. That will remain the same, but now
the second entry will be a count of the number of entries in
the pc->dex section of the table. The difference between the
two counts gives us the number of entries in the following dex->pc
section.
Change-Id: Ibadb96cb50bf1f93e079dff3832130b9f9782723
|
|
Add ostream operators for dex instruction enums.
Move simple methods to header file.
Change-Id: I9644bfb975896a491ee73ef9a8ef13c062c5fcbd
|
|
Gets instruction expansion from ~5.1 to ~4.9.
Change-Id: I14719df1f256589035635edcc20e25ebd396657c
|
|
We need to ensure that transitions to Runnable are atomic wrt to a
thread modifying the suspend count. Currently this is achieved by
holding the thread_suspend_count_lock_. This change creates a set of bit
flags that summarize that the suspend_count_ is raised and also others
flags that signify the managed code should go into a slow path.
The effect of this change are two-fold:
1) transitions from suspended to runnable can CAS the thread state
rather than holding the suspend_count_lock_. This will make JNI
transitions cheaper.
2) the exception/suspend/interpreter poll needed for shadow frames can
be rolled into a single compare of the bit fields against 0.
Change-Id: I589f84e3dca396c3db448bf32d814565acf3d11f
|
|
dex file in dex cache." into dalvik-dev
|
|
in dex cache.
Generic clean up to facilitate having GDB macros for Pretty* helper functions.
Improved cleanliness of DexCache since having it as an object array was not the best solution.
Fixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.
Rename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.
Rename done to have the C++ code be closer to the java code.
Change-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9
|
|
Allow upto 65536 (2**13 * 8) vregs in a reference bitmap as this occurs
in CTS tests. Achieve this by squeezing the numbers of bits used to say
how large in bytes the native PC offset is down to 3 from 8.
Change-Id: Ib0f1df7a492b771e01b0bd79d6648d46b60b5f78
|
|
Fixed a bug in bitcode generation that was helpfully masked by
gcc's -O2 optmization (code motion). Also removed quite a few fields
and identifiers left over from the JIT, along with a couple of files
that were meaningful for the JIT, but are no longer used.
Change-Id: I7702b66d646c68aafb9669368c97e128ad045dc9
|
|
|
|
Normal Dalvik vRegs range from 0..n. However, we use negative
vReg positions to denote special values such as Method* and other
things we might wish to promote. Failed to take this into account
for some shadow frame bitcode conversion stuff.
Yet another datapoint supporting the upcoming C++ification.
Change-Id: I3a1714ac1a80763c048dda3ae95125fc6082202b
|
|
Rather than translate a native PC to a Dex PC and then to the reference
bitmap, just go straight from the native PC to the reference bitmap.
Encode the native PC offsets using a hash rather than linearly
searching.
Change-Id: Iee1073d93c941c0a31f639e5f23cea9e9f747bee
|
|
Perform math intrinsics on StrictMath when appropriate following Dalvik
change: https://android-review.googlesource.com/42932
Filter package name of intrinsic methods to reduce number of
comparisons.
Change-Id: Iff97c501d4386f76d3f2297406417fa3b76d0a8a
|
|
Change-Id: I4afbafbaa3f2ecb82a55e609b3f276225c06f117
|
|
Change-Id: I844f005782b3ecdcb52dc2484d44f4ae34e1c670
|
|
Change-Id: Ia7bcf71198941426a19d1f092a5ee51e16fffd55
|
|
Change-Id: I8c38d4dfb06885834c65a0d85673d9675cc504fb
|
|
Change-Id: I87a819162d9705136c1dcad6424058ffbf033922
|
|
Change-Id: I1a7249505aa6300fe47331e30772dde64cbe4df3
|
|
Here's an example of a simple interface to the common front-end for
use by the portable path. Untested.
Change-Id: Id444aaa1bc8e2e26b6b449e78be32dd053faa4df
|
|
Set shadow frame entry after invoke.
Some reference is not in the shadow frame because of invoke/move-result
fusing.
Change-Id: I157eaad5be85a4a7f0d4ce89a960d52863df29ad
|
|
Change-Id: I90be4c1139a9f11ad2378a293e5c243e57843bd9
|
|
Change-Id: I75e769ae51acfdb94734a9d91fada9b49dcf2e88
|
|
Change-Id: I8ff3d8f07c6d92e1169302e56c3e767c6fe6a7c7
|
|
Change-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa
|
|
Minor tweaks to the code layout for the Quick compiler. Repair
damage caused by bitcode conversion & additionally add a new
optimization pass to move unlikely targets to the end of the code
(flipping branch conditons if necessary). For now, this will only
be applied to target blocks which do an explicit throw and are
dominated by a block terminated by a conditional branch. Later,
we might want to generalize this capability to enable profile
guidance.
Also, tweaked the basic block combine pass to include blocks
terminated by array access operations whose null check and
range checks have been eliminated.
With this CL, the run-time performance difference between
art-buzbee and art-Quick is in the noise.
Change-Id: Iaf9921220eb6cb33c2418c76e7a6b7b31472dace
|
|
Step one of the change. Limit entries in the table to native
code safepoint locations (which generally are the return PC
addresses of any call that might trigger a stack walk and the
start addresses of all catch blocks).
Previously, the mapping_table described ranges. No longer. Any
native PC located within compiled Dex code that is found in a
stack walk should have an exact match in the table.
In future CLs we'll add data compression (probably uLeb128) and
may add inflation on first use to a faster access map (instead of
the current linear search).
Note that this CL introduces somewhat of a regression in the
capabilities of oat-dump. Because the mapping table no longer
associates each native intruction with its Dex counter-part, the
native code disassembly no longer includes interspersed Dex
disassembly.
Note also that as of this CL, the compiler is adopting the 100-char
line length limit used in the rest of Art. The 80-char limit
should still be used in any code that we expect to upstream to
llvm.
Change-Id: I1beca4d57c41e8161bf746bc62abbce08d5bcb4d
|
|
The new basic block collapse pass marks the eliminated block as
kDead. On the Quick side, we skip code generation for these blocks - but
neglected to do so for the non-Quick build. The result: lots of
extra useless unreachable code got generated - hence the image size
bloat.
Fixed, and good news is that we're now seeing the roughly the same
decrease in image size that showed up in the Quick build.
Change-Id: Ie8038cb8058020eefaae1085362a2f8345895284
|