After talking to other developers, I realized 'the hidden class' is map. JavaScript does not use static class info, but a lot of them are created by a constructor function, and with the same set of properties. A map is used to describe the set of objects with the same set of properties. When one object is added a property that's different from others, a new map is created. You can think the map is copy on write thing.
On Fri, Nov 7, 2008 at 10:21 AM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > I'm referring to the hidden classes that is talked about here: > http://code.google.com/apis/v8/design.html#prop_access > > So, are the hidden classes mentioned there actually the object > Boilerplates, the __proto__, or something else? Is there perhaps some > more detailed documentation about the design of v8 internals and data > structures (particularly about object layout) that I can read to > better understand this issue? > > Thanks. > > On Nov 7, 9:27 am, Feng Qian <[EMAIL PROTECTED]> wrote: >> Do you mean 'hidden prototype object'? It is like a normal object >> except that not accessible by JS code '__proto__'. >> >> I am not sure if object cloning can help much because you need to fix >> whole prototype chain for a cloned object. V8 is doing something like >> that for object literals (Boilerplate). >> >> On Thu, Nov 6, 2008 at 10:11 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >> >> > I've got a few questions regarding the representation of hidden >> > classes: >> >> > 1. Which v8 data structure is the hidden class that the v8 literature >> > talks about? >> > 2. Are hidden classes supposed to be immutable? Or are they mutable >> > like any JS Objects? >> > 3. If immutable, is it possible to share the hidden classes across >> > execution contexts? >> > 4. If mutable and not shareable across execution contexts, are there >> > any data structures that make up the object that is static meta-data >> > that can be shared? >> >> > The reason for my asking is because I'm wondering if it is possible to >> > use object cloning to speed up the process of populating a new context >> > with objects. I'm looking for a mechanism (either an existing one or >> > to write one myself) that is similar to snapshots. >> >> > The difference is that the snapshot mechanism seems to serialize the >> > entire heap into a data stream that is later reloaded in entirety into >> > a new launch of v8. What I want to do instead is to only clone one >> > set of objects (as defined by a reference execution context) into a >> > new context. Serializing/deserializing this set of objects can be >> > done as an advanced exercise later. >> >> > I'm also hoping that the objects in the new context can reuse all the >> > hidden classes from the reference context. This is why I'm asking if >> > the hidden classes (which I presume are just collections of metadata) >> > are immutable. >> >> > Please advise. Thanks. > > > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
