summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp')
-rw-r--r--Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp b/Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp
index 35af7c7b9..762387caf 100644
--- a/Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp
+++ b/Source/JavaScriptCore/bytecode/DeferredCompilationCallback.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,10 +26,46 @@
#include "config.h"
#include "DeferredCompilationCallback.h"
+#include "CodeBlock.h"
+
namespace JSC {
DeferredCompilationCallback::DeferredCompilationCallback() { }
DeferredCompilationCallback::~DeferredCompilationCallback() { }
+void DeferredCompilationCallback::compilationDidComplete(CodeBlock*, CodeBlock*, CompilationResult result)
+{
+ dumpCompiledSourcesIfNeeded();
+
+ switch (result) {
+ case CompilationFailed:
+ case CompilationInvalidated:
+ case CompilationSuccessful:
+ break;
+ case CompilationDeferred:
+ RELEASE_ASSERT_NOT_REACHED();
+ }
+}
+
+Vector<DeferredSourceDump>& DeferredCompilationCallback::ensureDeferredSourceDump()
+{
+ if (!m_deferredSourceDump)
+ m_deferredSourceDump = std::make_unique<Vector<DeferredSourceDump>>();
+ return *m_deferredSourceDump;
+}
+
+void DeferredCompilationCallback::dumpCompiledSourcesIfNeeded()
+{
+ if (!m_deferredSourceDump)
+ return;
+
+ ASSERT(Options::dumpSourceAtDFGTime());
+ unsigned index = 0;
+ for (auto& info : *m_deferredSourceDump) {
+ dataLog("[", ++index, "] ");
+ info.dump();
+ }
+}
+
} // JSC