1. 30 Oct, 2014 1 commit
  2. 29 Oct, 2014 15 commits
  3. 28 Oct, 2014 5 commits
    • Kevin Modzelewski's avatar
      Enable frame introspection! · 64c06e84
      Kevin Modzelewski authored
      The code was already in but it was turned off due to the
      compile time regressions.  The addition af kill flags seems
      to have fixed it.
      
      We now have the locals() method working and can start to implement
      other similar features.
      64c06e84
    • Kevin Modzelewski's avatar
      Fix some liveness-analysis bugs · 2ae61c64
      Kevin Modzelewski authored
      2ae61c64
    • Kevin Modzelewski's avatar
      Compute intra-BB liveness information · b887bc87
      Kevin Modzelewski authored
      When emitting frame information, we pass all currently-live
      variable names.  We clear dead register names at the end of
      every basic block, but for long basic blocks we can end up
      accumulating many temporary names (one per sub expression).
      This ends up hugely increasing the LLVM compilation times since
      we will pass hundreds of arguments to many different callsites.
      
      Now, we remove dead variable names as soon as they die.  (Note:
      user-visible names are always live since they can always be seen
      by the locals() function.)  This means that we pass many fewer values
      as frame arguments.
      
      A better solution will be to have a real bytecode language which
      encodes such liveness information, instead of mostly-having it and
      then discarding it.
      b887bc87
    • Kevin Modzelewski's avatar
      Make sure that we never reuse AST nodes · 548ad742
      Kevin Modzelewski authored
      We currently specify execution state by the AST node that
      represents it, which means that we have to not reuse AST nodes.
      Previous to this patch, we were doing that, so this patch
      fixes those up.
      
      This patch isn't the cleanest since I think this whole approach
      will go away when we transition to a proper bytecode system.
      548ad742
    • Kevin Modzelewski's avatar
      Whoops -- fix bug · 387e2b80
      Kevin Modzelewski authored
      387e2b80
  4. 27 Oct, 2014 2 commits
  5. 17 Oct, 2014 4 commits
  6. 16 Oct, 2014 3 commits
  7. 15 Oct, 2014 1 commit
    • Kevin Modzelewski's avatar
      Separate the CompilerType objects from the class definitions · 204b1da6
      Kevin Modzelewski authored
      Most code wants to have access to the basic types (INT, STR, etc)
      but doesn't need to know anything about what methods they support.
      
      Move the commonly-accessed parts of compvars.h into the always-included
      core/types.h, and remove almost all of the includes of compvars.h
      204b1da6
  8. 10 Oct, 2014 1 commit
  9. 09 Oct, 2014 3 commits
    • Kevin Modzelewski's avatar
      Enable patching of invokes · e5db59e7
      Kevin Modzelewski authored
      With the LLVM patch, it seems like this works.
      e5db59e7
    • Kevin Modzelewski's avatar
      Merge pull request #183 from undingen/isAlloc · 18d68780
      Kevin Modzelewski authored
      Fix isAllocCall check
      18d68780
    • Kevin Modzelewski's avatar
      For now, disallow allocation of callee-save registers in inline caches · 84bda3fd
      Kevin Modzelewski authored
      If we allocate a callee-save register that the parent function had
      not also allocated, change its value, and then call a function
      that then unwinds, the unwinder would pass the new (incorrect)
      value of the callee save register to the next frame.
      
      We either need to
      - make sure callee-save registers are restored before any potentially-throwing
        callsite, or
      - make the unwinder able to restore these registers for us, potentially
        by writing our own exception unwinder.
      
      For now, the easiest thing to do is to disallow allocation of those registers.
      (I'm not even sure how much we allocate them at all at the moment.)
      84bda3fd
  10. 08 Oct, 2014 4 commits
  11. 04 Oct, 2014 1 commit