diff options
| author | Mel <einebeere@gmail.com> | 2022-05-28 14:28:46 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-28 14:28:46 +0000 |
| commit | 2ddb215e3b0d3818b3fac8f315d97d8020eb699f (patch) | |
| tree | 80ab831b31a550751847f543cf4741f8d3449f2f /pkg/lang/vm/value | |
| parent | 0a7700112f82e634a957685bee0cbaa3458f4945 (diff) | |
| download | jinx-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.go | 8 | ||||
| -rw-r--r-- | pkg/lang/vm/value/data.go | 20 | ||||
| -rw-r--r-- | pkg/lang/vm/value/value.go | 8 |
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)) |
