summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Fix a bug in the handling of moves in register allocator."Nicolas Geoffray2014-09-224-0/+75
|\
| * Fix a bug in the handling of moves in register allocator.Nicolas Geoffray2014-09-224-0/+75
| | | | | | | | Change-Id: Iaf1f34b0bece4f252290a97c3b73cc06e365985a
* | Merge "Optimize JDWP stack local values access"Sebastien Hertz2014-09-223-316/+318
|\ \
| * | Optimize JDWP stack local values accessSebastien Hertz2014-09-223-316/+318
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The StackFrame.GetValues and StackFrame.SetValues JDWP commands can refer to multiple variables at the same time in a given frame. However we used to walk the stack until getting to the requested frame for each variable. Now, we walk the stack only once until getting to the frame so the context is initialized. Then we read/write value for each variable from this context. Bug: 17343501 Bug: 15680615 Change-Id: I2a4128f29a3c5856b994e280037c0a09eb48c5c8
* | | Merge "Do not hold breakpoint lock when running the verifier"Sebastien Hertz2014-09-221-21/+34
|\ \ \ | |_|/ |/| |
| * | Do not hold breakpoint lock when running the verifierSebastien Hertz2014-09-221-21/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When setting a breakpoint, we need to know whether the method may be inlined. We run the method verifier but that may cause thread suspension. Therefore we must not hold any lock at this time. The issue is we do hold the breakpoint lock so we fails a check in debug mode. This CL ensures we don't hold the breakpoint lock when running the method verifier to detect inlining. Bug: 17562442 Change-Id: Ia6b128fc8917ce00025b68ae4ac62fb2a1f154e6
* | | Merge "Add adb root to test-art-target, required by adb remount."Nicolas Geoffray2014-09-221-21/+24
|\ \ \
| * | | Add adb root to test-art-target, required by adb remount.Nicolas Geoffray2014-09-191-21/+24
| | | | | | | | | | | | | | | | | | | | Also replace our sleep 3 with wait-for-device. Change-Id: Icb53c4ad0e8d5c6e93b9610eb7e9530242720581
* | | | Merge "Fix JDWP crash when reporting exception"Sebastien Hertz2014-09-222-6/+25
|\ \ \ \
| * | | | Fix JDWP crash when reporting exceptionSebastien Hertz2014-09-222-6/+25
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exception's throw location may be null so we need to handle that case. Also fixes a memset issue. Bug: 17571297 (cherry picked from commit bbb63897d7f2d99219cb50721fe530521e08ddff) Change-Id: Iedebb58f9460c5f04913c269200e51161bda1ba9
* | | | Merge "Dump kernel/native stacks of pure native threads."Christopher Ferris2014-09-211-0/+7
|\ \ \ \
| * | | | Dump kernel/native stacks of pure native threads.Christopher Ferris2014-09-211-0/+7
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: 16463406 (cherry picked from commit 7da37cca5a5f71a0cd2442b2a119f76fa62e84b5) Change-Id: I22a26d4ec4e3048ddcfd668eee4fccd8b2b3b727
* | | | Merge "Fix sput-wide verification flag."Ian Rogers2014-09-201-1/+1
|\ \ \ \
| * | | | Fix sput-wide verification flag.Logan Chien2014-09-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vA register for sput-wide is a wide register. Thus, the verification flag should be kVerifyRegAWide instead of kVerifyRegA. Without this change, the invalid Dex bytecode won't be rejected by VerifyInstruction(). As the result, the DCHECK_LT() in register_line-inl.h will abort the program. Change-Id: I24b746d8a85ddaf811d9aebed12a3dd9f97d755f
* | | | | Merge "ART: Address three issues with x86 assembler before enabling load ↵Ian Rogers2014-09-192-16/+17
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | store elimination."
| * | | | | ART: Address three issues with x86 assembler before enabling load store ↵Haitao Feng2014-09-112-16/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | elimination. 1) Remove the IS_LOAD attribute from LEA instructions. 2) Change the attribute of fp stack instructions from IS_UNARY_OP to IS_BINARY_OP as operands[1] will be used to compute GetInstructionOffset. 3) Add IS_MOVE attribute for general register move instructions. Change-Id: I7054df47956f2acecf579ff7acfde385fd8ac194 Signed-off-by: Haitao Feng <haitao.feng@intel.com>
* | | | | | Merge "ART: Allow oatdump to verify oat file"Andreas Gampe2014-09-191-124/+243
|\ \ \ \ \ \
| * | | | | | ART: Allow oatdump to verify oat fileAndreas Gampe2014-09-181-124/+243
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring up a runtime for oatdump of an oat file if the boot image option is given. This allows to use the verifier on any oat file. Some refactoring. Change-Id: Ifa895f22b648c7064fb0837fb36a0118422a3462
* | | | | | | Merge "ART: Fix host test failure (assembler_thumb_test)."Ian Rogers2014-09-191-0/+13
|\ \ \ \ \ \ \
| * | | | | | | ART: Fix host test failure (assembler_thumb_test).Tong Shen2014-09-051-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Check if "bin/{as,objcopy,objdump}" exists in the tools dir we found in "prebuilts/gcc/linux-x86/arm/". Now there's an empty tree in platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9, causing assembler_thumb_test to fail. Change-Id: If6ba4f778b79f95239aa85e54816ab168e7d8940
* | | | | | | | Merge "ART: Overflow of bound check in ArrayCopy intrinsic"Ian Rogers2014-09-191-8/+26
|\ \ \ \ \ \ \ \
| * | | | | | | | ART: Overflow of bound check in ArrayCopy intrinsicavignate2014-09-171-8/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | System.arraycopy method is implemented as intrinsic on x86. It has bound check which has a bug to overflow in certain conditions when summ of array offset and number elements to be copied are more than MAX_INT. For the methods like CarArrayBuffer.get it means no OutOfBound exception to be thrown. The proposed solution fixed that. Change-Id: Id16a26163a61d934b862a8729a52ca5c1a56caec Signed-off-by: avignate <aleksey.v.ignatenko@intel.com>
* | | | | | | | | Merge "Slow path should break def tracking"Bill Buzbee2014-09-191-0/+1
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | Slow path should break def trackingSerguei Katkov2014-09-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Slow path usually results in invocation of runtime. Runtime should be ensured that all VR on stack are up to date. To do this we reset def tracking system at the moment of adding slow path and as a result actual writes to stack for all VRs will not be optimized away. The decision is conservative to be safe however probably not all runtime calls can potentially require VRs to be on stack. In this case we will need insert reset def tracking in all places where dangerous slow path is used. Change-Id: I2cb7698a12c17354060fdbb944e1da1fb922c23b Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
* | | | | | | | | | Merge "AddIntrinsicSlowPath with resume requires clobbering"Bill Buzbee2014-09-194-1/+6
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | AddIntrinsicSlowPath with resume requires clobberingSerguei Katkov2014-09-114-1/+6
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AddIntrinsicSlowPath with resume results in a call. So all temps must be clobbered at the point where AddIntrinsicSlowPath returns. Change-Id: If9eb887e295ff5e59920f4da1cef63258ad490b0 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
* | | | | | | | | | Merge "ART: Fix instruction flags of kMirOpCheck and kMirOpCheckPart2"Ian Rogers2014-09-191-2/+8
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | ART: Fix instruction flags of kMirOpCheck and kMirOpCheckPart2Udayan Banerji2014-09-181-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since they are just wrappers for correct modeling, it was believed that these instructions do not need flags. However, the flags are needed to correctly reflect their semantic behavior in a manner consistent with all other instructions. Also, missing flags for new extended instructions have also been added. Change-Id: I2282eebf4b9c82b82e26722914645fcc0be49c82 Signed-off-by: Udayan Banerji <udayan.banerji@intel.com> Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
* | | | | | | | | | | Merge "X86 QBE: Make some X86 routines virtual"Ian Rogers2014-09-192-11/+18
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | X86 QBE: Make some X86 routines virtualMark Mendell2014-09-172-11/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add virtual in one place, and move some code into a virtual routine. This allows subclassing and overriding for my purposes. Change-Id: Ie415df943b17b56ad1f057513b2df2a31801a72f Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
* | | | | | | | | | | | Merge "First optimization in new compiler: simple GVN."Nicolas Geoffray2014-09-199-2/+785
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | First optimization in new compiler: simple GVN.Nicolas Geoffray2014-09-199-2/+785
|/ / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ibe0efa4e84fd020a53ded310a92e0b4363f91b12
* | | | | | | | | | | | Merge "Update comment about disabling vmap dump."Nicolas Geoffray2014-09-191-4/+7
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | Update comment about disabling vmap dump.Nicolas Geoffray2014-09-171-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: If5d09b0d5cb9a8039b0037e6eedaae6785b1ded2
* | | | | | | | | | | | | Merge "ART: Only allow the zygote to create the global boot image"Andreas Gampe2014-09-198-23/+64
|\ \ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|_|_|/ / / |/| | | | | | | | | | | |
| * | | | | | | | | | | | ART: Only allow the zygote to create the global boot imageAndreas Gampe2014-09-188-23/+64
|/ / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not allow arbitrary processes, even when root, to write the boot image in /data/dalvik-cache. Bug: 17478752, 17510489, 17439961 Change-Id: Iba2b74be6d0752f4221f4ff5ee295b45a34cb2e1 (cherry picked from commit 33c36d4f22ab6a5e61eb47b654deaf647c34e49c)
* | | | | | | | | | | | Merge "Move spammy logs to JDWP verbose mode"Sebastien Hertz2014-09-192-7/+11
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | Move spammy logs to JDWP verbose modeSebastien Hertz2014-09-182-7/+11
| | |_|_|_|_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are spammed by warning messages when debugging, especially each time we suspend/resume all threads (to update instrumentation or collect monitor info). It's common to get into the cases where these warnings are logged so they shouldn't be warning but debug messages. This CL moves these LOG(WARNING) to VLOG(jdwp) to not disturb developers when debugging their app (especially when looking for specific messages in logcat). We keep them in JDWP verbose mode because they help knowing when we initiate these sequences of "suspend/resume all threads". Also adds debug suspend count in the log message for more context. Bug: 17524544 Bug: 17170697 Change-Id: Ic87985ac6913151d15fd89849e41bde61092c3dd
* | | | | | | | | | | Merge "Don't call dlsym from signal context in signal chain"Brian Carlstrom2014-09-183-21/+69
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | Don't call dlsym from signal context in signal chainDave Allison2014-09-163-21/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is dangerous to call dlsym from within a signal context since it takes a lock and can lead to a mutex reentry attempt if timing is bad. This change adds an initialization function to the signal chain that calls dlsym for sigaction and sigprocmask from outside the signal context (from Runtime::Init()). The results are cached in a static variable and used from within the signal context if necessary. However, tests don't necessarily call Runtime::Init() so we also need to deal with the case where the signal chain is not initialized and perform a lazy initialization from inside sigaction or sigprocmask. This is always outside a signal context since we have not initialized the runtime. Bug: 17498571 Change-Id: I59eebfc67cc91c6f1d781a73e5d432ca5269ee48
* | | | | | | | | | | | Merge "Initiate a constant propagation pass in the optimizing compiler."Roland Levillain2014-09-187-0/+637
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | Initiate a constant propagation pass in the optimizing compiler.Roland Levillain2014-09-187-0/+637
| | |_|_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Perform constant folding on int and long additions and subtractions in the optimizing compiler. - Apply constant folding to conditions and comparisons. Change-Id: Ic88783a3c975fda777c74c531e257fa777be42eb
* | | | | | | | | | | | Merge "Fix a lint error and update a test after the phi fix."Nicolas Geoffray2014-09-182-7/+7
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | Fix a lint error and update a test after the phi fix.Nicolas Geoffray2014-09-182-7/+7
|/ / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I6e9ab2a8300c2493a8d3e93ab4ced3d7c9552fc5
* | | | | | | | | | | | Merge "Ensure the first predecessor of a loop is the pre header."Nicolas Geoffray2014-09-183-1/+20
|\ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |
| * | | | | | | | | | | Ensure the first predecessor of a loop is the pre header.Nicolas Geoffray2014-09-173-1/+20
| | |_|/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note that the check in ssa_phi_elimination.cc was very defensive: it does not affect the outcome of the algorithm whether the loop phi takes itself as the first input. It makes things consistent to always have the pre header as first input. Change-Id: Ic86248c1f38af67f7432782f6deefae1f4bf1ab6
* | | | | | | | | | | Merge "Update JDWP event filtering to avoid useless ids"Sebastien Hertz2014-09-184-256/+400
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | Update JDWP event filtering to avoid useless idsSebastien Hertz2014-09-184-256/+400
| | |_|/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To reduce the number of JDWP ids in the debugger, we update the event filtering support to work with runtime objects (Thread, Class, Object, ...) instead of JDWP ids (ThreadId, RefTypeId, ObjectId, ...). We used to create useless JDWP ids for events even if they were not reported because of event filtering (thread only, class only, instance only, ...). Now we only create JDWP ids when we know we're going to report an event. Bug: 17343664 (cherry picked from commit d539167b7f11136fe570a77aff2ee4935842007a) Change-Id: I8619e219733fc2fa3569f473b7bd8d9af4181f2b
* | | | | | | | | | | Merge "It can be that no method has been compiled."Nicolas Geoffray2014-09-181-5/+9
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | It can be that no method has been compiled.Nicolas Geoffray2014-09-181-5/+9
| |/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Therefore do not divide by 0, but log it. Change-Id: Iee7760ab7f31c73e90d62387e5fb6fb7aa2c56e2