There's one thing I'm struggling with here. Given the simple class definition below, using the V8 C++ API I can call the ordinary function "lamingtonsIsUndefined", but how would I call the accessor "get numberOfLamingtons()"? Many thanks in advance, Ben
export class DemonstrationClass { constructor(lamingtons) { this.lamingtons = lamingtons } get numberOfLamingtons() { return this.lamingtons } lamingtonsIsUndefined(){ return this.lamingtons === undefined } } On Sunday, 22 November 2020 at 22:14:55 UTC+10:30 Ben Ernst wrote: > Thanks for the advice, that got me back on track. The failure mentioned in > my original post only occurs when there's nothing at all exported from the > module. I speculate the namespace object gets garbage collected in that > situation. When I tested with actual valid modules, everything works fine. > Thanks again, > Ben > > > On Tuesday, 17 November 2020 at 21:21:25 UTC+10:30 Ben Ernst wrote: > >> Thank you for the advice Camillo, the test you referred me to is very >> helpful. I will prepare a good code sample and come back to this >> conversation. >> >> Regards, >> Ben >> >> >> On Tue, 17 Nov 2020 at 19:54, Camillo Bruni <cbr...@chromium.org> wrote: >> >>> Hi, >>> >>> The ModuleNamespace >>> <https://source.chromium.org/chromium/chromium/src/+/master:v8/include/v8.h;drc=5d658083d506ff1bf14abdd2221d94cbcf4fae96;bpv=1;bpt=1;l=1591?q=v8::Module> >>> >>> object is the proper choice, you can have a look at the existing tests >>> <https://source.chromium.org/chromium/chromium/src/+/master:v8/test/cctest/test-api.cc;l=26235;drc=5d658083d506ff1bf14abdd2221d94cbcf4fae96;bpv=1;bpt=1?q=v8::Module> >>> . >>> For future reference, you will usually find (a bit hidden and obscure, I >>> agree) existing tests in V8's test-api.cc >>> <https://source.chromium.org/chromium/chromium/src/+/master:v8/test/cctest/test-api.cc> >>> . >>> >>> Could you provide some more example code for the error you get >>> with persistent handles? >>> >>> cheers, >>> Camillo >>> >>> On Tue, 17 Nov 2020 at 01:11, Ben Ernst <boi...@gmail.com> wrote: >>> >>>> I am migrating my V8 code from using "plain scripts" to using "ES6 >>>> Modules". There are a few concepts that I am struggling with. >>>> >>>> First, how might I retrieve a class definition defined in a module? >>>> Previously I would have used the "global" object on the "context" (i.e. >>>> context->Global()), and found the class definition there. I can't find a >>>> good example on how to do that in a module. I am experimenting with >>>> Module::GetModuleNamespace(), but I'm not sure that I'm on the right track. >>>> >>>> Second, am I allowed to take a persistent handle to a module? I am >>>> finding that after restoring a module from a persistent handle, I >>>> encounter >>>> the failure below. >>>> >>>> # >>>> # Fatal error in C:\621300de\v8\src/api/api-inl.h, line 128 >>>> # Debug check failed: allow_empty_handle || that != nullptr. >>>> # >>>> # >>>> # >>>> #FailureMessage Object: 0000006114FBC2E0 >>>> ==== C stack trace =============================== >>>> >>>> v8::base::debug::StackTrace::StackTrace >>>> [0x0,000,7FF,60D,F82,80B+27] >>>> v8::platform::DefaultPlatform::PostJob >>>> [0x0,000,7FF,60D,F7F,1E1+401] >>>> V8_Fatal [0x0,000,7FF,60C,251,B87+167] >>>> v8::base::PrintCheckOperand<unsigned __int64> >>>> [0x0,000,7FF,60C,251,683+627] >>>> v8::Module::GetStatus [0x0,000,7FF,60C,1E0,3FD+141] >>>> v8::Module::GetModuleNamespace [0x0,000,7FF,60C,1D1,243+19] >>>> >>>> -- >>>> -- >>>> v8-users mailing list >>>> v8-u...@googlegroups.com >>>> 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 v8-users+u...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/v8-users/6e1f91bb-9d1b-4e3e-b772-c1cdf71afb06n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/v8-users/6e1f91bb-9d1b-4e3e-b772-c1cdf71afb06n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> Camillo Bruni | Software Engineer, V8 | Google Germany GmbH | Erika-Mann >>> Str. 33, 80636 München >>> >>> Registergericht und -nummer: Hamburg, HRB 86891 | Sitz der >>> Gesellschaft: Hamburg | Geschäftsführer: Paul Manicle, Halimah DeLaine >>> Prado >>> >>> Diese E-Mail ist vertraulich. Falls Ssie diese fälschlicherweise >>> erhalten haben sollten, leiten Sie diese bitte nicht an jemand anderes >>> weiter, löschen Sie alle Kopien und Anhänge davon und lassen Sie mich bitte >>> wissen, dass die E-Mail an die falsche Person gesendet wurde. This >>> e-mail is confidential. If you received this communication by mistake, >>> please don't forward it to anyone else, please erase all copies and >>> attachments, and please let me know that it has gone to the wrong person. >>> >>> -- >>> -- >>> v8-users mailing list >>> v8-u...@googlegroups.com >>> 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 v8-users+u...@googlegroups.com. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/v8-users/CAOeS1i9mEbcpxGQr1uNk%3DfAMPDi%2Bz%2Bzkun0eiopfphqErJJLAQ%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/v8-users/CAOeS1i9mEbcpxGQr1uNk%3DfAMPDi%2Bz%2Bzkun0eiopfphqErJJLAQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- -- v8-users mailing list v8-users@googlegroups.com 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 v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/a85cdc34-0fb3-438e-881b-d462c8288ef9n%40googlegroups.com.