• dslomov's avatar
    Handle the case when derived constructor is [[Call]]ed with 0 args. · cf53fed9
    dslomov authored
    ArgumentsAdaptorStub for derived constructor (the one that needs
    new.target) works in this way:
     - If the constructor is invoked via the Construct stub, we know that
       actual arguments always include new.target. ``arguments`` object
       however should not include a new.target, therefore we remove it.
       We achieve this by decrementing the argument count.
     - If the constructor is invoked as a call, we do not care for a correct
       ``arguments`` array since the constructor will immediately throw on
       entrance.
    The bug is that the call could actually pass 0 actual arguments, but I
    decrement unconditionally :(. The fix is to detect this case and avoid
    decrementing. ``arguments`` is bogus, but it is ok as constructor
    throws.
    
    Long-term we should just remove mucking about with arguments for
    new.target and just get it from the stack.
    
    R=arv@chromium.org,rossberg@chromium.org
    BUG=chromium:474783
    LOG=Y
    
    Review URL: https://codereview.chromium.org/1126783003
    
    Cr-Commit-Position: refs/heads/master@{#28242}
    cf53fed9
Name
Last commit
Last update
..
regress-2034.js Loading commit data...
regress-2156.js Loading commit data...
regress-2186.js Loading commit data...
regress-2243.js Loading commit data...
regress-2322.js Loading commit data...
regress-2506.js Loading commit data...
regress-2681.js Loading commit data...
regress-2691.js Loading commit data...
regress-2829.js Loading commit data...
regress-2858.js Loading commit data...
regress-3280.js Loading commit data...
regress-3426.js Loading commit data...
regress-347906.js Loading commit data...
regress-3683.js Loading commit data...
regress-3741.js Loading commit data...
regress-3902.js Loading commit data...
regress-3938.js Loading commit data...
regress-411237.js Loading commit data...
regress-468661.js Loading commit data...
regress-474783.js Loading commit data...
regress-cr372788.js Loading commit data...
regress-crbug-248025.js Loading commit data...
regress-crbug-346141.js Loading commit data...