@@ -694,46 +694,70 @@ void test_opcodes(void) {
694694 END_TEST ();
695695 free (externals .foreign_functions );
696696 ///////////////////////////////////
697- START_TEST (SET_LOCAL / GET_LOCAL , //
698- "PUSH_INT 10\n" //
699- "PUSH_INT 20\n" //
700- "CALL 2 fun1\n" //
701- "GET_RETVAL\n" //
702- "HALT 69\n" //
703- ".label fun1\n" //
704- "ADD\n" //
705- "SET_LOCAL 0\n" //
706- "PUSH_INT 5\n" //
707- "GET_LOCAL 0\n" //
708- "ADD\n" //
709- "RETURN_VALUE\n" //
710- ); //
697+ START_TEST (1 SET_LOCAL / GET_LOCAL , //
698+ "PUSH_INT 10\n" //
699+ "PUSH_INT 20\n" //
700+ "PUSH_NULL_N 10\n" //
701+ "CALL 12 fun1\n" //
702+ "GET_RETVAL\n" //
703+ "HALT 69\n" //
704+ ".label fun1\n" //
705+ "GET_LOCAL 1\n" //
706+ "RETURN_VALUE\n" //
707+ ); //
711708
712709 TEST_EXECUTE ;
713- OP_TEST_START (18 , 1 , 0 );
710+ OP_TEST_START (20 , 1 , 0 );
711+ vm_value = vm_pop (& thread );
712+ assert (vm_value .type == VM_VAL_INT );
713+ assert (vm_value .number .integer == 20 );
714+ OP_TEST_END ();
715+
716+ END_TEST ();
717+
718+ START_TEST (2 SET_LOCAL / GET_LOCAL , //
719+ "PUSH_INT 10\n" //
720+ "PUSH_INT 20\n" //
721+ "PUSH_NULL_N 10\n" //
722+ "CALL 12 fun1\n" //
723+ "GET_RETVAL\n" //
724+ "HALT 69\n" //
725+ ".label fun1\n" //
726+ "GET_LOCAL 0\n" //
727+ "GET_LOCAL 1\n" //
728+ "ADD\n" //
729+ "SET_LOCAL 0\n" //
730+ "PUSH_INT 5\n" //
731+ "GET_LOCAL 0\n" //
732+ "ADD\n" //
733+ "RETURN_VALUE\n" //
734+ ); //
735+
736+ TEST_EXECUTE ;
737+ OP_TEST_START (20 , 1 , 0 );
714738 vm_value = vm_pop (& thread );
715739 assert (vm_value .type == VM_VAL_INT );
716740 assert (vm_value .number .integer == 35 );
717741 OP_TEST_END ();
718742
719743 END_TEST ();
720744
721- START_TEST (SET_LOCAL / GET_LOCAL , //
722- "PUSH_INT 1\n" //
723- "PUSH_INT 2\n" //
724- "PUSH_INT 3\n" //
725- "PUSH_INT 4\n" //
726- "CALL 3 fun1\n" //
727- "HALT 69\n" //
728- ".label fun1\n" //
729- "PUSH_INT 10\n" //
730- "SET_LOCAL 0\n" //
731- "PUSH_INT 11\n" //
732- "SET_LOCAL 1\n" //
733- "PUSH_INT 12\n" //
734- "SET_LOCAL 2\n" //
735- "RETURN\n" //
736- ); //
745+ START_TEST (3 SET_LOCAL / GET_LOCAL , //
746+ "PUSH_INT 1\n" //
747+ "PUSH_INT 2\n" //
748+ "PUSH_INT 3\n" //
749+ "PUSH_INT 4\n" //
750+ "CALL 3 fun1\n" //
751+ "HALT 69\n" //
752+ ".label fun1\n" //
753+ "PUSH_INT 10\n" //
754+ "SET_LOCAL 0\n" //
755+ "PUSH_INT 11\n" //
756+ "SET_LOCAL 1\n" //
757+ "PUSH_INT 12\n" //
758+ "SET_LOCAL 2\n" //
759+ "RETURN\n" //
760+ ); //
737761
738762 TEST_EXECUTE ;
739763 OP_TEST_START (27 , 1 , 0 );
@@ -744,23 +768,26 @@ void test_opcodes(void) {
744768
745769 END_TEST ();
746770
747- START_TEST (SET_LOCAL_FF / GET_LOCAL_FF , //
748- "PUSH_INT 10\n" //
749- "PUSH_INT 20\n" //
750- "CALL 2 fun1\n" //
751- "GET_RETVAL\n" //
752- "HALT 69\n" //
753- ".label fun1\n" //
754- "ADD\n" //
755- "SET_LOCAL_FF 0\n" //
756- "PUSH_INT 5\n" //
757- "GET_LOCAL_FF 0\n" //
758- "ADD\n" //
759- "RETURN_VALUE\n" //
771+ START_TEST (4 SET_LOCAL_FF / GET_LOCAL_FF , //
772+ "PUSH_INT 10\n" //
773+ "PUSH_INT 20\n" //
774+ "PUSH_NULL_N 10\n" //
775+ "CALL 12 fun1\n" //
776+ "GET_RETVAL\n" //
777+ "HALT 69\n" //
778+ ".label fun1\n" //
779+ "GET_LOCAL_FF 0\n" //
780+ "GET_LOCAL_FF 1\n" //
781+ "ADD\n" //
782+ "SET_LOCAL_FF 0\n" //
783+ "PUSH_INT 5\n" //
784+ "GET_LOCAL_FF 0\n" //
785+ "ADD\n" //
786+ "RETURN_VALUE\n" //
760787 );
761788
762789 TEST_EXECUTE ;
763- OP_TEST_START (18 , 1 , 0 );
790+ OP_TEST_START (20 , 1 , 0 );
764791 vm_value = vm_pop (& thread );
765792 assert (vm_value .type == VM_VAL_INT );
766793 assert (vm_value .number .integer == 35 );
0 commit comments