summaryrefslogtreecommitdiffstats
path: root/Include/internal
diff options
context:
space:
mode:
Diffstat (limited to 'Include/internal')
-rw-r--r--Include/internal/pycore_code.h22
-rw-r--r--Include/internal/pycore_opcode.h2
2 files changed, 22 insertions, 2 deletions
diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h
index 9e59fc9..b53657a 100644
--- a/Include/internal/pycore_code.h
+++ b/Include/internal/pycore_code.h
@@ -41,7 +41,6 @@ typedef struct {
typedef struct {
uint16_t counter;
- uint16_t mask;
} _PyCompareOpCache;
#define INLINE_CACHE_ENTRIES_COMPARE_OP CACHE_ENTRIES(_PyCompareOpCache)
@@ -477,6 +476,27 @@ _Py_MakeShimCode(const _PyShimCodeDef *code);
extern uint32_t _Py_next_func_version;
+/* Comparison bit masks. */
+
+/* Note this evaluates its arguments twice each */
+#define COMPARISON_BIT(x, y) (1 << (2 * ((x) >= (y)) + ((x) <= (y))))
+
+/*
+ * The following bits are chosen so that the value of
+ * COMPARSION_BIT(left, right)
+ * masked by the values below will be non-zero if the
+ * comparison is true, and zero if it is false */
+
+/* This is for values that are unordered, ie. NaN, not types that are unordered, e.g. sets */
+#define COMPARISON_UNORDERED 1
+
+#define COMPARISON_LESS_THAN 2
+#define COMPARISON_GREATER_THAN 4
+#define COMPARISON_EQUALS 8
+
+#define COMPARISON_NOT_EQUALS (COMPARISON_UNORDERED | COMPARISON_LESS_THAN | COMPARISON_GREATER_THAN)
+
+
#ifdef __cplusplus
}
#endif
diff --git a/Include/internal/pycore_opcode.h b/Include/internal/pycore_opcode.h
index 8fdf121..5806d69 100644
--- a/Include/internal/pycore_opcode.h
+++ b/Include/internal/pycore_opcode.h
@@ -47,7 +47,7 @@ const uint8_t _PyOpcode_Caches[256] = {
[FOR_ITER] = 1,
[STORE_ATTR] = 4,
[LOAD_ATTR] = 9,
- [COMPARE_OP] = 2,
+ [COMPARE_OP] = 1,
[LOAD_GLOBAL] = 5,
[BINARY_OP] = 1,
[CALL] = 4,