(ObjExpr objx, GeneratorAdapter gen, Class[] parameterTypes, IPersistentVector args)
| 1846 | } |
| 1847 | |
| 1848 | public static void emitTypedArgs(ObjExpr objx, GeneratorAdapter gen, Class[] parameterTypes, IPersistentVector args){ |
| 1849 | for(int i = 0; i < parameterTypes.length; i++) |
| 1850 | { |
| 1851 | Expr e = (Expr) args.nth(i); |
| 1852 | try |
| 1853 | { |
| 1854 | final Class primc = maybePrimitiveType(e); |
| 1855 | if(primc == parameterTypes[i]) |
| 1856 | { |
| 1857 | final MaybePrimitiveExpr pe = (MaybePrimitiveExpr) e; |
| 1858 | pe.emitUnboxed(C.EXPRESSION, objx, gen); |
| 1859 | } |
| 1860 | else if(primc == int.class && parameterTypes[i] == long.class) |
| 1861 | { |
| 1862 | final MaybePrimitiveExpr pe = (MaybePrimitiveExpr) e; |
| 1863 | pe.emitUnboxed(C.EXPRESSION, objx, gen); |
| 1864 | gen.visitInsn(I2L); |
| 1865 | } |
| 1866 | else if(primc == long.class && parameterTypes[i] == int.class) |
| 1867 | { |
| 1868 | final MaybePrimitiveExpr pe = (MaybePrimitiveExpr) e; |
| 1869 | pe.emitUnboxed(C.EXPRESSION, objx, gen); |
| 1870 | if(RT.booleanCast(RT.UNCHECKED_MATH.deref())) |
| 1871 | gen.invokeStatic(RT_TYPE, Method.getMethod("int uncheckedIntCast(long)")); |
| 1872 | else |
| 1873 | gen.invokeStatic(RT_TYPE, Method.getMethod("int intCast(long)")); |
| 1874 | } |
| 1875 | else if(primc == float.class && parameterTypes[i] == double.class) |
| 1876 | { |
| 1877 | final MaybePrimitiveExpr pe = (MaybePrimitiveExpr) e; |
| 1878 | pe.emitUnboxed(C.EXPRESSION, objx, gen); |
| 1879 | gen.visitInsn(F2D); |
| 1880 | } |
| 1881 | else if(primc == double.class && parameterTypes[i] == float.class) |
| 1882 | { |
| 1883 | final MaybePrimitiveExpr pe = (MaybePrimitiveExpr) e; |
| 1884 | pe.emitUnboxed(C.EXPRESSION, objx, gen); |
| 1885 | gen.visitInsn(D2F); |
| 1886 | } |
| 1887 | else if(!FISupport.maybeEmitFIAdapter(objx, gen, e, parameterTypes[i])) |
| 1888 | { |
| 1889 | e.emit(C.EXPRESSION, objx, gen); |
| 1890 | HostExpr.emitUnboxArg(objx, gen, parameterTypes[i]); |
| 1891 | } |
| 1892 | } |
| 1893 | catch(Exception e1) |
| 1894 | { |
| 1895 | throw Util.sneakyThrow(e1); |
| 1896 | } |
| 1897 | |
| 1898 | } |
| 1899 | } |
| 1900 | } |
| 1901 | |
| 1902 | static class InstanceMethodExpr extends MethodExpr{ |
no test coverage detected