diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
commit | a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch) | |
tree | b7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/JavaScriptCore/jit/JIT.cpp | |
parent | 8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff) | |
download | qtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz |
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/JavaScriptCore/jit/JIT.cpp')
-rw-r--r-- | Source/JavaScriptCore/jit/JIT.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/Source/JavaScriptCore/jit/JIT.cpp b/Source/JavaScriptCore/jit/JIT.cpp index c2aec549a..ff5615f44 100644 --- a/Source/JavaScriptCore/jit/JIT.cpp +++ b/Source/JavaScriptCore/jit/JIT.cpp @@ -96,7 +96,7 @@ JIT::JIT(JSGlobalData* globalData, CodeBlock* codeBlock) #if ENABLE(DFG_JIT) void JIT::emitOptimizationCheck(OptimizationCheckKind kind) { - if (!shouldEmitProfiling()) + if (!canBeOptimized()) return; Jump skipOptimize = branchAdd32(Signed, TrustedImm32(kind == LoopOptimizationCheck ? Options::executionCounterIncrementForLoop : Options::executionCounterIncrementForReturn), AbsoluteAddress(m_codeBlock->addressOfJITExecuteCounter())); @@ -417,7 +417,7 @@ void JIT::privateCompileSlowCases() #if ENABLE(VALUE_PROFILER) RareCaseProfile* rareCaseProfile = 0; - if (m_canBeOptimized) + if (shouldEmitProfiling()) rareCaseProfile = m_codeBlock->addRareCaseProfile(m_bytecodeOffset); #endif @@ -497,7 +497,7 @@ void JIT::privateCompileSlowCases() ASSERT_WITH_MESSAGE(firstTo == (iter - 1)->to, "Too many jumps linked in slow case codegen."); #if ENABLE(VALUE_PROFILER) - if (m_canBeOptimized) + if (shouldEmitProfiling()) add32(TrustedImm32(1), AbsoluteAddress(&rareCaseProfile->m_counter)); #endif @@ -565,7 +565,24 @@ JITCode JIT::privateCompile(CodePtr* functionEntryArityCheck, JITCompilationEffo #endif #if ENABLE(VALUE_PROFILER) - m_canBeOptimized = m_codeBlock->canCompileWithDFG(); + DFG::CapabilityLevel level = m_codeBlock->canCompileWithDFG(); + switch (level) { + case DFG::CannotCompile: + m_canBeOptimized = false; + m_shouldEmitProfiling = false; + break; + case DFG::ShouldProfile: + m_canBeOptimized = false; + m_shouldEmitProfiling = true; + break; + case DFG::CanCompile: + m_canBeOptimized = true; + m_shouldEmitProfiling = true; + break; + default: + ASSERT_NOT_REACHED(); + break; + } #endif // Just add a little bit of randomness to the codegen @@ -619,7 +636,7 @@ JITCode JIT::privateCompile(CodePtr* functionEntryArityCheck, JITCompilationEffo Label functionBody = label(); #if ENABLE(VALUE_PROFILER) - if (m_canBeOptimized) + if (canBeOptimized()) add32(TrustedImm32(1), AbsoluteAddress(&m_codeBlock->m_executionEntryCount)); #endif |