galvanise_v2


  • There is a small interpreter in the statemachine to do the propagation, which has inlined code depending on the number of outputs to be triggered. The ordering of basic blocks generated by the compiler are forced in way that follow the common code path (about 90% of the time, ie when there are no triggers). Ultimately, the implementation has quite a large overlap with Sancho's propnet statemachine, which since they documented in detail and seems to be the fastest way to propagate (at this point in time) - it made it very hard to do anything else. Nevertheless, I experimented a bit with some hybrid propnet/state machines and still think if given more meta-timing games such as speed chess could get an order of magnitude faster via splitting the network up some more, and generating code to replace some of the propnet.