1. 24 Jul, 2015 3 commits
    • Marius Wachtler's avatar
      Allocate all ASTInterpreter instances on the stack and remove the interpreter map. · 1c1dcdb9
      Marius Wachtler authored
      Not having the ASTInterpreter GC allocated improves performance.
      I had to add a small asm function in order to produce a special stack frame where we can easily retrieve the ASTInterpreter*,
      to replace s_interpreterMaps job. This also make sure that this function really does not get inlined.
      The s_interpreterMap was hard to understand and produced several times problems (duplicate entries,...)
      
      This patch contains a hack which limits the number of variables inside a function to 512.
      Because we have to make sure the are all on the stack and can't dynamically add more space.
      An upcoming patch will remove this limitation and replace it with a stack alloca of the size of the actual number of variables the function uses.
      1c1dcdb9
    • Kevin Modzelewski's avatar
      Merge pull request #755 from kmod/perf3 · 5071e380
      Kevin Modzelewski authored
      Allow passing NULL for empty kwargs
      5071e380
    • Rudi Chen's avatar
      Release assert for more debugging info. · f4b8ab11
      Rudi Chen authored
      f4b8ab11
  2. 23 Jul, 2015 28 commits
  3. 22 Jul, 2015 9 commits
    • Kevin Modzelewski's avatar
      Merge pull request #743 from undingen/bjit_omit_fp · 6add43fe
      Kevin Modzelewski authored
      bjit: omit frame pointer + use R12 for ASTInterpreter*
      6add43fe
    • Kevin Modzelewski's avatar
      Inline boxBool more · a8ac40c3
      Kevin Modzelewski authored
      a8ac40c3
    • Kevin Modzelewski's avatar
      Optimize isinstance · d9709d1d
      Kevin Modzelewski authored
      isinstance(obj, cls) needs to do a bunch of dynamic checking: it needs to
      check cls's class to see if it defines __instancecheck__, and it needs
      to fetch __class__ on obj.  Most of those time those aren't overridden,
      so __instancecheck__ gets skipped and __class__ returns the type of the object.
      
      So use the same "type slot" machinery to cache whether an __instancecheck__
      or custom __class__ attribute have gotten added.  These are a bit different
      than the other slots since they are not "wrappers", they are simply bools
      that say whether or not the attribute exists.  This makes the slot handling
      code a bit messier / more divergent from CPython, but I think it still makes
      sense to put this here since we get the hooking-on-attribute-updating and
      update-all-subclasses-as-well automatically.
      d9709d1d
    • Kevin Modzelewski's avatar
      Add pypy's (via US) bm_django · 0251f5fa
      Kevin Modzelewski authored
      0251f5fa
    • Rudi Chen's avatar
      d1eb84d5
    • Marius Wachtler's avatar
      bjit: omit frame pointer + use R12 for ASTInterpreter* · 96027cdb
      Marius Wachtler authored
      This reduces the number of stack access, because previously when we accessed a field of the interpreter
      we always had to load it first from stack into a reg - and now we have a dedicated reg.
      This is currently only a very small perf change but when #736 lands this becomes more important.
      96027cdb
    • Kevin Modzelewski's avatar
      Try caching both the debug and release ccache dirs · 3a75208b
      Kevin Modzelewski authored
      My theory is that specifying the separate cache directories
      interacts badly with travis-ci.  I think it will either delete
      any cache directories that look like they are no longer cached
      (ie when it finishes the debug build it will delete the release
      ccache dir since it looks unused), or maybe it keeps them around
      but only checks the most recent build for a cache hit (ie the
      debug build might check and only find ccache_release).
      
      So anyway, try always specifying both directories.  Another
      option is to do the simpler thing and use a single directory for
      both caches, but I want to only change one thing at a time.
      3a75208b
    • Kevin Modzelewski's avatar
      Merge pull request #706 from undingen/interp_init · 07f0a1aa
      Kevin Modzelewski authored
      Slightly speedup ASTInterpreter::initArguments
      07f0a1aa
    • Chris Toshok's avatar
      Merge pull request #672 from rudi-c/gcfinalizers4 · 8d204ed1
      Chris Toshok authored
      Call finalizers during garbage collection with ordering
      8d204ed1