| Index: src/base/bits.h
|
| diff --git a/src/base/bits.h b/src/base/bits.h
|
| index b237d62bcb1d6f47500a42ffe76bef510e2006d6..abcfd9a9eddce4a45671712d7abbb5da6f0d5fbf 100644
|
| --- a/src/base/bits.h
|
| +++ b/src/base/bits.h
|
| @@ -236,6 +236,19 @@ int32_t SignedDiv32(int32_t lhs, int32_t rhs);
|
| int32_t SignedMod32(int32_t lhs, int32_t rhs);
|
|
|
|
|
| +// UnsignedAddOverflow32(lhs,rhs,val) performs an unsigned summation of |lhs|
|
| +// and |rhs| and stores the result into the variable pointed to by |val| and
|
| +// returns true if the unsigned summation resulted in an overflow.
|
| +inline bool UnsignedAddOverflow32(uint32_t lhs, uint32_t rhs, uint32_t* val) {
|
| +#if V8_HAS_BUILTIN_SADD_OVERFLOW
|
| + return __builtin_uadd_overflow(lhs, rhs, val);
|
| +#else
|
| + *val = lhs + rhs;
|
| + return *val < (lhs | rhs);
|
| +#endif
|
| +}
|
| +
|
| +
|
| // UnsignedDiv32(lhs, rhs) divides |lhs| by |rhs| and returns the quotient
|
| // truncated to uint32. If |rhs| is zero, then zero is returned.
|
| inline uint32_t UnsignedDiv32(uint32_t lhs, uint32_t rhs) {
|
|
|