@@ -510,7 +510,9 @@ func do_SET_ADD(vm *Vm, i int32) {
510
510
// iterations of the loop.
511
511
func do_LIST_APPEND (vm * Vm , i int32 ) {
512
512
defer vm .CheckException ()
513
- vm .NotImplemented ("LIST_APPEND" , i )
513
+ w := vm .POP ()
514
+ v := vm .PEEK (int (i ))
515
+ v .(* py.List ).Append (w )
514
516
}
515
517
516
518
// Calls dict.setitem(TOS1[-i], TOS, TOS1). Used to implement dict comprehensions.
@@ -759,10 +761,7 @@ func do_LOAD_NAME(vm *Vm, namei int32) {
759
761
func do_BUILD_TUPLE (vm * Vm , count int32 ) {
760
762
defer vm .CheckException ()
761
763
tuple := make (py.Tuple , count )
762
- p := len (vm .frame .Stack ) - int (count )
763
- for i := range tuple {
764
- tuple [i ] = vm .frame .Stack [p + i ]
765
- }
764
+ copy (tuple , vm .frame .Stack [len (vm .frame .Stack )- int (count ):])
766
765
vm .DROPN (int (count ))
767
766
vm .PUSH (tuple )
768
767
}
@@ -776,11 +775,7 @@ func do_BUILD_SET(vm *Vm, count int32) {
776
775
// Works as BUILD_TUPLE, but creates a list.
777
776
func do_BUILD_LIST (vm * Vm , count int32 ) {
778
777
defer vm .CheckException ()
779
- list := make (py.List , count )
780
- p := len (vm .frame .Stack ) - int (count )
781
- for i := range list {
782
- list [i ] = vm .frame .Stack [p + i ]
783
- }
778
+ list := py .NewListFromItems (vm .frame .Stack [len (vm .frame .Stack )- int (count ):])
784
779
vm .DROPN (int (count ))
785
780
vm .PUSH (list )
786
781
}
0 commit comments