Thanks for the replies! This all makes sense. Where do interceptors come into the picture? Can you only add interceptors to JS_SPECIAL_API_OBJECT_TYPE <https://source.chromium.org/chromium/chromium/src/+/master:v8/src/objects/instance-type.h;drc=1562cab3f1eda927938f8f4a5a91991fefde66d3;l=134> ?
On Friday, July 31, 2020 at 5:49:06 AM UTC-4 Toon Verwaest wrote: > AccessorInfo is a "native data property". It behaves like an accessor from > the embedder point-of-view, but looks like a data property from javascript > (getOwnPropertyDescriptor will return value: ... rather than get(), set(v)). > > Even though regular objects can have them too in V8, the embedder can only > attach them to custom receivers. If you see something else, this might be > because you're looking at This() rather than Holder() when loading a > property through the prototype chain. This() will be the object on which > the lookup was started, while Holder() is the custom receiver object on > which the accessor is installed. > > hth > > On Mon, Jul 20, 2020 at 7:10 PM Jakob Kummerow <[email protected]> > wrote: > >> They can be defined on normal objects. The canonical example is >> Array.prototype.length being implemented as an AccessorInfo. >> >> >> On Mon, Jul 20, 2020 at 4:39 PM Jann G <[email protected]> wrote: >> >>> Can an AccessorInfo be defined on normal objects or only custom >>> receivers? There's been some confusion in bug reports like: >>> https://bugs.chromium.org/p/chromium/issues/detail?id=1082355 >>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1082355&q=%22PropertyCallbackArguments%3A%3ACallAccessorGetter%22&can=1> >>> which >>> reaches PropertyCallbackArguments::CallAccessorGetter. >>> >>> >>> On Monday, July 20, 2020 at 1:50:23 PM UTC+1, Jakob Kummerow wrote: >>>> >>>> AFAIK AccessorInfo can only be defined via the C++ API, i.e. by the >>>> embedder (or by V8 itself). AccessorPair is what you get when you define >>>> accessors via JavaScript. >>>> >>>> >>>> On Mon, Jul 20, 2020 at 1:03 PM Jann Godspeed <[email protected]> >>>> wrote: >>>> >>>>> I'm having trouble understanding how AccessInfo works. Can they only >>>>> be defined on special objects? >>>>> >>>>> >>>>> To define an AccessorPair on an object I would do something like >>>>> >>>>> let o = {} >>>>> o.__defineGetter__("test", function() { }); >>>>> >>>>> let o = {}; >>>>> ??? >>>>> >>>>> -- >>>>> -- >>>> >>>> -- >> > -- >> v8-dev mailing list >> [email protected] >> http://groups.google.com/group/v8-dev >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-dev" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-dev/CAKSzg3RxoJDrz2DB4Lt1ww0me6T-3xi2xQfGD9nBabR4q%2BKLbw%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/v8-dev/CAKSzg3RxoJDrz2DB4Lt1ww0me6T-3xi2xQfGD9nBabR4q%2BKLbw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/45a13bfa-dfab-49aa-93bf-c7d85d088640n%40googlegroups.com.
