Skip to content
  • Sean Callanan's avatar
    Optimized the way breakpoint conditions are evaluated. · 3dbf346e
    Sean Callanan authored
    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
    3dbf346e
Loading