Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions cmd/kvlang/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"flag"
"fmt"
"os"
"path/filepath"
"strings"
"time"

Expand Down Expand Up @@ -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)
Expand Down
5 changes: 0 additions & 5 deletions keytree/sys.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
11 changes: 4 additions & 7 deletions rwir/builtin/rwirs.go
Original file line number Diff line number Diff line change
Expand Up @@ -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/<opcode>(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)),
})
}
Expand Down
Loading