1. 22 Feb, 2015 1 commit
    • Marius Wachtler's avatar
      pyElements: Use specialiced iterators for known types · f6c70e2e
      Marius Wachtler authored
      pyston (calibration)                      :    0.8s stock1: 0.8 (+0.8%)
      pyston interp2.py                         :    5.9s stock1: 6.1 (-3.1%)
      pyston raytrace.py                        :    7.5s stock1: 7.8 (-4.5%)
      pyston nbody.py                           :   10.1s stock1: 9.9 (+1.5%)
      pyston fannkuch.py                        :    6.7s stock1: 6.8 (-1.5%)
      pyston chaos.py                           :   21.3s stock1: 22.6 (-5.8%)
      pyston spectral_norm.py                   :   26.1s stock1: 27.9 (-6.7%)
      pyston fasta.py                           :   17.7s stock1: 18.8 (-5.6%)
      pyston pidigits.py                        :   16.1s stock1: 16.1 (+0.0%)
      pyston richards.py                        :   10.2s stock1: 10.0 (+2.3%)
      pyston deltablue.py                       :    2.4s stock1: 2.3 (+4.8%)
      pyston (geomean-0b9f)                     :   10.1s stock1: 10.3 (-1.9%)
      f6c70e2e
  2. 20 Feb, 2015 14 commits
  3. 19 Feb, 2015 11 commits
    • Kevin Modzelewski's avatar
      Fix an arg-handling bug in typeCallInternal · 0e10126d
      Kevin Modzelewski authored
      In typeCallInternal, we used to expand out any starargs in order to take a look
      at the first arg (and change it when passing it).
      
      We had a bug in this code, and rather than make that code more complicated
      to fix it, just call back into callFunc to resolve it.  This is kind of tricky
      since callFunc will call typeCall, and we don't want typeCall to duplicate
      the typeCallInternal behavior (that's not any better than duplicating the
      arg behavior), so we want typeCall to call into typeCallInternal.  But
      typeCall receives varargs! which typeCallInternal doesn't support.  So typeCall
      has to do some (simpler) arg handling to expand out the varargs.
      
      In the end, it simplifies the code a little bit but causes a bunch of extra calls
      in the varargs case, so it's less of a win than I thought, but at least it
      fixes the bug.
      0e10126d
    • Kevin Modzelewski's avatar
      Minor: if a GC is triggered in this section it will crash · bac77762
      Kevin Modzelewski authored
      We could make the typeGCHandler support these half-constructed classes,
      but let's just turn off the GC for this area.
      bac77762
    • Chris Toshok's avatar
    • Kevin Modzelewski's avatar
      Merge pull request #292 from tjhance/set-function-name · dbac3625
      Kevin Modzelewski authored
      implement setting __name__ for functions
      dbac3625
    • Kevin Modzelewski's avatar
      Merge pull request #312 from kevinxucs/docs_gcc-url · efeaab75
      Kevin Modzelewski authored
      Update gcc-4.8.2 tarball url to generic gnu ftpmirror.
      efeaab75
    • Kevin Modzelewski's avatar
      Merge pull request #313 from undingen/perf_chaos · f2e68e79
      Kevin Modzelewski authored
      compvar: add int <op> float handling
      f2e68e79
    • Marius Wachtler's avatar
      compvar: add int <op> float handling · 15541f28
      Marius Wachtler authored
      Convert the integer to a float and then let the float code handle the operation
      With this change the type analysis is also able to comprehend that
      e.g. '1 - <float>' will return a float
      
      This means that the math operations in the 'linear_combination' function in chaos.py
      get completely inlined.
      
      improves chaos.py by 5%
      15541f28
    • Kaiwen Xu's avatar
      c43f92a5
    • Travis Hance's avatar
      implement setting __name__ for functions · 4093d5a8
      Travis Hance authored
      4093d5a8
    • Kevin Modzelewski's avatar
      Rearrange things to improve our ability to inline common cases · 2c4ab499
      Kevin Modzelewski authored
      We seem to be spending a fair amount of time doing unnecessary work
      for simple calls like boxInt and createList, which are generated
      by irgen and reduce to calling new BoxedInt / BoxedList.  The
      operator new calls tp_alloc, so we get some indirect function calls,
      and then tp_alloc does some checking about its caller, and then we
      check to see what size object to create, and how to initialize it.
      
      I created a DEFAULT_CLASS_SIMPLE macro to go with DEFAULT_CLASS,
      that should help with these things.  I (manually) inlined all of those
      functions into the operator new.
      
      I also moved the small arena bucket selection function (SmallArena::alloc)
      into the header file so that it can get inlined, since the allocation size
      is often known at compile time and we can statically resolve to a bucket.
      
      Putting these together means that boxInt and createList are much tighter.
      2c4ab499
    • Kevin Modzelewski's avatar
      Use a __thread cache for the GC's thread-local ThreadBlockCache · a2e51e4f
      Kevin Modzelewski authored
      __thread seems quite a bit faster than pthread_get_specific, so
      if we give up on having multiple Heap objects, then we can store
      a reference to the current thread's ThreadBlockCache in a static
      __thread variable.  It looks like this ends up mattering (5% average
      speedup) since SmallArena::_alloc() is so hot
      a2e51e4f
  4. 18 Feb, 2015 14 commits