| 787 | } |
| 788 | |
| 789 | uint64_t VectorHasher::enableValueIds(uint64_t multiplier, int32_t reservePct) { |
| 790 | BOLT_CHECK_NE( |
| 791 | typeKind_, |
| 792 | TypeKind::BOOLEAN, |
| 793 | "A boolean VectorHasher should always be by range"); |
| 794 | multiplier_ = multiplier; |
| 795 | rangeSize_ = addIdReserve(uniqueValues_.size(), reservePct) + 1; |
| 796 | isRange_ = false; |
| 797 | uint64_t result; |
| 798 | if (__builtin_mul_overflow(multiplier_, rangeSize_, &result)) { |
| 799 | return kRangeTooLarge; |
| 800 | } |
| 801 | return result; |
| 802 | } |
| 803 | |
| 804 | uint64_t VectorHasher::enableValueRange( |
| 805 | uint64_t multiplier, |