123456789101112131415161718192021222324252627282930313233343536373839 |
- 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.srcMeta
- }
- 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)
- }
|