文件最后提交记录最后更新时间
[CMake] Add dependency on Mips target if it is available The Mips plugins conditionally link the Mips backend, so we need to conditionally add the target as a dependency. This resolves a bot failure from r294515. http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/4606/steps/build%20android/logs/stdio llvm-svn: 2945219 年前
[lldb] Use SmallVector for handling register data Previously lldb was using arrays of size kMaxRegisterByteSize to handle registers. This was set to 256 because the largest possible register we support is Arm's scalable vectors (SVE) which can be up to 256 bytes long. This means for most operations aside from SVE, we're wasting 192 bytes of it. Which is ok given that we don't have to pay the cost of a heap alocation and 256 bytes isn't all that much overall. With the introduction of the Arm Scalable Matrix extension there is a new array storage register, ZA. This register is essentially a square made up of SVE vectors. Therefore ZA could be up to 64kb in size. https://developer.arm.com/documentation/ddi0616/latest/ "The Effective Streaming SVE vector length, SVL, is a power of two in the range 128 to 2048 bits inclusive." "The ZA storage is architectural register state consisting of a two-dimensional ZA array of [SVLB × SVLB] bytes." 99% of operations will never touch ZA and making every stack frame 64kb+ just for that slim chance is a bad idea. Instead I'm switching register handling to use SmallVector with a stack allocation size of kTypicalRegisterByteSize. kMaxRegisterByteSize will be used in places where we can't predict the size of register we're reading (in the GDB remote client). The result is that the 99% of small register operations can use the stack as before and the actual ZA operations will move to the heap as needed. I tested this by first working out -wframe-larger-than values for all the libraries using the arrays previously. With this change I was able to increase kMaxRegisterByteSize to 256*256 without hitting those limits. With the exception of the GDB server which needs to use a max size buffer. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D1536262 年前
[lldb][NFCI] TestEmulation should take a Stream ref Instruction::TestEmulation takes a Stream * and checks it for validity. However, this is unnecessary as we can always ensure that we never pass nullptr for the Stream argument. The only use of Instruction::TestEmulation currently is SBInstruction::TestEmulation which gets the Stream from an SBStream, and SBStream::ref can return a Stream & guaranteed. Differential Revision: https://reviews.llvm.org/D1547572 年前