Ignore:
Timestamp:
Oct 2, 2013, 12:11:04 PM (12 years ago)
Author:
[email protected]
Message:

Implement prefixed-destructuring assignment
https://bugs.webkit.org/show_bug.cgi?id=121930

Reviewed by Mark Hahnenberg.

Source/JavaScriptCore:

Relanding with fix after rollout - it helps to not completely destroy
optimisations for no reason.

LayoutTests:

Relanding with fix after rollout - it helps to not completely destroy
optimisations for no reason.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/parser/Nodes.cpp

    r156757 r156785  
    158158        ++parameterCount;
    159159
    160     size_t objectSize = sizeof(FunctionParameters) - sizeof(void*) + sizeof(StringImpl*) * parameterCount;
     160    size_t objectSize = sizeof(FunctionParameters) - sizeof(void*) + sizeof(DeconstructionPatternNode*) * parameterCount;
    161161    void* slot = fastMalloc(objectSize);
    162162    return adoptRef(new (slot) FunctionParameters(firstParameter, parameterCount));
     
    167167{
    168168    unsigned i = 0;
    169     for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam())
    170         new (&identifiers()[i++]) Identifier(parameter->ident());
     169    for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam()) {
     170        auto pattern = parameter->pattern();
     171        pattern->ref();
     172        patterns()[i++] = pattern;
     173    }
    171174}
    172175
     
    174177{
    175178    for (unsigned i = 0; i < m_size; ++i)
    176         identifiers()[i].~Identifier();
     179        patterns()[i]->deref();
    177180}
    178181
Note: See TracChangeset for help on using the changeset viewer.