> 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.