summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGFiltrationResult.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGFiltrationResult.h')
-rw-r--r--Source/JavaScriptCore/dfg/DFGFiltrationResult.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGFiltrationResult.h b/Source/JavaScriptCore/dfg/DFGFiltrationResult.h
index 8c80cea90..20d819546 100644
--- a/Source/JavaScriptCore/dfg/DFGFiltrationResult.h
+++ b/Source/JavaScriptCore/dfg/DFGFiltrationResult.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,23 +23,29 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef DFGFiltrationResult_h
-#define DFGFiltrationResult_h
-
-#include <wtf/Platform.h>
+#pragma once
#if ENABLE(DFG_JIT)
namespace JSC { namespace DFG {
+// Tells you if an operation that filters type (i.e. does a type check/speculation) will always
+// exit. Formally, this means that the proven type of a value prior to the filter was not
+// bottom (i.e. not "clear" or "SpecEmpty") but becomes bottom as a result of executing the
+// filter.
+//
+// Note that per this definition, a filter will not return Contradiction if the node's proven
+// type was already bottom. This is necessary because we have this yucky convention of using
+// a proven type of bottom for nodes that don't hold JS values, like Phi nodes in ThreadedCPS
+// and storage nodes.
enum FiltrationResult {
+ // Means that this operation may not always exit.
FiltrationOK,
+
+ // Means that this operation will always exit.
Contradiction
};
} } // namespace JSC::DFG
#endif // ENABLE(DFG_JIT)
-
-#endif // DFGFiltrationResult_h
-