On Saturday, 17 December 2016 at 04:14:29 UTC, Stefan Koch wrote:
I just fixed gotos again.
While researching unusually large performance drops, I found
the cause for a rather nasty bug. (It was an off-by-one error
again :))
It turned out that there were circumstances where some gotos
would be dropped and the corresponding fixup jumps where never
emitted.
Due to a curious situation in the dmd ast, I had to make jumps
without addresses into nops.
This was hiding the bug.
BTW supporting NOPS has been a huge pain for some time now.
I will look into fixing my dmd-ast handling to make them
unnecessary.
Jumps that don't know where they are supposed to go should not
be ignored but an error instead!
I rectified a few more performance problems.
The StringEquals macro put alot of pressure on the bytecode
generator.
Therefore I implemented it as an instruction.
Interestingly this did not speed up the execution by as much as I
would have expected,
maybe I need better test-cases ?