diff --git a/nan_maybe_43_inl.h b/nan_maybe_43_inl.h index e06c8d2f..c4b3c9e3 100644 --- a/nan_maybe_43_inl.h +++ b/nan_maybe_43_inl.h @@ -221,4 +221,12 @@ NAN_INLINE MaybeLocal CloneElementAt( return array->CloneElementAt(GetCurrentContext(), index); } +NAN_INLINE MaybeLocal Call( + v8::Local fun + , v8::Local recv + , int argc + , v8::Local argv[]) { + return fun->Call(GetCurrentContext(), recv, argc, argv); +} + #endif // NAN_MAYBE_43_INL_H_ diff --git a/nan_maybe_pre_43_inl.h b/nan_maybe_pre_43_inl.h index 0857347b..a5429cad 100644 --- a/nan_maybe_pre_43_inl.h +++ b/nan_maybe_pre_43_inl.h @@ -292,4 +292,22 @@ NAN_INLINE MaybeLocal CloneElementAt( return MaybeLocal(array->CloneElementAt(index)); } +NAN_INLINE MaybeLocal Call( + v8::Local fun + , v8::Local recv + , int argc + , v8::Local argv[]) { +#if NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION + return MaybeLocal(fun->Call(recv, argc, argv)); +#else + v8::Local recv_obj; + if (recv->IsUndefined() || recv->IsNull()) { + recv_obj = v8::Context::GetCurrent()->Global(); + } else { + recv_obj = recv->ToObject(); + } + return MaybeLocal(fun->Call(recv_obj, argc, argv)); +#endif +} + #endif // NAN_MAYBE_PRE_43_INL_H_