diff options
Diffstat (limited to 'deps/v8/src/factory.h')
-rw-r--r-- | deps/v8/src/factory.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/deps/v8/src/factory.h b/deps/v8/src/factory.h index 5e8970835b..233b3b01c8 100644 --- a/deps/v8/src/factory.h +++ b/deps/v8/src/factory.h @@ -266,10 +266,12 @@ class Factory { PretenureFlag pretenure = NOT_TENURED); Handle<Object> NewNumberFromUint(uint32_t value, PretenureFlag pretenure = NOT_TENURED); - + inline Handle<Object> NewNumberFromSize(size_t value, + PretenureFlag pretenure = NOT_TENURED); Handle<HeapNumber> NewHeapNumber(double value, PretenureFlag pretenure = NOT_TENURED); + // These objects are used by the api to create env-independent data // structures in the heap. Handle<JSObject> NewNeanderObject(); @@ -539,6 +541,18 @@ class Factory { }; +Handle<Object> Factory::NewNumberFromSize(size_t value, + PretenureFlag pretenure) { + if (Smi::IsValid(static_cast<intptr_t>(value))) { + return Handle<Object>(Smi::FromIntptr(static_cast<intptr_t>(value)), + isolate()); + } else { + return NewNumber(static_cast<double>(value), pretenure); + } +} + + + } } // namespace v8::internal #endif // V8_FACTORY_H_ |