Thank you for the reply, Ben. > Instead of v8::IndexedPropertyHandlerConfiguration, you may > want to use v8::NamedPropertyHandlerConfiguration. >
I am already using it. What I noticed is that, when I run the code without devtools debugging, only the callback *GenericNamedPropertyGetterCallback, (*of *NamedPropertyHandlerConfiguration**) *is invoked. *IndexedPropertyHandlerConfiguration *callbacks are not called even though they are implemented. But when I run the code through the debugger, I can see the *IndexedPropertyHandlerConfiguration *callback is called and whatever I am populating inside it, is visible in the debugger. After that, *GenericNamedPropertyGetterCallback, (*of *NamedPropertyHandlerConfiguration**) *is called, for resolving the names which I am putting into the array in *GenericNamedPropertyGetterCallback *implementation. Based on this behaviour, I would assume that *evaluateOnCallFrame *(similar behaviour is shown by the message *Runtime.getProperties* also, which I think fetches the variable values for the overlay display) treats the variable as an indexed property. regards, Anoop R. S. On Thursday, 10 May 2018 13:10:03 UTC+5:30, Ben Noordhuis wrote: > > On Thu, May 10, 2018 at 8:42 AM, Anoop R. S. <anoo...@gmail.com > <javascript:>> wrote: > > Ok. I figured out that if v8::IndexedPropertyHandlerConfiguration is > set, > > and IndexedPropertyEnumeratorCallback is implemented, I can configure > what > > is displayed on mouse over action (Debugger.evaluateOnCallFrame is > passed > > from devtools on doing that operation.) > > > > The implementation is provided below. > > void IndexedPropertyEnumeratorCallbackFunction( > > const v8::PropertyCallbackInfo<v8::Array>& p_callbackInfo) > > { > > v8::Local<v8::Array> IndexArray = > > v8::Array::New(p_callbackInfo.GetIsolate(), 2); > > IndexArray->Set( > > v8::Integer::New(p_callbackInfo.GetIsolate(), 0), > > v8::String::NewFromUtf8(p_callbackInfo.GetIsolate(), u8"x")); > > IndexArray->Set( > > v8::Integer::New(p_callbackInfo.GetIsolate(), 1), > > v8::String::NewFromUtf8(p_callbackInfo.GetIsolate(), u8"y")); > > p_callbackInfo.GetReturnValue().Set(IndexArray); > > } > > > > From reading the embedder's guide, my understanding is that > >> > >> indexed property interceptors - called when accessing indexed > properties. > >> An example of this, in a browser environment, is > document.forms.elements[0]. > > > > > > Why is it called on evaluateOnCallFrame action? Also, I tried with other > > callback s of v8::IndexedPropertyHandlerConfiguration, but they are not > > called. Can I know why? Also, since the signature of callback is as > below : > > > > void (*IndexedPropertyEnumeratorCallback)( const > > PropertyCallbackInfo<Array>& info); > > > > I can set only arrays into the result and nothing else. > > I am not an expert in v8, hence these questions. Please let me know > about > > it/ point me to some documentation regarding this. > > > > regards, > > Anoop R. S. > > IndexedPropertyEnumeratorCallback - is called for Object.keys()-like > operations; i.e., to list the enumerable properties of the object but > not non-enumerable or prototype properties. The 'Indexed' refers to > the fact that it's intended for numeric keys, i.e., array-like > objects. Instead of v8::IndexedPropertyHandlerConfiguration, you may > want to use v8::NamedPropertyHandlerConfiguration. > > evaluateOnCallFrame - V8 cannot know whether your callback has any > side effects (it could create objects, call into JS code, etc.), hence > it evaluates it as if it were a snippet of regular JS code. Newer > versions of V8 let you register callbacks with kHasNoSideEffect but as > far as I know that has no effect (hah!) on whether or not > evaluateOnCallFrame is used. Maybe in the future. > -- -- 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. For more options, visit https://groups.google.com/d/optout.