Index: include/v8.h |
=================================================================== |
--- include/v8.h (revision 3009) |
+++ 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> New(uint32_t value); |
int64_t Value() const; |
static inline Integer* Cast(v8::Value* obj); |
private: |
@@ -3026,6 +3027,16 @@ |
} |
+Local<Integer> Integer::New(uint32_t value) { |
+ // If highest bit is not set, chances are it's SMI. |
+ bool could_be_smi = (value & (1 << 31)) == 0; |
+ if (could_be_smi) { |
+ 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); |