aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/bitvec/bv.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/bitvec/bv.go')
-rw-r--r--src/cmd/compile/internal/bitvec/bv.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/bitvec/bv.go b/src/cmd/compile/internal/bitvec/bv.go
index bcac1fe351..ad7ed0a196 100644
--- a/src/cmd/compile/internal/bitvec/bv.go
+++ b/src/cmd/compile/internal/bitvec/bv.go
@@ -128,10 +128,21 @@ func (bv BitVec) IsEmpty() bool {
return true
}
+func (bv BitVec) Count() int {
+ n := 0
+ for _, x := range bv.B {
+ n += bits.OnesCount32(x)
+ }
+ return n
+}
+
func (bv BitVec) Not() {
for i, x := range bv.B {
bv.B[i] = ^x
}
+ if bv.N%wordBits != 0 {
+ bv.B[len(bv.B)-1] &= 1<<uint(bv.N%wordBits) - 1 // clear bits past N in the last word
+ }
}
// union