1
- /* ******************************************************************************
1
+ /* ******************************************************************************
2
2
* Experimental prototype for demonstrating VM agnostic and ABI stable API
3
3
* for native modules to use instead of using Nan and V8 APIs directly.
4
4
*
@@ -99,11 +99,11 @@ namespace v8impl {
99
99
return u.l ;
100
100
}
101
101
102
- v8::Local<v8::Value> V8LocalValueFromJsPropertyName (napi_propertyname pn) {
102
+ v8::Local<v8::String> V8LocalStringFromJsPropertyName (napi_propertyname pn) {
103
103
// Likewise awkward
104
104
union U {
105
105
napi_propertyname pn;
106
- v8::Local<v8::Value > l;
106
+ v8::Local<v8::String > l;
107
107
U (napi_propertyname _pn) : pn (_pn) { }
108
108
} u (pn);
109
109
assert (sizeof (u.pn ) == sizeof (u.l ));
@@ -637,6 +637,7 @@ napi_status napi_set_last_error(napi_status error_code,
637
637
638
638
napi_status napi_create_function (
639
639
napi_env e,
640
+ const char * utf8name,
640
641
napi_callback cb,
641
642
void * data,
642
643
napi_value* result) {
@@ -645,7 +646,7 @@ napi_status napi_create_function(
645
646
646
647
v8::Isolate *isolate = v8impl::V8IsolateFromJsEnv (e);
647
648
v8::Local<v8::Context> context = isolate->GetCurrentContext ();
648
- v8::Local<v8::Object > retval;
649
+ v8::Local<v8::Function > retval;
649
650
650
651
v8::EscapableHandleScope scope (isolate);
651
652
@@ -658,6 +659,13 @@ napi_status napi_create_function(
658
659
isolate, v8impl::FunctionCallbackWrapper::Invoke, cbdata);
659
660
660
661
retval = scope.Escape (tpl->GetFunction ());
662
+
663
+ if (utf8name) {
664
+ v8::Local<v8::String> namestring;
665
+ CHECK_NEW_FROM_UTF8 (isolate, namestring, utf8name);
666
+ retval->SetName (namestring);
667
+ }
668
+
661
669
*result = v8impl::JsValueFromV8LocalValue (retval);
662
670
663
671
return GET_RETURN_STATUS ();
@@ -766,17 +774,6 @@ napi_status napi_define_class(
766
774
return GET_RETURN_STATUS ();
767
775
}
768
776
769
- napi_status napi_set_function_name (napi_env e, napi_value func,
770
- napi_propertyname name) {
771
- NAPI_PREAMBLE (e);
772
-
773
- v8::Local<v8::Function> v8func = v8impl::V8LocalFunctionFromJsValue (func);
774
- v8func->SetName (
775
- v8impl::V8LocalValueFromJsPropertyName (name).As <v8::String>());
776
-
777
- return GET_RETURN_STATUS ();
778
- }
779
-
780
777
napi_status napi_set_return_value (napi_env e,
781
778
napi_callback_info cbinfo, napi_value v) {
782
779
NAPI_PREAMBLE (e);
@@ -833,7 +830,7 @@ napi_status napi_set_property(napi_env e,
833
830
834
831
CHECK_TO_OBJECT (context, obj, o);
835
832
836
- v8::Local<v8::Value > key = v8impl::V8LocalValueFromJsPropertyName (k);
833
+ v8::Local<v8::String > key = v8impl::V8LocalStringFromJsPropertyName (k);
837
834
v8::Local<v8::Value> val = v8impl::V8LocalValueFromJsValue (v);
838
835
839
836
v8::Maybe<bool > set_maybe = obj->Set (context, key, val);
@@ -852,7 +849,7 @@ napi_status napi_has_property(napi_env e, napi_value o, napi_propertyname k, boo
852
849
853
850
CHECK_TO_OBJECT (context, obj, o);
854
851
855
- v8::Local<v8::Value > key = v8impl::V8LocalValueFromJsPropertyName (k);
852
+ v8::Local<v8::String > key = v8impl::V8LocalStringFromJsPropertyName (k);
856
853
v8::Maybe<bool > has_maybe = obj->Has (context, key);
857
854
858
855
CHECK_MAYBE_NOTHING (has_maybe, napi_generic_failure);
@@ -870,7 +867,7 @@ napi_status napi_get_property(napi_env e,
870
867
871
868
v8::Isolate *isolate = v8impl::V8IsolateFromJsEnv (e);
872
869
v8::Local<v8::Context> context = isolate->GetCurrentContext ();
873
- v8::Local<v8::Value > key = v8impl::V8LocalValueFromJsPropertyName (k);
870
+ v8::Local<v8::String > key = v8impl::V8LocalStringFromJsPropertyName (k);
874
871
v8::Local<v8::Object> obj;
875
872
876
873
CHECK_TO_OBJECT (context, obj, o);
0 commit comments