Open gvanrossum opened 3 months ago
Template sizes:
_INIT_CALL_PY_EXACT_ARGS_0
(current): 257 bytes_INIT_CALL_PY_EXACT_ARGS_ALWAYS_NULL_0
(proposed): 201 bytes_INIT_CALL_PY_EXACT_ARGS_NEVER_NULL_0
(proposed): 223 bytesSo a 10-20% reduction in size.
_INIT_CALL_PY_EXACT_ARGS
is already quite streamlined but we may be able to squeeze an extra bit out of it in the abstract interpreter. In many cases the abstract interpreter can know that theself_or_null
input is either alwaysNULL
or neverNULL
. In those cases we could simplify to one the following:It does cost about 10 extra uop instructions, but we seem to have about 77 left (more, if we lower the starting point below 300). It also costs extra special-casing in the abstract interpreter. But the JIT templates ought to become even smaller.
@markshannon @brandtbucher