Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1065)

Unified Diff: third_party/WebKit/Source/wtf/SaturatedArithmetic.h

Issue 2499783002: Move SaturatedArithmetic from Blink to base (Closed)
Patch Set: Revert flag addition Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/wtf/BUILD.gn ('k') | third_party/WebKit/Source/wtf/SaturatedArithmeticTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/wtf/SaturatedArithmetic.h
diff --git a/third_party/WebKit/Source/wtf/SaturatedArithmetic.h b/third_party/WebKit/Source/wtf/SaturatedArithmetic.h
index bcea3bfa804420edf970af5447e9087c0b723fbf..c85f291660c7d34bd350c9f5dacdc058610e6662 100644
--- a/third_party/WebKit/Source/wtf/SaturatedArithmetic.h
+++ b/third_party/WebKit/Source/wtf/SaturatedArithmetic.h
@@ -31,90 +31,18 @@
#ifndef SaturatedArithmetic_h
#define SaturatedArithmetic_h
-#include "wtf/CPU.h"
-#include <limits>
-#include <stdint.h>
+#include "base/numerics/saturated_arithmetic.h"
-#if CPU(ARM) && COMPILER(GCC) && __OPTIMIZE__
+namespace WTF {
+using base::SaturatedAddition;
+using base::SaturatedSubtraction;
+using base::SaturatedNegative;
+using base::SaturatedSet;
+} // namespace WTF
-// If we're building ARM on GCC we replace the C++ versions with some
-// native ARM assembly for speed.
-#include "wtf/asm/SaturatedArithmeticARM.h"
+using WTF::SaturatedAddition;
+using WTF::SaturatedSubtraction;
+using WTF::SaturatedNegative;
+using WTF::SaturatedSet;
-#else
-
-ALWAYS_INLINE int32_t saturatedAddition(int32_t a, int32_t b) {
- uint32_t ua = a;
- uint32_t ub = b;
- uint32_t result = ua + ub;
-
- // Can only overflow if the signed bit of the two values match. If the
- // signed bit of the result and one of the values differ it overflowed.
- // The branch compiles to a CMOVNS instruction on x86.
- if (~(ua ^ ub) & (result ^ ua) & (1 << 31))
- return std::numeric_limits<int>::max() + (ua >> 31);
-
- return result;
-}
-
-ALWAYS_INLINE int32_t saturatedSubtraction(int32_t a, int32_t b) {
- uint32_t ua = a;
- uint32_t ub = b;
- uint32_t result = ua - ub;
-
- // Can only overflow if the signed bit of the two input values differ. If
- // the signed bit of the result and the first value differ it overflowed.
- // The branch compiles to a CMOVNS instruction on x86.
- if ((ua ^ ub) & (result ^ ua) & (1 << 31))
- return std::numeric_limits<int>::max() + (ua >> 31);
-
- return result;
-}
-
-ALWAYS_INLINE int32_t saturatedNegative(int32_t a) {
- if (UNLIKELY(a == std::numeric_limits<int>::min()))
- return std::numeric_limits<int>::max();
- return -a;
-}
-
-inline int getMaxSaturatedSetResultForTesting(int FractionalShift) {
- // For C version the set function maxes out to max int, this differs from
- // the ARM asm version, see SaturatedArithmetiARM.h for the equivalent asm
- // version.
- return std::numeric_limits<int>::max();
-}
-
-inline int getMinSaturatedSetResultForTesting(int FractionalShift) {
- return std::numeric_limits<int>::min();
-}
-
-template <int FractionalShift>
-ALWAYS_INLINE int saturatedSet(int value) {
- const int intMaxForLayoutUnit =
- std::numeric_limits<int>::max() >> FractionalShift;
-
- const int intMinForLayoutUnit =
- std::numeric_limits<int>::min() >> FractionalShift;
-
- if (value > intMaxForLayoutUnit)
- return std::numeric_limits<int>::max();
-
- if (value < intMinForLayoutUnit)
- return std::numeric_limits<int>::min();
-
- return value << FractionalShift;
-}
-
-template <int FractionalShift>
-ALWAYS_INLINE int saturatedSet(unsigned value) {
- const unsigned intMaxForLayoutUnit =
- std::numeric_limits<int>::max() >> FractionalShift;
-
- if (value >= intMaxForLayoutUnit)
- return std::numeric_limits<int>::max();
-
- return value << FractionalShift;
-}
-
-#endif // CPU(ARM) && COMPILER(GCC)
#endif // SaturatedArithmetic_h
« no previous file with comments | « third_party/WebKit/Source/wtf/BUILD.gn ('k') | third_party/WebKit/Source/wtf/SaturatedArithmeticTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698