Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#26105: Use ReadLE64 in uint256::GetUint64 inste…
Browse files Browse the repository at this point in the history
…ad of duplicating logic

04fee75 Use ReadLE64 in uint256::GetUint64() instead of duplicating logic (Pieter Wuille)

Pull request description:

  No need to have a (naive) copy of the `ReadLE64` logic inside `uint256::GetUint64`, when we have an optimized function for exactly that.

ACKs for top commit:
  davidgumberg:
    ACK 04fee75
  jonatack:
    ACK 04fee75 review, this use of ReadLE64() is similar to the existing invocation by Num3072::Num3072(), sanity checked that before and after this change GetUint64() returns the same result (debug build, clang 13)

Tree-SHA512: 0fc2681536a18d82408411bcc6d5c6445fb96793fa43ff4021cd2933d46514c725318da35884f428d1799023921f33f8af091ef428ceb96a50866ac53a345356
fanquake committed Sep 16, 2022
2 parents 19526d9 + 04fee75 commit 2530a24
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions src/uint256.h
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
#ifndef BITCOIN_UINT256_H
#define BITCOIN_UINT256_H

#include <crypto/common.h>
#include <span.h>

#include <assert.h>
@@ -84,15 +85,7 @@ class base_blob

uint64_t GetUint64(int pos) const
{
const uint8_t* ptr = m_data + pos * 8;
return ((uint64_t)ptr[0]) | \
((uint64_t)ptr[1]) << 8 | \
((uint64_t)ptr[2]) << 16 | \
((uint64_t)ptr[3]) << 24 | \
((uint64_t)ptr[4]) << 32 | \
((uint64_t)ptr[5]) << 40 | \
((uint64_t)ptr[6]) << 48 | \
((uint64_t)ptr[7]) << 56;
return ReadLE64(m_data + pos * 8);
}

template<typename Stream>

0 comments on commit 2530a24

Please sign in to comment.