diff --git a/cmd/kvlang/run.go b/cmd/kvlang/run.go index cb81de89..799de799 100644 --- a/cmd/kvlang/run.go +++ b/cmd/kvlang/run.go @@ -5,7 +5,6 @@ import ( "flag" "fmt" "os" - "path/filepath" "strings" "time" @@ -72,7 +71,7 @@ func executeEntry(kv kvspace.KVSpace, entryName string, debug bool) { vtid := vthread.AllocVtid(kv) kv.DelTree(keytree.VThread(vtid)) kvspace.MkIndexRecursive(kv, keytree.VThread(vtid)+"/") - builtin.WriteRwir(kv, filepath.Base(os.Args[0])) + builtin.WriteRwir(kv) if !noterm { term.Register(kv) go term.Serve(kv) diff --git a/keytree/sys.go b/keytree/sys.go index a5a67f62..31d77b74 100644 --- a/keytree/sys.go +++ b/keytree/sys.go @@ -4,8 +4,3 @@ package keytree const RwirRoot = LibRoot func Rwir(opcode string) string { return RwirRoot + PathSegSep + opcode } - -// RwirRuntime 返回 /lib/{runtime}/{opcode}。{runtime} 反射自可执行文件名。 -func RwirRuntime(runtime, opcode string) string { - return RwirRoot + PathSegSep + runtime + PathSegSep + opcode -} diff --git a/rwir/builtin/rwirs.go b/rwir/builtin/rwirs.go index 37a8d8db..17ddb8fb 100644 --- a/rwir/builtin/rwirs.go +++ b/rwir/builtin/rwirs.go @@ -64,17 +64,14 @@ func countSigParams(sig string) (reads, writes int32) { return } -// WriteRwir 将所有已注册的 native rwir 签名写入 /rwir/{runtime}/。 -// rwir 是空函数体(无指令体,仅签名),只能落在 /rwir/{runtime}/,不进 /lib/。 -// {runtime} 反射自可执行文件名(如 kvlang),使多个 runtime 共存于同一 kvspace 不冲突。 -func WriteRwir(kv kvspace.KVSpace, runtime string) { +// WriteRwir 将所有已注册的 native rwir 签名写入 /lib/(kind=rwir,空函数体仅签名)。 +func WriteRwir(kv kvspace.KVSpace) { pairs := make([]kvspace.KVPair, 0, len(rwirregistry)) for opcode, op := range rwirregistry { - if op.sig == "" { continue } - if strings.Contains(opcode, "/") { continue } + if op.sig == "" || strings.Contains(opcode, "/") { continue } reads, writes := countSigParams(op.sig) pairs = append(pairs, kvspace.KVPair{ - Key: keytree.RwirRuntime(runtime, opcode), + Key: keytree.Rwir(opcode), Val: kvspace.NewRwir(int32(reads), int32(writes), string(op.sig)), }) }