Fixes for devmain (#58)
This commit is contained in:
Родитель
e4e31a0ffb
Коммит
52bb7ce8d0
|
@ -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) \
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче