Mads,

Thanks again for the response. I was under the impression that Date
and RegExp were not objects, only values. For example,
https://github.com/v8/v8/blob/master/include/v8.h#L1355

Although now that I actually attempt to cast it to object and call
object methods on it, it does appear to work. How is that possible,
and why not make it descend from Object in the first place?

cheers,
Charles

On May 3, 2:23 pm, Mads Sig Ager <[email protected]> wrote:
> PS: dates and regexps are objects so they will be covered by the Object
> branch here.
>
> Cheers,    -- Mads
>
> On Tue, May 3, 2011 at 9:21 PM, Mads Sig Ager <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hi again Charles,
>
> > I was only considering values and I was thinking that rolling your own Hash
> > method for a value would be fairly easy since there are not that many basic
> > types to worry about.
>
> > Something along the lines of:
>
> > int Hash(Handle<Value> value) {
> >   if (value->IsObject()) {
> >     return Handle<Object>::Cast(value)->GetIdentityHash();
> >   } else if (value->IsString()) {
> >     // compute and return string hash
> >   } else if (value->IsNumber()) {
> >     // compute and return number hash
> >   } else if (value->IsBoolean()) {
> >     if (value->IsTrue()) {
> >       // return hash value for true
> >     } else {
> >       // return hash value for false
> >     }
> >   } else if (value->IsNull()) {
> >     // return hash value for null
> >   } else if (value->IsUndefined()) {
> >     // return hash value for undefined
> >   }
> >   assert(false);
> >   return 0;
> > }
>
> > Cheers,    -- Mads
>
> > On Tue, May 3, 2011 at 3:41 PM, Charles Lowell 
> > <[email protected]>wrote:
>
> >> Mads,
>
> >> Thanks for the helpful tips. I will definitely look into using
> >> internal fields where possible to achieve the speedup.
>
> >> Stephan is correct, I'm wanting to associate metadata with non-object,
> >> non-template created values like dates and regexen. In fact, for my
> >> use-case (therubyracer), I'd really like to be able to tie metadata to
> >> anything you can get a Handle to since I also reflect non-value things
> >> into Ruby like Context and FunctionTemplate. That said, being able to
> >> get a stable, unique object id for all values would be killer. You
> >> mentioned that it would be relatively straightforward to roll your
> >> own? Any chance you could elaborate?
>
> >> cheers,
> >> Charles
>
> >> On May 3, 2:01 am, Mads Sig Ager <[email protected]> wrote:
> >> > On Tue, May 3, 2011 at 8:58 AM, Stephan Beal <[email protected]>
> >> wrote:
> >> > > On Tue, May 3, 2011 at 8:56 AM, Mads Sig Ager <[email protected]>
> >> wrote:
>
> >> > >> On Tue, May 3, 2011 at 8:52 AM, Stephan Beal <[email protected]
> >> >wrote:
>
> >> > >>> i think Charles is wanting to tie data to non-template-generated
> >> values
> >> > >>> like Numbers. From what i understand, v8 does not have the API to do
> >> this.
> >> > >>> Nor ...
>
> >> > >> Object::GetIdentityHash should give you what you want to do the
> >> mapping
> >> > >> externally. If you want to add external data after the fact in the
> >> object
> >> > >> itself hidden values is the way to go. :)
>
> >> > > But Object::GetIdentityHash() only works for Objects, right?
>
> >> > > In SpiderMonkey each JS value is a numeric handle with a stable value
> >> (v8's
> >> > > aren't stable b/c of how the allocator works), and those numbers can
> >> be used
> >> > > to map, e.g.
> >> > > a Window handle to a JS Integer.
>
> >> > Yes, GetIdentifyHash only works for Objects. For values you can easily
> >> roll
> >> > your own. What you get from GetIdentityHash will stay the same over
> >> time.
>
> >> > -- Mads
>
> >> > > --
> >> > > ----- stephan beal
> >> > >http://wanderinghorse.net/home/stephan/
>
> >> > > --
> >> > > 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