Hi Dmitry,
I found that INIT_FCALL doesn't use opline->result.var and DO_ICALL doesn't
use op1 or op2. The original purpose of separating these two op was for
sending parameters.
However, if a function doesn't need parameters and it's an internal
function, I think the operation could be merged into INIT_FCALL.
So I guess we can do this below to reduce one bytecode for each function
call without parameters:
if (opline->extended_value == 0) {
// call the function directly and store the value in the result.
}
Your thoughts?
Best Regards,
Yo-An Lin