⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 194385 in webkit


Ignore:
Timestamp:
Dec 22, 2015, 7:22:47 PM (11 years ago)
Author:
fpizlo@apple.com
Message:

REGRESSION(194382): FTL B3 no longer runs V8/encrypt
https://bugs.webkit.org/show_bug.cgi?id=152519

Reviewed by Saam Barati.

A "Move Imm, Tmp" instruction should turn into "Move32 Imm, Tmp" if the Tmp is spilled to a
32-bit slot. Changing where we check isTmp() achieves this. Since all of the logic is only
relevant to when we spill without introducing a Tmp, and since a Move does not have a "Move Addr,
Addr" form, this code ensures that the logic only happens for "Tmp, Tmp" and "Imm, Tmp".

  • b3/air/AirIteratedRegisterCoalescing.cpp:
  • dfg/DFGOperations.cpp:
Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r194383 r194385  
     12015-12-22  Filip Pizlo  <fpizlo@apple.com>
     2
     3        REGRESSION(194382): FTL B3 no longer runs V8/encrypt
     4        https://bugs.webkit.org/show_bug.cgi?id=152519
     5
     6        Reviewed by Saam Barati.
     7
     8        A "Move Imm, Tmp" instruction should turn into "Move32 Imm, Tmp" if the Tmp is spilled to a
     9        32-bit slot. Changing where we check isTmp() achieves this. Since all of the logic is only
     10        relevant to when we spill without introducing a Tmp, and since a Move does not have a "Move Addr,
     11        Addr" form, this code ensures that the logic only happens for "Tmp, Tmp" and "Imm, Tmp".
     12
     13        * b3/air/AirIteratedRegisterCoalescing.cpp:
     14        * dfg/DFGOperations.cpp:
     15
    1162015-12-22  Filip Pizlo  <fpizlo@apple.com>
    217
  • trunk/Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp

    r194382 r194385  
    11911191                bool forceMove32IfDidSpill = false;
    11921192                bool didSpill = false;
    1193                 if (type == Arg::GP && inst.opcode == Move
    1194                     && inst.args[0].isTmp() && inst.args[1].isTmp()) {
    1195                     if (m_tmpWidth.defWidth(inst.args[0].tmp()) <= Arg::Width32
    1196                         || m_tmpWidth.useWidth(inst.args[1].tmp()) <= Arg::Width32)
     1193                if (type == Arg::GP && inst.opcode == Move) {
     1194                    if ((inst.args[0].isTmp() && m_tmpWidth.defWidth(inst.args[0].tmp()) <= Arg::Width32)
     1195                        || (inst.args[1].isTmp() && m_tmpWidth.useWidth(inst.args[1].tmp()) <= Arg::Width32))
    11971196                        forceMove32IfDidSpill = true;
    11981197                }
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r194113 r194385  
    12531253    NativeCallFrameTracer tracer(&vm, exec);
    12541254
    1255     dataLog("Ran the barrier.\n");
    1256 
    12571255    return bitwise_cast<char*>(jsCast<JSObject*>(cell)->butterfly());
    12581256}
Note: See TracChangeset for help on using the changeset viewer.