@@ -32,7 +32,7 @@ objects so they can be GCed
32
32
*/
33
33
34
34
import (
35
- "fmt"
35
+ // "fmt"
36
36
"github.com/ncw/gpython/py"
37
37
"runtime/debug"
38
38
)
@@ -45,6 +45,11 @@ const (
45
45
cannotCatchMsg = "catching '%s' that does not inherit from BaseException is not allowed"
46
46
)
47
47
48
+ // Debug print
49
+ func debugf (format string , a ... interface {}) {
50
+ // fmt.Printf(format, a...)
51
+ }
52
+
48
53
// Stack operations
49
54
func (vm * Vm ) STACK_LEVEL () int { return len (vm .frame .Stack ) }
50
55
func (vm * Vm ) EMPTY () bool { return len (vm .frame .Stack ) == 0 }
@@ -124,11 +129,11 @@ func (vm *Vm) CheckExceptionRecover(r interface{}) {
124
129
vm .exc = exc
125
130
vm .AddTraceback (& vm .exc )
126
131
vm .exit = exitException
127
- fmt . Printf ("*** Propagating exception: %s\n " , exc .Error ())
132
+ debugf ("*** Propagating exception: %s\n " , exc .Error ())
128
133
} else {
129
134
// Coerce whatever was raised into a *Exception
130
135
vm .SetException (py .MakeException (r ))
131
- fmt . Printf ("*** Exception raised %v\n " , r )
136
+ debugf ("*** Exception raised %v\n " , r )
132
137
// Dump the goroutine stack
133
138
debug .PrintStack ()
134
139
}
@@ -556,7 +561,7 @@ func do_RETURN_VALUE(vm *Vm, arg int32) {
556
561
defer vm .CheckException ()
557
562
vm .result = vm .POP ()
558
563
if len (vm .frame .Stack ) != 0 {
559
- fmt . Printf ("vmstack = %#v\n " , vm .frame .Stack )
564
+ debugf ("vmstack = %#v\n " , vm .frame .Stack )
560
565
panic ("vm stack should be empty at this point" )
561
566
}
562
567
vm .frame .Yielded = false
@@ -639,7 +644,7 @@ func do_POP_EXCEPT(vm *Vm, arg int32) {
639
644
func do_END_FINALLY (vm * Vm , arg int32 ) {
640
645
defer vm .CheckException ()
641
646
v := vm .POP ()
642
- fmt . Printf ("END_FINALLY v=%v\n " , v )
647
+ debugf ("END_FINALLY v=%v\n " , v )
643
648
if vInt , ok := v .(py.Int ); ok {
644
649
vm .exit = vmExit (vInt )
645
650
switch vm .exit {
@@ -727,7 +732,7 @@ func do_WITH_CLEANUP(vm *Vm, arg int32) {
727
732
// or STORE_GLOBAL if possible.
728
733
func do_STORE_NAME (vm * Vm , namei int32 ) {
729
734
defer vm .CheckException ()
730
- fmt . Printf ("STORE_NAME %v\n " , vm .frame .Code .Names [namei ])
735
+ debugf ("STORE_NAME %v\n " , vm .frame .Code .Names [namei ])
731
736
vm .frame .Locals [vm .frame .Code .Names [namei ]] = vm .POP ()
732
737
}
733
738
@@ -791,13 +796,13 @@ func do_DELETE_GLOBAL(vm *Vm, namei int32) {
791
796
func do_LOAD_CONST (vm * Vm , consti int32 ) {
792
797
defer vm .CheckException ()
793
798
vm .PUSH (vm .frame .Code .Consts [consti ])
794
- // fmt.Printf ("LOAD_CONST %v\n", vm.TOP())
799
+ // debugf ("LOAD_CONST %v\n", vm.TOP())
795
800
}
796
801
797
802
// Pushes the value associated with co_names[namei] onto the stack.
798
803
func do_LOAD_NAME (vm * Vm , namei int32 ) {
799
804
defer vm .CheckException ()
800
- fmt . Printf ("LOAD_NAME %v\n " , vm .frame .Code .Names [namei ])
805
+ debugf ("LOAD_NAME %v\n " , vm .frame .Code .Names [namei ])
801
806
vm .PUSH (vm .frame .Lookup (vm .frame .Code .Names [namei ]))
802
807
}
803
808
@@ -1014,7 +1019,7 @@ func do_FOR_ITER(vm *Vm, delta int32) {
1014
1019
func do_LOAD_GLOBAL (vm * Vm , namei int32 ) {
1015
1020
defer vm .CheckException ()
1016
1021
// FIXME this is looking in local scope too - is that correct?
1017
- fmt . Printf ("LOAD_GLOBAL %v\n " , vm .frame .Code .Names [namei ])
1022
+ debugf ("LOAD_GLOBAL %v\n " , vm .frame .Code .Names [namei ])
1018
1023
vm .PUSH (vm .frame .Lookup (vm .frame .Code .Names [namei ]))
1019
1024
}
1020
1025
@@ -1055,7 +1060,7 @@ func do_STORE_MAP(vm *Vm, arg int32) {
1055
1060
func do_LOAD_FAST (vm * Vm , var_num int32 ) {
1056
1061
defer vm .CheckException ()
1057
1062
varname := vm .frame .Code .Varnames [var_num ]
1058
- fmt . Printf ("LOAD_FAST %q\n " , varname )
1063
+ debugf ("LOAD_FAST %q\n " , varname )
1059
1064
if value , ok := vm .frame .Locals [varname ]; ok {
1060
1065
vm .PUSH (value )
1061
1066
} else {
@@ -1191,9 +1196,9 @@ func do_RAISE_VARARGS(vm *Vm, argc int32) {
1191
1196
// pushes the return value.
1192
1197
func do_CALL_FUNCTION (vm * Vm , argc int32 ) {
1193
1198
defer vm .CheckException ()
1194
- // fmt.Printf ("Stack: %v\n", vm.frame.Stack)
1195
- // fmt.Printf ("Locals: %v\n", vm.frame.Locals)
1196
- // fmt.Printf ("Globals: %v\n", vm.frame.Globals)
1199
+ // debugf ("Stack: %v\n", vm.frame.Stack)
1200
+ // debugf ("Locals: %v\n", vm.frame.Locals)
1201
+ // debugf ("Globals: %v\n", vm.frame.Globals)
1197
1202
nargs := int (argc & 0xFF )
1198
1203
nkwargs := int ((argc >> 8 ) & 0xFF )
1199
1204
p , q := len (vm .frame .Stack )- 2 * nkwargs , len (vm .frame .Stack )
@@ -1334,8 +1339,8 @@ func do_CALL_FUNCTION_VAR_KW(vm *Vm, argc int32) {
1334
1339
1335
1340
// NotImplemented
1336
1341
func (vm * Vm ) NotImplemented (name string , arg int32 ) {
1337
- fmt . Printf ("%s %d NOT IMPLEMENTED\n " , name , arg )
1338
- fmt . Printf ("vmstack = %#v\n " , vm .frame .Stack )
1342
+ debugf ("%s %d NOT IMPLEMENTED\n " , name , arg )
1343
+ debugf ("vmstack = %#v\n " , vm .frame .Stack )
1339
1344
panic (py .ExceptionNewf (py .SystemError , "Opcode %s %d NOT IMPLEMENTED" , name , arg ))
1340
1345
}
1341
1346
@@ -1348,7 +1353,7 @@ func (vm *Vm) NotImplemented(name string, arg int32) {
1348
1353
//
1349
1354
// The result is put on the stack
1350
1355
func (vm * Vm ) Call (fnObj py.Object , args []py.Object , kwargsTuple []py.Object ) {
1351
- // fmt.Printf ("Call %T %v with args = %v, kwargsTuple = %v\n", fnObj, fnObj, args, kwargsTuple)
1356
+ // debugf ("Call %T %v with args = %v, kwargsTuple = %v\n", fnObj, fnObj, args, kwargsTuple)
1352
1357
var kwargs py.StringDict
1353
1358
if len (kwargsTuple ) > 0 {
1354
1359
// Convert kwargsTuple into dictionary
@@ -1413,7 +1418,7 @@ func RunFrame(frame *py.Frame) (res py.Object, err error) {
1413
1418
// default:
1414
1419
// err = errors.New(fmt.Sprintf("Unknown error '%s'", x))
1415
1420
// }
1416
- // fmt.Printf ("*** Exception raised %v\n", r)
1421
+ // debugf ("*** Exception raised %v\n", r)
1417
1422
// // Dump the goroutine stack
1418
1423
// debug.PrintStack()
1419
1424
// }
@@ -1423,7 +1428,7 @@ func RunFrame(frame *py.Frame) (res py.Object, err error) {
1423
1428
var arg int32
1424
1429
for vm .exit == exitNot {
1425
1430
frame := vm .frame
1426
- fmt . Printf ("* %4d:" , frame .Lasti )
1431
+ debugf ("* %4d:" , frame .Lasti )
1427
1432
opcodes := frame .Code .Code
1428
1433
opcode = opcodes [frame .Lasti ]
1429
1434
frame .Lasti ++
@@ -1435,17 +1440,17 @@ func RunFrame(frame *py.Frame) (res py.Object, err error) {
1435
1440
if vm .extended {
1436
1441
arg += vm .ext << 16
1437
1442
}
1438
- fmt . Printf (" %s(%d)\n " , OpCodeToName [opcode ], arg )
1443
+ debugf (" %s(%d)\n " , OpCodeToName [opcode ], arg )
1439
1444
} else {
1440
- fmt . Printf (" %s\n " , OpCodeToName [opcode ])
1445
+ debugf (" %s\n " , OpCodeToName [opcode ])
1441
1446
}
1442
1447
vm .extended = false
1443
1448
jumpTable [opcode ](vm , arg )
1444
1449
if vm .frame != nil {
1445
- fmt . Printf ("* Stack = %#v\n " , vm .frame .Stack )
1450
+ debugf ("* Stack = %#v\n " , vm .frame .Stack )
1446
1451
// if len(vm.frame.Stack) > 0 {
1447
1452
// if t, ok := vm.TOP().(*py.Type); ok {
1448
- // fmt.Printf (" * TOP = %#v\n", t)
1453
+ // debugf (" * TOP = %#v\n", t)
1449
1454
// }
1450
1455
// }
1451
1456
}
@@ -1456,7 +1461,7 @@ func RunFrame(frame *py.Frame) (res py.Object, err error) {
1456
1461
// Peek at the current block.
1457
1462
frame := vm .frame
1458
1463
b := frame .Block
1459
- fmt . Printf ("*** Unwinding %#v vm %#v\n " , b , vm )
1464
+ debugf ("*** Unwinding %#v vm %#v\n " , b , vm )
1460
1465
1461
1466
if vm .exit == exitYield {
1462
1467
return vm .result , nil
@@ -1466,19 +1471,19 @@ func RunFrame(frame *py.Frame) (res py.Object, err error) {
1466
1471
frame .PopBlock ()
1467
1472
1468
1473
if b .Type == EXCEPT_HANDLER {
1469
- fmt . Printf ("*** EXCEPT_HANDLER\n " )
1474
+ debugf ("*** EXCEPT_HANDLER\n " )
1470
1475
vm .UnwindExceptHandler (frame , b )
1471
1476
continue
1472
1477
}
1473
1478
vm .UnwindBlock (frame , b )
1474
1479
if b .Type == SETUP_LOOP && vm .exit == exitBreak {
1475
- fmt . Printf ("*** Loop\n " )
1480
+ debugf ("*** Loop\n " )
1476
1481
vm .exit = exitNot
1477
1482
frame .Lasti = b .Handler
1478
1483
break
1479
1484
}
1480
1485
if vm .exit & (exitException | exitReraise ) != 0 && (b .Type == SETUP_EXCEPT || b .Type == SETUP_FINALLY ) {
1481
- fmt . Printf ("*** Exception\n " )
1486
+ debugf ("*** Exception\n " )
1482
1487
handler := b .Handler
1483
1488
// This invalidates b
1484
1489
frame .PushBlock (EXCEPT_HANDLER , - 1 , vm .STACK_LEVEL ())
0 commit comments