V8 Project
safe_math_impl.h File Reference
#include <stdint.h>
#include <cmath>
#include <cstdlib>
#include <limits>
#include "src/base/macros.h"
#include "src/base/safe_conversions.h"
+ Include dependency graph for safe_math_impl.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  v8::base::internal::integral_constant< T, v >
 
struct  v8::base::internal::is_same< T, U >
 
struct  v8::base::internal::is_same< T, T >
 
struct  v8::base::internal::enable_if< B, T >
 
struct  v8::base::internal::enable_if< true, T >
 
struct  v8::base::internal::IntegerForSizeAndSign< 1, true >
 
struct  v8::base::internal::IntegerForSizeAndSign< 1, false >
 
struct  v8::base::internal::IntegerForSizeAndSign< 2, true >
 
struct  v8::base::internal::IntegerForSizeAndSign< 2, false >
 
struct  v8::base::internal::IntegerForSizeAndSign< 4, true >
 
struct  v8::base::internal::IntegerForSizeAndSign< 4, false >
 
struct  v8::base::internal::IntegerForSizeAndSign< 8, true >
 
struct  v8::base::internal::IntegerForSizeAndSign< 8, false >
 
struct  v8::base::internal::UnsignedIntegerForSize< Integer >
 
struct  v8::base::internal::SignedIntegerForSize< Integer >
 
struct  v8::base::internal::TwiceWiderInteger< Integer >
 
struct  v8::base::internal::PositionOfSignBit< Integer >
 
struct  v8::base::internal::GetNumericRepresentation< NumericType >
 
class  v8::base::internal::CheckedNumericState< T, type >
 
class  v8::base::internal::CheckedNumericState< T, NUMERIC_INTEGER >
 
class  v8::base::internal::CheckedNumericState< T, NUMERIC_FLOATING >
 
struct  v8::base::internal::ArithmeticPromotion< Lhs, Rhs, LEFT_PROMOTION >
 
struct  v8::base::internal::ArithmeticPromotion< Lhs, Rhs, RIGHT_PROMOTION >
 
struct  v8::base::internal::ArithmeticPromotion< Lhs, Rhs, DEFAULT_PROMOTION >
 
struct  v8::base::internal::IsIntegerArithmeticSafe< T, Lhs, Rhs >
 

Namespaces

 v8
 Debugger support for the V8 JavaScript engine.
 
 v8::base
 
 v8::base::internal
 

Macros

#define BASE_FLOAT_ARITHMETIC_STUBS(NAME)
 

Typedefs

typedef integral_constant< bool, truev8::base::internal::true_type
 
typedef integral_constant< bool, falsev8::base::internal::false_type
 

Enumerations

enum  v8::base::internal::NumericRepresentation { v8::base::internal::NUMERIC_INTEGER , v8::base::internal::NUMERIC_FLOATING , v8::base::internal::NUMERIC_UNKNOWN }
 
enum  v8::base::internal::ArithmeticPromotionCategory { v8::base::internal::LEFT_PROMOTION , v8::base::internal::RIGHT_PROMOTION , v8::base::internal::DEFAULT_PROMOTION }
 

Functions

template<typename T >
bool v8::base::internal::HasSignBit (T x)
 
template<typename T >
T v8::base::internal::BinaryComplement (T x)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer, T >::type v8::base::internal::CheckedAdd (T x, T y, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer, T >::type v8::base::internal::CheckedSub (T x, T y, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed &&(sizeof(T) *2 > sizeof(uintmax_t)), T >::type v8::base::internal::CheckedMul (T x, T y, RangeConstraint *validity)
 
template<typename T >
T v8::base::internal::CheckedDiv (T x, T y, RangeConstraint *validity, typename enable_if< std::numeric_limits< T >::is_integer, int >::type=0)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedMod (T x, T y, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedMod (T x, T y, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedNeg (T value, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedNeg (T value, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedAbs (T value, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type v8::base::internal::CheckedAbs (T value, RangeConstraint *validity)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_iec559, T >::type v8::base::internal::CheckedNeg (T value, RangeConstraint *)
 
template<typename T >
enable_if< std::numeric_limits< T >::is_iec559, T >::type v8::base::internal::CheckedAbs (T value, RangeConstraint *)
 

Variables

else * v8::base::internal::validity
 
return x * v8::base::internal::y
 

Macro Definition Documentation

◆ BASE_FLOAT_ARITHMETIC_STUBS

#define BASE_FLOAT_ARITHMETIC_STUBS (   NAME)
Value:
template <typename T> \
typename enable_if<std::numeric_limits<T>::is_iec559, T>::type \
Checked##NAME(T, T, RangeConstraint*) { \
UNREACHABLE(); \
return 0; \
}
#define T(name, string, precedence)
Definition: token.cc:25

Definition at line 326 of file safe_math_impl.h.