Ignore:
Timestamp:
Nov 30, 2011, 12:44:12 AM (14 years ago)
Author:
[email protected]
Message:

Resetting a put_by_id inline cache should preserve the "isDirect" bit
https://bugs.webkit.org/show_bug.cgi?id=73375

Reviewed by Gavin Barraclough.

For the replace case, we can find out if it was direct by looking at the
slow call. For the transition case, we explicitly remember if it was
direct.

  • bytecode/CodeBlock.cpp:

(JSC::printStructureStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::deref):
(JSC::StructureStubInfo::visitWeakReferences):

  • bytecode/StructureStubInfo.h:

(JSC::isPutByIdAccess):
(JSC::StructureStubInfo::initPutByIdTransition):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGRepatch.cpp:

(JSC::DFG::tryCachePutByID):

  • jit/JIT.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::resetPatchPutById):
(JSC::JIT::isDirectPutById):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::resetPatchPutById):

  • jit/JITStubs.cpp:

(JSC::JITThunks::tryCachePutByID):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r101283 r101457  
    258258        printf("  [%4d] %s: %s (%d)\n", instructionOffset, "op_get_by_id_proto_list", pointerToSourceString(stubInfo.u.getByIdProtoList.structureList).utf8().data(), stubInfo.u.getByIdProtoList.listSize);
    259259        return;
    260     case access_put_by_id_transition:
     260    case access_put_by_id_transition_normal:
     261    case access_put_by_id_transition_direct:
    261262        printf("  [%4d] %s: %s, %s, %s\n", instructionOffset, "put_by_id_transition", pointerToSourceString(stubInfo.u.putByIdTransition.previousStructure).utf8().data(), pointerToSourceString(stubInfo.u.putByIdTransition.structure).utf8().data(), pointerToSourceString(stubInfo.u.putByIdTransition.chain).utf8().data());
    262263        return;
Note: See TracChangeset for help on using the changeset viewer.