Skip to content

Conversation

@DashCoreAutoGuix
Copy link
Owner

@DashCoreAutoGuix DashCoreAutoGuix commented Dec 6, 2025

Summary

Backport of bitcoin#26158

This adds a "priority level" to the benchmark framework, allowing make check to run only high-priority benchmarks while bench_dash can run all benchmarks.

Changes:

  • Modified the BENCHMARK(n) macro to BENCHMARK(n, priority_level) for explicit priority setting
  • All existing benchmarks are marked as "high" priority to retain current behavior
  • Added > /dev/null to suppress output during make check sanity checks
  • Updated all Dash-specific benchmark files (bls.cpp, bls_dkg.cpp, bls_pubkey_agg.cpp, ecdsa.cpp, etc.) to use the new macro signature

Test plan

  • Build succeeds
  • bench_dash binary links correctly

Notes

  • Bitcoin: 36 files changed, 305 lines
  • Dash: 44 files changed, 499 lines (164% ratio)
  • Additional files in Dash due to Dash-specific benchmarks (BLS, ECDSA, POW hashing, etc.)

Summary by CodeRabbit

  • Chores
    • Updated benchmark infrastructure to support explicit priority levels.
    • Assigned high priority to numerous performance benchmarks across the codebase.
    • Modified benchmark sanity-check to suppress output and updated related help text.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 6, 2025

Walkthrough

This pull request updates the benchmark macro API to accept an explicit priority level parameter, changes the BENCHMARK macro signature from BENCHMARK(n) to BENCHMARK(n, priority_level), and applies benchmark::PriorityLevel::HIGH to all benchmark registrations across the codebase.

Changes

Cohort / File(s) Summary
Macro API Update
src/bench/bench.h
Updated BENCHMARK macro signature to accept explicit priority_level parameter; BENCHMARK(n) → BENCHMARK(n, priority_level). Generated comments and usage examples updated accordingly.
Build & Configuration
src/Makefile.test.include, src/bench/bench_bitcoin.cpp
Redirects bench sanity-check output to /dev/null during ENABLE_BENCH execution; updates help text for -sanity-check argument from "no output" to baseline description.
Benchmark Priority Registration
src/bench/addrman.cpp, src/bench/base58.cpp, src/bench/bech32.cpp, src/bench/bip324_ecdh.cpp, src/bench/block_assemble.cpp, src/bench/bls.cpp, src/bench/bls_dkg.cpp, src/bench/bls_pubkey_agg.cpp, src/bench/ccoins_caching.cpp, src/bench/chacha20.cpp, src/bench/checkblock.cpp, src/bench/checkqueue.cpp, src/bench/coin_selection.cpp, src/bench/crypto_hash.cpp, src/bench/duplicate_inputs.cpp, src/bench/ecdsa.cpp, src/bench/ellswift.cpp, src/bench/examples.cpp, src/bench/gcs_filter.cpp, src/bench/hashpadding.cpp, src/bench/load_external.cpp, src/bench/lockedpool.cpp, src/bench/logging.cpp, src/bench/mempool_eviction.cpp, src/bench/mempool_stress.cpp, src/bench/merkle_root.cpp, src/bench/peer_eviction.cpp, src/bench/poly1305.cpp, src/bench/pool.cpp, src/bench/pow_hash.cpp, src/bench/prevector.cpp, src/bench/rollingbloom.cpp, src/bench/rpc_blockchain.cpp, src/bench/rpc_mempool.cpp, src/bench/strencodings.cpp, src/bench/string_cast.cpp, src/bench/util_time.cpp, src/bench/verify_script.cpp, src/bench/wallet_balance.cpp, src/bench/wallet_create.cpp, src/bench/wallet_loading.cpp
All benchmark registrations updated from BENCHMARK(name) to BENCHMARK(name, benchmark::PriorityLevel::HIGH). Affects 40+ benchmark files with consistent priority parameter additions across all registered benchmarks. No changes to benchmark logic or control flow.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

  • Macro definition change in src/bench/bench.h: Verify the new macro signature correctly handles the priority_level parameter and maintains backward compatibility if needed.
  • Build system integration in src/Makefile.test.include and src/bench/bench_bitcoin.cpp: Confirm output redirection and help text changes align with intended behavior.
  • Consistency verification across 40+ benchmark files: While changes are highly repetitive, spot-check several files across different benchmark modules to ensure the priority parameter is applied consistently and correctly formatted.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.58% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a priority level feature to the benchmark framework, which is the core objective of this backport.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch backport-0.25-batch-480-pr-26158

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cf919c and f779a75.

📒 Files selected for processing (44)
  • src/Makefile.test.include (1 hunks)
  • src/bench/addrman.cpp (1 hunks)
  • src/bench/base58.cpp (1 hunks)
  • src/bench/bech32.cpp (1 hunks)
  • src/bench/bench.h (1 hunks)
  • src/bench/bench_bitcoin.cpp (1 hunks)
  • src/bench/bip324_ecdh.cpp (1 hunks)
  • src/bench/block_assemble.cpp (1 hunks)
  • src/bench/bls.cpp (1 hunks)
  • src/bench/bls_dkg.cpp (4 hunks)
  • src/bench/bls_pubkey_agg.cpp (1 hunks)
  • src/bench/ccoins_caching.cpp (1 hunks)
  • src/bench/chacha20.cpp (1 hunks)
  • src/bench/checkblock.cpp (1 hunks)
  • src/bench/checkqueue.cpp (1 hunks)
  • src/bench/coin_selection.cpp (1 hunks)
  • src/bench/crypto_hash.cpp (2 hunks)
  • src/bench/duplicate_inputs.cpp (1 hunks)
  • src/bench/ecdsa.cpp (1 hunks)
  • src/bench/ellswift.cpp (1 hunks)
  • src/bench/examples.cpp (1 hunks)
  • src/bench/gcs_filter.cpp (1 hunks)
  • src/bench/hashpadding.cpp (2 hunks)
  • src/bench/load_external.cpp (1 hunks)
  • src/bench/lockedpool.cpp (1 hunks)
  • src/bench/logging.cpp (1 hunks)
  • src/bench/mempool_eviction.cpp (1 hunks)
  • src/bench/mempool_stress.cpp (1 hunks)
  • src/bench/merkle_root.cpp (1 hunks)
  • src/bench/peer_eviction.cpp (1 hunks)
  • src/bench/poly1305.cpp (1 hunks)
  • src/bench/pool.cpp (1 hunks)
  • src/bench/pow_hash.cpp (1 hunks)
  • src/bench/prevector.cpp (1 hunks)
  • src/bench/rollingbloom.cpp (1 hunks)
  • src/bench/rpc_blockchain.cpp (2 hunks)
  • src/bench/rpc_mempool.cpp (1 hunks)
  • src/bench/strencodings.cpp (1 hunks)
  • src/bench/string_cast.cpp (1 hunks)
  • src/bench/util_time.cpp (1 hunks)
  • src/bench/verify_script.cpp (1 hunks)
  • src/bench/wallet_balance.cpp (1 hunks)
  • src/bench/wallet_create.cpp (1 hunks)
  • src/bench/wallet_loading.cpp (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
src/**/*.{cpp,h,cc,cxx,hpp}

📄 CodeRabbit inference engine (CLAUDE.md)

C++20 codebase should be placed under src/

Files:

  • src/bench/mempool_stress.cpp
  • src/bench/merkle_root.cpp
  • src/bench/ellswift.cpp
  • src/bench/bip324_ecdh.cpp
  • src/bench/bench_bitcoin.cpp
  • src/bench/mempool_eviction.cpp
  • src/bench/pow_hash.cpp
  • src/bench/gcs_filter.cpp
  • src/bench/bls_dkg.cpp
  • src/bench/chacha20.cpp
  • src/bench/logging.cpp
  • src/bench/crypto_hash.cpp
  • src/bench/checkqueue.cpp
  • src/bench/strencodings.cpp
  • src/bench/util_time.cpp
  • src/bench/rpc_mempool.cpp
  • src/bench/pool.cpp
  • src/bench/examples.cpp
  • src/bench/string_cast.cpp
  • src/bench/poly1305.cpp
  • src/bench/lockedpool.cpp
  • src/bench/duplicate_inputs.cpp
  • src/bench/block_assemble.cpp
  • src/bench/wallet_loading.cpp
  • src/bench/bls.cpp
  • src/bench/verify_script.cpp
  • src/bench/load_external.cpp
  • src/bench/base58.cpp
  • src/bench/bech32.cpp
  • src/bench/wallet_balance.cpp
  • src/bench/coin_selection.cpp
  • src/bench/ecdsa.cpp
  • src/bench/bls_pubkey_agg.cpp
  • src/bench/peer_eviction.cpp
  • src/bench/wallet_create.cpp
  • src/bench/rollingbloom.cpp
  • src/bench/rpc_blockchain.cpp
  • src/bench/ccoins_caching.cpp
  • src/bench/bench.h
  • src/bench/checkblock.cpp
  • src/bench/prevector.cpp
  • src/bench/hashpadding.cpp
  • src/bench/addrman.cpp
src/bench/**/*.{cpp,h,cc,cxx,hpp}

📄 CodeRabbit inference engine (CLAUDE.md)

Performance benchmarks should be placed in src/bench/ and use nanobench

Files:

  • src/bench/mempool_stress.cpp
  • src/bench/merkle_root.cpp
  • src/bench/ellswift.cpp
  • src/bench/bip324_ecdh.cpp
  • src/bench/bench_bitcoin.cpp
  • src/bench/mempool_eviction.cpp
  • src/bench/pow_hash.cpp
  • src/bench/gcs_filter.cpp
  • src/bench/bls_dkg.cpp
  • src/bench/chacha20.cpp
  • src/bench/logging.cpp
  • src/bench/crypto_hash.cpp
  • src/bench/checkqueue.cpp
  • src/bench/strencodings.cpp
  • src/bench/util_time.cpp
  • src/bench/rpc_mempool.cpp
  • src/bench/pool.cpp
  • src/bench/examples.cpp
  • src/bench/string_cast.cpp
  • src/bench/poly1305.cpp
  • src/bench/lockedpool.cpp
  • src/bench/duplicate_inputs.cpp
  • src/bench/block_assemble.cpp
  • src/bench/wallet_loading.cpp
  • src/bench/bls.cpp
  • src/bench/verify_script.cpp
  • src/bench/load_external.cpp
  • src/bench/base58.cpp
  • src/bench/bech32.cpp
  • src/bench/wallet_balance.cpp
  • src/bench/coin_selection.cpp
  • src/bench/ecdsa.cpp
  • src/bench/bls_pubkey_agg.cpp
  • src/bench/peer_eviction.cpp
  • src/bench/wallet_create.cpp
  • src/bench/rollingbloom.cpp
  • src/bench/rpc_blockchain.cpp
  • src/bench/ccoins_caching.cpp
  • src/bench/bench.h
  • src/bench/checkblock.cpp
  • src/bench/prevector.cpp
  • src/bench/hashpadding.cpp
  • src/bench/addrman.cpp
**

⚙️ CodeRabbit configuration file

**: # CodeRabbit AI Review Instructions for Dash Backports

Your Role

You are reviewing Bitcoin Core backports to Dash Core. Your ONLY job is to validate that the Dash commit faithfully represents the original Bitcoin commit with minimal, necessary adaptations.

Critical Validation Rules

1. File Operations Must Match (AUTO-REJECT if violated)

  • If Bitcoin modifies an existing file → Dash MUST modify (not create new)
  • If Bitcoin creates a new file → Dash creates
  • If Bitcoin deletes a file → Dash deletes
  • Common failure: Bitcoin modifies keys.txt, Dash creates new file with 58 keys

2. Size Ratio Check (80-150% of Bitcoin)

  • Count functional lines changed (exclude comments/whitespace)
  • Dash changes should be 80-150% of Bitcoin's size
  • Red flag: 2-line Bitcoin fix becoming 150+ lines in Dash

3. No Scope Creep

  • Reject if you see: "TODO:", "FIXME:", "while we're here", "also fix"
  • No unrelated refactoring or style changes
  • Only Bitcoin's intended changes + minimal Dash adaptations

4. Bitcoin-Specific Code Detection

  • Auto-reject witness/segwit code: msg_wtxidrelay, MSG_WTX, witness imports
  • Auto-reject RBF (replace-by-fee) functionality
  • Note: PSBT is supported in Dash (don't flag)

5. Mandatory Adaptations Only

  • bitcoindash in strings/paths
  • BitcoinDash in user-facing text
  • Port numbers: 8332→9998 (RPC), 8333→9999 (P2P)
  • Hardcoded test values specific to Dash
  • No other changes unless absolutely required

6. Completeness Check

  • All files changed in Bitcoin must be present
  • Extra files need clear justification (Dash-specific compatibility)
  • Missing files = incomplete backport

Review Process

  1. First: Check file operations match exactly
  2. Second: Calculate size ratio
  3. Third: Scan for scope creep patterns
  4. Fourth: Detect Bitcoin-specific code
  5. Fifth: Verify all changes are minimal adaptations

Output Format

VALIDATION: [PASS/FAIL]

File Operatio...

Files:

  • src/bench/mempool_stress.cpp
  • src/Makefile.test.include
  • src/bench/merkle_root.cpp
  • src/bench/ellswift.cpp
  • src/bench/bip324_ecdh.cpp
  • src/bench/bench_bitcoin.cpp
  • src/bench/mempool_eviction.cpp
  • src/bench/pow_hash.cpp
  • src/bench/gcs_filter.cpp
  • src/bench/bls_dkg.cpp
  • src/bench/chacha20.cpp
  • src/bench/logging.cpp
  • src/bench/crypto_hash.cpp
  • src/bench/checkqueue.cpp
  • src/bench/strencodings.cpp
  • src/bench/util_time.cpp
  • src/bench/rpc_mempool.cpp
  • src/bench/pool.cpp
  • src/bench/examples.cpp
  • src/bench/string_cast.cpp
  • src/bench/poly1305.cpp
  • src/bench/lockedpool.cpp
  • src/bench/duplicate_inputs.cpp
  • src/bench/block_assemble.cpp
  • src/bench/wallet_loading.cpp
  • src/bench/bls.cpp
  • src/bench/verify_script.cpp
  • src/bench/load_external.cpp
  • src/bench/base58.cpp
  • src/bench/bech32.cpp
  • src/bench/wallet_balance.cpp
  • src/bench/coin_selection.cpp
  • src/bench/ecdsa.cpp
  • src/bench/bls_pubkey_agg.cpp
  • src/bench/peer_eviction.cpp
  • src/bench/wallet_create.cpp
  • src/bench/rollingbloom.cpp
  • src/bench/rpc_blockchain.cpp
  • src/bench/ccoins_caching.cpp
  • src/bench/bench.h
  • src/bench/checkblock.cpp
  • src/bench/prevector.cpp
  • src/bench/hashpadding.cpp
  • src/bench/addrman.cpp
🧠 Learnings (2)
📓 Common learnings
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-31T01:14:55.631Z
Learning: DashCoreAutoGuix successfully completed a complex Bitcoin Core backport (PR #29412) for block mutation detection by implementing the IsBlockMutated function, adding net processing integration, creating comprehensive unit tests, and properly adapting all Bitcoin-specific witness code for Dash compatibility. The backport maintains full security functionality while respecting Dash's non-witness transaction architecture.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-28T20:34:29.061Z
Learning: During Dash backport verification of Bitcoin Core commit 06d469c26b, scope creep was detected when additional pruning test functionality was added to interface_usdt_utxocache.py beyond what was in the original Bitcoin commit. The fix involved removing the extra test block while maintaining the core compiler flag fixes for USDT compilation errors.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-28T22:03:12.364Z
Learning: During multiple verification attempts of Bitcoin Core commit 06d469c26b backport to Dash PR #566, DashCoreAutoGuix consistently identified scope creep in interface_usdt_utxocache.py where additional pruning test functionality was added beyond the original Bitcoin commit. The user provided comprehensive fixes including both scope creep removal and missing mempool test file additions, but couldn't push due to authentication restrictions. The scope creep fix was identified as the priority to resolve CI failures.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-28T19:54:21.426Z
Learning: In Dash backports from Bitcoin Core, including necessary compilation fixes (such as API compatibility changes like UniValue get_int() → getInt<int>()) alongside the core backport is standard and expected practice. These compatibility fixes ensure the backported code compiles in Dash's evolved codebase while preserving Bitcoin's original functionality and intent.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-29T21:29:32.827Z
Learning: DashCoreAutoGuix successfully fixed scope creep in Bitcoin Core commit fcdb39d3ee backport by removing the parse test case from src/test/uint256_tests.cpp that was not part of the original Bitcoin commit. The fix was implemented in commit 16748115ce and verified through range-diff analysis.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-27T22:35:10.176Z
Learning: In Dash backports, src/dashbls files are vendored dependencies that should not be modified during Bitcoin Core backports unless there is specific justification. Unauthorized modifications to vendored dependencies should be removed to maintain code integrity.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-29T17:13:35.087Z
Learning: In Dash backports from Bitcoin Core, when the DIFFICULTY_ADJUSTMENT_INTERVAL constant is missing, it should be defined as 24 for Dash (different from Bitcoin's value), as seen in the getnetworkhashps RPC backport fix.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-29T17:13:35.087Z
Learning: When backporting Bitcoin Core commits that use Python's textwrap.dedent() function in test files, the textwrap import statement needs to be explicitly added if it's missing in the Dash test file.
Learnt from: DashCoreAutoGuix
Repo: DashCoreAutoGuix/dash PR: 0
File: :0-0
Timestamp: 2025-07-30T14:45:15.700Z
Learning: In Dash backports from Bitcoin Core test files, the `address_to_scriptpubkey` function should be imported from `test_framework.wallet` instead of `test_framework.address` as the import location differs between Bitcoin and Dash test frameworks.
📚 Learning: 2025-07-28T23:09:09.522Z
Learnt from: CR
Repo: DashCoreAutoGuix/dash PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-07-28T23:09:09.522Z
Learning: Applies to src/bench/**/*.{cpp,h,cc,cxx,hpp} : Performance benchmarks should be placed in src/bench/ and use nanobench

Applied to files:

  • src/bench/mempool_stress.cpp
  • src/Makefile.test.include
  • src/bench/merkle_root.cpp
  • src/bench/mempool_eviction.cpp
  • src/bench/pow_hash.cpp
  • src/bench/gcs_filter.cpp
  • src/bench/bls_dkg.cpp
  • src/bench/logging.cpp
  • src/bench/crypto_hash.cpp
  • src/bench/checkqueue.cpp
  • src/bench/strencodings.cpp
  • src/bench/util_time.cpp
  • src/bench/pool.cpp
  • src/bench/examples.cpp
  • src/bench/string_cast.cpp
  • src/bench/poly1305.cpp
  • src/bench/lockedpool.cpp
  • src/bench/block_assemble.cpp
  • src/bench/wallet_loading.cpp
  • src/bench/bls.cpp
  • src/bench/verify_script.cpp
  • src/bench/load_external.cpp
  • src/bench/base58.cpp
  • src/bench/bech32.cpp
  • src/bench/coin_selection.cpp
  • src/bench/peer_eviction.cpp
  • src/bench/rpc_blockchain.cpp
  • src/bench/ccoins_caching.cpp
  • src/bench/bench.h
  • src/bench/checkblock.cpp
  • src/bench/prevector.cpp
  • src/bench/hashpadding.cpp
🧬 Code graph analysis (1)
src/bench/load_external.cpp (1)
src/validation.cpp (2)
  • LoadExternalBlockFile (5070-5217)
  • LoadExternalBlockFile (5070-5073)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Lint / Run linters
  • GitHub Check: x86_64-pc-linux-gnu_nowallet / Build depends
  • GitHub Check: x86_64-w64-mingw32 / Build depends
  • GitHub Check: x86_64-apple-darwin / Build depends
  • GitHub Check: arm-linux-gnueabihf / Build depends
  • GitHub Check: x86_64-pc-linux-gnu / Build depends
🔇 Additional comments (45)
src/bench/bench.h (1)

78-80: BENCHMARK macro update matches priority-level design

Macro correctly forwards the new priority_level argument into BenchRunner and only adjusts metadata, not benchmark behavior; consistent with the upstream change.

src/bench/merkle_root.cpp (1)

26-26: Explicit HIGH priority for MerkleRoot benchmark is correct

Registering MerkleRoot with benchmark::PriorityLevel::HIGH matches the new BENCHMARK API and preserves prior default behavior.

src/bench/duplicate_inputs.cpp (1)

64-64: DuplicateInputs benchmark correctly annotated as HIGH priority

The added benchmark::PriorityLevel::HIGH argument matches the new macro signature and keeps this benchmark in the high-priority set used by -priority-level=high.

src/bench/examples.cpp (1)

21-21: Trig benchmark registration updated consistently

The Trig example benchmark is now explicitly registered with benchmark::PriorityLevel::HIGH, which is in line with the framework update.

src/bench/rpc_mempool.cpp (1)

42-42: RpcMempool benchmark priority wiring is correct

Passing benchmark::PriorityLevel::HIGH to BENCHMARK(RpcMempool, …) correctly integrates this benchmark into the high-priority class without altering its logic.

src/bench/mempool_stress.cpp (1)

115-116: Mempool stress benchmarks correctly marked HIGH priority

Both ComplexMemPool and MempoolCheck are now registered with benchmark::PriorityLevel::HIGH, matching the new API and upstream intent.

src/bench/bech32.cpp (1)

35-36: Bech32 benchmarks’ priority annotations are consistent

Bech32Encode and Bech32Decode are now explicitly HIGH priority, matching the framework change and preserving their inclusion in default high-priority runs.

src/Makefile.test.include (1)

419-421: make check bench invocation correctly restricted and silenced

Limiting the sanity run to -priority-level=high and redirecting output to /dev/null aligns with the new priority framework and avoids noisy benchmark output during make check, while leaving behavior unchanged on Windows.

src/bench/bls_dkg.cpp (1)

139-139: LGTM! Dash-specific BLS benchmarks correctly adapted.

All four BENCHMARK macro invocations have been consistently updated to include benchmark::PriorityLevel::HIGH, aligning with the Bitcoin Core backport pattern. This is the appropriate adaptation for Dash-specific benchmark files.

Also applies to: 157-157, 172-172, 187-187

src/bench/bench_bitcoin.cpp (1)

36-36: LGTM! Help text accurately reflects the behavior.

The help text update removes the "with no output" phrase, which is now handled externally via output redirection during sanity checks. This matches the Bitcoin Core backport changes.

src/bench/bls_pubkey_agg.cpp (1)

90-99: LGTM! All BLS public key aggregation benchmarks correctly updated.

All 10 benchmark registrations have been consistently updated to include benchmark::PriorityLevel::HIGH, following the same pattern as Bitcoin Core benchmarks. This is the correct adaptation for Dash-specific BLS functionality.

src/bench/checkblock.cpp (1)

59-60: LGTM! Block benchmark registrations correctly updated.

Both benchmark registrations now include benchmark::PriorityLevel::HIGH, consistent with the Bitcoin Core backport pattern. No functional changes to the benchmark logic.

src/bench/bip324_ecdh.cpp (1)

51-51: LGTM! BIP324 ECDH benchmark correctly updated.

The benchmark registration now includes benchmark::PriorityLevel::HIGH, following the Bitcoin Core backport pattern. No changes to benchmark implementation.

src/bench/block_assemble.cpp (1)

55-55: LGTM! Block assembly benchmark correctly updated.

The benchmark registration now includes benchmark::PriorityLevel::HIGH, consistent with the Bitcoin Core backport. No functional changes to the benchmark.

src/bench/wallet_loading.cpp (1)

121-121: LGTM! Wallet loading benchmarks correctly updated.

Both conditionally-compiled benchmark registrations (BDB legacy and SQLite descriptors) now include benchmark::PriorityLevel::HIGH, following the Bitcoin Core backport pattern. No changes to benchmark logic.

Also applies to: 126-126

src/bench/lockedpool.cpp (1)

42-42: LGTM! Locked pool benchmark correctly updated.

The benchmark registration now includes benchmark::PriorityLevel::HIGH, consistent with the Bitcoin Core backport pattern. No functional changes.

src/bench/rpc_blockchain.cpp (1)

53-53: BENCHMARK priority wiring matches Bitcoin PR and is minimal

Both registrations now pass benchmark::PriorityLevel::HIGH, matching the upstream 26158 pattern while leaving the Dash-specific benchmark bodies untouched; no scope creep or behavioral change beyond adding the metadata.

Also applies to: 66-66

src/bench/ecdsa.cpp (1)

87-89: Dash-only ECDSA benchmarks correctly adapted to new BENCHMARK signature

Adding benchmark::PriorityLevel::HIGH to all three ECDSA BENCHMARK registrations is a mechanical update required by the new macro API; the benchmark logic remains unchanged and this is consistent with how upstream marks existing benches as high priority.

src/bench/hashpadding.cpp (1)

29-29: Hashpadding BENCHMARK priorities match upstream change

Both benchmarks now use benchmark::PriorityLevel::HIGH, exactly mirroring Bitcoin PR 26158 for this file and leaving the hashing logic untouched.

Also applies to: 47-47

src/bench/logging.cpp (1)

44-48: Logging benchmarks correctly marked as high priority

All five logging benchmarks now pass benchmark::PriorityLevel::HIGH, matching the intent and pattern of the upstream PR while keeping Dash’s existing helper structure intact.

src/bench/bls.cpp (1)

361-374: Dash BLS benchmarks consistently adapted to use explicit HIGH priority

All BLS-related BENCHMARK registrations now pass benchmark::PriorityLevel::HIGH, which is the minimal, mechanical change needed for the new macro API; the BLS logic and use of vendored dashbls code remain untouched.

src/bench/addrman.cpp (1)

170-175: AddrMan benchmarks correctly tagged as HIGH priority

All six AddrMan benchmarks now use benchmark::PriorityLevel::HIGH, matching the upstream priority-level change and introducing no extra behavior beyond the metadata.

src/bench/load_external.cpp (1)

63-63: LoadExternalBlockFile BENCHMARK updated as required for new API

Switching to BENCHMARK(LoadExternalBlockFile, benchmark::PriorityLevel::HIGH) is a straightforward, necessary adaptation so this already-backported benchmark uses the new two-argument macro; the benchmark body and Dash-specific CChainState wiring remain unchanged.

src/bench/ccoins_caching.cpp (1)

53-53: CCoinsCaching benchmark correctly marked as HIGH priority

Adding benchmark::PriorityLevel::HIGH to CCoinsCaching’s BENCHMARK registration aligns with the Bitcoin 26158 change, without altering the benchmark behavior itself.

src/bench/coin_selection.cpp (1)

121-122: BENCHMARK macro update is minimal and aligned with the new API

These two registrations are correctly updated to the new BENCHMARK(name, priority_level) signature with benchmark::PriorityLevel::HIGH, with no surrounding logic changes or scope creep. This matches the intended “preserve current behavior” semantics.

src/bench/strencodings.cpp (1)

18-18: HexStrBench registration correctly tagged as HIGH priority

The only change is adding benchmark::PriorityLevel::HIGH to the BENCHMARK call, with the benchmark body untouched. This is consistent with the framework update and preserves existing behavior.

src/bench/pool.cpp (1)

48-49: Pool allocator benchmarks correctly migrated to priority-based BENCHMARK API

Both pool benchmarks now use BENCHMARK(name, benchmark::PriorityLevel::HIGH) with no functional changes. This is a faithful, minimal adaptation.

src/bench/mempool_eviction.cpp (1)

125-125: MempoolEviction benchmark priority registration looks correct

The BENCHMARK invocation is updated to include benchmark::PriorityLevel::HIGH without altering the benchmark setup or logic, which is exactly what this backport should do.

src/bench/ellswift.cpp (1)

31-31: EllSwiftCreate benchmark correctly annotated with HIGH priority

The change is limited to registering EllSwiftCreate with benchmark::PriorityLevel::HIGH. No behavioral changes, matching the intended macro upgrade.

src/bench/peer_eviction.cpp (1)

143-155: All peer eviction benchmarks consistently moved to HIGH-priority registration

Each BENCHMARK call now passes benchmark::PriorityLevel::HIGH, with no edits to the underlying benchmark functions or test data. This is a consistent, minimal backport of the priority-level feature.

src/bench/verify_script.cpp (1)

32-32: VerifyNestedIfScript benchmark registration updated as expected

The benchmark is now registered with benchmark::PriorityLevel::HIGH and nothing else changes. This aligns with the new BENCHMARK API while preserving behavior.

src/bench/checkqueue.cpp (1)

73-73: BENCHMARK macro priority argument correctly applied in checkqueue.cpp

The update to BENCHMARK(CCheckQueueSpeedPrevectorJob, benchmark::PriorityLevel::HIGH) is correct and contains no functional modifications. A repo-wide search confirms all production benchmark calls have been updated with priority levels; the only remaining single-argument BENCHMARK is a documentation example in src/bench/bench.h, which is intentional.

src/bench/chacha20.cpp (1)

69-74: LGTM - Faithful backport of benchmark priority parameter.

All six benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic, purely metadata update as intended by Bitcoin Core PR bitcoin#26158.

src/bench/rollingbloom.cpp (1)

35-36: LGTM - Faithful backport of benchmark priority parameter.

Both benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic.

src/bench/crypto_hash.cpp (2)

261-285: LGTM - Bitcoin Core benchmarks correctly updated.

All Bitcoin Core benchmark registrations (RIPEMD160, SHA*, MuHash*, etc.) correctly updated to include benchmark::PriorityLevel::HIGH.


353-360: LGTM - Dash-specific benchmarks properly maintained.

Dash-specific DSHA256 benchmarks correctly updated following the same pattern as Bitcoin Core benchmarks. Proper separation maintained with comment at line 287.

src/bench/wallet_create.cpp (1)

52-53: LGTM - Faithful backport of benchmark priority parameter.

Both wallet creation benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH within the USE_SQLITE conditional block.

src/bench/util_time.cpp (1)

39-42: LGTM - Faithful backport of benchmark priority parameter.

All four time-related benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic.

src/bench/poly1305.cpp (1)

42-44: LGTM - Faithful backport of benchmark priority parameter.

All three Poly1305 benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic.

src/bench/gcs_filter.cpp (1)

84-88: LGTM - Faithful backport of benchmark priority parameter.

All five GCS filter benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic.

src/bench/wallet_balance.cpp (1)

58-61: LGTM - Faithful backport of benchmark priority parameter.

All four wallet balance benchmark registrations correctly updated to include benchmark::PriorityLevel::HIGH. No changes to benchmark logic.

src/bench/pow_hash.cpp (1)

265-359: BENCHMARK priority updates are consistent and minimal

All POW hash benchmarks were uniformly converted to the new BENCHMARK(fn, benchmark::PriorityLevel::HIGH) signature with no logic changes or scope creep; this matches the expected framework API update for this file.

src/bench/base58.cpp (1)

53-55: Base58 benchmark registrations correctly migrated to prioritized macro

The three Base58 benchmarks now use the 2‑argument BENCHMARK form with benchmark::PriorityLevel::HIGH, with no behavioral changes to the benchmarks themselves.

src/bench/string_cast.cpp (1)

70-75: String-cast benchmarks use the new priority-aware BENCHMARK API correctly

All six string conversion benchmarks have been updated to BENCHMARK(..., benchmark::PriorityLevel::HIGH) without altering their bodies, matching the intended backport change.

src/bench/prevector.cpp (1)

136-147: Prevector benchmarks correctly adapted to include HIGH priority

The PREVECTOR_TEST macro and the PrevectorAssign/PrevectorAssignTo registrations now uniformly pass benchmark::PriorityLevel::HIGH to BENCHMARK, with no modifications to the underlying benchmark logic.

Also applies to: 153-154


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants