Permalink
Switch branches/tags
Nothing to show
Commits on Feb 23, 2012
  1. yielder: AMD conversion.

    cscott committed Feb 17, 2012
  2. yielder: fix ARRAY_COMP by updating narcissus to remove leading [ fro…

    cscott committed Feb 22, 2012
    …m parent.
    
    This commit has been rebased anachronistically.  Originally the ARRAY_COMP
    handler worked around the fact that narcissus included the leading [ of
    the ARRAY_COMP in the src of the parent.  Then at some point I fixed that
    in Narcissus (which is an out-of-order commit in this tree, since Narcissus
    has been rebased further up in the history), and this commit removed the
    crazy ARRAY_COMP workaround since Narcissus was now sane.
  3. yielder: refactor block-scope handling to reuse try/finally code.

    cscott committed Feb 16, 2012
    This avoids special-case code in the finally block to handle freeing the
    scope object.  The result is slightly shorter and clearer.
  4. yielder: revert for-in desugaring that closes generators.

    cscott committed Feb 16, 2012
    This behavior seems too eccentric in the Spidermonkey/gjs implementation,
    depending on some magic recognition of generators by the for-in loop.
    As implemented, it also required major fixup for labelled loops.
    Use the Rhino behavior for now; maybe I'll reimplement this behavior later.
  5. yielder: support running test suite with gjs, in addition to rhino.

    cscott committed Feb 15, 2012
    The spidermonkey engine used in gjs seems to have better implementations of
    the JavaScript 1.8 features; rhino crashes on some of these tests and
    exhibits incorrect/suboptimal behavior in others.
  6. yielder: switch to spidermonkey behavior: always close iterator in fo…

    cscott committed Feb 15, 2012
    …r-in loop.
    
    The Rhino engine leaves the iterator hanging if you break out of a for-in
    loop over it, but spidermonkey always ensures that it is closed when you
    leave the loop.  Spidermonkey/gjs seems to have the better behavior here,
    so let's use that.
  7. yielder: optimize generator by putting all continuations in a single …

    cscott committed Feb 15, 2012
    …function.
    
    This simplifies the implementation of the Generator superclass as well,
    since all looping is internal to the single function, and allows a
    tracing JIT to optimize control flow.
  8. yielder: describe more efficient switch-based implementation strategy…

    cscott committed Feb 13, 2012
    … in NOTES.
    
    This version keeps all of the looping within a single function, allowing
    for efficient fall-through and better trace optimization inside the javascript
    engine.
  9. yielder: add NOTES on proper implementation of block-scoping, and a t…

    cscott committed Feb 13, 2012
    …est case.
    
    Catch variables are truely block-scoped; ie, a new variable is created every
    time the catch is entered.  If the catch is in a loop and the variable
    escapes, this is noticable -- I've added a test case to demonstrate.
  10. yielder: implement function hoisting, part 2.

    cscott committed Feb 11, 2012
    JavaScript 1.6 doesn't always hoist function statements to the top of the
    function, but it does when they are 'top-level' in the function.
    Duplicate this logic in the function hoisting routine.
  11. yielder: make tests rhino-compatible, so we can compare output vs rhino.

    cscott committed Feb 10, 2012
    Since yielder is starting to implement more and more of JavaScript 1.7,
    it makes sense to just compare expected output against an implementation
    of JavaScript 1.7.