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 ?

Reply via email to