Skip to content
  1. Jan 27, 2011
  2. Jan 22, 2011
  3. Jan 13, 2011
    • Sean Callanan's avatar
      Implemented a major overhaul of the way variables are handled · 92adcac9
      Sean Callanan authored
      by LLDB.  Instead of being materialized into the input structure
      passed to the expression, variables are left in place and pointers
      to them are materialzied into the structure.  Variables not resident
      in memory (notably, registers) get temporary memory regions allocated
      for them.
      
      Persistent variables are the most complex part of this, because they
      are made in various ways and there are different expectations about
      their lifetime.  Persistent variables now have flags indicating their
      status and what the expectations for longevity are.  They can be
      marked as residing in target memory permanently -- this is the
      default for result variables from expressions entered on the command
      line and for explicitly declared persistent variables (but more on
      that below).  Other result variables have their memory freed.
      
      Some major improvements resulting from this include being able to
      properly take the address of variables, better and cleaner support
      for functions that return references, and cleaner C++ support in
      general.  One problem that remains is the problem of explicitly
      declared persistent variables; I have not yet implemented the code
      that makes references to them into indirect references, so currently
      materialization and dematerialization of these variables is broken.
      
      llvm-svn: 123371
      92adcac9
  4. Dec 13, 2010
    • Sean Callanan's avatar
      Added support for generating expressions that have · 17827830
      Sean Callanan authored
      access to the members of the Objective-C self object.
      
      The approach we take is to generate the method as a
      @category on top of the self object, and to pass the
      "self" pointer to it.  (_cmd is currently NULL.)
      
      Most changes are in ClangExpressionDeclMap, but the
      change that adds support to the ABIs to pass _cmd
      touches a fair amount of code.
      
      llvm-svn: 121722
      17827830
  5. Nov 19, 2010
  6. Nov 06, 2010
    • Greg Clayton's avatar
      Modified all logging calls to hand out shared pointers to make sure we · 2d4edfbc
      Greg Clayton authored
      don't crash if we disable logging when some code already has a copy of the
      logger. Prior to this fix, logs were handed out as pointers and if they were
      held onto while a log got disabled, then it could cause a crash. Now all logs
      are handed out as shared pointers so this problem shouldn't happen anymore.
      We are also using our new shared pointers that put the shared pointer count
      and the object into the same allocation for a tad better performance.
      
      llvm-svn: 118319
      2d4edfbc
  7. Oct 16, 2010
    • Greg Clayton's avatar
      Made many ConstString functions inlined in the header file. · 7b462cc1
      Greg Clayton authored
      Changed all of our synthesized "___clang" functions, types and variables
      that get used in expressions over to have a prefix of "$_lldb". Now when we
      do name lookups we can easily switch off of the first '$' character to know
      if we should look through only our internal (when first char is '$') stuff,
      or when we should look through program variables, functions and types.
      
      Converted all of the clang expression code over to using "const ConstString&" 
      values for names instead of "const char *" since there were many places that
      were converting the "const char *" names into ConstString names and them
      throwing them away. We now avoid making a lot of ConstString conversions and
      benefit from the quick comparisons in a few extra spots.
      
      Converted a lot of code from LLVM coding conventions into LLDB coding 
      conventions.
      
      llvm-svn: 116634
      7b462cc1
  8. Sep 23, 2010
  9. Sep 22, 2010
  10. Sep 13, 2010
    • Sean Callanan's avatar
      Bugfixes to the expression parser. Fixes include: · 9e6ed53e
      Sean Callanan authored
       - If you put a semicolon at the end of an expression,
         this no longer causes the expression parser to
         error out.  This was a two-part fix: first,
         ClangExpressionDeclMap::Materialize now handles
         an empty struct (such as when there is no return
         value); second, ASTResultSynthesizer walks backward
         from the end of the ASTs until it reaches something
         that's not a NullStmt.
      
       - ClangExpressionVariable now properly byte-swaps when
         printing itself.
      
       - ClangUtilityFunction now cleans up after itself when
         it's done compiling itself.
      
       - Utility functions can now use external functions just
         like user expressions.
      
       - If you end your expression with a statement that does
         not return a value, the expression now runs correctly
         anyway.
      
      Also, added the beginnings of an Objective-C object
      validator function, which is neither installed nor used
      as yet.
      
      llvm-svn: 113789
      9e6ed53e
  11. Aug 27, 2010
    • Sean Callanan's avatar
      This is a major refactoring of the expression parser. · 1a8d4093
      Sean Callanan authored
      The goal is to separate the parser's data from the data
      belonging to the parser's clients.  This allows clients
      to use the parser to obtain (for example) a JIT compiled
      function or some DWARF code, and then discard the parser
      state.
      
      Previously, parser state was held in ClangExpression and
      used liberally by ClangFunction, which inherited from
      ClangExpression.  The main effects of this refactoring 
      are:
      
      - reducing ClangExpression to an abstract class that
        declares methods that any client must expose to the
        expression parser,
      
      - moving the code specific to implementing the "expr"
        command from ClangExpression and
        CommandObjectExpression into ClangUserExpression,
        a new class,
      
      - moving the common parser interaction code from
        ClangExpression into ClangExpressionParser, a new
        class, and
      
      - making ClangFunction rely only on
        ClangExpressionParser and not depend on the
        internal implementation of ClangExpression.
      
      Side effects include:
      
      - the compiler interaction code has been factored
        out of ClangFunction and is now in an AST pass
        (ASTStructExtractor),
      
      - the header file for ClangFunction is now fully
        documented,
      
      - several bugs that only popped up when Clang was
        deallocated (which never happened, since the
        lifetime of the compiler was essentially infinite)
        are now fixed, and
      
      - the developer-only "call" command has been
        disabled.
      
      I have tested the expr command and the Objective-C
      step-into code, which use ClangUserExpression and
      ClangFunction, respectively, and verified that they
      work.  Please let me know if you encounter bugs or
      poor documentation.
      
      llvm-svn: 112249
      1a8d4093
  12. Aug 17, 2010
  13. Jul 24, 2010
    • Sean Callanan's avatar
      Updated the IR converter for the target to eliminate · ddb46efc
      Sean Callanan authored
      spurious guard variables on expression statics.
      
      Updated the AST result synthesizer to eliminate the
      unneeded result pointer.
      
      Very rudimentary expressions now evaluate correctly
      in the target using the new JIT-based mechanism.
      
      llvm-svn: 109317
      ddb46efc
  14. Jul 13, 2010
    • Greg Clayton's avatar
      Patch from Jean-Daniel Dupas: · c8e11e17
      Greg Clayton authored
              Makefile patch to explicitly use PROJ_SRC_DIR when required. It fixes 
              build when obj dir is not source dir. 
      
      I also fixed a build warning in ClangResultSynthesizer.cpp.
      
      llvm-svn: 108210
      c8e11e17
  15. Jul 01, 2010
Loading