diff options
| author | Mel <einebeere@gmail.com> | 2022-05-27 23:34:40 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-27 23:34:40 +0000 |
| commit | 83d1dc87f3336d70ccda476627c70c282b7b6e11 (patch) | |
| tree | 70610879d3de1ddf02bbe9067076fe65b52979a9 /pkg/lang/vm/value/env.go | |
| parent | 47c4cd3705bee9d7154c42ce95aef6f8a19e0661 (diff) | |
| download | jinx-83d1dc87f3336d70ccda476627c70c282b7b6e11.tar.zst jinx-83d1dc87f3336d70ccda476627c70c282b7b6e11.zip | |
Function envs and value escaping
Diffstat (limited to 'pkg/lang/vm/value/env.go')
| -rw-r--r-- | pkg/lang/vm/value/env.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pkg/lang/vm/value/env.go b/pkg/lang/vm/value/env.go new file mode 100644 index 0000000..b7bb3ab --- /dev/null +++ b/pkg/lang/vm/value/env.go @@ -0,0 +1,33 @@ +package value + +import "jinx/pkg/lang/vm/mem" + +type Env struct { + references []reference +} + +func NewEnv() Env { + return Env{ + references: make([]reference, 0), + } +} + +func (e *Env) Add(stackIndex int, outlet mem.Ptr) { + e.references = append(e.references, reference{ + stackIndex: stackIndex, + outlet: outlet, + }) +} + +func (e *Env) GetOutlet(envIndex int) mem.Ptr { + return e.references[envIndex].outlet +} + +func (e *Env) GetStackIndex(envIndex int) int { + return e.references[envIndex].stackIndex +} + +type reference struct { + stackIndex int + outlet mem.Ptr +} |
