diff --git a/native_mate/compat.h b/native_mate/compat.h index 11a7ef4096..16b56b62dc 100644 --- a/native_mate/compat.h +++ b/native_mate/compat.h @@ -32,7 +32,12 @@ #define MATE_TRUE(isolate) v8::True(isolate) #define MATE_FALSE(isolate) v8::False(isolate) #define MATE_ARRAY_NEW(isolate, size) v8::Array::New(isolate, size) +#define MATE_NUMBER_NEW(isolate, data) v8::Number::New(isolate, data) #define MATE_INTEGER_NEW(isolate, data) v8::Integer::New(isolate, data) +#define MATE_INTEGER_NEW_UNSIGNED(isolate, data) \ + v8::Integer::NewFromUnsigned(isolate, data) +#define MATE_EXTERNAL_NEW(isolate, data) v8::External::New(isolate, data) +#define MATE_BOOLEAN_NEW(isolate, data) v8::Boolean::New(isolate, data) #define MATE_SET_INTERNAL_FIELD_POINTER(object, index, value) \ object->SetAlignedPointerInInternalField(index, value) @@ -55,6 +60,9 @@ #define MATE_WEAK_CALLBACK_INIT(c_type) \ c_type* self = data.GetParameter() +#define MATE_THROW_EXCEPTION(isolate, value) \ + isolate->ThrowException(value) + #else // Node 0.8 and 0.10 #define MATE_HANDLE_SCOPE(isolate) v8::HandleScope handle_scope @@ -81,7 +89,12 @@ #define MATE_TRUE(isolate) v8::True() #define MATE_FALSE(isolate) v8::False() #define MATE_ARRAY_NEW(isolate, size) v8::Array::New(size) +#define MATE_NUMBER_NEW(isolate, data) v8::Number::New(data) #define MATE_INTEGER_NEW(isolate, data) v8::Integer::New(data) +#define MATE_INTEGER_NEW_UNSIGNED(isolate, data) \ + v8::Integer::NewFromUnsigned(data) +#define MATE_EXTERNAL_NEW(isolate, data) v8::External::New(data) +#define MATE_BOOLEAN_NEW(isolate, data) v8::Boolean::New(data) #define MATE_SET_INTERNAL_FIELD_POINTER(object, index, value) \ object->SetPointerInInternalField(index, value) @@ -105,6 +118,9 @@ #define MATE_WEAK_CALLBACK_INIT(c_type) \ c_type* self = static_cast(parameter) +#define MATE_THROW_EXCEPTION(isolate, value) \ + v8::ThrowException(value) + #endif // (NODE_MODULE_VERSION > 0x000B) @@ -113,8 +129,4 @@ #define MATE_METHOD(name) \ MATE_METHOD_RETURN_TYPE name(const MATE_METHOD_ARGS_TYPE& info) -// In lastest V8 ThrowException would need to pass isolate, be prepared for it. -#define MATE_THROW_EXCEPTION(isolate, value) \ - v8::ThrowException(value) - #endif // NATIVE_MATE_COMPAT_H_ diff --git a/native_mate/converter.cc b/native_mate/converter.cc index 7554ae787c..e5e7c52467 100644 --- a/native_mate/converter.cc +++ b/native_mate/converter.cc @@ -21,7 +21,7 @@ using v8::Value; namespace mate { Handle Converter::ToV8(Isolate* isolate, bool val) { - return Boolean::New(val); + return MATE_BOOLEAN_NEW(isolate, val); } bool Converter::FromV8(Isolate* isolate, Handle val, bool* out) { @@ -32,7 +32,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, bool* out) { } Handle Converter::ToV8(Isolate* isolate, int32_t val) { - return Integer::New(val); + return MATE_INTEGER_NEW(isolate, val); } bool Converter::FromV8(Isolate* isolate, Handle val, @@ -44,7 +44,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, } Handle Converter::ToV8(Isolate* isolate, uint32_t val) { - return Integer::NewFromUnsigned(val); + return MATE_INTEGER_NEW_UNSIGNED(isolate, val); } bool Converter::FromV8(Isolate* isolate, Handle val, @@ -56,7 +56,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, } Handle Converter::ToV8(Isolate* isolate, int64_t val) { - return Number::New(static_cast(val)); + return MATE_NUMBER_NEW(isolate, static_cast(val)); } bool Converter::FromV8(Isolate* isolate, Handle val, @@ -70,7 +70,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, } Handle Converter::ToV8(Isolate* isolate, uint64_t val) { - return Number::New(static_cast(val)); + return MATE_NUMBER_NEW(isolate, static_cast(val)); } bool Converter::FromV8(Isolate* isolate, Handle val, @@ -82,7 +82,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, } Handle Converter::ToV8(Isolate* isolate, float val) { - return Number::New(val); + return MATE_NUMBER_NEW(isolate, val); } bool Converter::FromV8(Isolate* isolate, Handle val, @@ -94,7 +94,7 @@ bool Converter::FromV8(Isolate* isolate, Handle val, } Handle Converter::ToV8(Isolate* isolate, double val) { - return Number::New(val); + return MATE_NUMBER_NEW(isolate, val); } bool Converter::FromV8(Isolate* isolate, Handle val, diff --git a/native_mate/dictionary.cc b/native_mate/dictionary.cc index 88bdefb1f7..7ea17dd8fc 100644 --- a/native_mate/dictionary.cc +++ b/native_mate/dictionary.cc @@ -8,7 +8,7 @@ namespace mate { Dictionary::Dictionary(v8::Isolate* isolate) : isolate_(isolate), - object_(v8::Object::New()) { + object_(v8::Object::New(isolate)) { } Dictionary::Dictionary(v8::Isolate* isolate, @@ -22,7 +22,7 @@ Dictionary::~Dictionary() { Dictionary Dictionary::CreateEmpty(v8::Isolate* isolate) { Dictionary dictionary(isolate); - dictionary.object_ = v8::Object::New(); + dictionary.object_ = v8::Object::New(isolate); return dictionary; } diff --git a/native_mate/function_template.cc b/native_mate/function_template.cc index 22bb6260d1..c8b71c4926 100644 --- a/native_mate/function_template.cc +++ b/native_mate/function_template.cc @@ -9,7 +9,7 @@ namespace mate { namespace internal { CallbackHolderBase::CallbackHolderBase(v8::Isolate* isolate) - : MATE_PERSISTENT_INIT(isolate, v8_ref_, v8::External::New(this)) { + : MATE_PERSISTENT_INIT(isolate, v8_ref_, MATE_EXTERNAL_NEW(isolate, this)) { MATE_PERSISTENT_SET_WEAK(v8_ref_, this, &CallbackHolderBase::WeakCallback); }