@@ -438,7 +438,7 @@ class CallbackWrapper {
438
438
CallbackWrapper (napi_value this_arg, size_t args_length, void * data)
439
439
: _this(this_arg), _args_length(args_length), _data(data) {}
440
440
441
- virtual bool IsConstructCall () = 0;
441
+ virtual napi_value NewTarget () = 0;
442
442
virtual void Args (napi_value* buffer, size_t bufferlength) = 0;
443
443
virtual void SetReturnValue (napi_value value) = 0;
444
444
@@ -467,8 +467,7 @@ class CallbackWrapperBase : public CallbackWrapper {
467
467
->Value ();
468
468
}
469
469
470
- /* virtual*/
471
- bool IsConstructCall () override { return false ; }
470
+ napi_value NewTarget () override { return nullptr ; }
472
471
473
472
protected:
474
473
void InvokeCallback () {
@@ -516,8 +515,13 @@ class FunctionCallbackWrapper
516
515
const v8::FunctionCallbackInfo<v8::Value>& cbinfo)
517
516
: CallbackWrapperBase(cbinfo, cbinfo.Length()) {}
518
517
519
- /* virtual*/
520
- bool IsConstructCall () override { return _cbinfo.IsConstructCall (); }
518
+ napi_value NewTarget () override {
519
+ if (_cbinfo.IsConstructCall ()) {
520
+ return v8impl::JsValueFromV8LocalValue (_cbinfo.NewTarget ());
521
+ } else {
522
+ return nullptr ;
523
+ }
524
+ }
521
525
522
526
/* virtual*/
523
527
void Args (napi_value* buffer, size_t buffer_length) override {
@@ -1810,18 +1814,17 @@ napi_status napi_get_cb_info(
1810
1814
return napi_clear_last_error (env);
1811
1815
}
1812
1816
1813
- napi_status napi_is_construct_call (napi_env env,
1814
- napi_callback_info cbinfo,
1815
- bool * result) {
1816
- // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because no V8 APIs are called.
1817
+ napi_status napi_get_new_target (napi_env env,
1818
+ napi_callback_info cbinfo,
1819
+ napi_value* result) {
1817
1820
CHECK_ENV (env);
1818
1821
CHECK_ARG (env, cbinfo);
1819
1822
CHECK_ARG (env, result);
1820
1823
1821
1824
v8impl::CallbackWrapper* info =
1822
1825
reinterpret_cast <v8impl::CallbackWrapper*>(cbinfo);
1823
1826
1824
- *result = info->IsConstructCall ();
1827
+ *result = info->NewTarget ();
1825
1828
return napi_clear_last_error (env);
1826
1829
}
1827
1830
0 commit comments