Ok, this means I have a shot at having my code compiled monomorphically by 
creating my objects without prototype, which I don't need anyway because 
such information is useless to me as it's not stored in JSON/BSON. 

How about these two objects. would they share the same hidden map?

var o1 = {};
o1.x = 1;

var o2 = {x:1};

Thanks!

On Monday, July 23, 2012 11:53:20 AM UTC-3, Vyacheslav Egorov wrote:
>
> Yes. 
> -- 
> Vyacheslav Egorov 
>
>
> On Mon, Jul 23, 2012 at 4:48 PM, Sebastian Ferreyra Pons 
> <[email protected]> wrote: 
> >> Yes.  In a constructor function, the hidden class begins with an 
> >> element that also includes a prototype.  In two different constructor 
> >> functions these initial elements will be different, making their 
> >> hidden classes different. 
> > 
> > Does this mean that if I make sure that both the mongo driver and my 
> code 
> > uses the literal empty object {} for creating new objects they will 
> share 
> > the same root class? 
> > 
> > On Friday, July 20, 2012 2:21:39 AM UTC-3, jMerliN wrote: 
> >> 
> >> Hi Sebastian, 
> >> 
> >> > It is my understanding that hidden classes are not shared between 
> >> > different 
> >> > constructors, even if I construct structurally identical objects with 
> >> > the 
> >> > same properties and in the same order. This seems to imply that 
> >> > deserialized objects coming from mongodb will not share the same 
> hidden 
> >> > class as structurally identical objects created by the constructors, 
> >> > hence 
> >> > functions that use these objects will not be well optimized into 
> native 
> >> > code. Am I right? 
> >> 
> >> Yes.  In a constructor function, the hidden class begins with an 
> >> element that also includes a prototype.  In two different constructor 
> >> functions these initial elements will be different, making their 
> >> hidden classes different. 
> >> 
> >> If you have hot code that is being impacted because you pass it both 
> >> objects you construct and ones from the MongoDB driver you're using, 
> >> one thing you can do is make your constructor take the MongoDB object 
> >> representation as an input.  Then you would be able to make your hot 
> >> code monomorphic.  If you don't have any hot code being impacted, it's 
> >> probably not something you should worry about unless your Mongo driver 
> >> is putting objects it constructs into dictionary mode for some reason. 
> >> 
> >> An example: http://jsfiddle.net/xznxP/ 
> >> 
> >> "hot" only deoptimizes when given the raw object here, which has a 
> >> different hidden class. 
> >> 
> >> > Is there any hidden class inheritance built into v8? That is, if I 
> >> > create 
> >> > object o={a:1, b:2} and later add o.z=3, will native code optimized 
> for 
> >> > the 
> >> > hidden class before the property-add still work unmodified 
> afterwards? 
> >> 
> >> No. 
> >> 
> >> - Justin 
> >> 
> >> On Jul 19, 4:16 pm, Sebastian Ferreyra Pons <[email protected]> 
> >> wrote: 
> >> > I have two questions. 
> >> > 
> >> > #1 
> >> > I'm developing a Node.js/Mongodb web app. 
> >> > 
> >> > This means that objects used in the code will be created by at least 
> two 
> >> > different code paths: 
> >> > 
> >> >    1. Constructor functions 
> >> >    2. Deserialization code in the mongo driver. 
> >> > 
> >> > It is my understanding that hidden classes are not shared between 
> >> > different 
> >> > constructors, even if I construct structurally identical objects with 
> >> > the 
> >> > same properties and in the same order. This seems to imply that 
> >> > deserialized objects coming from mongodb will not share the same 
> hidden 
> >> > class as structurally identical objects created by the constructors, 
> >> > hence 
> >> > functions that use these objects will not be well optimized into 
> native 
> >> > code. Am I right? 
> >> > 
> >> > #2 
> >> > Is there any hidden class inheritance built into v8? That is, if I 
> >> > create 
> >> > object o={a:1, b:2} and later add o.z=3, will native code optimized 
> for 
> >> > the 
> >> > hidden class before the property-add still work unmodified 
> afterwards? 
> > 
> > -- 
> > 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