Updates:
        Cc: verwa...@chromium.org

Comment #5 on issue 2843 by jkumme...@chromium.org: Flaky error on the 3.20 branch
http://code.google.com/p/v8/issues/detail?id=2843

There are two aspects to this:

(1) Yes, environment liveness. This is another case where we're not visiting the entire graph, so live ranges are screwed up. The repro case is roughly:

function foo() { throw "HAbnormalExit"; }
function bar() {
  var x = {"use_me_once": function() {}, "use_me_again": function() {} };
  x.use_me_once();
  foo();  // Inline this.
  x.use_me_again();
}

Since the inlined foo has no reachable successor blocks, "x.use_me_again()" is never visited during graph building, x's environment slot is zapped before the HEnterInlined, and after foo has triggered a deopt the unoptimized code will complain "Cannot call method 'use_me_again' of undefined".

I'll work on a fix for this tomorrow.


(2) The method that actually gets inlined is assumed to be a constant property guarded by a map check of its holder. Even though all holders the function ever sees have the same map, we're sometimes putting the wrong map in that map check (and, in consequence, also inlining the wrong function). The failing map check then causes the deopt that exposes issue (1). This is probably related to map deprecation and GC interaction; it is unclear whether we can do anything about it, but I think it deserves some investigation.

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to