1. 14 Jul, 2015 14 commits
  2. 13 Jul, 2015 18 commits
  3. 12 Jul, 2015 5 commits
    • Marius Wachtler's avatar
      interpreter: Don't GC allocate ASTInterpreter instances. · e2975b8e
      Marius Wachtler authored
      GC allocating the huge number of large ASTInterpreter instances is slow,
      instead add a small wrapper object which gets GC allocated and notifies the ASTInterpreter.
      e2975b8e
    • 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
  4. 10 Jul, 2015 3 commits
    • Chris Toshok's avatar
    • Chris Toshok's avatar
      use SmallVectors for some of the rewriter vectors (with enough size to keep... · 7425d09f
      Chris Toshok authored
      use SmallVectors for some of the rewriter vectors (with enough size to keep additional mallocs from happening.)
      7425d09f
    • Chris Toshok's avatar
      use inline functions instead of casting function pointers · d69886d2
      Chris Toshok authored
      the type casts we were using were causing bad things to happen with gcc builds (still not exactly sure
      why they aren't in clang builds), since we were casting from a function which expects arguments on the stack
      to a function type that doesn't.
      
      this manifests itself as rewrite_args changing from NULL to a small heap pointer on this line:
      
      ```
      objmodel.cpp:4108    contained = callattrInternal1(rhs, contains_str, CLASS_ONLY, NULL, ArgPassSpec(1), lhs);
      ```
      
      that is, the local variable rewrite_args is NULL before the call, and non-NULL after.  The actual line that causes
      the pointer overwrite is in `bindObjIntoArgs`:
      
      ```
      objmodel.cpp:3043    arg1 = bind_obj;
      ```
      
      so I'm guessing that since we didn't push things onto the stack before the call to `callattrInternal`, we end up
      trampling over values in `compareInternal`'s frame.
      d69886d2