| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
The runtime, compiler, dex2oat, and oatdump now are in seperate trees
to prevent dependency creep. They can now be individually built
without rebuilding the rest of the art projects. dalvikvm and jdwpspy
were already this way. Builds in the art directory should behave as
before, building everything including tests.
Change-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81
|
|\
| |
| |
| | |
Change-Id: Ia7a8785d3220df6feeb999bc70f6d1917cad8d75
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Move compile-time code to src/compiler and libart-compiler
OatWriter, ImageWriter, ElfWriter, ElfFixup, ElfStripper, stub generation
- Move ClassReference and MethodReference to remove MethodVerifier dependency on CompilerDriver
- Move runtime_support_llvm.cc out of src/compiler and next to runtime_support.cc
- Change dex2oat and gtests to directly depend on libart-compiler
- Move non-common definitions from Android.common.mk to more specific makefiles
- Add LOCAL_ADDITIONAL_DEPENDENCIES on appropriate makefiles
Change-Id: I897027e69945914128f21f317a92caf9255bc600
|
|/
|
|
|
| |
Bug: 7903975
Change-Id: I1ec552b35331227ecd7dc3d0a2f0507b1c24e375
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Modified makefile to take the existance of SEA_IR_ART
file to mean "switch to sea ir mode".
- Switching SEA IR mode on leads to the new compiler being
fed the fibonacci methods only, if they are used as input.
- Added partial support for the control flow subgraph of
the SEA IR (instruction nodes and region nodes for
conditional and unconditional branches).
Change-Id: I29020b8e2df5a00fde75715c3683cc25038589f4
Conflicts:
src/compiler/driver/compiler_driver.cc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Greater use of directories and namespaces.
Fix bugs that cause verify options to fail.
Address numerous other issues:
GC barrier wait occurring holding locks:
GC barrier waits occur when we wait for threads to run the check point function
on themselves. This is happening with the heap bitmap and mutator lock held
meaning that a thread that tries to take either lock exclusively will block
waiting on a thread that is waiting. If this thread is the thread we're waiting
to run the check point then the VM will deadlock.
This deadlock occurred unnoticed as the call to check for wait safety was
removed in: https://googleplex-android-review.googlesource.com/#/c/249423/1.
NewTimingLogger:
Existing timing log states when a split ends but not when it begins. This isn't
good for systrace, in the context of GC it means that races between mutators
and the GC are hard to discover what phase the GC is in, we know what phase it
just finished and derive but that's not ideal.
Support for only 1 discontinuous space:
Code special cases continuous and large object space, rather than assuming we
can have a collection of both.
Sorted atomic stacks:
Used to improve verification performance. Simplify their use and add extra
checks.
Simplify mod-union table abstractions.
Reduce use of std::strings and their associated overhead in hot code.
Make time units of fields explicit.
Reduce confusion that IsAllocSpace is really IsDlMallocSpace.
Make GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)
rather than the max memory footprint.
Change-Id: Ie87067140fa4499b15edab691fe6565d79599812
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This check appears unecessary and is causing monkey failures. The race condition
this is supposed to work around doesn't appear to exist in this instance as the
thread_list_lock_ is held. This might be related to b/8050919. Tested on a Nexus
4: phone booted, multiple apps tested.
Also, updated the small method limit size to a value determined by shmooing a well
known benchmark.
Bug: 8050919
Change-Id: I0d98624926b830953af7136f43f0e2b57d930a99
|
|
|
|
|
|
|
|
| |
We were seeing things compile when they shouldn't have. This fixes it. Plus added
a bit more documentation to options, set default values for the two small art related
thresholds to zero.
Change-Id: Id5db11962f3e30d8d4ee6b85d4cf7d6e66323adb
|
|
|
|
|
|
|
| |
Small ART mode was turned on by default. It should be off by default as there's otherwise no option to
turn it off.
Change-Id: I9b723f7c5d9c95c210722861fc1e0cd08560a371
|
|
|
|
|
|
|
|
| |
Adds a filter per method and program size (in method count). Right now, options are treated
as runtime options...but we might want to change this and separate options for compilers and
runtime.
Change-Id: I8c3e925116119af8ffa95ff09f77bcfdd173767b
|
|
|
|
|
|
|
| |
Abstract method error stub and jni dlsym lookup stubs are gone.
After this change, the image no longer needs to be executable.
Change-Id: Ic75d72bf7e76e3b8ecc596e82af68ab592dde15e
|
|
|
|
|
|
|
| |
Created assembly versions of resolution trampoline for portable and
quick. Removed compiled version from the image.
Change-Id: I183e110c4e102fb45ce6e7f4e855f8bed7986251
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the instrumentation responsible for whether we want method entry/exit
stubs, and allow it to use interpreter entry stubs when instruction by
instruction instrumentation is required. Improve deoptimization so more JDWP
test cases are passing.
Refactor exception debug posting, in particular improve reporting in the
interpreter. Improve class linker exception throwing so that broken dex files
are more likely to be reported. Fixes the performance issue Bug: 8410519.
Fix some error reporting lock level errors for the large object space. Make
fast object verification faster.
Add some debug mode robustness to finding dex PCs in GC maps.
Add printf attributes to JniAbortF and fix errors.
Expand run-test 044 to test return behaviors and fix issues with not throwing
appropriate exceptions for proxies.
Ensure causes are reported with a class linker NoClassDefFoundError and JNI
NoSuchFieldError.
Remove unused debugMe and updateDebuggerFromCode.
There's a minor sizing tweak to the arg array builder, and an extra reference
array check in the interpreter.
Some clean-up of trace code.
Fix reg type cache destructor if it is called after the reg type cache is
shutdown (as is the case in oatdump).
Change-Id: I6519c7b35df77f978d011999354c864f4918e8ce
|
|
|
|
| |
Change-Id: Ic2ae1a27682cc4152003a68d59068b2c5c5eb09b
|
|
|
|
| |
Change-Id: Ia2459c7da6b79e0a1c0f1148c6e28ad9cbbe27a2
|
|
|
|
|
|
|
|
| |
Also move the invoke stubs (soon to be removed) under compiler.
Start moving LLVM code under compiler. Will move GBC expander to dex/portable
once it is disentangled from other builds (moving toward solving Bug: 8195425).
Change-Id: I8829f9db6ade9ac8e32bd16198b90f83619769f1
|
|
|
|
|
|
|
| |
ART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER
is used in #ifdefs.
Change-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55
|
|
|
|
|
|
|
|
|
| |
Break object.h into constituent files.
Reduce number of #includes in other GC header files.
Introduce -inl.h files to avoid mirror files #include-ing each other.
Check invariants of verifier RegTypes for all constructors.
Change-Id: Iecf1171c02910ac152d52947330ef456df4043bc
|
|
|
|
| |
Change-Id: I7f71b4a12f99c5f81771146c66629ae5a947b229
|
|
|
|
|
|
|
|
|
|
|
|
| |
I also moved macros.h to base/macros.h to ease google3 porting, at
the expense of a larger than necessary change. (I learned my lesson,
though, and didn't make the equivalent base/logging.h change.)
I'm not sure whether we want to keep the unix_file MappedFile given
our existing MemMap, but it's easier to bring it over and then remove
it (and possibly revert the removal) than to bring it over later.
Change-Id: Id50a66faa5ab17b9bc936cc9043dbc26f791f0ca
|
|
|
|
|
|
|
|
| |
Make packed objects 4 byte aligned or else GCC becomes paranoid and
assumes only byte alignment on whole objects.
Change CHECK in GetCalleeSaveMethod to DCHECK to encourage inlining.
Change-Id: I79f1a13752492413c919b36f4e207e637647834f
|
|
|
|
| |
Change-Id: I0f7d8c0b0f33e77ca2d3fbf05b7a16fedb86a545
|
|
|
|
|
|
|
| |
This is in preparation for Ian's debugger changes. The instrumentation
still needs support for debugging, which I'll add later.
Change-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a race where a new worker thread would attach during the
checkpoint. This caused the thread to wait since suspend count != 0.
But when we decremented the suspend count, we did not broadcast to
the resume condition.
Added a create peer parameter to Thread::Attach and
AttachCurrentThread. This is used by the threadpool since we don't
need a java peer for worker threads.
Change-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
We now mark the class linker and intern table roots concurrently
(with mutators unpaused), only re-marking these roots in the second pause if
they get dirtied.
Reduces root marking time by ~1ms for each pause.
Change-Id: I833fc557bac9a2930868db715587318293fa4655
|
|
|
|
|
|
| |
Added options in runtime for heap min free, max free, and target utilization.
Change-Id: Iaea988ffbf6cb7f07127640786168de7d341f1e1
|
|
|
|
|
|
|
|
|
| |
Introduce counters to indicate that threads are being born. Don't allow
thread birth to occur during runtime shutdown.
Bug: 7000936
Change-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Also address some review comments in common_throws relating to
ToStr<InvokeType> and exception detail messages.
Change-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b
|
|
|
|
| |
Change-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce the notion of the mutators/GC being a shared-exclusive (aka
reader-writer) lock. Introduce globally ordered locks, analysable by
annotalysis, statically at compile time. Add locking attributes to
methods.
More subtly, remove the heap_lock_ and split between various locks that
are held for smaller periods (where work doesn't get blocked). Remove
buggy Dalvik style thread transitions. Make GC use CMS in all cases when
concurrent is enabled. Fix bug where suspend counts rather than debug
suspend counts were sent to JDWP. Move the PathClassLoader to
WellKnownClasses. In debugger refactor calls to send request and
possibly suspend. Break apart different VmWait thread states. Move
identity hash code to a shared method.
Change-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6
|
|
|
|
| |
Change-Id: Ia6fffe9f416ac4bd2588016b99b172cf023f3c5d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The zygote space is now created right before zygote fork. This space has new allocations into it disabled, this reduces memory usage since we have more shared pages.
Partial collection works by marking all the zygote space -> alloc space references by using a mod-union table and then recursively marking only over the alloc space.
Approximate improvements;
Deltablue time goes down ~0.5 seconds.
Caffeinemark score goes up ~300.
System memory usage goes down ~7MB.
Change-Id: I198389371d23deacd9b4534f39727eb641786b34
|
|
|
|
| |
Change-Id: Ia24ac608f0820482c082d33c0c44190f0eb883ca
|
|
|
|
| |
Change-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the routines for changing Object* to jobject and vice-versa
(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of
Object*s in the Runnable thread state. In the Runnable thread state
suspension is necessary before GC can take place.
Reduce use of const ClassLoader* as the code bottoms out in FindClass
and with a field assignment where the const is cast away (ie if we're
not going to enforce the const-ness we shouldn't pretend it is).
Refactor the Thread::Attach API so that we're not handling raw Objects on
unattached threads.
Remove some unreachable code.
Change-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97
|
|
|
|
|
|
|
| |
(If you ignore the compilers, we've got relatively little lint now. Fits on
a single screen.)
Change-Id: I51389002894d4fd8cf46f79d2bac57079322a030
|
|
|
|
|
|
| |
Enable or disable CMS by doing -Xgc:noconcurrent or Xgc:concurrent. Defaults to enabled.
Change-Id: Ib18687ba6aa6534323531d761133ce410c69f426
|
|
|
|
|
|
|
|
|
|
| |
There's no associated stack trace, so we can share one between all
threads, saving a little memory and thread start-up time. Speaking
of stack traces: dump the stack to the log at the point where we
realize we're not going to be able to throw an exception with a
stack, so the developer has _something_ to work with.
Change-Id: I2246d291855bd9b9ee13f2be5b1ce14f669e9410
|
|
|
|
|
|
| |
Enable CMS and fix performance regression due to recursive marking image spaces. Dependent on my java change list.
Change-Id: I4765792aa8226e811ac158f04ab88217db755573
|
|
|
|
| |
Change-Id: I6831e067d8b7ce4d81b6daf9bd6a8af21fecfde3
|
|
|
|
| |
Change-Id: I6efaf065304459df0e030f242f8d1d2fc6fdec4a
|
|
|
|
|
|
|
|
|
| |
This isn't going to be as reliable as debuggerd because we're running inside
the crashed process. We could always build debuggerd for the host, and have
something to call out to that. But for now, this gives us most of the
information most of the time...
Change-Id: I992ffb3bdb2903e4b83bd5666108ebe12a813338
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Looks like this:
Heap: 87% free, 4MB/32MB; 6327 objects
While I'm here, fix another long-standing TODO to make PrettySize have the
usual google3 behavior. (I took the specific thresholds from Chromium.)
Also distinguish between the more general "Dump" member functions and the
specific SIGQUIT-related ones by consistently calling the latter DumpForSigQuit.
Change-Id: I76e783adc18dd089bac9b348f53dc9860a0fe4b9
|
|
|
|
| |
Change-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9
|
|
|
|
| |
Change-Id: I51c04d731d6de035328781d8ac134ad6fcf49897
|
|
|
|
| |
Change-Id: I9818845c005563d894a571edc4f9be9862312380
|
|
|
|
|
|
|
|
| |
Crated a set of command line switches to allow method tracing to be
enabled from the command line. They are -Xmethod-trace,
-Xmethod-trace-file, and -Xmethod-trace-file-size.
Change-Id: I7ecaa07aba3d7ca41f2ff3a9a9341d97833afe36
|
|
|
|
|
|
|
| |
This builds three separate compilers and dynamically links with the right one
at runtime.
Change-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b
|