1. 02 Jun, 2015 4 commits
    • Kevin Modzelewski's avatar
      Add some more 'hot functions' · d8e5b7f6
      Kevin Modzelewski authored
      d8e5b7f6
    • Kevin Modzelewski's avatar
      Add a section-ordering script · df5d6491
      Kevin Modzelewski authored
      I think this lets us specify that certain functions should be
      put together at the end of the text segment.
      
      This is inspired by a similar feature of HHVM's build, though the goal
      for us for now is just to improve performance consistency rather
      than overall performance.  Hopefully soon/eventually we can do
      profile-guided sorting like they do.
      df5d6491
    • Kevin Modzelewski's avatar
      Merge pull request #575 from kmod/libunwind_build · c4c58d0d
      Kevin Modzelewski authored
      Fix some issues with the way we build libunwind
      c4c58d0d
    • Kevin Modzelewski's avatar
      Fix some issues with the way we build libunwind · c4063b2e
      Kevin Modzelewski authored
      First, that we would only apply our patchset once.  If we ever revert the
      patches (I'm not sure under what conditions that happens), we previously would
      never apply them again.  Attempted to fix this by adding a special patch that
      adds a new file that CMake looks for; if the file doesn't exist, cmake runs the
      patches again.
      
      Second, that we didn't rebuild libunwind if we apply new patches.
      I'm not sure if there's a good general solution to this, but I was able
      to figure out how to force libunwind to rebuild if we need to rerun the
      patch command.  It took some hacking since CMake doesn't track dependencies
      on external projects, so we have to add some custom dependencies.
      c4063b2e
  2. 01 Jun, 2015 10 commits
  3. 29 May, 2015 11 commits
  4. 28 May, 2015 12 commits
  5. 27 May, 2015 3 commits
    • Kevin Modzelewski's avatar
      Switch to CPython's format for PyCFunctionObject · cb7533ae
      Kevin Modzelewski authored
      We were using a slightly different (flattened) version; not sure why.
      cb7533ae
    • Kevin Modzelewski's avatar
      Switch to CPython's implementation of thread._local · f2b5a640
      Kevin Modzelewski authored
      CPython's implementation has quite a bit more features than our
      old one.  We only particularly need one of them (call __init__
      when accessed from a new thread), but it looks like there are
      some other features in there that have a decent chance of biting
      us in annoying ways (some gc-related stuff).
      
      That implementation forced some of the other work in this PR, of
      supporting weakrefs on extension objects (which this uses), and
      making object.tp_init get set the same way it does in CPython.
      f2b5a640
    • Kevin Modzelewski's avatar
      Debugging helper: invalidate freed objects · 6fa582e4
      Kevin Modzelewski authored
      Without this, one could use freed objects without issues,
      until something else was allocated in that space.  And even then,
      it would still be a valid object.
      
      So, in debug mode overwrite the data with garbage to try to surface
      these issues.
      
      This exposed an issue with our "nonheap roots" handling, where we
      weren't scanning all of the memory that they pointed to.  This is
      mostly fine, but there are some cases (time.gmtime) where gc-allocated
      memory would be stored in these objects.  So, now you have to register
      the size of the object, and the memory range will be scanned conservatively.
      6fa582e4