From f4097144294b65d162a06c9f74ec0817d489abea Mon Sep 17 00:00:00 2001 From: Max Hora Date: Fri, 21 Apr 2023 17:42:40 +0300 Subject: [PATCH 1/2] Mutex lock initialization call --- .../crypto/pedersen_hash/pedersen_lookup.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp b/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp index f455c684be..cb3aff1f4b 100644 --- a/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp +++ b/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp @@ -1,5 +1,7 @@ #include "./pedersen_lookup.hpp" +#include + #include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp" namespace crypto { @@ -10,6 +12,10 @@ std::array, NUM_PEDERSEN_TABLES> peder std::vector pedersen_iv_table; std::array generators; +#if !defined(__wasm__) +std::mutex init_mutex; +#endif + static bool inited = false; void init_single_lookup_table(const size_t index) @@ -66,6 +72,11 @@ void init() { ASSERT(BITS_PER_TABLE < BITS_OF_BETA); ASSERT(BITS_PER_TABLE + BITS_OF_BETA < BITS_ON_CURVE); + +#if !defined(__wasm__) + const std::lock_guard lock(init_mutex); +#endif + if (inited) { return; } From 6036f528817f7cd701455acd7ca457d8c4b0ecb9 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 21 Apr 2023 16:47:14 +0100 Subject: [PATCH 2/2] add comment on mutex --- cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp b/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp index cb3aff1f4b..980b41a225 100644 --- a/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp +++ b/cpp/src/barretenberg/crypto/pedersen_hash/pedersen_lookup.cpp @@ -12,6 +12,8 @@ std::array, NUM_PEDERSEN_TABLES> peder std::vector pedersen_iv_table; std::array generators; +// Mutex is not available in the WASM context. +// WASM runs in a single-thread so this is acceptable. #if !defined(__wasm__) std::mutex init_mutex; #endif