Hi! Andy Wingo <wi...@pobox.com> skribis:
> This pass does a few related things: > > * Replacement of an expression with a reference to a lexical > identifier. > > * Inferring the boolean value of an expression, given previous > expressions that were true. > > * Eliminating an expression where it can cause no effect. OK, excellent. > It does not name new values, however. If we switched to CPS as our IR, > then we would have a lot more names, and CSE could be more effective. OK. > Sure. In these I just replaced some of the calls to "log" with "pk". > The "inferring" lines indicate boolean-valued expressions that were > folded. The "elided" lines indicate useless expressions in effect > context. The "propagate-value" lines... hm, there aren't any. They > would correspond to replacing expressions with lexical-refs. Nice, understood! >> What impact does it have on compilation time in module/? > > Dunno. It almost doubles the fresh recompilation of of peval, though > (1.3s to 2.3s). So it’s probably safe to assume that the overall compilation time doubles as well? >>> seeing that lookup in vhashes is fairly slow. Dunno. If we can speed >>> up vhashes somehow then we win in CSE, peval, and other passes, so >>> probably it's best to focus there. >> >> I think we’ll need C-level profiling to see what’s going on. Do you >> have such info already? Otherwise I can look into it. > > I don't have any such info yet. BTW, you may also want to try with a higher value of ‘block-growth-factor’. With a factor of 2, roughly half of the values are found in the first vlist block; with a higher value, you would increase that ratio, at the expense of increased memory consumption. Thanks, Ludo’.