about summary refs log tree commit diff
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))