| 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()) {
 | 
| 
 |