summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go
new file mode 100644
index 000000000..43483395a
--- /dev/null
+++ b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/ssa/signature.go
@@ -0,0 +1,49 @@
+package ssa
+
+import (
+ "fmt"
+ "strings"
+)
+
+// Signature is a function prototype.
+type Signature struct {
+ // ID is a unique identifier for this signature used to lookup.
+ ID SignatureID
+ // Params and Results are the types of the parameters and results of the function.
+ Params, Results []Type
+
+ // used is true if this is used by the currently-compiled function.
+ // Debugging only.
+ used bool
+}
+
+// String implements fmt.Stringer.
+func (s *Signature) String() string {
+ str := strings.Builder{}
+ str.WriteString(s.ID.String())
+ str.WriteString(": ")
+ if len(s.Params) > 0 {
+ for _, typ := range s.Params {
+ str.WriteString(typ.String())
+ }
+ } else {
+ str.WriteByte('v')
+ }
+ str.WriteByte('_')
+ if len(s.Results) > 0 {
+ for _, typ := range s.Results {
+ str.WriteString(typ.String())
+ }
+ } else {
+ str.WriteByte('v')
+ }
+ return str.String()
+}
+
+// SignatureID is an unique identifier used to lookup.
+type SignatureID int
+
+// String implements fmt.Stringer.
+func (s SignatureID) String() string {
+ return fmt.Sprintf("sig%d", s)
+}