| Age | Commit message (Collapse) | Author |
|
- Field::Set routines take the declaring class even for static field accesses.
Change-Id: I842f47243b576b3d0793d5a47f329c8f9cab0d05
|
|
|
|
Enabled parallel mark stack processing by using a thread pool.
Optimized object scanning by removing dependent loads for IsClass.
Performance:
Prime: ~10% speedup of partial GC.
Nakasi: ~50% speedup of partial GC.
Change-Id: I43256a068efc47cb52d93108458ea18d4e02fccc
|
|
Change-Id: I1cfbcc638aef2eb28431d9fc63c2f34b15cee67d
|
|
Change-Id: I4c29cd7b67f07bb9f99c308feac5a3d6c236bc2b
|
|
Change-Id: I90b4b6b3a1aebb82955b4aa84d3f2d599af1d13b
|
|
These files aren't built and are bit rotting. Removing to relieve
maintenance burden.
Change-Id: I6f86d22538370a7e7d31e6f4d6a6e62243c9fece
|
|
For const-string in the boot image, force the string into the dex-cache
so that slow paths aren't necessary.
Increases boot.art from 7M to 9.8M but reduces boot.oat by ~3M. Code
generated assuming no slow paths will be faster.
Change-Id: I6c7be390adf7c09b5e6872d05f7d69ab6384c618
|
|
We initialize all image classes with the interpreter if they have a
class/static initializer.
Black list classes whose initializers need access to on device native
code. If such classes are added to the image classes they will fail when
they attempt to enter JNI code. A number of "intrinsic" style JNI
routines are special cased to allow more than just trivial class
initializers to run.
Add a lock for initialization in the compiler to serialize the execution
of class initializers and avoid deadlock.
Remove InSourceSpace from image writer (cruft) and teach the image writer
to fix up referent fields in references.
Fix bugs in the interprerter and implement filled-new-array.
Factor some VM code to more easily share between the interpreter and
JNI entry points.
Change-Id: I6bb811dea84f1b82260b1a4e73ac7412179c0b41
|
|
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
|
|
We were not holding the task queue lock when we did broadcast, causing
a race where a thread waits on the CV after the broadcast.
Fixes dex2oat deadlocking.
Change-Id: I84f30020511c2bd43f71d9b7b392720bd8d03eab
|
|
|
|
|
|
Should slightly improve performance. Added a no thread suspension allowed in patch oat code and
methods.
Added a new function to class linker, GetOatCodeFor which takes in a method reference instead of
pointer.
This fixes the issue where pruned methods were getting re-loaded during code and method patching.
Change-Id: I676bb88cb021b6d2e0db00adbcf1f2f04f82b72a
|
|
- Changed the base address of the art image for MIPS to allow enough
space for CTS to run on the target.
- Fixed exception delivery to jump without linking, and to preserve the
value of $gp.
- Added dumping of /proc/self/maps whenever mmap fails, and cleaned up
other debugging output (not MIPS related).
Change-Id: I4e92e992ee6a6167e901db8ad90a6062bbc5168a
|
|
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
|
|
|
|
Change-Id: I75e6c8f7189d478304a5fd273440db126581a75f
|
|
Change-Id: Ieb8c90c8bd9b9b9cf075519992d4156b0ca6273b
|
|
|
|
Change-Id: I29c3cafaa7adceded6b1e934df63c80b5e0efa87
|
|
MIPS emulator boots and works now, passing all vm-tests except one
invoke-super test.
Change-Id: I3bd27f9a582412900c08f5771d5dd76749d9de89
|
|
dalvik-dev
|
|
Change-Id: I8dcb6e5605074d03410c67412f0929286091e15d
|
|
The opcodes filled-new-array and packed-switch aren't implemented but
are trivial given that they are variants of implemented opcodes.
Refactor Field::Get routines to take the declaring class in the case of
static field accesses. This avoids a check on every use of a field.
Refactor arg array builder to be shared by JNI invokes and invocations
into the interpreter.
Fix benign bug in const decoding in the verifier.
Change-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8
|
|
|
|
Added a thread pool class loosely based on google3 code.
Modified the compiler to have a single thread pool instead of creating new threads in ForAll.
Moved barrier to be in top level directory as it is not GC specific code.
Performance Timings:
Reference:
boot.oat: 14.306596s
time mm oat-target:
real 2m33.748s
user 10m23.190s
sys 5m54.140s
Thread pool:
boot.oat: 13.111049s
time mm oat-target:
real 2m29.372s
user 10m3.130s
sys 5m46.290s
The speed increase is probably just noise.
Change-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49
|
|
|
|
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
|
|
Bug: 7419545
Change-Id: I58f40e11f3b3256ca7f7922f12b7bdeef724930f
|
|
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
|
|
|
|
Change-Id: I15d1ecfb9900a07b36209015e8b47718fdee19a7
|
|
Change-Id: I2c2389904b4d0ce9b30eccfa17b8bfed4077967c
|
|
Change-Id: Iec32ea30420a6fac318f947108248bf4207f279c
|
|
Added thread list checkpoint function, this goes through every thread and runs
the checkpoint on each thread. Threads that are runnable run the checkpoint
callback themselves in the next suspend check, while suspended threads are
left suspended but have the callback called on them.
Added a checkpoint visitor member to each thread, this visitor called when the
checkpoint request flag is set during transitions to suspended from runnable.
Using the checkpoint to mark the roots reduces the first pause of partial /
full gc to around 1 ms.
Change-Id: I97239cc72ee0e4a3397e9138a62ee559268dce0a
|
|
|
|
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
|
|
Change-Id: I93b5ba426c086343533e3ef022498e47d50503c8
|
|
Change-Id: Iabb67cec58dc20e16210ad770411adf5fbc0638d
|
|
|
|
|
|
Fake CLOCK_REALTIME.
Change-Id: I82550dec0d67a4d434ff035f8a922c8c5d6e56ca
|
|
Change-Id: I3e43e49042e21db839baae06e0504337f0cbe1fd
|
|
Native code expects code pointer to be in T9 to generate GP reg. This
fix makes ReferenceMap and StackWalk work.
Change-Id: Ic20b434d623e5f3a14c1c3da52b801289956069c
|
|
Change-Id: I064ddaa5242de043d41940b8ac4d54ecdfacd6bb
|
|
|