This patch much improves our tracking of whether function is
called from within a loop or not. In the past we lost the information if a call site went megamorphic before a lazily compiled callee was called for the first time. Now we track that correctly (this is an issue that affects richards). We still don't manage to track the in-loop state through a constructor call, since constructor calls use LoadICs instead of CallICs. This issue affects delta-blue. So in this patch we assume that lazy compilations that don't happen through a CallIC happen from inside a loop. I have an idea to fix this but this patch is big enough already. With our improved tracking of in-loop state I have switched off the inlining of in-object loads for code that is not in a loop. This benefits compile speed. One issue is that eagerly compiled code now doesn't get the in-object loads inlined. We need to eagerly compile less code to fix this. Review URL: http://codereview.chromium.org/115744 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Showing
Please
register
or
sign in
to comment