summaryrefslogtreecommitdiffstats
path: root/chromium/tools/clang/blink_gc_plugin/TracingStatus.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/tools/clang/blink_gc_plugin/TracingStatus.h')
-rw-r--r--chromium/tools/clang/blink_gc_plugin/TracingStatus.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/chromium/tools/clang/blink_gc_plugin/TracingStatus.h b/chromium/tools/clang/blink_gc_plugin/TracingStatus.h
new file mode 100644
index 00000000000..9eb1080de85
--- /dev/null
+++ b/chromium/tools/clang/blink_gc_plugin/TracingStatus.h
@@ -0,0 +1,29 @@
+// Copyright 2014 The Chromium 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 TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_
+#define TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_
+
+// TracingStatus is a three-point value ordered by unneeded < unknown < needed.
+class TracingStatus {
+ public:
+ static TracingStatus Unneeded() { return kUnneeded; }
+ static TracingStatus Unknown() { return kUnknown; }
+ static TracingStatus Needed() { return kNeeded; }
+ bool IsUnneeded() const { return status_ == kUnneeded; }
+ bool IsUnknown() const { return status_ == kUnknown; }
+ bool IsNeeded() const { return status_ == kNeeded; }
+ TracingStatus LUB(const TracingStatus& other) const {
+ return status_ > other.status_ ? status_ : other.status_;
+ }
+ bool operator==(const TracingStatus& other) const {
+ return status_ == other.status_;
+ }
+ private:
+ enum Status { kUnneeded, kUnknown, kNeeded };
+ TracingStatus(Status status) : status_(status) {}
+ Status status_;
+};
+
+#endif // TOOLS_BLINK_GC_PLUGIN_TRACING_STATUS_H_