diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-25 13:35:59 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-25 13:35:59 +0200 |
commit | 79ad030d505ccf79cf10aa9f8189ca3e2f61f6f4 (patch) | |
tree | 0287b1a69d84492c901e8bc820e635e7133809a0 /Source/JavaScriptCore/bytecode/CodeBlock.cpp | |
parent | 682ab87480e7757346802ce7f54cfdbdfeb2339e (diff) | |
download | qtwebkit-79ad030d505ccf79cf10aa9f8189ca3e2f61f6f4.tar.gz |
Imported WebKit commit c4b613825abd39ac739a47d7b4410468fcef66dc (http://svn.webkit.org/repository/webkit/trunk@121147)
New snapshot that includes Win32 debug build fix (use SVGAllInOne)
Diffstat (limited to 'Source/JavaScriptCore/bytecode/CodeBlock.cpp')
-rw-r--r-- | Source/JavaScriptCore/bytecode/CodeBlock.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.cpp b/Source/JavaScriptCore/bytecode/CodeBlock.cpp index 60596d1c2..bcbb51f63 100644 --- a/Source/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/Source/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1583,7 +1583,7 @@ CodeBlock::CodeBlock(CopyParsedBlockTag, CodeBlock& other, SymbolTable* symTab) , m_source(other.m_source) , m_sourceOffset(other.m_sourceOffset) #if ENABLE(JIT) - , m_globalResolveInfos(other.m_globalResolveInfos) + , m_globalResolveInfos(other.m_globalResolveInfos.size()) #endif #if ENABLE(VALUE_PROFILER) , m_executionEntryCount(0) @@ -1609,6 +1609,11 @@ CodeBlock::CodeBlock(CopyParsedBlockTag, CodeBlock& other, SymbolTable* symTab) optimizeAfterWarmUp(); jitAfterWarmUp(); +#if ENABLE(JIT) + for (unsigned i = m_globalResolveInfos.size(); i--;) + m_globalResolveInfos[i] = GlobalResolveInfo(other.m_globalResolveInfos[i].bytecodeOffset); +#endif + if (other.m_rareData) { createRareDataIfNecessary(); @@ -2258,6 +2263,10 @@ bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset) return false; return true; } +GlobalResolveInfo& CodeBlock::globalResolveInfoForBytecodeOffset(unsigned bytecodeOffset) +{ + return *(binarySearch<GlobalResolveInfo, unsigned, getGlobalResolveInfoBytecodeOffset>(m_globalResolveInfos.begin(), m_globalResolveInfos.size(), bytecodeOffset)); +} #endif void CodeBlock::shrinkToFit(ShrinkMode shrinkMode) @@ -2269,7 +2278,8 @@ void CodeBlock::shrinkToFit(ShrinkMode shrinkMode) #endif #if ENABLE(JIT) m_structureStubInfos.shrinkToFit(); - m_globalResolveInfos.shrinkToFit(); + if (shrinkMode == EarlyShrink) + m_globalResolveInfos.shrinkToFit(); m_callLinkInfos.shrinkToFit(); m_methodCallLinkInfos.shrinkToFit(); #endif @@ -2454,6 +2464,16 @@ void CodeBlock::copyPostParseDataFromAlternative() } #if ENABLE(JIT) +void CodeBlock::reoptimize() +{ + ASSERT(replacement() != this); + ASSERT(replacement()->alternative() == this); + replacement()->tallyFrequentExitSites(); + replacement()->jettison(); + countReoptimization(); + optimizeAfterWarmUp(); +} + CodeBlock* ProgramCodeBlock::replacement() { return &static_cast<ProgramExecutable*>(ownerExecutable())->generatedBytecode(); |