summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/JIT.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
commita89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch)
treeb7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/JavaScriptCore/jit/JIT.cpp
parent8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff)
downloadqtwebkit-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.cpp27
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