hanchenye-llvm-project/lldb/source/Breakpoint
Sean Callanan 3dbf346ef3 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
2013-04-19 07:09:15 +00:00
..
Breakpoint.cpp <rdar://problem/13521159> 2013-03-27 23:08:40 +00:00
BreakpointID.cpp Patch from info from Daniel Malea that should fix the build on linux after fixes committed with revision 162860. 2012-09-04 14:55:50 +00:00
BreakpointIDList.cpp <rdar://problem/13069948> 2013-01-25 18:06:21 +00:00
BreakpointList.cpp <rdar://problem/13069948> 2013-01-25 18:06:21 +00:00
BreakpointLocation.cpp Optimized the way breakpoint conditions are evaluated. 2013-04-19 07:09:15 +00:00
BreakpointLocationCollection.cpp Add "target.process.stop-on-shared-library-events" setting, and make it work. 2013-01-26 02:19:28 +00:00
BreakpointLocationList.cpp <rdar://problem/13069948> 2013-01-25 18:06:21 +00:00
BreakpointOptions.cpp Optimized the way breakpoint conditions are evaluated. 2013-04-19 07:09:15 +00:00
BreakpointResolver.cpp
BreakpointResolverAddress.cpp <rdar://problem/13521159> 2013-03-27 23:08:40 +00:00
BreakpointResolverFileLine.cpp <rdar://problem/13521159> 2013-03-27 23:08:40 +00:00
BreakpointResolverFileRegex.cpp <rdar://problem/13521159> 2013-03-27 23:08:40 +00:00
BreakpointResolverName.cpp <rdar://problem/13506727> 2013-04-03 02:00:15 +00:00
BreakpointSite.cpp Add "target.process.stop-on-shared-library-events" setting, and make it work. 2013-01-26 02:19:28 +00:00
BreakpointSiteList.cpp Probably should return that value we took the trouble to compute. 2013-02-14 03:04:50 +00:00
CMakeLists.txt Adding CMake build system to LLDB. Some known issues remain: 2013-02-21 20:58:22 +00:00
Makefile
Stoppoint.cpp
StoppointCallbackContext.cpp Thread hardening part 3. Now lldb_private::Thread objects have std::weak_ptr 2012-02-21 00:09:25 +00:00
StoppointLocation.cpp Fixed some extra warnings that show up with the new clang. 2011-12-03 00:46:21 +00:00
Watchpoint.cpp <rdar://problem/13069948> 2013-01-25 18:06:21 +00:00
WatchpointList.cpp Adding events when watchpoints are set or changed. 2012-12-18 02:03:49 +00:00
WatchpointOptions.cpp Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++. 2013-04-18 18:10:51 +00:00