Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 618cf30f760affb5a163268e60f2410e54d275bd..83f11e7f16618a52699c857efd176e0b0c8959bd 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -1031,6 +1031,21 @@ bool Object::IsNaN() { |
} |
+// static |
+Handle<Object> Object::ToSmi(Isolate* isolate, Handle<Object> object) { |
+ if (object->IsSmi()) return object; |
+ if (object->IsHeapNumber()) { |
+ double value = Handle<HeapNumber>::cast(object)->value(); |
+ int int_value = FastD2I(value); |
+ if (value == FastI2D(int_value) && Smi::IsValid(int_value)) { |
+ return handle(Smi::FromInt(int_value), isolate); |
+ } |
+ } |
+ return Handle<Object>(); |
+} |
+ |
+ |
+// TODO(ishell): Use handlified version instead. |
MaybeObject* Object::ToSmi() { |
if (IsSmi()) return this; |
if (IsHeapNumber()) { |