1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
package eval
import (
"runtime"
"src.elv.sh/pkg/logutil"
"src.elv.sh/pkg/parse"
)
func init() {
addBuiltinFns(map[string]any{
"src": src,
"-gc": _gc,
"-stack": _stack,
"-log": _log,
})
}
func src(fm *Frame) parse.Source {
return fm.src
}
func _gc() {
runtime.GC()
}
func _stack(fm *Frame) error {
// TODO(xiaq): Dup with main.go.
buf := make([]byte, 1024)
for runtime.Stack(buf, true) == cap(buf) {
buf = make([]byte, cap(buf)*2)
}
_, err := fm.ByteOutput().Write(buf)
return err
}
func _log(fname string) error {
return logutil.SetOutputFile(fname)
}
|