- 11 Feb, 2015 3 commits
-
-
tony.ys_liu authored
* commit '227dfb0a': Fix false alarm on thread suspend timeout
-
tony.ys_liu authored
Root cause: CLOCK_REALTIME will jump backward/forward when system time-of-day clock is changed. It implies now_abs_ts will jump a lot across end_abs_ts. Then, it makes a false alarm (process crash) on thread suspend timeout when doing ComputeRelativeTimeSpec. if (ComputeRelativeTimeSpec(&rel_ts, end_abs_ts, now_abs_ts)) { return false; // Timed out. } Solution: Use CLOCK_MONOTONIC instead Bug: 19296054 Bug: 19268145 (cherry picked from commit 071e48ec) Change-Id: I68fa5afda75e53373e836dd7779821aeb6f1bd46 (cherry picked from commit 7d9ad8bb)
-
Andreas Gampe authored
When deoptimizing, we might touch code that uses unloaded classes. Bug: 19290147 Change-Id: I5776f08ba366e9742336caba0d6af85f00629afc
-
- 06 Feb, 2015 1 commit
-
-
tony.ys_liu authored
Root cause: CLOCK_REALTIME will jump backward/forward when system time-of-day clock is changed. It implies now_abs_ts will jump a lot across end_abs_ts. Then, it makes a false alarm (process crash) on thread suspend timeout when doing ComputeRelativeTimeSpec. if (ComputeRelativeTimeSpec(&rel_ts, end_abs_ts, now_abs_ts)) { return false; // Timed out. } Solution: Use CLOCK_MONOTONIC instead Bug: 19296054 (cherry picked from commit 071e48ec) Change-Id: I68fa5afda75e53373e836dd7779821aeb6f1bd46
-
- 31 Jan, 2015 1 commit
-
-
Mathieu Chartier authored
Experimental fix. Bug: 19193521 Change-Id: I11571dd5a63852acdbad5d4291510542c2e4b18a
-
- 28 Jan, 2015 1 commit
-
-
Mathieu Chartier authored
For static invokes, we may dispatch to the static method in the superclass but resolve using the subclass. To prevent getting slow paths on each invoke, we force set the resolved method for the super class dex method index if we are in the same dex file. Added test. Bug: 19175856 (cherry picked from commit e4a91bbe) Change-Id: I26f8644a7f725f5c2dc2a94a8e9578f573792507
-
- 26 Jan, 2015 1 commit
-
-
Vladimir Marko authored
Bug: 19125146 (cherry picked from commit 00ca8473) Change-Id: I67184371597fdcc9d9186172c1cff4efd3ca3093
-
- 23 Jan, 2015 5 commits
-
-
Andreas Gampe authored
-
Jeff Hao authored
-
Andreas Gampe authored
Do not abort, as daemon threads may still be active. Bug: 17894429 Change-Id: I7c1d50ff8d4a5e150279e703a69c8f2f1d423e6b
-
Sebastien Hertz authored
When interpreting a deoptimized shadow frame, we may start with a pending exception thrown by a previous deoptimized shadow frame (from a previous invoke). Therefore, we need to handle it before executing any instruction, otherwise we execute incorrect code. Because we need the DEX pc of the throwing instruction to find a matching catch handler, we initialize deoptimized shadow frames with the current DEX pc at the time the stack is deoptimized. When we are about to interpret a deoptimized shadow frame, we need to update the shadow frame with the DEX pc of the next instruction to interpret. There are three cases: - if there is no pending exception, this is the instruction following the current one. - if there is a pending exception and we found a matching catch handler, this is the first instruction of this handler. - if there is a pending exception but there is no matching catch handler, we do not execute the deoptimized shadow frame and continue to its caller. The verifier now fails when a method starts with a move-exception instruction. Indeed we cannot start executing a method with a pending exception. Bug: 19057915 Bug: 19041195 Bug: 18607595 (cherry picked from commit 270a0e16) Change-Id: Ib4fdd0ad704b4f2369d229737c9cc77f559cea55
-
Jeff Hao authored
Bug: 19100762 Change-Id: Iefd4265cb7864cdaa12c1f9e44bfaa5aa4fb93ec
-
- 22 Jan, 2015 2 commits
-
-
Sebastien Hertz authored
Incorrect offset resulted in bad GC roots due to invalid Stack::GetThisObject for native methods. Bug: 19070497 Bug: 18785293 (cherry picked from commit e4b7c892) Change-Id: I10e144cffac00978e3c84d43a30caccd61559b27
-
Andreas Gampe authored
-
- 21 Jan, 2015 1 commit
-
-
Sebastien Hertz authored
-
- 20 Jan, 2015 1 commit
-
-
Andreas Gampe authored
Only print dedupe collisions in a debug build or on verbose logging. Bug: 19082662 (cherry picked from commit 8d295f8f) Change-Id: I08bd04a453d95b6dba6cf6955b5741cd97daf480
-
- 17 Jan, 2015 1 commit
-
-
Sebastien Hertz authored
When we set a breakpoint in a compiled method, we deoptimize it by changing its entrypoint so it is executed with the interpreter. However, methods in the image can be called with their direct code pointer, ignoring the updated entrypoint. In that case, the method is not executed with the interpreter and we miss the breakpoint. This CL avoids that situation by forcing a full deoptimization so everything runs with the interpreter. However, if the image has been compiled in PIC mode, we keep using selective deoptimization because direct code pointer is not used in this mode. Bug: 17965285 (cherry picked from commit 6963e443) Change-Id: I9bf738f89b9eb6d18733503216b376b8a1d181f5
-
- 16 Jan, 2015 1 commit
-
-
tony.ys_liu authored
Root Cause: If no one changes the seed, it will become infinite loop due to below condition (expected_value & LockWord::kHashMask) == 0 Solution: Changes the seed before entering the next loop Added test. Bug: 19046417 (cherry picked from commit 7380c317) Change-Id: I7d1c377dd1bda780681514b24d61ebc776bc80ab
-
- 15 Jan, 2015 4 commits
-
-
Mathieu Chartier authored
-
Mathieu Chartier authored
Refactored old root callback to use a new class called RootInfo. RootInfo contains all the relevant info related to the root associated with the callback. The MarkSweep::VerifyRoot function now uses this info to print the StackVisitor's described location if the GC root is of the type kRootJavaFrame. Some other cleanup. Example output: E/art (12167): Tried to mark 0x123 not contained by any spaces E/art (12167): Attempting see if it's a bad root E/art (12167): Found invalid root: 0x123 with type RootJavaFrame E/art (12167): Location=Visiting method 'void java.lang.Runtime.gc()' at dex PC 0xffffffff (native PC 0x0) vreg=0 Bug: 18588862 Change-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f
-
Vladimir Marko authored
-
Vladimir Marko authored
-
- 14 Jan, 2015 4 commits
-
-
Andreas Gampe authored
-
Andreas Gampe authored
Adds a simple check to class-loading when the embedded dex file in an oat file and the dex file on the class path where we found the class do not match. We require that the number of methods and fields do not change, as that will almost certainly mean that quickened and other compiled offsets are wrong now. This is a reasonably lightweight change, but we should investigate a full comparison including name and type of members. Bug: 17937814 Bug: 18708951 Change-Id: Icb9638bebd369ab23822817f4a97c8dd8625fea5
-
Vladimir Marko authored
If ldrd/strd isn't atomic, IPUT_WIDE uses ldrexd+strexd and we need to record the safepoint for the ldrexd rather than strexd. IGET_WIDE was simply missing the memory barrier. Bug: 18993519 (cherry picked from commit ee5e273e) Change-Id: I4e9270b994f413c1a047c1c4bb9cce5f29e42cb4
-
Nicolas Geoffray authored
(cherry picked from commit 5f16c883) Change-Id: I0b216fb868ed56d30103fe7843a7eb0169b0b28b
-
- 12 Jan, 2015 1 commit
-
-
Sebastien Hertz authored
Allows to resume multiple threads with a single VirtualMachine.Resume command. When some threads are suspended for an event by the debugger with a suspend count of 1 (other threads are running), a debugger can resume them all this way. Bug: 18924933 (cherry picked from commit f9d233da) Change-Id: I948c3b50d43693e86ae31e0928a33a467328583f
-
- 06 Jan, 2015 5 commits
-
-
Dmitriy Ivanov authored
-
Dmitriy Ivanov authored
Correctly handles the case when old_action == new_action Bug: 18740478 Change-Id: I97092318439e4f6f0a2513d4336496c72f8c5599
-
Brian Carlstrom authored
-
Brian Carlstrom authored
Bug: 18914409 (cherry picked from commit 98515951) Change-Id: If9b741ff8e09400a421e0a0ba1bc0d9ef13a9f99
-
Andreas Gampe authored
There was an infinite loop in the code generation for a divide by literal zero. Bug: 18887754 (cherry picked from commit cfe71e59) Change-Id: Ibd481918d3c6d7bc62fdd1a6807042009f561d95
-
- 22 Dec, 2014 2 commits
-
-
Andreas Gampe authored
-
Andreas Gampe authored
A nullptr is a valid input, as it is different from a null reference. Bug: 18820997 (cherry picked from commit a8763072) Change-Id: Ibda8907ba13b20d2055049492a356ffdf4ddc714
-
- 20 Dec, 2014 3 commits
-
-
Andreas Gampe authored
-
Andreas Gampe authored
Set the compiler filter when the zygote tells us that the app is in vmSafeMode. This ensures that secondary dex files will also be compiled interpret-only. Bug: 18812762 Change-Id: Idb61870beebe2eeb5b11554f95ea6a725c77f16a
-
Hiroshi Yamauchi authored
(cherrypick commit 94c41dfc) Bug: 18808732 Change-Id: Id65469c3deb70c9f750f89cf0e7606849b801a21
-
- 19 Dec, 2014 3 commits
-
-
Vladimir Marko authored
-
Andreas Gampe authored
Bug: 18596910 Change-Id: Ic06429f41840ce318cfaa837efecc69c2076440e
-
Vladimir Marko authored
On ARM, after emitting invoke-interface we didn't have any free temps to use for storing the result, so we would crash if the result was an unpromoted dalvik register with stack location too far from SP. Bug: 18769895 Change-Id: Ie6c131d68f1853a8317b305a22eab22faea80e90
-