aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/MachOObjectFile.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2013-04-19 07:09:15 +0000
committerSean Callanan <scallanan@apple.com>2013-04-19 07:09:15 +0000
commit3dbf346ef358004c213774c7bb83e47687ced102 (patch)
treed9054f8c56042c3c843cd3d8557154b167e166d2 /llvm/lib/Object/MachOObjectFile.cpp
parentcf5e5bade1638d5f2e2f8c1f808a5150f4208ba2 (diff)
downloadllvm-3dbf346ef358004c213774c7bb83e47687ced102.zip
llvm-3dbf346ef358004c213774c7bb83e47687ced102.tar.gz
llvm-3dbf346ef358004c213774c7bb83e47687ced102.tar.bz2
Optimized the way breakpoint conditions are evaluated.
Previously, the options for a breakopint or its locations stored only the text of the breakpoint condition (ironically, they used ClangUserExpression as a glorified std::string) and, each time the condition had to be evaluated in the StopInfo code, the expression parser would be invoked via a static method to parse and then execute the expression. I made several changes here: - Each breakpoint location now has its own ClangUserExpressionSP containing a version of the breakpoint expression compiled for that exact location. - Whenever the breakpoint is hit, the breakpoint condition expression is simply re-run to determine whether to stop. - If the process changes (e.g., it's re-run) or the source code of the expression changes (we use a hash so as to avoid doing string comparisons) the ClangUserExpressionSP is re-generated. This should improve performance of breakpoint conditions significantly, and takes advantage of the recent expression re-use work. llvm-svn: 179838
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions