7774
YAGNI over premature optimization. Avoid unnecessary copies.
This commit is contained in:
parent
61c47f6db6
commit
70def3209b
|
@ -18,18 +18,19 @@ fn main {
|
|||
}
|
||||
}
|
||||
|
||||
fn run in: (addr stream byte), out: (addr stream byte) {
|
||||
fn run in: (addr gap-buffer), out: (addr stream byte) {
|
||||
# tokenize
|
||||
# insert parens
|
||||
# transform infix
|
||||
# token tree
|
||||
# syntax tree
|
||||
rewind-gap-buffer in
|
||||
clear-stream out
|
||||
{
|
||||
var done?/eax: boolean <- stream-empty? in
|
||||
var done?/eax: boolean <- gap-buffer-scan-done? in
|
||||
compare done?, 0/false
|
||||
break-if-!=
|
||||
var g/eax: grapheme <- read-grapheme in
|
||||
var g/eax: grapheme <- read-from-gap-buffer in
|
||||
write-grapheme out, g
|
||||
loop
|
||||
}
|
||||
|
|
|
@ -80,14 +80,12 @@ fn edit-sandbox _self: (addr sandbox), key: byte {
|
|||
compare g, 0x13/ctrl-s
|
||||
break-if-!=
|
||||
# ctrl-s: run sandbox(es)
|
||||
var buffer-storage: (stream byte 0x1000)
|
||||
var buffer/edi: (addr stream byte) <- address buffer-storage
|
||||
var data-ah/eax: (addr handle gap-buffer) <- get self, data
|
||||
var data/eax: (addr gap-buffer) <- lookup *data-ah
|
||||
emit-gap-buffer data, buffer
|
||||
var _data/eax: (addr gap-buffer) <- lookup *data-ah
|
||||
var data/ecx: (addr gap-buffer) <- copy _data
|
||||
var value-ah/eax: (addr handle stream byte) <- get self, value
|
||||
var value/eax: (addr stream byte) <- lookup *value-ah
|
||||
run buffer, value
|
||||
run data, value
|
||||
return
|
||||
}
|
||||
add-grapheme-to-sandbox self, g
|
||||
|
|
Loading…
Reference in New Issue