Nicholas Clark wrote: > > The two things I don't understand > > 1: The above change seems to relate only to hints. Yet the profiling suggested > that restore_magic is now called about 23 million times, about 23 million > more than previously. How does changing hints increase the amount of > magic? 1. only the debugger code path is involved by this slowdown 2. perl5db.pl can't be blamed (as you demonstrated) 3. hence, I looked in pp_dbstate to see if PL_op->op_private was not used, by chance 4. it is used ! as a condition for most of the work done by pp_dbstate 5. conclusion : I don't know why, but try to remove it > 2: What other things should break without this hints change? > So what sort of regression tests should we have for them? locale tests break because there is no longer a way for an op to know at runtime whether it was compiler under the locale pragma (in other words the IN_LOCALE_RUNTIME macro is broken.) In fact the IN_BYTES macro will not be broken as HINT_BYTES was already handled before Robin's patch. Every code that relies on the value of a pragma being known at runtime, except eval(""), will be broken. But that's not a lot of code indeed. > > (Another fix is of course to stop storing hints in COP.op_private.) > > What effect on program correctness would that have? I don't understand the question. The suggestion is to store the hints in a new field in COps instead of storing some of them in their op_private part. I've a patch that does this, but as I want to write extensive regression tests and handle %^H as well, it's not finished. And tuits are rare...