Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index b133ee3f75c6d71e04370b8b61617f34fb90af6c..93928e80eaf3c833ea80cd44e4d25a40d1b893c4 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -383,6 +383,18 @@ MaybeHandle<Object> Object::ToLength(Isolate* isolate, Handle<Object> input) { |
return isolate->factory()->NewNumber(len); |
} |
+// static |
+MaybeHandle<Object> Object::ToIndex(Isolate* isolate, Handle<Object> input, |
+ MessageTemplate::Template error_index) { |
+ if (input->IsUndefined(isolate)) return isolate->factory()->NewNumber(0.0); |
+ ASSIGN_RETURN_ON_EXCEPTION(isolate, input, ToNumber(input), Object); |
+ double len = DoubleToInteger(input->Number()) + 0.0; |
+ auto js_len = isolate->factory()->NewNumber(len); |
+ if (len < 0.0 || len > kMaxSafeInteger) { |
+ THROW_NEW_ERROR(isolate, NewRangeError(error_index, js_len), Object); |
+ } |
+ return js_len; |
+} |
bool Object::BooleanValue() { |
if (IsSmi()) return Smi::cast(this)->value() != 0; |