1. 16 Jun, 2016 10 commits
    • Kevin Modzelewski's avatar
      Turn down verbosity · a3e41785
      Kevin Modzelewski authored
      a3e41785
    • Kevin Modzelewski's avatar
      Regression test: this test throws an irgen assertion · ae2b1c0c
      Kevin Modzelewski authored
      This issue is that type analysis is stronger than irgen.
      Specifically here, type analysis knows that the phi isn't required
      and propagates the type across BB's, but irgen conservatively promotes
      to UNKNOWN.
      ae2b1c0c
    • Kevin Modzelewski's avatar
      Support staticmethod.__func__ · 33ac174e
      Kevin Modzelewski authored
      33ac174e
    • Kevin Modzelewski's avatar
      d43ea30f
    • Kevin Modzelewski's avatar
      Merge pull request #1252 from kmod/telnetlib · 616dd7bf
      Kevin Modzelewski authored
      Fix some leaks related to signals
      616dd7bf
    • Kevin Modzelewski's avatar
      Add a simple test for these issues · 5466b67e
      Kevin Modzelewski authored
      5466b67e
    • Kevin Modzelewski's avatar
      llvm JIT: refcount safety for signals · 43351fb2
      Kevin Modzelewski authored
      The IR we generated looked something like this:
      
      1: i64 %a = doIC()
      2: checkPendingCalls()
      3: Box* %b = (Box*)%b
      
      The problem is that the refcounter only knew about %b, starting on
      line 3.  So for line 2, the refcounter didn't think it needed to decref
      %a if an exception was thrown.
      
      So the first thing this commit does is it adds check that when we refcount-track
      a value, if it is a cast, then the cast must be right next to the thing it is casting.
      This is stricter than we need but it should be easy enough to do and be sufficient.
      
      Another approach would have been to have the refcount checker be able to track the
      non-box-like values, ie track %a in the above example.  This would need some checking
      to make sure that people didn't forget to track that.  In the end I thought this would
      be simpler.
      
      The second thing is it adds a helper function createAfter that inserts the cast in
      the right location.  This could have worked by having createIC do the casting itself.
      But this was a little bit tricky since some callers want to know the Instruction of the
      call itself, and if createIC only returned the cast then those would get confused.  It
      could have returned both, but that seemed complicated.
      43351fb2
    • Kevin Modzelewski's avatar
      Interpreter: refcount safety for signals · 0460ca63
      Kevin Modzelewski authored
      We would leak refs if an exception was thrown via the pending-calls handler.
      0460ca63
    • Kevin Modzelewski's avatar
      Smart leak checker · cbed4274
      Kevin Modzelewski authored
      Previously we would print out all leaked objects at program exit.
      But this is problematic since it includes both directly leaked objects
      (the ones we are interested in), and indirectly leaked objects
      (which only got leaked by being referenced from another leaked object).
      
      This uses the cycle collector infrastructure to figure out what objects
      have non-heap, ie leaked, references remaining.  Hopefully this should
      help us debug cases where there are hundreds of objects remaining.
      cbed4274
    • Kevin Modzelewski's avatar
      Time the build part of the CI script · 03a8895c
      Kevin Modzelewski authored
      03a8895c
  2. 15 Jun, 2016 2 commits
  3. 13 Jun, 2016 5 commits
  4. 12 Jun, 2016 3 commits
  5. 11 Jun, 2016 5 commits
  6. 09 Jun, 2016 1 commit
    • Marius Wachtler's avatar
      vregs: split them in three parts and reuse them in some cases · f1424848
      Marius Wachtler authored
      user visible: used for all non compiler generated names, name could be used in a single block or multiple
                    all frames contain atleast this vregs in order to do frame introspection
      cross block : used for compiler generated names which get used in several blocks or which have closure scope
      single block: used by compiler created names which are only used in a single block.
                    get reused for different names
      
      we assign the lowest numbers to the user visible ones, followed by the cross block ones and finally the single block
      ones. we do this because not all tiers use all of the vregs and it still makes it fast to switch between tiers.
      f1424848
  7. 08 Jun, 2016 11 commits
  8. 07 Jun, 2016 3 commits