summaryrefslogtreecommitdiff
path: root/deps/v8/src/conversions-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/conversions-inl.h')
-rw-r--r--deps/v8/src/conversions-inl.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/deps/v8/src/conversions-inl.h b/deps/v8/src/conversions-inl.h
index 096661c64a..21f90a50ae 100644
--- a/deps/v8/src/conversions-inl.h
+++ b/deps/v8/src/conversions-inl.h
@@ -178,6 +178,21 @@ int64_t NumberToInt64(Object* number) {
return static_cast<int64_t>(d);
}
+uint64_t PositiveNumberToUint64(Object* number) {
+ if (number->IsSmi()) {
+ int value = Smi::ToInt(number);
+ if (value <= 0) return 0;
+ return value;
+ }
+ DCHECK(number->IsHeapNumber());
+ double value = number->Number();
+ // Catch all values smaller than 1 and use the double-negation trick for NANs.
+ if (!(value >= 1)) return 0;
+ uint64_t max = std::numeric_limits<uint64_t>::max();
+ if (value < max) return static_cast<uint64_t>(value);
+ return max;
+}
+
bool TryNumberToSize(Object* number, size_t* result) {
// Do not create handles in this function! Don't use SealHandleScope because
// the function can be used concurrently.