summaryrefslogtreecommitdiffstats
path: root/src/runtime.h
Commit message (Collapse)AuthorAgeFilesLines
* Create separate Android.mk for main build targetsBrian Carlstrom2013-07-121-479/+0
| | | | | | | | | | 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
* resolved conflicts for merge of 51c2467e to dalvik-devBrian Carlstrom2013-07-121-0/+2
|\ | | | | | | Change-Id: Ia7a8785d3220df6feeb999bc70f6d1917cad8d75
| * libart-compiler cleanupBrian Carlstrom2013-07-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | - 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
* | Disable -Xjnigreflimit: in art too.Elliott Hughes2013-07-021-2/+1
|/ | | | | Bug: 7903975 Change-Id: I1ec552b35331227ecd7dc3d0a2f0507b1c24e375
* Added support for SEA IR.Dragos Sbirlea2013-06-251-0/+13
| | | | | | | | | | | | | | | - 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
* GC clean up.Ian Rogers2013-06-211-16/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Removed haspeer check and changed small method default limitAnwar Ghuloum2013-06-141-1/+3
| | | | | | | | | | | | | 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
* Fixed Android.common.mk #define setting for small artAnwar Ghuloum2013-05-101-2/+7
| | | | | | | | 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
* Fixing Small_Art DefaultAnwar Ghuloum2013-05-021-1/+1
| | | | | | | 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
* Compile filter for small applications and methodsAnwar Ghuloum2013-04-301-0/+27
| | | | | | | | 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
* Removing remaining compiled stubs from image.Jeff Hao2013-04-261-26/+0
| | | | | | | 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
* Removed compiled resolution trampoline.Jeff Hao2013-04-231-20/+0
| | | | | | | Created assembly versions of resolution trampoline for portable and quick. Removed compiled version from the image. Change-Id: I183e110c4e102fb45ce6e7f4e855f8bed7986251
* Interpreter entries and instrumentation as a listener.Ian Rogers2013-04-081-13/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Tracking rebase to jb-mr1-releaseBrian Carlstrom2013-03-111-2/+3
| | | | Change-Id: Ic2ae1a27682cc4152003a68d59068b2c5c5eb09b
* Remove ExtractCodeAndPrelink and switch Portable to MCLinkerBrian Carlstrom2013-03-061-7/+0
| | | | Change-Id: Ia2459c7da6b79e0a1c0f1148c6e28ad9cbbe27a2
* Move compiler_llvm to art::llvm.Ian Rogers2013-03-041-2/+2
| | | | | | | | 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
* Remove Iceland.Ian Rogers2013-02-271-2/+2
| | | | | | | ART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER is used in #ifdefs. Change-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55
* Directory restructuring of object.hIan Rogers2013-01-301-30/+34
| | | | | | | | | 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
* Move stringpiece.h and stringprintf.h to base/.Elliott Hughes2012-12-131-1/+1
| | | | Change-Id: I7f71b4a12f99c5f81771146c66629ae5a947b229
* Switch over to the google3 unix_file File*.Elliott Hughes2012-12-121-1/+1
| | | | | | | | | | | | 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
* Add alignment attribute to packed.Ian Rogers2012-11-271-1/+1
| | | | | | | | 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
* Introduce -Xint flag for ART.Ian Rogers2012-11-201-0/+6
| | | | Change-Id: I0f7d8c0b0f33e77ca2d3fbf05b7a16fedb86a545
* Pulled out instrumentation into its own class separate from trace.jeffhao2012-11-141-11/+5
| | | | | | | This is in preparation for Ian's debugger changes. The instrumentation still needs support for debugging, which I'll add later. Change-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72
* Fix occasional deadlock caused by checkpoint root marking.Mathieu Chartier2012-11-121-1/+2
| | | | | | | | | | | | | 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
* Check point root marking.Mathieu Chartier2012-10-231-0/+3
| | | | | | | | | | | | | | | 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
* Concurrent class linker and intern table root markingMathieu Chartier2012-10-161-1/+12
| | | | | | | | | | 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
* Add parsed options for heap min free, heap max free, target utilization.Mathieu Chartier2012-10-151-0/+3
| | | | | | Added options in runtime for heap min free, max free, and target utilization. Change-Id: Iaea988ffbf6cb7f07127640786168de7d341f1e1
* Fail threads attaching during runtime shutdown.Ian Rogers2012-10-031-3/+26
| | | | | | | | | Introduce counters to indicate that threads are being born. Don't allow thread birth to occur during runtime shutdown. Bug: 7000936 Change-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9
* Change dex cache to be java object instead of array, add pointer to dex file ↵Mathieu Chartier2012-09-211-11/+11
| | | | | | | | | | | | | | | | 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
* Rename GlobalSynchronization to LocksIan Rogers2012-09-051-12/+12
| | | | | | | Also address some review comments in common_throws relating to ToStr<InvokeType> and exception detail messages. Change-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b
* Syntax clean up to make clang happy.Ian Rogers2012-08-201-1/+1
| | | | Change-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16
* Global lock levels.Ian Rogers2012-08-141-15/+24
| | | | | | | | | | | | | | | | | | 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
* Check for null thread groups at initializationBrian Carlstrom2012-08-011-8/+2
| | | | Change-Id: Ia6fffe9f416ac4bd2588016b99b172cf023f3c5d
* Zygote space / partial collection support.Mathieu Chartier2012-07-271-0/+1
| | | | | | | | | | | | | | | | 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
* Add missed check in thread group getters.Ian Rogers2012-06-281-0/+2
| | | | Change-Id: Ia24ac608f0820482c082d33c0c44190f0eb883ca
* Compile method one-by-one.Logan Chien2012-06-271-0/+7
| | | | Change-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c
* Increase use of ScopedJniThreadState.Ian Rogers2012-06-261-1/+15
| | | | | | | | | | | | | | | | | | 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
* Fix a bunch more lint.Elliott Hughes2012-06-211-1/+0
| | | | | | | (If you ignore the compilers, we've got relatively little lint now. Fits on a single screen.) Change-Id: I51389002894d4fd8cf46f79d2bac57079322a030
* Enable / disable CMS runtime options.Mathieu Chartier2012-06-181-0/+6
| | | | | | Enable or disable CMS by doing -Xgc:noconcurrent or Xgc:concurrent. Defaults to enabled. Change-Id: Ib18687ba6aa6534323531d761133ce410c69f426
* Don't pre-allocate one OOME per thread.Elliott Hughes2012-06-111-7/+14
| | | | | | | | | | 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
* Fix GC performance regressionMathieu Chartier2012-06-111-0/+9
| | | | | | Enable CMS and fix performance regression due to recursive marking image spaces. Dependent on my java change list. Change-Id: I4765792aa8226e811ac158f04ab88217db755573
* Move simple runtime accessors to header fileIan Rogers2012-06-031-19/+75
| | | | Change-Id: I6831e067d8b7ce4d81b6daf9bd6a8af21fecfde3
* Clean up host aborts (and simplify the code).Elliott Hughes2012-04-211-2/+1
| | | | Change-Id: I6efaf065304459df0e030f242f8d1d2fc6fdec4a
* Add signal handlers for host builds to imitate debuggerd.Elliott Hughes2012-04-161-0/+1
| | | | | | | | | 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
* Include a new heap summary line in the SIGQUIT output.Elliott Hughes2012-04-161-1/+1
| | | | | | | | | | | | | | 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
* Add a SafeMap equivalent to std::map but without the error-prone operator[].Elliott Hughes2012-04-141-5/+4
| | | | Change-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9
* Kill constants.h and fix some copyright headers.Elliott Hughes2012-03-301-1/+1
| | | | Change-Id: I51c04d731d6de035328781d8ac134ad6fcf49897
* Fix AttachCurrentThread to use the right thread group.Elliott Hughes2012-03-261-2/+2
| | | | Change-Id: I9818845c005563d894a571edc4f9be9862312380
* Added code to allow method tracing from command line.jeffhao2012-03-121-0/+6
| | | | | | | | 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
* Refactor the compilers out of libart.Elliott Hughes2012-03-091-4/+19
| | | | | | | This builds three separate compilers and dynamically links with the right one at runtime. Change-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b