• 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
..
debug-promises Loading commit data...
regress Loading commit data...
arguments-iterator.js Loading commit data...
array-iterator.js Loading commit data...
array-tostring.js Loading commit data...
block-conflicts.js Loading commit data...
block-const-assign.js Loading commit data...
block-early-errors.js Loading commit data...
block-for.js Loading commit data...
block-leave.js Loading commit data...
block-let-crankshaft.js Loading commit data...
block-let-declaration.js Loading commit data...
block-let-semantics.js Loading commit data...
block-non-strict-errors.js Loading commit data...
block-scoping-top-level.js Loading commit data...
block-scoping.js Loading commit data...
built-in-accessor-names.js Loading commit data...
collection-iterator.js Loading commit data...
collections.js Loading commit data...
debug-blockscopes.js Loading commit data...
debug-evaluate-blockscopes.js Loading commit data...
debug-function-scopes.js Loading commit data...
debug-stepin-collections-foreach.js Loading commit data...
debug-stepin-generators.js Loading commit data...
debug-stepin-microtasks.js Loading commit data...
debug-stepin-promises.js Loading commit data...
debug-stepnext-for.js Loading commit data...
empty-for.js Loading commit data...
function-length-configurable.js Loading commit data...
function-name-configurable.js Loading commit data...
function-prototype-name.js Loading commit data...
generators-debug-liveedit.js Loading commit data...
generators-debug-scopes.js Loading commit data...
generators-iteration.js Loading commit data...
generators-mirror.js Loading commit data...
generators-objects.js Loading commit data...
generators-parsing.js Loading commit data...
generators-poisoned-properties.js Loading commit data...
generators-relocation.js Loading commit data...
generators-runtime.js Loading commit data...
generators-states.js Loading commit data...
indexed-integer-exotics.js Loading commit data...
iteration-semantics.js Loading commit data...
iteration-syntax.js Loading commit data...
json.js Loading commit data...
map-minus-zero.js Loading commit data...
math-cbrt.js Loading commit data...
math-clz32.js Loading commit data...
math-expm1.js Loading commit data...
math-fround.js Loading commit data...
math-hyperbolic.js Loading commit data...
math-hypot.js Loading commit data...
math-log1p.js Loading commit data...
math-log2-log10.js Loading commit data...
math-sign.js Loading commit data...
math-trunc.js Loading commit data...
math.js Loading commit data...
microtask-delivery.js Loading commit data...
mirror-collections.js Loading commit data...
mirror-iterators.js Loading commit data...
mirror-promises.js Loading commit data...
mirror-symbols.js Loading commit data...
numeric-literals.js Loading commit data...
object-tostring.js Loading commit data...
promises.js Loading commit data...
prototype-ordinary-objects.js Loading commit data...
set-minus-zero.js Loading commit data...
string-codepointat.js Loading commit data...
string-endswith.js Loading commit data...
string-fromcodepoint.js Loading commit data...
string-html.js Loading commit data...
string-includes.js Loading commit data...
string-iterator.js Loading commit data...
string-raw.js Loading commit data...
string-repeat.js Loading commit data...
string-startswith.js Loading commit data...
symbols.js Loading commit data...
templates.js Loading commit data...
throw-type-error-function-restrictions.js Loading commit data...
typed-array-iterator.js Loading commit data...
unscopables.js Loading commit data...