OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --expose-wasm | 5 // Flags: --expose-wasm |
6 | 6 |
7 function EmptyTest() { | 7 function EmptyTest() { |
8 "use asm"; | 8 "use asm"; |
9 function caller() { | 9 function caller() { |
10 empty(); | 10 empty(); |
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
851 function caller() { | 851 function caller() { |
852 return 55; | 852 return 55; |
853 } | 853 } |
854 return {alt_caller:caller}; | 854 return {alt_caller:caller}; |
855 } | 855 } |
856 | 856 |
857 var module = _WASMEXP_.instantiateModuleFromAsm( | 857 var module = _WASMEXP_.instantiateModuleFromAsm( |
858 TestExportNameDifferentFromFunctionName.toString()); | 858 TestExportNameDifferentFromFunctionName.toString()); |
859 module.__init__(); | 859 module.__init__(); |
860 assertEquals(55, module.alt_caller()); | 860 assertEquals(55, module.alt_caller()); |
861 | |
862 | |
863 function TestFunctionTableSimple() { | |
864 "use asm"; | |
865 | |
866 function dummy() { | |
867 return 71; | |
868 } | |
869 | |
870 function caller() { | |
871 return function_table[0&0]() | 0; | |
872 } | |
873 | |
874 var function_table = [dummy] | |
875 | |
876 return {caller:caller}; | |
877 } | |
878 | |
879 assertEquals(71, _WASMEXP_.asmCompileRun(TestFunctionTableSimple.toString())); | |
880 | |
881 | |
882 function TestFunctionTable() { | |
883 "use asm"; | |
884 | |
885 function add(a, b) { | |
886 a = a|0; | |
887 b = b|0; | |
888 return (a+b)|0; | |
889 } | |
890 | |
891 function sub(a, b) { | |
892 a = a|0; | |
893 b = b|0; | |
894 return (a-b)|0; | |
895 } | |
896 | |
897 function inc(a) { | |
898 a = a|0; | |
899 return (a+1)|0; | |
900 } | |
901 | |
902 function caller(table_id, fun_id, arg1, arg2) { | |
903 table_id = table_id|0; | |
904 fun_id = fun_id|0; | |
905 arg1 = arg1|0; | |
906 arg2 = arg2|0; | |
907 if (table_id == 0) { | |
908 return funBin[fun_id&3](arg1, arg2)|0; | |
bradnelson
2016/01/20 00:40:52
Given the parser eats constant function indexes an
aseemgarg
2016/01/20 00:56:09
Added that above TestFunctionTableSimple
bradnelson
2016/01/20 00:57:01
Doh, missed the test above, though actually might
| |
909 } else if (table_id == 1) { | |
910 return fun[fun_id&0](arg1)|0; | |
911 } | |
912 return 0; | |
913 } | |
914 | |
915 var funBin = [add, sub, sub, add]; | |
916 var fun = [inc]; | |
917 | |
918 return {caller:caller}; | |
919 } | |
920 | |
921 var module = _WASMEXP_.instantiateModuleFromAsm(TestFunctionTable.toString()); | |
922 module.__init__(); | |
923 assertEquals(55, module.caller(0, 0, 33, 22)); | |
924 assertEquals(11, module.caller(0, 1, 33, 22)); | |
925 assertEquals(9, module.caller(0, 2, 54, 45)); | |
926 assertEquals(99, module.caller(0, 3, 54, 45)); | |
927 assertEquals(23, module.caller(0, 4, 12, 11)); | |
928 assertEquals(31, module.caller(1, 0, 30, 11)); | |
OLD | NEW |