summaryrefslogtreecommitdiff
path: root/src/compiler/CompilerUtility.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/CompilerUtility.h')
-rw-r--r--src/compiler/CompilerUtility.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/compiler/CompilerUtility.h b/src/compiler/CompilerUtility.h
index d7612ffc2f..a68ee5fb0a 100644
--- a/src/compiler/CompilerUtility.h
+++ b/src/compiler/CompilerUtility.h
@@ -58,8 +58,20 @@ typedef struct GrowableListIterator {
*/
struct ArenaBitVector {
bool expandable; /* expand bitmap if we run out? */
+ bool firstDirty; /* when true, don't believe firstBitSet */
+ bool lastDirty; /* when true, don't believe lastBitSet */
u4 storageSize; /* current size, in 32-bit words */
u4* storage;
+ /*
+ * Opportunistically remember first and
+ * last set bits. This yeilds a performance
+ * advantage in cases where large
+ * sparse vectors are repeatedly scanned
+ * (something that can happen a lot during
+ * dataflow analysis.
+ */
+ int firstBitSet;
+ int lastBitSet;
};
/* Handy iterator to walk through the bit positions set to 1 */