Index: include/v8.h |
=================================================================== |
--- include/v8.h (revision 3030) |
+++ include/v8.h (working copy) |
@@ -1063,6 +1063,7 @@ |
class V8EXPORT Integer : public Number { |
public: |
static Local<Integer> New(int32_t value); |
+ static inline Local<Integer> NewFromUnsigned(uint32_t value); |
int64_t Value() const; |
static inline Integer* Cast(v8::Value* obj); |
private: |
@@ -3025,6 +3026,16 @@ |
} |
+Local<Integer> Integer::NewFromUnsigned(uint32_t value) { |
+ // If highest bit is not set, chances are it's SMI. |
+ bool fits_into_int32_t = (value & (1 << 31)) == 0; |
+ if (fits_into_int32_t) { |
+ return Integer::New(static_cast<int32_t>(value)); |
+ } |
+ return Local<Integer>::Cast(Number::New(value)); |
+} |
+ |
+ |
Integer* Integer::Cast(v8::Value* value) { |
#ifdef V8_ENABLE_CHECKS |
CheckCast(value); |