diff options
Diffstat (limited to 'transform.e')
| -rw-r--r-- | transform.e | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/transform.e b/transform.e index 4004db9..1230883 100644 --- a/transform.e +++ b/transform.e @@ -220,7 +220,7 @@ : push-input-buffer allocate-input-buffer-metadata ~ (original metadata pointer, new metadata pointer) - 2dup swap 6 8 * memcopy + 2dup 6 8 * memcopy ~ (original metadata pointer, new metadata pointer) swap dup zero-input-buffer-metadata input-buffer-next-source ! ; @@ -237,7 +237,7 @@ : pop-input-buffer dup input-buffer-next-source @ ~ (original metadata pointer, next source metadata pointer) - dup { 6 8 * memcopy } + dup { swap 6 8 * memcopy } { drop zero-input-buffer-metadata } if-else ; @@ -839,7 +839,7 @@ allocate-transform-state s" transform-state" variable ~ in dynamic.e before attempting to understand label-create-alternate. : label-create-alternate dup stringlen 1 + dup 3unroll - here @ 10 + 3unroll memmove + here @ 10 + swap memmove here @ ~ This value of "latest" is going into the generated output, so we need @@ -1066,8 +1066,8 @@ allocate-transform-state s" transform-state" variable ~ ~ (start pointer, length --) : label-if-alternate - 2dup swap dup 5 8 * + 3unroll swap - ~ (start pointer, length, start pointer, adjusted start pointer, length) + 2dup swap dup 5 8 * + 3roll + ~ (start pointer, length, adjusted start pointer, start pointer, length) memmove ~ (start pointer, length) swap here @ swap here ! swap @@ -1088,8 +1088,8 @@ allocate-transform-state s" transform-state" variable ~ (start pointer, length) : label-unless-alternate - 2dup swap dup 5 8 * + 3unroll swap - ~ (start pointer, length, start pointer, adjusted start pointer, length) + 2dup swap dup 5 8 * + 3roll + ~ (start pointer, length, adjusted start pointer, start pointer, length) memmove ~ (start pointer, length) swap here @ swap here ! swap @@ -1116,9 +1116,8 @@ allocate-transform-state s" transform-state" variable ~ Those spaces will take five words, and two words, respectively. So the ~ false-block gets moved by seven words, and the true-block gets moved by ~ five words. - 2dup swap dup 7 8 * + swap 3roll memmove - 4 roll dup 5 unroll 4 roll dup 5 unroll - swap dup 5 8 * + swap 3roll memmove + 2dup swap dup 7 8 * + 3roll memmove + 3 pick dup 5 8 * + 4 pick memmove ~ (true start, true length, false start, false length) ~ Now we write out the initial test-and-branch. @@ -1161,7 +1160,7 @@ allocate-transform-state s" transform-state" variable ~ (test start, test length, body start, body length --) : label-while-alternate ~ The conditional branch needs five words. - 2dup swap dup 5 8 * + swap 3roll memmove + 2dup swap dup 5 8 * + 3roll memmove here @ 5 unroll swap dup 3unroll here ! ~ (old here, test start, test length, body start, body length) swap-transform-variables |