Skip to content
  1. Oct 21, 2011
  2. Oct 20, 2011
  3. Oct 18, 2011
  4. Oct 14, 2011
    • Sean Callanan's avatar
      Improved expression logging. Now all calls to · 7dd98126
      Sean Callanan authored
      FindExternalVisibleDecls and FindExternalLexicalDecls
      are marked and given unique IDs, so that all logging
      done as part of their execution can be traced back to
      the proper call.
      
      Also there was some logging that really wasn't helpful
      in most cases so I disabled it unless verbose logging
      (log enable -v lldb expr) is enabled.
      
      llvm-svn: 141987
      7dd98126
    • Sean Callanan's avatar
      Improved logging for FindExternalLexicalDecls to · 187de461
      Sean Callanan authored
      make it easier to track down which members belong
      to which structs (and which call to 
      FindExternalLexicalDecls is doing the reporting).
      
      llvm-svn: 141930
      187de461
    • Sean Callanan's avatar
      Cleaned up a few functions that never get used. · c6bba3e4
      Sean Callanan authored
      Specifically, the expression parser used to use
      functions attached to SymbolContext to do lookups,
      but nowadays it searches a ModuleList or Module
      directly instead.  These functions had no
      remaining clients so I removed them to prevent
      bit rot.
      
      I also removed a stray callback function from
      ClangExpressionDeclMap.
      
      llvm-svn: 141899
      c6bba3e4
  5. Oct 13, 2011
    • Sean Callanan's avatar
      Enabled the namespace-specific search functionality, · ebe6067a
      Sean Callanan authored
      which had previously been commented out while I tested
      it.  It's not fully working yet, but it doesn't break
      our testsuite and it's an important piece of
      functionality.
      
      Also added some logging to SymbolFileDWARF to help
      diagnose entities that are found in a symbol file,
      but do not reside in the expected namespace.
      
      llvm-svn: 141894
      ebe6067a
    • Sean Callanan's avatar
      Moved the list of found namespaces into the search · c41e68b1
      Sean Callanan authored
      context object.  Having it populated and registered
      within a single FindExternalVisibleDecls call worked
      fine when there was only one call (i.e., when we were
      just looking in the global namespace).  
      
      However, now FindExternalVisibleDecls is called for
      nested namespaces as well, which means that it is
      called not once but many times (once per module in
      which the parent namespace appears).  This means that
      the namespace mapping is built up across many calls
      to the inferior FindExternalVisibleDecls, so I moved
      it into a data structure (the search context) that is
      shared by all calls.
      
      I also added some logging to make it easier to see
      what is happening during a namespace search, and 
      cleaned up some existing logging.
      
      llvm-svn: 141888
      c41e68b1
    • Sean Callanan's avatar
      Removed namespace qualification from symbol queries. · b96ff33b
      Sean Callanan authored
      llvm-svn: 141866
      b96ff33b
    • Sean Callanan's avatar
      Completed the glue that passes a ClangNamespaceDecl * · 213fdb8b
      Sean Callanan authored
      down through Module and SymbolVendor into SymbolFile.
      Added checks to SymbolFileDWARF that restrict symbol
      searches when a namespace is passed in.
      
      llvm-svn: 141847
      213fdb8b
    • Sean Callanan's avatar
      Now that we know the values are going to stick around, · 8e5b8b96
      Sean Callanan authored
      we don't need to look them up again when materializing.
      
      Switched over the materialization mechanism (for JIT
      expressions) and the lookup mechanism (for interpreted
      expressions) to use the VariableSP/Symbol that were
      found during parsing.
      
      llvm-svn: 141839
      8e5b8b96
    • Sean Callanan's avatar
      Extended the lifetime of Clang parser objects to the · e3aef1d0
      Sean Callanan authored
      lifetime of ClangExpressionDeclMap.  This allows
      ClangExpressionVariables found during parsing to be
      queried for their containing namespaces during
      expression execution.
      
      Other clients (like ClangFunction) explicitly delete
      this state, so they should not result in any memory
      leaks.
      
      llvm-svn: 141821
      e3aef1d0
  6. Oct 12, 2011
  7. Oct 08, 2011
  8. Sep 26, 2011
    • Sean Callanan's avatar
      Factored out handling of the source code for an · 9bc83841
      Sean Callanan authored
      expression into a separate class.  This class
      encapsulates wrapping the function as needed.  I
      am also moving from using booleans to indicate
      what the expression's language should be to using
      lldb::LanguageType instead.
      
      llvm-svn: 140545
      9bc83841
  9. Sep 22, 2011
    • Greg Clayton's avatar
      Converted the lldb_private::Process over to use the intrusive · c14ee32d
      Greg Clayton authored
      shared pointers.
      
      Changed the ExecutionContext over to use shared pointers for
      the target, process, thread and frame since these objects can
      easily go away at any time and any object that was holding onto
      an ExecutionContext was running the risk of using a bad object.
      
      Now that the shared pointers for target, process, thread and
      frame are just a single pointer (they all use the instrusive
      shared pointers) the execution context is much safer and still
      the same size. 
      
      Made the shared pointers in the the ExecutionContext class protected
      and made accessors for all of the various ways to get at the pointers,
      references, and shared pointers.
      
      llvm-svn: 140298
      c14ee32d
    • Sean Callanan's avatar
      Fixed a problem with the IR interpreter that caused · 0886e565
      Sean Callanan authored
      it to generate result variables that were not bound
      to their underlying data.  This allowed the SBValue
      class to use the interpreter (if possible).
      
      Also made sure that any result variables that point
      to stack allocations in the stack frame of the
      interpreted expressions do not get live data.
      
      llvm-svn: 140285
      0886e565
  10. Sep 21, 2011
  11. Sep 20, 2011
  12. Sep 17, 2011
    • Greg Clayton's avatar
      Adopt the intrusive pointers in: · 4d122c40
      Greg Clayton authored
      lldb_private::Breakpoint
      lldb_private::BreakpointLocations
      lldb_private::BreakpointSite
      lldb_private::Debugger
      lldb_private::StackFrame
      lldb_private::Thread
      lldb_private::Target
      
      llvm-svn: 139985
      4d122c40
    • Greg Clayton's avatar
      Convert lldb::ModuleSP to use an instrusive ref counted pointer. · 747bcb03
      Greg Clayton authored
      We had some cases where getting the shared pointer for a module from
      the global module list was causing a performance issue when debugging
      with DWARF in .o files. Now that the module uses intrusive ref counts,
      we can easily convert any pointer to a shared pointer.
      
      llvm-svn: 139983
      747bcb03
  13. Sep 15, 2011
    • Sean Callanan's avatar
      Fixed a problem where the symbol context was not · c2ff2744
      Sean Callanan authored
      being initialized properly in the absence of a
      process.
      
      llvm-svn: 139823
      c2ff2744
    • Sean Callanan's avatar
      Fixed a problem where the expression parser would · 64fe1994
      Sean Callanan authored
      attempt to obtain information from the process even
      in cases where the process isn't available.
      
      llvm-svn: 139803
      64fe1994
    • Sean Callanan's avatar
      This patch modifies the expression parser to allow it · 3bfdaa2a
      Sean Callanan authored
      to execute expressions even in the absence of a process.
      This allows expressions to run in situations where the
      target cannot run -- e.g., to perform calculations based
      on type information, or to inspect a binary's static
      data.
      
      This modification touches the following files:
      
      lldb-private-enumerations.h
        Introduce a new enum specifying the policy for
        processing an expression.  Some expressions should
        always be JITted, for example if they are functions
        that will be used over and over again.  Some
        expressions should always be interpreted, for
        example if the target is unsafe to run.  For most,
        it is acceptable to JIT them, but interpretation
        is preferable when possible.
      
      Target.[h,cpp]
        Have EvaluateExpression now accept the new enum.
      
      ClangExpressionDeclMap.[cpp,h]
        Add support for the IR interpreter and also make
        the ClangExpressionDeclMap more robust in the 
        absence of a process.
      
      ClangFunction.[cpp,h]
        Add support for the new enum.
      
      IRInterpreter.[cpp,h]
        New implementation.
      
      ClangUserExpression.[cpp,h]
        Add support for the new enum, and for running 
        expressions in the absence of a process.
      
      ClangExpression.h
        Remove references to the old DWARF-based method
        of evaluating expressions, because it has been
        superseded for now.
      
      ClangUtilityFunction.[cpp,h]
        Add support for the new enum.
      
      ClangExpressionParser.[cpp,h]
        Add support for the new enum, remove references
        to DWARF, and add support for checking whether
        the expression could be evaluated statically.
      
      IRForTarget.[h,cpp]
        Add support for the new enum, and add utility
        functions to support the interpreter.
      
      IRToDWARF.cpp
        Removed
      
      CommandObjectExpression.cpp
        Remove references to the obsolete -i option.
      
      Process.cpp 
        Modify calls to ClangUserExpression::Evaluate
        to pass the correct enum (for dlopen/dlclose)
      
      SBValue.cpp
        Add support for the new enum.
      
      SBFrame.cpp
        Add support for he new enum.
      
      BreakpointOptions.cpp
        Add support for the new enum.
      
      llvm-svn: 139772
      3bfdaa2a
  14. Sep 13, 2011
    • Greg Clayton's avatar
      Fixed some incorrect return values. · cce8671f
      Greg Clayton authored
      llvm-svn: 139582
      cce8671f
    • Greg Clayton's avatar
      Huge memory and performance improvements in the DWARF parser. · d4a2b370
      Greg Clayton authored
      Address ranges are now split up into two different tables: 
      - one in DWARFDebugInfo that is compile unit specific
      - one in each DWARFCompileUnit that has exact function DIE offsets
      
      This helps keep the size of the aranges down since the main table will get
      uniqued and sorted and have consecutive ranges merged. We then only parse the
      compile unit one on demand once we have determined that a compile unit contains
      the address in question. We also now use the .debug_aranges section if there 
      is one instead of always indexing the DWARF manually.
      
      NameToDIE now uses a UniqueCStringMap<dw_offset> map instead of a std::map.
      std::map is very bulky as each node has 3 pointers and the key and value types.
      This gets our NameToDIE entry down to 12 bytes each instead of 48 which saves
      us a lot of memory when we have very large DWARF.
      
      DWARFDebugAranges now has a smaller footprint for each range it contains to 
      save on memory.
      
      llvm-svn: 139557
      d4a2b370
  15. Sep 02, 2011
  16. Aug 25, 2011
Loading