diff options
author | Sampson Gao <sampsong@ca.ibm.com> | 2017-08-08 16:21:56 -0400 |
---|---|---|
committer | Michael Dawson <mdawson@devrus.com> | 2017-09-14 16:21:27 -0400 |
commit | 973c12f631c53a9833e0bcd11f5457ebec5269c4 (patch) | |
tree | 1fe815b2d1bb2f47d4f5b23d902635c3b4ae93df /src/node_api.cc | |
parent | 0c258bdc4040fcc4ab590fc80dbcd2182b4c74ae (diff) | |
download | android-node-v8-973c12f631c53a9833e0bcd11f5457ebec5269c4.tar.gz android-node-v8-973c12f631c53a9833e0bcd11f5457ebec5269c4.tar.bz2 android-node-v8-973c12f631c53a9833e0bcd11f5457ebec5269c4.zip |
n-api: napi_is_construct_call->napi_get_new_target
Remove napi_is_construct_call and introduce napi_get_new_target.
PR-URL: https://github.com/nodejs/node/pull/14698
Reviewed-By: Jason Ginchereau <jasongin@microsoft.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Kyle Farnung <kfarnung@microsoft.com>
Diffstat (limited to 'src/node_api.cc')
-rw-r--r-- | src/node_api.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/node_api.cc b/src/node_api.cc index ef51599648..724d5c3ee9 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -444,7 +444,7 @@ class CallbackWrapper { CallbackWrapper(napi_value this_arg, size_t args_length, void* data) : _this(this_arg), _args_length(args_length), _data(data) {} - virtual bool IsConstructCall() = 0; + virtual napi_value NewTarget() = 0; virtual void Args(napi_value* buffer, size_t bufferlength) = 0; virtual void SetReturnValue(napi_value value) = 0; @@ -473,8 +473,7 @@ class CallbackWrapperBase : public CallbackWrapper { ->Value(); } - /*virtual*/ - bool IsConstructCall() override { return false; } + napi_value NewTarget() override { return nullptr; } protected: void InvokeCallback() { @@ -522,8 +521,13 @@ class FunctionCallbackWrapper const v8::FunctionCallbackInfo<v8::Value>& cbinfo) : CallbackWrapperBase(cbinfo, cbinfo.Length()) {} - /*virtual*/ - bool IsConstructCall() override { return _cbinfo.IsConstructCall(); } + napi_value NewTarget() override { + if (_cbinfo.IsConstructCall()) { + return v8impl::JsValueFromV8LocalValue(_cbinfo.NewTarget()); + } else { + return nullptr; + } + } /*virtual*/ void Args(napi_value* buffer, size_t buffer_length) override { @@ -1878,10 +1882,9 @@ napi_status napi_get_cb_info( return napi_clear_last_error(env); } -napi_status napi_is_construct_call(napi_env env, - napi_callback_info cbinfo, - bool* result) { - // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because no V8 APIs are called. +napi_status napi_get_new_target(napi_env env, + napi_callback_info cbinfo, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, cbinfo); CHECK_ARG(env, result); @@ -1889,7 +1892,7 @@ napi_status napi_is_construct_call(napi_env env, v8impl::CallbackWrapper* info = reinterpret_cast<v8impl::CallbackWrapper*>(cbinfo); - *result = info->IsConstructCall(); + *result = info->NewTarget(); return napi_clear_last_error(env); } |