diff --git a/src/mongo/bson/bsonobjbuilder.h b/src/mongo/bson/bsonobjbuilder.h index 38dae82..ee9b957 100644 --- a/src/mongo/bson/bsonobjbuilder.h +++ b/src/mongo/bson/bsonobjbuilder.h @@ -341,7 +341,7 @@ public: return append(fieldName, d); } - BSONObjBuilder& appendNumber(StringData fieldName, size_t n) { + BSONObjBuilder& appendNumber(StringData fieldName, uint64_t n) { static const size_t maxInt = (1 << 30); if (n < maxInt) append(fieldName, static_cast(n)); @@ -350,6 +350,18 @@ public: return *this; } + /** + * Implement appendNumber for uint64_t and size_t on 32-bit platforms where + * these types differs. Typically for + * 32b: size_t ~ unsigned int; uint64_t ~ unsigned long long; + * 64b: size_t ~ unsigned long; uint64_t ~ unsigned long; + */ + inline BSONObjBuilder& appendNumber( + StringData fieldName, + std::conditional::value, size_t, unsigned int>::type n) { + return appendNumber(fieldName, static_cast(n)); + } + BSONObjBuilder& appendNumber(StringData fieldName, Decimal128 decNumber) { return append(fieldName, decNumber); } diff --git a/src/mongo/platform/pause.h b/src/mongo/platform/pause.h index 46df146..5003de5 100644 --- a/src/mongo/platform/pause.h +++ b/src/mongo/platform/pause.h @@ -55,7 +55,7 @@ /* ori 0,0,0 is the PPC64 noop instruction */ #define MONGO_YIELD_CORE_FOR_SMT() __asm__ volatile("ori 0,0,0" ::: "memory") -#elif defined(__aarch64__) +#elif defined(__aarch64__) || defined(__arm__) #define MONGO_YIELD_CORE_FOR_SMT() __asm__ volatile("yield" ::: "memory")