YAGNI over premature optimization. Avoid unnecessary copies.
This commit is contained in:
Kartik K. Agaram 2021-02-21 21:30:57 -08:00
parent 61c47f6db6
commit 70def3209b
2 changed files with 7 additions and 8 deletions

View File

@ -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
}

View File

@ -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