@@ -683,9 +683,9 @@ func do_RAISE_VARARGS(vm *Vm, argc int32) {
683
683
// function arguments, and the function itself off the stack, and
684
684
// pushes the return value.
685
685
func do_CALL_FUNCTION (vm * Vm , argc int32 ) {
686
- fmt .Printf ("Stack: %v\n " , vm .stack )
687
- fmt .Printf ("Locals: %v\n " , vm .frame .Locals )
688
- fmt .Printf ("Globals: %v\n " , vm .frame .Globals )
686
+ // fmt.Printf("Stack: %v\n", vm.stack)
687
+ // fmt.Printf("Locals: %v\n", vm.frame.Locals)
688
+ // fmt.Printf("Globals: %v\n", vm.frame.Globals)
689
689
nargs := int (argc & 0xFF )
690
690
nkwargs := int ((argc >> 8 ) & 0xFF )
691
691
p , q := len (vm .stack )- 2 * nkwargs , len (vm .stack )
@@ -695,7 +695,7 @@ func do_CALL_FUNCTION(vm *Vm, argc int32) {
695
695
p , q = p - 1 , p
696
696
fn := vm .stack [p ]
697
697
// Drop everything off the stack
698
- vm .stack = vm .stack [:q ]
698
+ vm .stack = vm .stack [:p ]
699
699
vm .Call (fn , args , kwargs )
700
700
}
701
701
@@ -815,7 +815,7 @@ func (vm *Vm) NotImplemented(name string, arg int32) {
815
815
//
816
816
// The result is put on the stack
817
817
func (vm * Vm ) Call (fnObj py.Object , args []py.Object , kwargs []py.Object ) {
818
- fmt .Printf ("Call %T %v with args = %v, kwargs = %v\n " , fnObj , fnObj , args , kwargs )
818
+ // fmt.Printf("Call %T %v with args = %v, kwargs = %v\n", fnObj, fnObj, args, kwargs)
819
819
var kwargsd py.StringDict
820
820
if len (kwargs ) > 0 {
821
821
// Convert kwargs into dictionary
@@ -881,8 +881,10 @@ func (vm *Vm) PopFrame() {
881
881
//
882
882
// Any parameters are expected to have been decoded into locals
883
883
func Run (globals , locals py.StringDict , code * py.Code ) (err error ) {
884
+ vm := NewVm ()
884
885
defer func () {
885
886
if r := recover (); r != nil {
887
+ fmt .Printf ("vmstack = %#v\n " , vm .stack )
886
888
switch x := r .(type ) {
887
889
case error :
888
890
err = x
@@ -893,7 +895,6 @@ func Run(globals, locals py.StringDict, code *py.Code) (err error) {
893
895
}
894
896
}
895
897
}()
896
- vm := NewVm ()
897
898
vm .PushFrame (globals , locals , code )
898
899
899
900
var opcode byte
0 commit comments