func (ins *Call) Execute(_ *int, vm *VM) error {
	parentScope := map[string]*ast.Literal{}
	funcName := ins.FunctionName
	if ins.FunctionName[0] == '*' {
		funcLit := vm.Get(Register(ins.FunctionName[1:]))
		funcName = funcLit.Value
		parentScope = funcLit.Map
	}
	ty := vm.Types[ins.Type]
	results, err := vm.call(funcName, ins.Arguments, parentScope, ty, ins.Pos)
	if err != nil {
		return err
	}
	for i, result := range results {
		vm.set(ins.Results[i], vm.Get(result), 2)
	}
	vm.Stack = vm.Stack[:len(vm.Stack)-1]
	vm.Return = nil
	return nil
}
Execute implements the Instruction interface for the VM.
package vm
import (
	"fmt"
	"github.com/elliotchance/ok/ast"
)
type Call struct {
	FunctionName string
	Arguments    Registers
	Results      Registers
	Type TypeRegister
	Pos string
}