Sat Feb 17 19:59:12 GMT 2007
since i don't exactly remember what the code does, and i can't read
the old 2.x code just like that, let's decipher it.
the problem is something like this:
btfsp 1 TXSTA 1 0
r bra l5
r bra l4
which comes from
begin tx-ready? until
which expands to
begin tx-ready? not if _swap_ again then
the important part is the 'then', which should decide that it should
flip the polarity of the skip and the order of the two jumps IF the
first one corresponds to the symbol on the stack.
this works not only for braches, but for any single instruction
following after the forward branch.
ok. implementation. this doesn't fit the pattern matching shoe, since
the label on top of stack needs to be incorporated in the
check. however, it is possible to just compile the 'then', and perform
the optimization afterwards, which is possible using a pattern
ok. this works.
i don't check the label though.. should do that, or prove that it
can't be anything else..