package vm import "jinx/pkg/lang/vm/value" type CallStack []*LocalStack func (cs *CallStack) Push() { *cs = append(*cs, &LocalStack{}) } func (cs *CallStack) Pop() { *cs = (*cs)[:len(*cs)-1] } func (cs *CallStack) Top() *LocalStack { return (*cs)[len(*cs)-1] } func (cs *CallStack) Prev() *LocalStack { return (*cs)[len(*cs)-2] } type LocalStack []value.Value func (ls *LocalStack) Push(v value.Value) { *ls = append(*ls, v) } func (ls *LocalStack) Pop() value.Value { v := (*ls)[len(*ls)-1] *ls = (*ls)[:len(*ls)-1] return v } func (ls *LocalStack) At(at int) value.Value { return (*ls)[at] }