X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fautovivification.git;a=blobdiff_plain;f=autovivification.xs;h=46422c4002ce3cc80e2aae522e84e076b8672fd9;hp=0d7e5ed34e1b0257f1e6aefb1bcb32a7d47b63e6;hb=7839df4d069fb2962a189f08bf7c92ff63d261fa;hpb=d52659669c6fc0309f89083ff0c6835931e75a33 diff --git a/autovivification.xs b/autovivification.xs index 0d7e5ed..46422c4 100644 --- a/autovivification.xs +++ b/autovivification.xs @@ -800,6 +800,15 @@ static OP *a_pp_root_binop(pTHX) { /* ... pp_multideref ....................................................... */ +/* This pp replacement is actually only called for topmost exists/delete ops, + * because we hijack the [ah]elem check functions and this disables the + * optimization for lvalue and rvalue dereferencing. In particular, the + * OPf_MOD branches should never be covered. In the future, the multideref + * optimization might also be disabled for custom exists/delete check functions, + * which will make this section unnecessary. However, the code tries to be as + * general as possible in case I think of a way to reenable the multideref + * optimization even when this module is in use. */ + static UV a_do_multideref(const OP *o, UV flags) { UV isexdel, other_flags;