Ignore:
Timestamp:
Feb 12, 2018, 3:41:17 PM (7 years ago)
Author:
[email protected]
Message:

DFG::emitCodeToGetArgumentsArrayLength needs to handle NewArrayBuffer/PhantomNewArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=182706
<rdar://problem/36833681>

Reviewed by Filip Pizlo.

JSTests:

  • stress/get-array-length-phantom-new-array-buffer.js: Added.

(effects):
(foo):

Source/JavaScriptCore:

When we added support for PhantomNewArrayBuffer, we forgot to update
the emitCodeToGetArgumentsArrayLength function to handle PhantomNewArrayBuffer.
This patch adds that support. It's trivial to generate the length for
a PhantomNewArrayBuffer node since it's a constant buffer, with a constant
length.

  • dfg/DFGArgumentsUtilities.cpp:

(JSC::DFG::emitCodeToGetArgumentsArrayLength):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGArgumentsUtilities.cpp

    r228035 r228401  
    6666        graph, arguments,
    6767        arguments->op() == CreateDirectArguments || arguments->op() == CreateScopedArguments
    68         || arguments->op() == CreateClonedArguments || arguments->op() == CreateRest
    69         || arguments->op() == PhantomDirectArguments || arguments->op() == PhantomClonedArguments || arguments->op() == PhantomCreateRest,
     68        || arguments->op() == CreateClonedArguments || arguments->op() == CreateRest || arguments->op() == NewArrayBuffer
     69        || arguments->op() == PhantomDirectArguments || arguments->op() == PhantomClonedArguments
     70        || arguments->op() == PhantomCreateRest || arguments->op() == PhantomNewArrayBuffer,
    7071        arguments->op());
     72
     73    if (arguments->op() == NewArrayBuffer || arguments->op() == PhantomNewArrayBuffer) {
     74        return insertionSet.insertConstant(
     75            nodeIndex, origin, jsNumber(arguments->castOperand<JSFixedArray*>()->length()));
     76    }
    7177   
    7278    InlineCallFrame* inlineCallFrame = arguments->origin.semantic.inlineCallFrame;
Note: See TracChangeset for help on using the changeset viewer.