On Wed, Sep 7, 2016 at 8:56 PM, Pieter <[email protected]> wrote: > I am starting to look at upgrading our V8 integration library to build > against a more recent version of v8. After fixing some compiler errors I am > getting a runtime failure on the following line. > https://github.com/EventStore/EventStore/blob/release-v4.0.0/src/EventStore.Projections.v8Integration/PreludeScript.cpp#L88 > > result = v8::ObjectTemplate::New(); > v8::Handle<v8::Array> global_property_names = > prelude_result_object->GetPropertyNames(); > > for (unsigned int i = 0; i < global_property_names->Length(); i++) > { > //TODO: handle invalid keys in template object (non-string) > v8::Handle<v8::String> global_property_name = > global_property_names->Get(i).As<v8::String>(); > v8::Handle<v8::Value> global_property_value = > prelude_result_object->Get(global_property_name); > > result->Set(global_property_name, global_property_value); > } > > return S_OK; > > It would appear that v8::ObjectTemplate has changed behaviour, > v8::ObjectTemplate previously used to be able to take the function name and > the function as a v8::Value. > Is there any guidance on how best to migrate/move this bit of code over so > that it functions as it previously did? > > For reference. The version of v8 this integration library was written > against is 3.24.10. > > Thank you in advance for your help!
v8::ObjectTemplate only accepts primitive values (numbers, strings, etc.) and other templates. If you used to add v8::Functions before, you should use v8::FunctionTemplates now. The rationale goes something like this: JS objects and functions are tied to the context they were created in, templates are not; they are per-isolate and can be reused across contexts. -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
