operator* defined on a v8::Handle<T> does not return a pointer to an
object but rather a pointer to place which contains that pointer.

Why do you actually want to get a raw pointer to an object?

--
Vyacheslav Egorov


On Wed, Mar 14, 2012 at 1:44 PM, avasilev <[email protected]> wrote:
> Seems this approach will lead to nowhere - two absolutely identical,
> consequent C++ calls which query the same property, return different,
> consequent pointers. Seems in C++ there is also some internal
> shadowing and pointers (at least not *Handle<Object>) don't uniquely
> identify objects.
>
> On Mar 14, 2:29 pm, avasilev <[email protected]> wrote:
>> I,m trying to write a C++ app to test these values, I print C++
>> pointers and implement a js function, taking an object, and print this
>> object's pointer, so that I have a picture both what Js  and C++.
>> However, I discovered a strange thing - the function's arguments,
>> transformer like this: *(args[0]->ToObject()) always appear as the
>> same pointer between function calls. If I try to print two object
>> arguments in the same call, these are consecutive addresses. So it
>> seems v8 passes different objects than the actual ones, somehow
>> shadowing the real object. The addresses are quite different than
>> these that I get in C++, which leads me tho thing they are allocated
>> on the stack. This all makes sense, but how is the shadowing mechanism
>> implemented, and is there a way to reach the original objects from
>> within the function?
>>
>> On Mar 13, 4:06 pm, Matthias Ernst <[email protected]> wrote:
>>
>>
>>
>>
>>
>>
>>
>> > On Tue, Mar 13, 2012 at 3:00 PM, avasilev <[email protected]> wrote:
>> > > Thanks,
>> > > I was just thinking that as there is GetPrototype() and SetPrototype()
>> > > for objects, which access '__proto__', there should be also for
>> > > 'prototype'.
>>
>> > Well, GetPrototype() has slightly different semantics, at least
>> > judging from the documentation WRT hidden prototypes.
>>
>> > > I'd like to use the topic to ask - what does GetPrototype() actually
>> > > return on a function object then? Is it func.prototype.__proto__?
>>
>> > I'd expect func.__proto__.
>> > In the Chrome console this evaluates as such:
>>
>> > (function() {}).__proto__
>> > function Empty() {}
>>
>> > Matthias
>>
>> > > On Mar 13, 3:50 pm, Matthias Ernst <[email protected]> wrote:
>> > >> On Tue, Mar 13, 2012 at 2:26 PM, avasilev <[email protected]> wrote:
>> > >> > Hello,
>> > >> > Is there a way to get a function's prototype, equivalent to the
>> > >> > function's 'prototype' property, e.g.:
>>
>> > >> > function Func()
>> > >> > {}
>> > >> > var a = Func.prototype;
>>
>> > >> > Using Object::GetPrototype() does not do the same and returns a
>> > >> > different value. Setting an object's prototype via SetPrototype() to
>> > >> > the property value gives the desired effect of instanceof recognizing
>> > >> > the object as constructed by the function. Setting the prototype to
>> > >> > the function's GetPrototype() does not achieve this.
>> > >> > From the doc I don't see a way to access the "prototype" property of a
>> > >> > function, besides getting it as an ordinary property via  func-
>> > >> >>Get(String::New("prototype"));
>> > >> > Am I missing something?
>>
>> > >> I don't think you are. Why should there be another way, apart from
>> > >> convenience? If JS specifies it as a property, especially not even a
>> > >> special one, then use the property accessor. You may of course argue
>> > >> that it's inconsistent with, say, Array::Length.
>>
>> > >> > Greetings
>> > >> > Alex
>>
>> > >> > --
>> > >> > v8-users mailing list
>> > >> > [email protected]
>> > >> >http://groups.google.com/group/v8-users
>>
>> > > --
>> > > v8-users mailing list
>> > > [email protected]
>> > >http://groups.google.com/group/v8-users
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to