1. 07 Jan, 2015 4 commits
    • Kevin Modzelewski's avatar
      Merge pull request #260 from kmod/generators · 3a338555
      Kevin Modzelewski authored
      Generators
      3a338555
    • Kevin Modzelewski's avatar
      Change generator stack allocation · 7863a419
      Kevin Modzelewski authored
      Previously, we just included a char[] buffer in the generator object,
      and used that as the stack.
      
      Now, mmap() a dedicated stack segment for it.  Use MAP_GROWSDOWN so that
      the stack is automatically expandable, but add a redzone 4MB down to
      limit the maximum stack size.
      7863a419
    • Kevin Modzelewski's avatar
      Make it easier to run without frame introspection · 6a3e5219
      Kevin Modzelewski authored
      Turning off frame introspection can make things easier to
      debug, but will break features like tracebacks.
      
      If we turn it off, instead of trying to collect a traceback and
      crashing, just print out a warning and return an empty traceback.
      6a3e5219
    • Kevin Modzelewski's avatar
      Restructure the way we collect generator stacks · 6446c7d5
      Kevin Modzelewski authored
      Previously it was pretty implicit where we rely on the fact that the generator
      object will exist on the previous stack, and once we notice the generator
      its GC handler will crawl the generator stack.
      
      I think we also missed the generator's registers, but only the top generator
      and only if it wasn't the current thread (was unable to reproduce this).
      
      Now, keep explicit track of all the previous stacks that a thread had been on.
      This cleans that up, and since things are explicit now, we can also track
      where we stopped executing on each stack.  We were doing this hackily for the main
      stack before, but now we can do that for generator stacks, which will let
      us make those auto-growing as well.
      
      My confidence in this change: low.
      6446c7d5
  2. 06 Jan, 2015 13 commits
  3. 05 Jan, 2015 3 commits
  4. 04 Jan, 2015 5 commits
  5. 03 Jan, 2015 9 commits
  6. 23 Dec, 2014 2 commits
  7. 22 Dec, 2014 4 commits