Hi, I've been experimenting a bit with heuristics such as "not retracing loops with a lot of guards" or "not unrolling if the peel loop is not much better than the preamble". In some situations is seem possible to increase performace by such means (go: +37%, html5lib: +13%, rietveld: +8%). However I think the real problem is that we duplicate guards and that this leads to an explosion of bridges. I added test_excessive_bridgeing to test_ajit on the jit-limit_peeling branch. It is a simple example where the last part of the loop is traced 8 times producing 8 identical bridges.
Is there any chance of identifying copies of "the same guard" (in some sens that considers both the address of the guard and the state of virtuals) and when the second copy of the guards is about to be traced we would just connect it to the already compiled bridge? Maybe by producing a small header-bridge that moves things around and then jumps to the already compiled bridge? -- Håkan Ardö _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev