aboutsummaryrefslogtreecommitdiff
path: root/pkg/lang/vm/value
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-05-28 14:28:46 +0000
committerGitHub <noreply@github.com>2022-05-28 14:28:46 +0000
commit2ddb215e3b0d3818b3fac8f315d97d8020eb699f (patch)
tree80ab831b31a550751847f543cf4741f8d3449f2f /pkg/lang/vm/value
parent0a7700112f82e634a957685bee0cbaa3458f4945 (diff)
downloadjinx-2ddb215e3b0d3818b3fac8f315d97d8020eb699f.tar.zst
jinx-2ddb215e3b0d3818b3fac8f315d97d8020eb699f.zip
Extract stack package and hide behind interface
Diffstat (limited to 'pkg/lang/vm/value')
-rw-r--r--pkg/lang/vm/value/cells.go8
-rw-r--r--pkg/lang/vm/value/data.go20
-rw-r--r--pkg/lang/vm/value/value.go8
3 files changed, 18 insertions, 18 deletions
diff --git a/pkg/lang/vm/value/cells.go b/pkg/lang/vm/value/cells.go
index 17a0916..1c34762 100644
--- a/pkg/lang/vm/value/cells.go
+++ b/pkg/lang/vm/value/cells.go
@@ -4,7 +4,7 @@ import "jinx/pkg/lang/vm/mem"
type ArrayCell []Value
-func (a ArrayCell) DropCell(m *mem.Mem) {
+func (a ArrayCell) DropCell(m mem.Mem) {
for _, v := range a {
v.Drop(m)
}
@@ -16,7 +16,7 @@ func (a ArrayCell) Get() []Value {
type StringCell string
-func (s StringCell) DropCell(m *mem.Mem) {
+func (s StringCell) DropCell(m mem.Mem) {
}
func (s StringCell) Get() string {
@@ -25,7 +25,7 @@ func (s StringCell) Get() string {
type OutletCell Value
-func (o OutletCell) DropCell(m *mem.Mem) {
+func (o OutletCell) DropCell(m mem.Mem) {
Value(o).Drop(m)
}
@@ -35,7 +35,7 @@ func (o OutletCell) Get() Value {
type EnvCell Env
-func (e EnvCell) DropCell(m *mem.Mem) {
+func (e EnvCell) DropCell(m mem.Mem) {
for _, v := range e.references {
m.Release(v.outlet)
}
diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go
index 2e3b3e6..4e39bc8 100644
--- a/pkg/lang/vm/value/data.go
+++ b/pkg/lang/vm/value/data.go
@@ -8,7 +8,7 @@ import (
)
type Data interface {
- String(*mem.Mem) (string, error)
+ String(mem.Mem) (string, error)
}
type IntData int64
@@ -17,7 +17,7 @@ func (i IntData) Get() int64 {
return int64(i)
}
-func (i IntData) String(_ *mem.Mem) (string, error) {
+func (i IntData) String(_ mem.Mem) (string, error) {
return strconv.FormatInt(int64(i), 10), nil
}
@@ -27,7 +27,7 @@ func (f FloatData) Get() float64 {
return float64(f)
}
-func (f FloatData) String(_ *mem.Mem) (string, error) {
+func (f FloatData) String(_ mem.Mem) (string, error) {
return strconv.FormatFloat(float64(f), 'f', -1, 64), nil
}
@@ -35,7 +35,7 @@ type StringData struct {
data mem.Ptr
}
-func (s StringData) String(m *mem.Mem) (string, error) {
+func (s StringData) String(m mem.Mem) (string, error) {
if data, err := m.Get(s.data); err == nil {
return "\"" + data.(StringCell).Get() + "\"", nil
} else {
@@ -49,7 +49,7 @@ func (b BoolData) Get() bool {
return bool(b)
}
-func (b BoolData) String(_ *mem.Mem) (string, error) {
+func (b BoolData) String(_ mem.Mem) (string, error) {
return strconv.FormatBool(bool(b)), nil
}
@@ -57,7 +57,7 @@ type ArrayData struct {
data mem.Ptr
}
-func (a ArrayData) String(m *mem.Mem) (string, error) {
+func (a ArrayData) String(m mem.Mem) (string, error) {
val, err := m.Get(a.data)
if err != nil {
return "", err
@@ -81,7 +81,7 @@ func (a ArrayData) String(m *mem.Mem) (string, error) {
return builder.String(), nil
}
-func (a ArrayData) Len(m *mem.Mem) (int, error) {
+func (a ArrayData) Len(m mem.Mem) (int, error) {
data, err := m.Get(a.data)
if err != nil {
return 0, err
@@ -90,7 +90,7 @@ func (a ArrayData) Len(m *mem.Mem) (int, error) {
return len(arr), nil
}
-func (a ArrayData) At(m *mem.Mem, i int) (Value, error) {
+func (a ArrayData) At(m mem.Mem, i int) (Value, error) {
data, err := m.Get(a.data)
if err != nil {
return Value{}, err
@@ -99,7 +99,7 @@ func (a ArrayData) At(m *mem.Mem, i int) (Value, error) {
return arr[i], nil
}
-func (a ArrayData) Push(m *mem.Mem, v Value) error {
+func (a ArrayData) Push(m mem.Mem, v Value) error {
data, err := m.Get(a.data)
if err != nil {
return err
@@ -131,7 +131,7 @@ func (f FunctionData) WithEnv(env mem.Ptr) FunctionData {
return FunctionData{pc: f.pc, env: env}
}
-func (f FunctionData) String(_ *mem.Mem) (string, error) {
+func (f FunctionData) String(_ mem.Mem) (string, error) {
return fmt.Sprintf("<fn %d>", f.pc), nil
}
diff --git a/pkg/lang/vm/value/value.go b/pkg/lang/vm/value/value.go
index f98740e..a2909ba 100644
--- a/pkg/lang/vm/value/value.go
+++ b/pkg/lang/vm/value/value.go
@@ -20,7 +20,7 @@ func NewFloat(x float64) Value {
return Value{t: t, d: FloatData(x)}
}
-func NewString(m *mem.Mem, str string) (Value, error) {
+func NewString(m mem.Mem, str string) (Value, error) {
t := Type{Kind: StringType}
ptr, err := m.Allocate(mem.CellKindString)
@@ -38,7 +38,7 @@ func NewBool(b bool) Value {
return Value{t: t, d: BoolData(b)}
}
-func NewArray(m *mem.Mem, arr []Value) (Value, error) {
+func NewArray(m mem.Mem, arr []Value) (Value, error) {
t := Type{Kind: ArrayType}
ptr, err := m.Allocate(mem.CellKindArray)
@@ -85,7 +85,7 @@ func (v Value) WithOutlet(outlet mem.Ptr) Value {
return Value{t: v.t, d: v.d, outlet: outlet}
}
-func (v Value) Clone(m *mem.Mem) Value {
+func (v Value) Clone(m mem.Mem) Value {
if v.t.Kind == StringType {
str := v.d.(StringData)
m.Retain(str.data)
@@ -104,7 +104,7 @@ func (v Value) Clone(m *mem.Mem) Value {
return v
}
-func (v Value) Drop(m *mem.Mem) {
+func (v Value) Drop(m mem.Mem) {
// If value has an outlet, don't drop it and instead move it to the outlet.
if !v.outlet.IsNull() {
m.Set(v.outlet, OutletCell(v))