1. 20 Nov, 2014 11 commits
  2. 19 Nov, 2014 6 commits
  3. 16 Nov, 2014 1 commit
  4. 15 Nov, 2014 2 commits
  5. 14 Nov, 2014 8 commits
  6. 13 Nov, 2014 5 commits
  7. 12 Nov, 2014 1 commit
  8. 11 Nov, 2014 4 commits
  9. 10 Nov, 2014 2 commits
    • Kevin Modzelewski's avatar
      Enable runtime ics · fbfe2bfa
      Kevin Modzelewski authored
      fbfe2bfa
    • Kevin Modzelewski's avatar
      Add 'runtime ics' to improve C++ runtime speed · 191b46b3
      Kevin Modzelewski authored
      An experimental way of making the runtime faster.  Previously, the C++
      runtime was much slower than pure-Python code, since the Python code
      can use the JIT to improve performance (through inline caches and type
      speculation).  This commit adds "runtime ics", which are out-of-band
      patchpoints that we can allocate from C++.  We insert them into the
      same patchpoint system that gets used by the main JIT pipeline, so
      they get rewritten like any other patchpoint, but the lifetime and use
      gets controlled by the C++ code.
      
      The trickiest part is getting the newly-allocated instruction regions
      to work with our exception handling; to make this work we have to emit
      .eh_frame sections.  (A custom libunwind-based exception unwinder
      might not have this requirement.)
      
      Otherwise it feels like a decent approach.  Right now just using it to
      implement class slots and then only using them in the pyElements
      iterator; it's probably not the most direct or efficient way of
      implementing that particular feature, but it has the benefit of being
      general and being useful for things such as binops which are not
      directly expressible in terms of class slots.
      
      This commit adds the support without turning the feature on (next
      commit will turn it on), since there are a number of other changes
      needed.
      191b46b3