1. 12 Jul, 2015 4 commits
    • Kevin Modzelewski's avatar
      Merge pull request #684 from kmod/tiering2 · caa84b81
      Kevin Modzelewski authored
      tiering refactoring
      caa84b81
    • Kevin Modzelewski's avatar
      Workaround for live-outs issue · a87e2eaf
      Kevin Modzelewski authored
      a87e2eaf
    • Kevin Modzelewski's avatar
      Get rid of "interpreted CompiledFunctions" · 41c0273e
      Kevin Modzelewski authored
      This was vistigial from the old llvm interpreter, where we it made a bit more
      sense.  Now it's just weird, and caused the tiering logic to be spread into
      weird places.  It was also the source of some bugs, since when we would deopt
      there's not really any relevant CompiledFunction that represents the deopt
      frame (this is why type speculation had to be temporarily disabled).
      
      So instead, make it so that the interpreter (and by extension, the baseline
      jit) work on the CLFunction directly, since the CompiledFunction didn't hold
      any relevant information anyway.  This require a whole bunch of refactoring and
      API changes.
      
      This commit doesn't actually change any of the tiering decisions (I think), but
      should just make them clearer; the actual behavioral changes will be done in
      upcoming commits.
      41c0273e
    • Kevin Modzelewski's avatar
      Get rid of void-returning functions · fc238ed8
      Kevin Modzelewski authored
      Module-level code used to return void, but this causes some
      special-casing, so switch to having them return None.
      Also, CPython has their module code objects return None, so
      it's a small compatibility gain as well.
      fc238ed8
  2. 10 Jul, 2015 3 commits
  3. 09 Jul, 2015 6 commits
  4. 08 Jul, 2015 15 commits
  5. 07 Jul, 2015 6 commits
  6. 06 Jul, 2015 6 commits
    • Kevin Modzelewski's avatar
      Be more consistent about "ip" while unwinding · 6b4cc450
      Kevin Modzelewski authored
      I think the ip we receive is the return address to that stack frame
      (at least in the non-signal case).  This makes things a bit weird
      since the "is this ip in this range" tests have a different half-openness
      than they normally do.  At some point an "ip = ip - 1" snuck in, which
      I think was to address this issue, but I think it's better to not
      change the ip -- ie the resulting address is not independently useful (it's
      in the middle of an instruction); we could pass it around as "ip_minus_one",
      but instead just try converting the tests to be better.
      6b4cc450
    • Kevin Modzelewski's avatar
      Helpful reminder · 4ab66c61
      Kevin Modzelewski authored
      4ab66c61
    • Kevin Modzelewski's avatar
      Reenable PyString_GET_SIZE · ccac5408
      Kevin Modzelewski authored
      ccac5408
    • Kevin Modzelewski's avatar
      Unicode gc fix · dc1f1d6c
      Kevin Modzelewski authored
      Since we don't memset the unicode allocations any more, and
      we now use a precise gc handler, we have to be careful that
      unicode objects are valid enough whenever a collection could
      happen.
      
      The issue was that "unicode->str = gc_alloc(...)" could cause
      a collection, in which case the collector would go and see a
      bogus value in the ->str field.  Now, do the str allocation
      first (since it is UNTRACKED) and then do the precise allocation
      second.
      dc1f1d6c
    • Kevin Modzelewski's avatar
      Convert unicode to a pyston type · d8f36db5
      Kevin Modzelewski authored
      d8f36db5
    • Kevin Modzelewski's avatar
      Inline things into _PyUnicode_New · 7ea2c6f9
      Kevin Modzelewski authored
      Inlining the allocation + object initialization saves
      a decent amount of overhead, since most of the properties
      will be fixed.  For example, the size of the main allocation is
      fixed, so we can directly allocate it from the correct SmallArena
      bucket.  We can also skip all the indirect function calls.
      7ea2c6f9