The following patches remove several "NYI: bytecode 50" and "NYI: bytecode 51" in backend.lua, expand.lua and ssa.lua.
Bytecode 50 (UCLO) and bytecode 51 (FNEW) are involved when create closures, a function inside another function that has access to an upvalue. Moving the function out, makes unnecessary create a closure, solving the issue.
Number of traces aborted due to unimplemented bytecodes:
The following patches remove several "NYI: bytecode 50" and "NYI: bytecode 51" in backend.lua, expand.lua and ssa.lua.
Bytecode 50 (UCLO) and bytecode 51 (FNEW) are involved when create closures, a function inside another function that has access to an upvalue. Moving the function out, makes unnecessary create a closure, solving the issue.
Number of traces aborted due to unimplemented bytecodes:
Master
AVG: 144
Patch applied
AVG: 128
I integrated this change in Snabbswitch and to be honest I saw no difference:
Pflua (master)
AVG: 45,624.320
Pflua (remove-NYI)
AVG: 45,725.696