summaryrefslogtreecommitdiffstats
path: root/runtime
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge "More LOW_4G optimizations" into mnc-devMathieu Chartier2015-06-081-9/+26
|\
| * More LOW_4G optimizationsMathieu Chartier2015-06-051-9/+26
| | | | | | | | | | | | | | | | | | | | Eagerly try to map at an address when it doesn't overlap with the ART known maps. Reduces time spent creating the heap on N9 from ~100ms to ~10ms. Bug: 20727525 Change-Id: Ie8982ca9d1f3158104b2b53b992c3a28841fc443
* | Merge "Revert "Revert "Turn off duplicate-classes checking""" into mnc-devAndreas Gampe2015-06-071-0/+7
|\ \
| * | Revert "Revert "Turn off duplicate-classes checking""Andreas Gampe2015-06-031-0/+7
| | | | | | | | | | | | | | | | | | | | | This reverts commit 18a1827a159f1b235f3fcc934f428059185f550e. Bug: 21333911 Change-Id: I8cb96efbf7151b238f3ee137a938b20ddfaf0ebc
* | | Use runFinalizationWithTimeout for native allocationsMathieu Chartier2015-06-055-17/+21
| |/ |/| | | | | | | | | | | | | Prevents deadlocks by not waiting longer than 250ms for finalizers to complete. Bug: 21544853 Change-Id: I57b2f7ae8b74185922eb3c15ba0ab71a4d2348aa
* | Add atrace calls to runtime start and heap createRichard Uhler2015-06-043-5/+38
| | | | | | | | | | | | Bug: 20727525 Change-Id: I91a74b793fb9eda8ed580244a6a5fd313ef2eb27
* | Add optimization for LOW_4G allocatorMathieu Chartier2015-06-041-0/+24
| | | | | | | | | | | | | | | | | | | | | | The optimization uses the maps_ field to skip over regions which we know wont be large enough for the request. Reduces time to create heap from 500-700ms to 100ms on N9. Bug: 20727525 Change-Id: I4fa92d58c2e135ba31a03ababff46669089bb542
* | Fix valgrind large_object_space_testMathieu Chartier2015-06-032-13/+23
|/ | | | | | Also some cleanup. Change-Id: I9c1a8093e6356f1b52e332009429b77fa5c1d448
* Add a way to determine if a large object is a zygote objectMathieu Chartier2015-06-035-36/+112
| | | | | | | Also fix a slight memory leak in LargeObjectMapSpace. Bug: 20674158 Change-Id: I2416df484e5b84a8c5cc0b5664c8cb102dc235f6
* Merge "ART: Refactor Thread::Init" into mnc-devAndreas Gampe2015-06-034-37/+83
|\
| * ART: Refactor Thread::InitAndreas Gampe2015-06-034-37/+83
| | | | | | | | | | | | | | | | | | | | This refactor allows the parent thread to allocate the JNIEnvExt for the child (with a fallback in place in Init). This allows to throw an OOME in CreateNativeThread instead of aborting in the child. Bug: 21291279 Change-Id: Iccc1a5c202999f5bfacec706d9833e53135ba2fa
* | Merge "Emit instance fields for java.lang.Object in hprof" into mnc-devMathieu Chartier2015-06-031-3/+3
|\ \ | |/ |/|
| * Emit instance fields for java.lang.Object in hprofMathieu Chartier2015-06-031-3/+3
| | | | | | | | | | | | | | Previously we omitted these fields. Bug: 20726205 Change-Id: I81c55919a4bd015bc0a4e7259a41a05dab534e11
* | ART: Prune FindArrayClass cache in image writerAndreas Gampe2015-06-032-3/+12
|/ | | | | | | | | | The ClassLinker cache speeds up FindArrayClass requests, but all entries are roots. It is possible that an entry is a non-image class when creating the boot image, artificially keeping the class around. Bug: 21596650 Change-Id: Ief9b439945d0e293a3cb5dcddfeb189b5e174f06
* Merge "Add a way to SuspendAll for a long duration" into mnc-devMathieu Chartier2015-06-033-9/+24
|\
| * Add a way to SuspendAll for a long durationMathieu Chartier2015-06-023-9/+24
| | | | | | | | | | | | | | | | Hprof uses this mode to not cause thread suspend timeouts if GC tries while the hprof dump is running. Bug: 21063989 Change-Id: Ic6304620afd1489719a7e0e4299f829c90fe27cc
* | Fix tracingMathieu Chartier2015-06-022-80/+109
| | | | | | | | | | | | | | | | | | Move back to 32 bit method IDs, add a bijective map for method IDs. Also some cleanup. Bug: 19264997 Change-Id: Icdd36591df53ff975d30b9000cfe67d3ae8c51d5
* | Add more info for attempting to delete non-JNI local referenceMathieu Chartier2015-06-021-1/+4
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we print the stack trace of the method which tried to remove the non-JNI local reference. Added test, example output: Attempt to remove non-JNI local reference, dumping thread "main" prio=5 tid=1 Runnable | group="main" sCount=0 dsCount=0 obj=0x12c2b400 self=0xf878af28 | sysTid=32662 nice=0 cgrp=default sched=0/0 handle=0xf73df700 | state=R schedstat=( 154297228 636505 121 ) utm=5 stm=10 core=11 HZ=100 | stack=0xff6f2000-0xff6f4000 stackSize=7MB | held mutexes= "mutator lock"(shared held) native: #00 pc 00455a7f /out/host/linux-x86/lib/libartd.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::ArtMethod*, void*)+191) native: #01 pc 00425d79 /out/host/linux-x86/lib/libartd.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+473) native: #02 pc 0028c555 /out/host/linux-x86/lib/libartd.so (art::IndirectReferenceTable::Remove(unsigned int, void*)+421) native: #03 pc 003319c8 /out/host/linux-x86/lib/libartd.so (art::JNI::DeleteLocalRef(_JNIEnv*, _jobject*)+56) native: #04 pc 0012db14 /out/host/linux-x86/lib/libartd.so (art::CheckJNI::DeleteRef(char const*, _JNIEnv*, _jobject*, art::IndirectRefKind)+292) native: #05 pc 00122176 /out/host/linux-x86/lib/libartd.so (art::CheckJNI::DeleteLocalRef(_JNIEnv*, _jobject*)+54) native: #06 pc 00005724 /out/host/linux-x86/lib/libarttest.so (Java_Main_removeLocalObject+36) native: #07 pc 00004d6e /tmp/test-32506/dalvik-cache/x86/tmp@mathieuc@test-32506@004-JniTest.jar@classes.dex (void Main.removeLocalObject(java.lang.Object)+130) at Main.removeLocalObject(Native method) at Main.testRemoveLocalObject(Main.java:118) at Main.main(Main.java:37) Bug: 20683465 Change-Id: I56b99c77ae7020cabf1aaeb1d5317b1d5ba940e5
* Update IMT for stale miranda methodsMathieu Chartier2015-06-021-0/+7
| | | | | | | Fixes occasional crash in dex2oat. Bug: 19264997 Change-Id: Icb1a323d8c44fa40309486e17aec56d2c2588e67
* Move mirror::ArtMethod to nativeMathieu Chartier2015-06-02188-3724/+4024
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
* Merge "ART: Fix wrong hard-failure handling in verifier" into mnc-devAndreas Gampe2015-06-011-11/+22
|\
| * ART: Fix wrong hard-failure handling in verifierAndreas Gampe2015-05-271-11/+22
| | | | | | | | | | | | | | | | | | Correctly return null for the method when a hard failure is encountered. Also improve logging for order failures. Add a regression test. Bug: 20224106 Change-Id: I6e08202617147378b204af169308b67fc69f92c6
* | ART: Add support for special handlers in sigchainlibAndreas Gampe2015-05-311-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for a special managed handler in sigchainlib that will be called as the first user handler. Use this support for native bridge v2. Extend test 115-native-bridge to test the functionality. Bug: 20217701 (cherry picked from commit 03c2cc89428914adf52229d6a3867eef6127911a) Change-Id: I78cc01fbdabe169154ff6b94c9f3ddb95b5c7448
* | Add unstarted runtime test for String.<init>.Jeff Hao2015-05-291-0/+29
| | | | | | | | | | Bug: 21173514 Change-Id: I369806644879fffc01bdc123d81a551e6eedf465
* | Fix double-exception in super-class method validation.Vladimir Marko2015-05-293-43/+129
| | | | | | | | | | | | | | | | Bug: 19333589 (cherry picked from commit d5e5a0e61b5b1fe0aaa7edc25a08adebd5a92353) Change-Id: If394a678ef6271c1119dac3f959773f23e789c56
* | Merge "ART: Add Mips o32 callee-save registers to SaveAll frame" into mnc-devAndreas Gampe2015-05-293-27/+44
|\ \
| * | ART: Add Mips o32 callee-save registers to SaveAll frameAndreas Gampe2015-05-283-27/+44
| |/ | | | | | | | | | | | | | | | | | | | | | | | | The floating point registers f20-f31 are callee-save in the Mips ABI. While the managed code does not touch them, they need to be saved when throwing an exception, so that they will be correctly restored and not smashed. Bug: 21266656 (cherry picked from commit a4e0e67611f54180694e0807d6599c1132269b6c) Change-Id: Ia96d52ce7fb41bf604da1797ce4d7a703e292415
* | Fix single-step in native threadSebastien Hertz2015-05-281-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | If we attempt to single-step in a thread that is not running Java code, there is no current method on the stack. So we need to check for null before trying to decode debug info. Bug: 21320157 (cherry picked from commit 52f5f93873ec244320e05b033243c5c7a3ae40e2) Change-Id: I961108071dd58a23f6327370b00c35a4cabe0aa7
* | Merge "Fix updating of JNI references for String.<init>." into mnc-devJeff Hao2015-05-284-4/+42
|\ \
| * | Fix updating of JNI references for String.<init>.Jeff Hao2015-05-274-4/+42
| | | | | | | | | | | | | | | | | | | | | | | | Was missing updates to globals and weak globals. Bug: 21288130 Bug: 21440428 Change-Id: I5f801f68b61f6b066b441b92ace367e6ba434789
* | | Reset libc targetSdkVersionDmitriy Ivanov2015-05-271-0/+9
|/ / | | | | | | | | | | | | | | | | | | This will let libc/linker know which sdk version is targeted by the app. This is needed to work around incorrect DT_NEEDED entries in old apps. Bug: http://b/21364029 Change-Id: I2f2907104106aac6c8831381ca171dc0302e6a9d (cherry picked from commit 15efde2badd80b8b124f8e1444165e4afbac17f0)
* | ART: Use kBadFprBase on mips64 and arm64.Vladimir Marko2015-05-272-2/+2
| | | | | | | | | | | | | | | | | | | | | | Fix incorrect usage of kBadGprBase to avoid misleading and ambiguous data in crash investigations. Bug: 21266656 (cherry picked from commit 5b09ea0af468d9232cf725ac7f7e73c145892c5c) Change-Id: Ia4fc60a5d61471c7a6c8fd0545a897ace43d90be
* | Fix mac build: cast fpr callee save addresses.Vladimir Marko2015-05-262-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | Bring back reinterpret_cast<>s removed by https://android-review.googlesource.com/151309 . They are needed for mac builds. Bug : 13925192 (cherry picked from commit 0eb42511405f3919572a480a009426dfb776cfb5) Change-Id: If6e0cdbadcc84a046abe03d7eca5cccd0a50d141
* | Fix mac build: include <sys/time.h> in time_utils.cc .Vladimir Marko2015-05-262-1/+4
| | | | | | | | | | | | | | | | | | | | Required for gettimeofday(). Not needed in utils.cc . Bug: 13925192 (cherry picked from commit ce39200492e2715a94d96fbd39fa42b46115c255) Change-Id: If40694965b84605819cac11a7937821aa74db82b
* | ART: Clean up arm64 kNumberOfXRegisters usage.Vladimir Marko2015-05-2692-830/+1354
|/ | | | | | | | | | | | | | | | | | | | | Avoid undefined behavior for arm64 stemming from 1u << 32 in loops with upper bound kNumberOfXRegisters. Create iterators for enumerating bits in an integer either from high to low or from low to high and use them for <arch>Context::FillCalleeSaves() on all architectures. Refactor runtime/utils.{h,cc} by moving all bit-fiddling functions to runtime/base/bit_utils.{h,cc} (together with the new bit iterators) and all time-related functions to runtime/base/time_utils.{h,cc}. Improve test coverage and fix some corner cases for the bit-fiddling functions. Bug: 13925192 (cherry picked from commit 80afd02024d20e60b197d3adfbb43cc303cf29e0) Change-Id: I905257a21de90b5860ebe1e39563758f721eab82
* JDWP: fix breakpoint on catch statementSebastien Hertz2015-05-261-0/+20
| | | | | | | | | | | | | | | | | | | Setting a breakpoint on a catch statement in the source actually installs the breakpoint on a DEX move-exception instruction. At this point, an exception is pending in the current thread. The issue is no exception must be pending in the current thread to report the breakpoint event. This is required to be able to call JNI functions to create JDWP ids. This CL fixes it by clearing the pending exception before reporting event and restore it after reporting the event. Bug: 21382373 (cherry picked from commit de48aa6708a3d5dacf7db3d64965e23261fb15d3) Change-Id: Ie107eb47b6f2559c4fa5297f4033e07baad06f38
* Merge "Fix for potential moving GC bugs around proxy class." into mnc-devHiroshi Yamauchi2015-05-224-67/+81
|\
| * Fix for potential moving GC bugs around proxy class.Hiroshi Yamauchi2015-05-224-67/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Handlerize proxy_class which is live across multiple allocation points in ClassLinker::CreateProxyClass(). - In ClassLinker::CreateProxyClass(), insert a proxy class into the class table before creating ArtFields for it (and update it later in LinkClass()) because the field roots (ArtField::declaring_class_) won't be updated by GC unless the class is in the class table. If GC happens before they are updated by FixupTemporaryDeclaringClass() from LinkClass(), FixupTemporaryDeclaringClass() may not update the field roots correctly because the old class may already be moved but the fields roots may not. Reduce a window of time where the fields roots could be stale. - In ClassLinker::LinkClass(), directly wrap a new class in a handle to avoid a window of time where new_class may be potentially stale. - Print more diagnostic info about the holder of the field upon a mark sweep invalid ref crash. - Add an additional sanity check in Field::GetArtField(). Bug: 20557050 Change-Id: I9ad32d304922da96b7e1fad262d97de21cbac776
* | Merge "ART: Sometimes even empty methods take forever to verify" into mnc-devAndreas Gampe2015-05-211-0/+4
|\ \
| * | ART: Sometimes even empty methods take forever to verifyAndreas Gampe2015-05-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases of very high load and/or bad scheduling, the verifier may take longer than the threshold duration to verify an empty method. The LargeMethod detection needs to accept that the code_item may be null. Bug: 21364300 Change-Id: Iceff3e4688cc1a5fe7a836f7a9bf6c49a392b618
* | | Merge "Revert "DO NOT MERGE ART: Turn off duplicate-classes checking"" into ↵Andreas Gampe2015-05-211-7/+0
|\ \ \ | |/ / |/| | | | | mnc-dev
| * | Revert "DO NOT MERGE ART: Turn off duplicate-classes checking"Andreas Gampe2015-05-211-7/+0
| | | | | | | | | | | | | | | | | | | | | This reverts commit aafcfca5fe545365ef377fff2897b8a908f03e71. Bug: 21333911 Change-Id: Ibbc6b1be8bebc1d0ab9c5955b34eb89f40577baa
* | | ART: Refactor UnstartedRuntime for testingAndreas Gampe2015-05-217-215/+504
| |/ |/| | | | | | | | | | | | | | | | | | | | | Expose the UnstartedRuntime implementation functions as private static methods of a class. Add a gtest that can invoke these functions. Add sample tests for String and Memory. Bug: 21173514 (cherry picked from commit 799681b176ad25437ce2849639f54f610dcbf684) Change-Id: Ib5bde6347fafaf7607c642542ea7d5938ff4b1df
* | Merge "DO NOT MERGE ART: Turn off duplicate-classes checking" into mnc-devAndreas Gampe2015-05-211-0/+7
|\|
| * DO NOT MERGE ART: Turn off duplicate-classes checkingAndreas Gampe2015-05-201-0/+7
| | | | | | | | | | Bug: 21333911 Change-Id: I9832526a6d2996aadb459e3ec0930cbaf151478a
* | Merge "Intercept JNI invocation of String.<init> methods." into mnc-devJeff Hao2015-05-219-86/+152
|\ \
| * | Intercept JNI invocation of String.<init> methods.Jeff Hao2015-05-209-86/+152
| |/ | | | | | | | | | | | | | | | | | | | | libmono uses JNI AllocObject and CallNonvirtualVoidMethod to create and initialize a string instead of using the recommended NewObject. This change adds an intercept to change the String.<init> call to a StringFactory call instead. Then, it uses the object id of the original string object referrer and maps it to the result of the StringFactory. Bug: 21288130 Change-Id: Ib4db402c178bc37188d5c5faf30b6e4fdc747b17
* | Merge "ART: Fix RegisterNative order" into mnc-devAndreas Gampe2015-05-211-3/+50
|\ \
| * | ART: Fix RegisterNative orderAndreas Gampe2015-05-201-3/+50
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First check for both direct and virtual methods in the current class, then move to the parent. Optimize registration by checking first whether the current method under test is native. This slows down registering implementations in parent classes. Add a CheckJNI warning for this. Add a run-test to check the behavior. Fix host comparison testing. Bug: 19569721 (cherry picked from commit 3f1dc56914177993b1b018bf21ce7d39d7feecda) Change-Id: I61e77117d96310632aad123d7f1279d0f834dc99
* | Merge "Fix a cts crash around proxy class fields." into mnc-devHiroshi Yamauchi2015-05-203-10/+80
|\ \ | |/ |/|