summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp46
1 files changed, 19 insertions, 27 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp b/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
index c9e5c79fd..17b45a328 100644
--- a/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
+++ b/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
@@ -31,11 +31,12 @@
#include "CodeBlock.h"
#include "DFGJITCode.h"
#include "Executable.h"
-#include "JSCInlines.h"
namespace JSC { namespace DFG {
-ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback()
+ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback(
+ PassRefPtr<CodeBlock> dfgCodeBlock)
+ : m_dfgCodeBlock(dfgCodeBlock)
{
}
@@ -43,51 +44,42 @@ ToFTLForOSREntryDeferredCompilationCallback::~ToFTLForOSREntryDeferredCompilatio
{
}
-Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create()
+PassRefPtr<ToFTLForOSREntryDeferredCompilationCallback>
+ToFTLForOSREntryDeferredCompilationCallback::create(
+ PassRefPtr<CodeBlock> dfgCodeBlock)
{
- return adoptRef(*new ToFTLForOSREntryDeferredCompilationCallback());
+ return adoptRef(new ToFTLForOSREntryDeferredCompilationCallback(dfgCodeBlock));
}
void ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously(
- CodeBlock* codeBlock, CodeBlock* profiledDFGCodeBlock)
+ CodeBlock* codeBlock)
{
if (Options::verboseOSR()) {
dataLog(
- "Optimizing compilation of ", *codeBlock, " (for ", *profiledDFGCodeBlock,
+ "Optimizing compilation of ", *codeBlock, " (for ", *m_dfgCodeBlock,
") did become ready.\n");
}
- profiledDFGCodeBlock->jitCode()->dfg()->forceOptimizationSlowPathConcurrently(
- profiledDFGCodeBlock);
+ m_dfgCodeBlock->jitCode()->dfg()->forceOptimizationSlowPathConcurrently(
+ m_dfgCodeBlock.get());
}
void ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete(
- CodeBlock* codeBlock, CodeBlock* profiledDFGCodeBlock, CompilationResult result)
+ CodeBlock* codeBlock, CompilationResult result)
{
if (Options::verboseOSR()) {
dataLog(
- "Optimizing compilation of ", *codeBlock, " (for ", *profiledDFGCodeBlock,
+ "Optimizing compilation of ", *codeBlock, " (for ", *m_dfgCodeBlock,
") result: ", result, "\n");
}
- JITCode* jitCode = profiledDFGCodeBlock->jitCode()->dfg();
-
- switch (result) {
- case CompilationSuccessful:
- jitCode->setOSREntryBlock(*codeBlock->vm(), profiledDFGCodeBlock, codeBlock);
- break;
- case CompilationFailed:
- jitCode->osrEntryRetry = 0;
- jitCode->abandonOSREntry = true;
- break;
- case CompilationDeferred:
- RELEASE_ASSERT_NOT_REACHED();
- case CompilationInvalidated:
- jitCode->osrEntryRetry = 0;
- break;
- }
+ if (result == CompilationSuccessful)
+ m_dfgCodeBlock->jitCode()->dfg()->osrEntryBlock = codeBlock;
- DeferredCompilationCallback::compilationDidComplete(codeBlock, profiledDFGCodeBlock, result);
+ // FIXME: if we failed, we might want to just turn off OSR entry rather than
+ // totally turning off tier-up.
+ m_dfgCodeBlock->jitCode()->dfg()->setOptimizationThresholdBasedOnCompilationResult(
+ m_dfgCodeBlock.get(), result);
}
} } // JSC::DFG