1. 19 Jun, 2014 2 commits
    • Marius Wachtler's avatar
      Implement chained comparisons · 8580c891
      Marius Wachtler authored
      8580c891
    • Kevin Modzelewski's avatar
      Implement closures · ddabda9a
      Kevin Modzelewski authored
      Implementation is pretty straightforward for now:
      - find all names that get accessed from a nested function
      - if any, create a closure object at function entry
      - any time we set a name accessed from a nested function,
        update its value in the closure
      - when evaluating a functiondef that needs a closure, attach
        the created closure to the created function object.
      
      Closures are currently passed as an extra argument before any
      python-level args, which I'm not convinced is the right strategy.
      It's works out fine but it feels messy to say that functions
      can have different C-level calling conventions.
      It felt worse to include the closure as part of the python-level arg
      passing.
      Maybe it should be passed after all the other arguments?
      
      Closures are currently just simple objects, on which we set and get
      Python-level attributes.  The performance (which I haven't tested)
      relies on attribute access being made fast through the hidden-class
      inline caches.
      
      There are a number of ways that this could be improved:
      - be smarter about when we create the closure object, or when we
        update it.
      - not create empty pass-through closures
      - give the closures a pre-defined shape, since we know at irgen-time
        what names can get set.  could probably avoid the inline cache
        machinery and also have better code.
      ddabda9a
  2. 18 Jun, 2014 4 commits
  3. 17 Jun, 2014 9 commits
  4. 11 Jun, 2014 4 commits
  5. 10 Jun, 2014 4 commits
  6. 09 Jun, 2014 6 commits
  7. 08 Jun, 2014 1 commit
  8. 07 Jun, 2014 10 commits
    • Kevin Modzelewski's avatar
      Implement defaults, keywords, varargs and kwargs · 6acfb996
      Kevin Modzelewski authored
      Not all exposed to python code yet
      
      This commit is pretty large because it contains two separate but interrelated changes:
      - Rewrite the function argument handling code (callCompiledFunction and resolveCLFunc)
        into a single callFunc that does its own rewriting, and support the new features.
      -- this required a change of data representations, so instead of having each function
         consist of variants with unrelated signatures, we can only have a single signature,
         but multiple type specializations of that signature
      - To do that, had to rewrite all of the stdlib functions that used signature-variation
        (ex range1 + range2 + range3) to be a single function that took default arguments, and
        then took action appropriately.
      6acfb996
    • Kevin Modzelewski's avatar
      Some small independent changes · 31f7002a
      Kevin Modzelewski authored
      Can emit add/sub/etc instructions with 32-bit operands in addition to 8-bit now
      Can get the RSP and RBP in rewriter1, for accessing scratch space
      Change some debugging output
      
      Fix a gc bug: if an object gets new'd, and takes a parameter that gets new'd, the sequence is
      1) object space gets allocated
      2) parameter space gets allocated
      3) parameter gets constructed
      4) object gets constructed
      The bug is that the object construction is what initializes the GC header,
      so if step #3 causes a collection, it can see that the allocation from step #1
      has an invalid header.
      As a workaround, always zero out the header in allocation, and skip blocks with
      zeroed headers.
      The real solution is probably to have the GC manage the header itself rather than
      expecting the user to; this would mean that gc_alloc would take the allocation kind,
      put that into the header, and then return a pointer to the post-header data section
      of the allocation.
      31f7002a
    • Kevin Modzelewski's avatar
      Misc non-code changes · 138e4546
      Kevin Modzelewski authored
      Experimenting with vim+make integration
      Changed installation instructions slightly
      Added rlwrap support for repl
      138e4546
    • Kevin Modzelewski's avatar
    • Marius Wachtler's avatar
      Fix read of uninitialized variable · 867eef3d
      Marius Wachtler authored
      Currently many places in the codebase create AST_Jump objects but do not initalice the line ,col numbers. Set them to -1, in order to not call SetCurrentDebugLocation with random locations.
      867eef3d
    • Marius Wachtler's avatar
      Remove read from freed memory · 134c3b57
      Marius Wachtler authored
      134c3b57
    • Kevin Modzelewski's avatar
      Merge pull request #79 from undingen/fix_crash · 1a8566b3
      Kevin Modzelewski authored
      Fix crash: register string iterator class
      1a8566b3
    • Kevin Modzelewski's avatar
      I give up. move back to this revision until things work again. · 115c787c
      Kevin Modzelewski authored
      Tried up to 210379 with the same segfaults.
      115c787c
    • Kevin Modzelewski's avatar
      fixes · f72756b3
      Kevin Modzelewski authored
      f72756b3
    • Kevin Modzelewski's avatar
      Try this one · f6d0777d
      Kevin Modzelewski authored
      f6d0777d