This commit is contained in:
acoates-ms 2019-05-07 18:28:51 -07:00 коммит произвёл GitHub
Родитель e4e31a0ffb
Коммит 52bb7ce8d0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
9 изменённых файлов: 38 добавлений и 5 удалений

Просмотреть файл

@ -488,7 +488,10 @@ class SignedValueHandler<T, true> {
Expected<T, ConversionCode> finalize(U value) { Expected<T, ConversionCode> finalize(U value) {
T rv; T rv;
if (negative_) { if (negative_) {
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4146) // unary minus operator applied to unsigned type, result still unsigned
rv = T(-value); rv = T(-value);
FOLLY_POP_WARNING
if (UNLIKELY(rv > 0)) { if (UNLIKELY(rv > 0)) {
return makeUnexpected(ConversionCode::NEGATIVE_OVERFLOW); return makeUnexpected(ConversionCode::NEGATIVE_OVERFLOW);
} }
@ -574,7 +577,10 @@ inline Expected<Tgt, ConversionCode> digits_to(
UT result = 0; UT result = 0;
for (; e - b >= 4; b += 4) { for (; e - b >= 4; b += 4) {
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4309) // truncation of constant value
result *= static_cast<UT>(10000); result *= static_cast<UT>(10000);
FOLLY_POP_WARNING
const int32_t r0 = shift1000[static_cast<size_t>(b[0])]; const int32_t r0 = shift1000[static_cast<size_t>(b[0])];
const int32_t r1 = shift100[static_cast<size_t>(b[1])]; const int32_t r1 = shift100[static_cast<size_t>(b[1])];
const int32_t r2 = shift10[static_cast<size_t>(b[2])]; const int32_t r2 = shift10[static_cast<size_t>(b[2])];
@ -700,7 +706,10 @@ Expected<Tgt, ConversionCode> str_to_integral(StringPiece* src) noexcept {
if (UNLIKELY(err != ConversionCode::SUCCESS)) { if (UNLIKELY(err != ConversionCode::SUCCESS)) {
return makeUnexpected(err); return makeUnexpected(err);
} }
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4127) // conditional expression is constant
if (std::is_signed<Tgt>::value && UNLIKELY(b >= past)) { if (std::is_signed<Tgt>::value && UNLIKELY(b >= past)) {
FOLLY_POP_WARNING
return makeUnexpected(ConversionCode::NO_DIGITS); return makeUnexpected(ConversionCode::NO_DIGITS);
} }
if (UNLIKELY(!isdigit(*b))) { if (UNLIKELY(!isdigit(*b))) {

Просмотреть файл

@ -1276,7 +1276,10 @@ checkConversion(const Src& value) {
std::numeric_limits<Tgt>::max() - static_cast<Tgt>(mmax)) { std::numeric_limits<Tgt>::max() - static_cast<Tgt>(mmax)) {
return false; return false;
} }
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4127) // conditional expression is constant
} else if (std::is_signed<Tgt>::value && value <= tgtMinAsSrc) { } else if (std::is_signed<Tgt>::value && value <= tgtMinAsSrc) {
FOLLY_POP_WARNING
if (value < tgtMinAsSrc) { if (value < tgtMinAsSrc) {
return false; return false;
} }

Просмотреть файл

@ -298,7 +298,10 @@ void internalSplit(
} }
return; return;
} }
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4127) // conditional expression is constant
if (std::is_same<DelimT, StringPiece>::value && dSize == 1) { if (std::is_same<DelimT, StringPiece>::value && dSize == 1) {
FOLLY_POP_WARNING
// Call the char version because it is significantly faster. // Call the char version because it is significantly faster.
return internalSplit<OutStringT>(delimFront(delim), sp, out, ignoreEmpty); return internalSplit<OutStringT>(delimFront(delim), sp, out, ignoreEmpty);
} }
@ -454,7 +457,10 @@ void internalJoinAppend(
Iterator end, Iterator end,
String& output) { String& output) {
assert(begin != end); assert(begin != end);
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4127) // conditional expression is constant
if (std::is_same<Delim, StringPiece>::value && delimSize(delimiter) == 1) { if (std::is_same<Delim, StringPiece>::value && delimSize(delimiter) == 1) {
FOLLY_POP_WARNING
internalJoinAppend(delimFront(delimiter), begin, end, output); internalJoinAppend(delimFront(delimiter), begin, end, output);
return; return;
} }

Просмотреть файл

@ -1,5 +1,9 @@
DIRS = \ DIRS = \
container \
detail \ detail \
hash \
lang \
memory \
portability{!droidarm,!droidarm64,!droidx64,!droidx86} \ portability{!droidarm,!droidarm64,!droidx64,!droidx86} \
android{droidarm,droidarm64,droidx64,droidx86} \ android{droidarm,droidarm64,droidx64,droidx86} \
win32{apple,chpe,x64,x86} \ win32{apple,chpe,x64,x86} \

Просмотреть файл

@ -642,11 +642,14 @@ size_t hash_combine_generic(
const Ts&... ts) noexcept(noexcept(detail::c_array_size_t{h(t), const Ts&... ts) noexcept(noexcept(detail::c_array_size_t{h(t),
h(ts)...})) { h(ts)...})) {
size_t seed = h(t); size_t seed = h(t);
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4127) // conditional expression is constant
if (sizeof...(ts) == 0) { if (sizeof...(ts) == 0) {
return seed; return seed;
} }
size_t remainder = hash_combine_generic(h, ts...); size_t remainder = hash_combine_generic(h, ts...);
if /* constexpr */ (sizeof(size_t) == sizeof(uint32_t)) { if /* constexpr */ (sizeof(size_t) == sizeof(uint32_t)) {
FOLLY_POP_WARNING
return twang_32from64((uint64_t(seed) << 32) | remainder); return twang_32from64((uint64_t(seed) << 32) | remainder);
} else { } else {
return static_cast<size_t>(hash_128_to_64(seed, remainder)); return static_cast<size_t>(hash_128_to_64(seed, remainder));

Просмотреть файл

@ -712,7 +712,10 @@ void escapeStringImpl(
word = folly::partialLoadUnaligned<uint64_t>(firstEsc, avail); word = folly::partialLoadUnaligned<uint64_t>(firstEsc, avail);
} }
auto prefix = firstEscapableInWord<EnableExtraAsciiEscapes>(word, opts); auto prefix = firstEscapableInWord<EnableExtraAsciiEscapes>(word, opts);
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4018) // signed/unsigned mismatch
DCHECK_LE(prefix, avail); DCHECK_LE(prefix, avail);
FOLLY_POP_WARNING
firstEsc += prefix; firstEsc += prefix;
if (prefix < 8) { if (prefix < 8) {
break; break;

Просмотреть файл

@ -88,7 +88,10 @@ using max_align_v_ = max_align_t_<
// //
// Apple's allocation reference: http://bit.ly/malloc-small // Apple's allocation reference: http://bit.ly/malloc-small
constexpr std::size_t max_align_v = detail::max_align_v_::value; constexpr std::size_t max_align_v = detail::max_align_v_::value;
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4324) // structure was padded due to alignment specifier
struct alignas(max_align_v) max_align_t {}; struct alignas(max_align_v) max_align_t {};
FOLLY_POP_WARNING
// Memory locations within the same cache line are subject to destructive // Memory locations within the same cache line are subject to destructive
// interference, also known as false sharing, which is when concurrent // interference, also known as false sharing, which is when concurrent

Просмотреть файл

@ -324,7 +324,10 @@ inline T partialLoadUnaligned(const void* p, size_t l) {
auto cp = static_cast<const char*>(p); auto cp = static_cast<const char*>(p);
T value = 0; T value = 0;
FOLLY_PUSH_WARNING
FOLLY_MSVC_DISABLE_WARNING(4324) // structure was padded due to alignment specifier
if (!kHasUnalignedAccess || !kIsLittleEndian) { if (!kHasUnalignedAccess || !kIsLittleEndian) {
FOLLY_POP_WARNING
// Unsupported, use memcpy. // Unsupported, use memcpy.
memcpy(&value, cp, l); memcpy(&value, cp, l);
return value; return value;

Просмотреть файл

@ -3,18 +3,17 @@ LIBLETNAME = Folly
!include $(OPENSOURCE_REACTNATIVE)\OfficeISS\ReactCommon\make.inc !include $(OPENSOURCE_REACTNATIVE)\OfficeISS\ReactCommon\make.inc
SOURCES_SHARED = \ SOURCES_SHARED = \
..\Assume.cpp \
..\Conv.cpp \ ..\Conv.cpp \
..\Demangle.cpp \ ..\Demangle.cpp \
..\dynamic.cpp \ ..\dynamic.cpp \
..\Format.cpp \
..\json.cpp \ ..\json.cpp \
..\StringBase.cpp \ ..\json_pointer.cpp \
..\ScopeGuard.cpp \ ..\ScopeGuard.cpp \
..\String.cpp \
..\Unicode.cpp \ ..\Unicode.cpp \
SOURCES_WIN32 = \ SOURCES_WIN32 = $(SOURCES_SHARED) \
$(SOURCES_SHARED) \
..\SpookyHashV2.cpp \
SOURCES_ANDROID = $(SOURCES_SHARED) \ SOURCES_ANDROID = $(SOURCES_SHARED) \