Thanks for that thought Alex! Drafting a reply to you led me to the answer, 
which is obvious in hindsight.
Yes, I could just get "lamingtons" in this case, but that wouldn't help me 
if it was a non-trivial accessor. In javascript I would be able to call 
"instance.numberOfLamingtons". In this case, I can simply call "Get" with 
value "numberOfLamingtons". Yes, obvious in hindsight. The code ends up 
looking something like the below. Thanks again, thoroughly appreciate the 
help.
Ben


    // Call an accessor function on the instance.
    v8::Local<v8::Value> lamingtons;
    CHECK(instance->Get(context, ToV8Value(isolate, 
"numberOfLamingtons")).ToLocal(&lamingtons));
    std::cout << ConvertTo<double>(*isolate, 
lamingtons->ToNumber(context).ToLocalChecked()) << std::endl;


On Friday, 27 November 2020 at 23:34:26 UTC+10:30 alex...@gmail.com wrote:

> You wouldn't call it any more than you "call" it in JavaScript. You just 
> get the value via the Object Get function: 
> Local<Value> pastries = object->Get(context, String::NewFromUtf8( isolate, 
> "lamingtons").ToLocalChecked());
>
> On Friday, November 27, 2020 at 4:59:00 AM UTC-5 boi...@gmail.com wrote:
>
>> 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/c4180f77-510f-4a8a-9667-7ea038f6b4e5n%40googlegroups.com.

Reply via email to