> Okay, so is it possible that this is happening because different types 
are 

> > passed in to that function all the time? Will the optimizer not create 2 
> > different functions for each type passed in? I'm basically passing in 
>
> Kind of.  V8 generates polymorphic code when the optimizer deems it 
> worthwhile.  In pseudo-code: 
>
>   if (typeof(x) === 'number') { 
>     // number code path 
>   } else if (typeof(x) === 'object') { 
>     // object code path 
>   } else { 
>     bailout(); 
>   } 
>
> > multiple types to some functions, and those could be the ones that this 
> > trace is referring to (just a hunch). Is there any way to know which 
> > functions (on what line# in the code) this error is referring to? 
>
> It's already telling you - it's the ToObject() function. :-) 
>
> It's a function in src/runtime.js that's used to do type coercion.  I 
> guess it's unsurprising that it shows up a lot with that 'not enough 
> typeinfo' message - the type of its argument changes all the time. 
>

ah! thanks - this helped me fix the issue. There were 3 in all:
1. Polymorphic types as you mentioned above.
2. lambdas resulting from the use of forEach() instead of for(...)
3. Calls to hasOwnProperty() were resulting in deopt. I didn't find any 
docs about this anywhere. Shifting to if (obj[prop]) instead of if 
(obj.hasOwnProperty(prop)) helped a great deal.

Do you know if [3] is a known issue?


-- 
-- 
v8-users mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to