102 lines
5 KiB
Diff
102 lines
5 KiB
Diff
|
--- a/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
|
||
|
+++ b/src/3rdparty/chromium/base/hash/md5_constexpr_internal.h
|
||
|
@@ -281,15 +281,63 @@ struct MD5CE {
|
||
|
return IntermediateDataToMD5Digest(ProcessMessage(data, n));
|
||
|
}
|
||
|
|
||
|
- static constexpr uint64_t Hash64(const char* data, uint32_t n) {
|
||
|
- IntermediateData intermediate = ProcessMessage(data, n);
|
||
|
- return (static_cast<uint64_t>(SwapEndian(intermediate.a)) << 32) |
|
||
|
- static_cast<uint64_t>(SwapEndian(intermediate.b));
|
||
|
+ static constexpr uint64_t Hash64(const char* message, uint32_t n) {
|
||
|
+ const uint32_t m = GetPaddedMessageLength(n);
|
||
|
+ IntermediateData intermediate0 = kInitialIntermediateData;
|
||
|
+ for (uint32_t offset = 0; offset < m; offset += 64) {
|
||
|
+ RoundData data = {
|
||
|
+ GetPaddedMessageWord(message, n, m, offset),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 4),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 8),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 12),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 16),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 20),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 24),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 28),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 32),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 36),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 40),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 44),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 48),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 52),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 56),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 60)};
|
||
|
+ IntermediateData intermediate1 = intermediate0;
|
||
|
+ for (uint32_t i = 0; i < 64; ++i)
|
||
|
+ intermediate1 = ApplyStep(i, data, intermediate1);
|
||
|
+ intermediate0 = Add(intermediate0, intermediate1);
|
||
|
+ }
|
||
|
+ return (static_cast<uint64_t>(SwapEndian(intermediate0.a)) << 32) |
|
||
|
+ static_cast<uint64_t>(SwapEndian(intermediate0.b));
|
||
|
}
|
||
|
|
||
|
- static constexpr uint32_t Hash32(const char* data, uint32_t n) {
|
||
|
- IntermediateData intermediate = ProcessMessage(data, n);
|
||
|
- return SwapEndian(intermediate.a);
|
||
|
+ static constexpr uint32_t Hash32(const char* message, uint32_t n) {
|
||
|
+ const uint32_t m = GetPaddedMessageLength(n);
|
||
|
+ IntermediateData intermediate0 = kInitialIntermediateData;
|
||
|
+ for (uint32_t offset = 0; offset < m; offset += 64) {
|
||
|
+ RoundData data = {
|
||
|
+ GetPaddedMessageWord(message, n, m, offset),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 4),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 8),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 12),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 16),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 20),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 24),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 28),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 32),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 36),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 40),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 44),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 48),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 52),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 56),
|
||
|
+ GetPaddedMessageWord(message, n, m, offset + 60)};
|
||
|
+ IntermediateData intermediate1 = intermediate0;
|
||
|
+ for (uint32_t i = 0; i < 64; ++i)
|
||
|
+ intermediate1 = ApplyStep(i, data, intermediate1);
|
||
|
+ intermediate0 = Add(intermediate0, intermediate1);
|
||
|
+ }
|
||
|
+ return SwapEndian(intermediate0.a);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
--- a/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
|
||
|
+++ b/src/3rdparty/chromium/net/third_party/quiche/src/quic/core/quic_versions.h
|
||
|
@@ -26,6 +26,7 @@
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
+#include "absl/base/macros.h"
|
||
|
#include "net/third_party/quiche/src/quic/core/quic_tag.h"
|
||
|
#include "net/third_party/quiche/src/quic/core/quic_types.h"
|
||
|
#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
|
||
|
@@ -181,8 +182,14 @@ QUIC_EXPORT_PRIVATE constexpr bool ParsedQuicVersionIsValid(
|
||
|
transport_version == QUIC_VERSION_RESERVED_FOR_NEGOTIATION;
|
||
|
if (!transport_version_is_valid) {
|
||
|
// Iterators are not constexpr in C++14 which Chrome uses.
|
||
|
- constexpr auto supported_transport_versions = SupportedTransportVersions();
|
||
|
- for (size_t i = 0; i < supported_transport_versions.size(); ++i) {
|
||
|
+ constexpr QuicTransportVersion supported_transport_versions[] = {
|
||
|
+ QUIC_VERSION_IETF_DRAFT_29,
|
||
|
+ QUIC_VERSION_IETF_DRAFT_27,
|
||
|
+ QUIC_VERSION_51,
|
||
|
+ QUIC_VERSION_50,
|
||
|
+ QUIC_VERSION_46,
|
||
|
+ QUIC_VERSION_43};
|
||
|
+ for (size_t i = 0; i < ABSL_ARRAYSIZE(supported_transport_versions); ++i) {
|
||
|
const QuicTransportVersion& trans_vers = supported_transport_versions[i];
|
||
|
if (trans_vers == transport_version) {
|
||
|
transport_version_is_valid = true;
|
||
|
|