diff options
author | Sean Callanan <scallanan@apple.com> | 2013-04-19 07:09:15 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2013-04-19 07:09:15 +0000 |
commit | 3dbf346ef358004c213774c7bb83e47687ced102 (patch) | |
tree | d9054f8c56042c3c843cd3d8557154b167e166d2 /llvm/lib/Object/MachOObjectFile.cpp | |
parent | cf5e5bade1638d5f2e2f8c1f808a5150f4208ba2 (diff) | |
download | llvm-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