q/src/ssa/Syscall.go
Eduard Urbach 3301cf5542
All checks were successful
/ test (push) Successful in 15s
Improved ssa compiler
2025-07-02 16:55:24 +02:00

66 lines
No EOL
970 B
Go

package ssa
import (
"strconv"
"strings"
"git.urbach.dev/cli/q/src/types"
)
type Syscall struct {
Id
Arguments
Liveness
Source
}
func (a *Syscall) Equals(v Value) bool {
b, sameType := v.(*Syscall)
if !sameType {
return false
}
return a.Arguments.Equals(b.Arguments)
}
func (v *Syscall) IsConst() bool {
return false
}
func (v *Syscall) Debug() string {
tmp := strings.Builder{}
tmp.WriteString("syscall(")
for i, arg := range v.Arguments {
tmp.WriteString("%")
tmp.WriteString(strconv.Itoa(arg.ID()))
if i != len(v.Arguments)-1 {
tmp.WriteString(", ")
}
}
tmp.WriteString(")")
return tmp.String()
}
func (v *Syscall) String() string {
tmp := strings.Builder{}
tmp.WriteString("syscall(")
for i, arg := range v.Arguments {
tmp.WriteString(arg.String())
if i != len(v.Arguments)-1 {
tmp.WriteString(", ")
}
}
tmp.WriteString(")")
return tmp.String()
}
func (v *Syscall) Type() types.Type {
return types.Any
}