Ignore:
Timestamp:
Mar 10, 2011, 11:27:49 AM (14 years ago)
Author:
[email protected]
Message:

2011-03-10 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

jquery/manipulation.html fails after r80598
https://bugs.webkit.org/show_bug.cgi?id=56019

Removed jQuery tests from skiplists

  • platform/gtk/Skipped:
  • platform/qt/Skipped:

2011-03-09 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

jquery/manipulation.html fails after r80598
https://bugs.webkit.org/show_bug.cgi?id=56019

When linking a call, codeblock now takes ownership of the linked function
This removes the need for unlinking, and thus the incorrectness that was
showing up in these tests.

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::markAggregate):
  • bytecode/CodeBlock.h: (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::setUnlinked): (JSC::CodeBlock::addCaller):
  • jit/JIT.cpp: (JSC::JIT::privateCompile): (JSC::JIT::linkCall): (JSC::JIT::linkConstruct):
  • jit/JIT.h:
  • runtime/Executable.cpp:
  • runtime/Executable.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/jit/JIT.cpp

    r78174 r80738  
    568568    for (unsigned i = 0; i < m_codeBlock->numberOfCallLinkInfos(); ++i) {
    569569        CallLinkInfo& info = m_codeBlock->callLinkInfo(i);
    570         info.ownerCodeBlock = m_codeBlock;
    571570        info.callReturnLocation = patchBuffer.locationOfNearCall(m_callStructureStubCompilationInfo[i].callReturnLocation);
    572571        info.hotPathBegin = patchBuffer.locationOf(m_callStructureStubCompilationInfo[i].hotPathBegin);
     
    589588
    590589#if ENABLE(JIT_OPTIMIZE_CALL)
    591 void JIT::unlinkCallOrConstruct(CallLinkInfo* callLinkInfo)
    592 {
    593     // When the JSFunction is deleted the pointer embedded in the instruction stream will no longer be valid
    594     // (and, if a new JSFunction happened to be constructed at the same location, we could get a false positive
    595     // match).  Reset the check so it no longer matches.
    596     RepatchBuffer repatchBuffer(callLinkInfo->ownerCodeBlock);
    597 #if USE(JSVALUE32_64)
    598     repatchBuffer.repatch(callLinkInfo->hotPathBegin, 0);
    599 #else
    600     repatchBuffer.repatch(callLinkInfo->hotPathBegin, JSValue::encode(JSValue()));
    601 #endif
    602 }
    603590
    604591void JIT::linkCall(JSFunction* callee, CodeBlock* callerCodeBlock, CodeBlock* calleeCodeBlock, JIT::CodePtr code, CallLinkInfo* callLinkInfo, int callerArgCount, JSGlobalData* globalData)
     
    612599   
    613600        if (calleeCodeBlock)
    614             calleeCodeBlock->addCaller(callLinkInfo);
     601            calleeCodeBlock->addCaller(*globalData, callLinkInfo, callee);
    615602   
    616603        repatchBuffer.repatch(callLinkInfo->hotPathBegin, callee);
     
    632619   
    633620        if (calleeCodeBlock)
    634             calleeCodeBlock->addCaller(callLinkInfo);
     621            calleeCodeBlock->addCaller(*globalData, callLinkInfo, callee);
    635622   
    636623        repatchBuffer.repatch(callLinkInfo->hotPathBegin, callee);
Note: See TracChangeset for help on using the changeset viewer.