Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: src/compiler-dispatcher/compiler-dispatcher.h

Issue 2558293004: Add a basic compiler dispatcher (Closed)
Patch Set: updates Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « BUILD.gn ('k') | src/compiler-dispatcher/compiler-dispatcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler-dispatcher/compiler-dispatcher.h
diff --git a/src/compiler-dispatcher/compiler-dispatcher.h b/src/compiler-dispatcher/compiler-dispatcher.h
new file mode 100644
index 0000000000000000000000000000000000000000..e6737a002945175bcaaefd3bcf6d25bec2232edc
--- /dev/null
+++ b/src/compiler-dispatcher/compiler-dispatcher.h
@@ -0,0 +1,69 @@
+// Copyright 2016 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8_COMPILER_DISPATCHER_COMPILER_DISPATCHER_H_
+#define V8_COMPILER_DISPATCHER_COMPILER_DISPATCHER_H_
+
+#include <map>
+#include <memory>
+#include <utility>
+
+#include "src/base/macros.h"
+#include "src/globals.h"
+
+namespace v8 {
+namespace internal {
+
+class CompilerDispatcherJob;
+class CompilerDispatcherTracer;
+class Isolate;
+class SharedFunctionInfo;
+
+template <typename T>
+class Handle;
+
+class V8_EXPORT_PRIVATE CompilerDispatcher {
+ public:
+ enum class BlockingBehavior { kBlock, kDontBlock };
+
+ CompilerDispatcher(Isolate* isolate, size_t max_stack_size);
+ ~CompilerDispatcher();
+
+ // Returns true if a job was enqueued.
+ bool Enqueue(Handle<SharedFunctionInfo> function);
+
+ // Returns true if there is a pending job for the given function.
+ bool IsEnqueued(Handle<SharedFunctionInfo> function) const;
+
+ // Blocks until the given function is compiled (and does so as fast as
+ // possible). Returns true if the compile job was succesful.
+ bool FinishNow(Handle<SharedFunctionInfo> function);
+
+ // Aborts a given job. Blocks if requested.
+ void Abort(Handle<SharedFunctionInfo> function, BlockingBehavior blocking);
+
+ // Aborts all jobs. Blocks if requested.
+ void AbortAll(BlockingBehavior blocking);
+
+ private:
+ typedef std::multimap<std::pair<int, int>,
+ std::unique_ptr<CompilerDispatcherJob>>
+ JobMap;
+ JobMap::const_iterator GetJobFor(Handle<SharedFunctionInfo> shared) const;
+
+ Isolate* isolate_;
+ size_t max_stack_size_;
+ std::unique_ptr<CompilerDispatcherTracer> tracer_;
+
+ // Mapping from (script id, function literal id) to job. We use a multimap,
+ // as script id is not necessarily unique.
+ JobMap jobs_;
+
+ DISALLOW_COPY_AND_ASSIGN(CompilerDispatcher);
+};
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_COMPILER_DISPATCHER_COMPILER_DISPATCHER_H_
« no previous file with comments | « BUILD.gn ('k') | src/compiler-dispatcher/compiler-dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698