id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,lang,patch,platform
1138,Create a 'vivify' opcode,Austin_Hastings,,"PCT generates a lot of code that looks like:
{{{
    find_lex $P99, '$var'
    unless_null $P99, vivify_22
    $P99 = new 'Undef'
vivify_22:
}}}

In kakapo.pir, a library of 21872 lines (wc-l) of NQP generated pir, there were 1381 occurrences of this pattern. (Grep "", vivify_"" | wc -l)

This is 6.3% of the total file size, including infrastructure. It's surely a larger fraction of the ""real"" code. (In fact, that's one of three lines the pattern uses. So the pattern is actually something like 19% of the total lines in the file.)

Converting these two opcodes:
{{{
    unless-null P, IC
    new P, SC
}}}
into 1 opcode:
{{{
    vivify P, SC
}}}
would reduce the pir size by that 6%, since it eliminates one of the lines entirely. Per a conversation with chromatic this evening, we expect about a 2-3% reduction is pbc size (pir lines != opcode words) and a corresponding 2-3% increase in execution speed.
",todo,closed,normal,,core,1.7.0,medium,fixed,,,,,
