Ignore:
Timestamp:
Nov 13, 2014, 11:18:43 AM (11 years ago)
Author:
[email protected]
Message:

Generate put_by_id for bracket assignment with constant string subscript.
<https://webkit.org/b/138702>

Reviewed by Geoffrey Garen.

Transform of=x to o.f=x when generating bytecode. This allows our JIT
to inline-cache those accesses instead of always dropping out to C++.

Just like the get_by_id transformations, this gets a bunch of use on
real-web content (and Speedometer) but little/none on raw JS benchmarks.

  • bytecompiler/NodesCodegen.cpp:

(JSC::AssignBracketNode::emitBytecode):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r176035 r176079  
    16451645    generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
    16461646    RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result);
    1647     generator.emitPutByVal(base.get(), property.get(), forwardResult);
     1647
     1648    if (m_subscript->isString())
     1649        generator.emitPutById(base.get(), static_cast<StringNode*>(m_subscript)->value(), forwardResult);
     1650    else
     1651        generator.emitPutByVal(base.get(), property.get(), forwardResult);
     1652
    16481653    if (generator.vm()->typeProfiler()) {
    16491654        generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr);
Note: See TracChangeset for help on using the changeset viewer.