| Index: src/conversions.h
|
| diff --git a/src/conversions.h b/src/conversions.h
|
| index 1413bc2eaa428ec780373f1a18063ef149053834..666c2efb12d51c410a4baa9eace09fe339c923bd 100644
|
| --- a/src/conversions.h
|
| +++ b/src/conversions.h
|
| @@ -9,7 +9,6 @@
|
|
|
| #include "src/base/logging.h"
|
| #include "src/handles.h"
|
| -#include "src/objects.h"
|
| #include "src/utils.h"
|
|
|
| namespace v8 {
|
| @@ -157,88 +156,41 @@ static inline bool IsMinusZero(double value) {
|
| }
|
|
|
|
|
| -static inline bool IsSmiDouble(double value) {
|
| - return !IsMinusZero(value) && value >= Smi::kMinValue &&
|
| - value <= Smi::kMaxValue && value == FastI2D(FastD2I(value));
|
| -}
|
| +static inline bool IsSmiDouble(double value);
|
|
|
|
|
| // Integer32 is an integer that can be represented as a signed 32-bit
|
| // integer. It has to be in the range [-2^31, 2^31 - 1].
|
| // We also have to check for negative 0 as it is not an Integer32.
|
| -static inline bool IsInt32Double(double value) {
|
| - return !IsMinusZero(value) &&
|
| - value >= kMinInt &&
|
| - value <= kMaxInt &&
|
| - value == FastI2D(FastD2I(value));
|
| -}
|
| +static inline bool IsInt32Double(double value);
|
|
|
|
|
| // UInteger32 is an integer that can be represented as an unsigned 32-bit
|
| // integer. It has to be in the range [0, 2^32 - 1].
|
| // We also have to check for negative 0 as it is not a UInteger32.
|
| -static inline bool IsUint32Double(double value) {
|
| - return !IsMinusZero(value) &&
|
| - value >= 0 &&
|
| - value <= kMaxUInt32 &&
|
| - value == FastUI2D(FastD2UI(value));
|
| -}
|
| +static inline bool IsUint32Double(double value);
|
|
|
|
|
| // Convert from Number object to C integer.
|
| -inline int32_t NumberToInt32(Object* number) {
|
| - if (number->IsSmi()) return Smi::cast(number)->value();
|
| - return DoubleToInt32(number->Number());
|
| -}
|
| -
|
| -
|
| -inline uint32_t NumberToUint32(Object* number) {
|
| - if (number->IsSmi()) return Smi::cast(number)->value();
|
| - return DoubleToUint32(number->Number());
|
| -}
|
| +inline int32_t NumberToInt32(Object* number);
|
| +inline uint32_t NumberToUint32(Object* number);
|
|
|
|
|
| double StringToDouble(UnicodeCache* unicode_cache, Handle<String> string,
|
| int flags, double empty_string_val = 0.0);
|
|
|
|
|
| -inline bool TryNumberToSize(Isolate* isolate,
|
| - Object* number, size_t* result) {
|
| - SealHandleScope shs(isolate);
|
| - if (number->IsSmi()) {
|
| - int value = Smi::cast(number)->value();
|
| - DCHECK(static_cast<unsigned>(Smi::kMaxValue)
|
| - <= std::numeric_limits<size_t>::max());
|
| - if (value >= 0) {
|
| - *result = static_cast<size_t>(value);
|
| - return true;
|
| - }
|
| - return false;
|
| - } else {
|
| - DCHECK(number->IsHeapNumber());
|
| - double value = HeapNumber::cast(number)->value();
|
| - if (value >= 0 &&
|
| - value <= std::numeric_limits<size_t>::max()) {
|
| - *result = static_cast<size_t>(value);
|
| - return true;
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| -}
|
| +inline bool TryNumberToSize(Isolate* isolate, Object* number, size_t* result);
|
| +
|
|
|
| // Converts a number into size_t.
|
| -inline size_t NumberToSize(Isolate* isolate,
|
| - Object* number) {
|
| - size_t result = 0;
|
| - bool is_valid = TryNumberToSize(isolate, number, &result);
|
| - CHECK(is_valid);
|
| - return result;
|
| -}
|
| +inline size_t NumberToSize(Isolate* isolate, Object* number);
|
|
|
|
|
| // returns DoubleToString(StringToDouble(string)) == string
|
| bool IsSpecialIndex(UnicodeCache* unicode_cache, String* string);
|
| -} } // namespace v8::internal
|
| +
|
| +} // namespace internal
|
| +} // namespace v8
|
|
|
| #endif // V8_CONVERSIONS_H_
|
|
|