| 15 | import clojure.asm.Opcodes; |
| 16 | |
| 17 | public class Intrinsics implements Opcodes{ |
| 18 | private static Object[] oa(Object... arr){ |
| 19 | return arr; |
| 20 | } |
| 21 | |
| 22 | static IPersistentMap ops = RT.map( |
| 23 | "public static double clojure.lang.Numbers.add(double,double)", DADD, |
| 24 | "public static long clojure.lang.Numbers.and(long,long)", LAND, |
| 25 | "public static long clojure.lang.Numbers.or(long,long)", LOR, |
| 26 | "public static long clojure.lang.Numbers.xor(long,long)", LXOR, |
| 27 | "public static double clojure.lang.Numbers.multiply(double,double)", DMUL, |
| 28 | "public static double clojure.lang.Numbers.divide(double,double)", DDIV, |
| 29 | "public static long clojure.lang.Numbers.remainder(long,long)", LREM, |
| 30 | "public static long clojure.lang.Numbers.shiftLeft(long,long)", oa(L2I, LSHL), |
| 31 | "public static long clojure.lang.Numbers.shiftRight(long,long)", oa(L2I, LSHR), |
| 32 | "public static long clojure.lang.Numbers.unsignedShiftRight(long,long)", oa(L2I, LUSHR), |
| 33 | "public static double clojure.lang.Numbers.minus(double)", DNEG, |
| 34 | "public static double clojure.lang.Numbers.minus(double,double)", DSUB, |
| 35 | "public static double clojure.lang.Numbers.inc(double)", oa(DCONST_1, DADD), |
| 36 | "public static double clojure.lang.Numbers.dec(double)", oa(DCONST_1, DSUB), |
| 37 | "public static long clojure.lang.Numbers.quotient(long,long)", LDIV, |
| 38 | "public static int clojure.lang.Numbers.shiftLeftInt(int,int)", ISHL, |
| 39 | "public static int clojure.lang.Numbers.shiftRightInt(int,int)", ISHR, |
| 40 | "public static int clojure.lang.Numbers.unsignedShiftRightInt(int,int)", IUSHR, |
| 41 | "public static int clojure.lang.Numbers.unchecked_int_add(int,int)", IADD, |
| 42 | "public static int clojure.lang.Numbers.unchecked_int_subtract(int,int)", ISUB, |
| 43 | "public static int clojure.lang.Numbers.unchecked_int_negate(int)", INEG, |
| 44 | "public static int clojure.lang.Numbers.unchecked_int_inc(int)", oa(ICONST_1, IADD), |
| 45 | "public static int clojure.lang.Numbers.unchecked_int_dec(int)", oa(ICONST_1, ISUB), |
| 46 | "public static int clojure.lang.Numbers.unchecked_int_multiply(int,int)", IMUL, |
| 47 | "public static int clojure.lang.Numbers.unchecked_int_divide(int,int)", IDIV, |
| 48 | "public static int clojure.lang.Numbers.unchecked_int_remainder(int,int)", IREM, |
| 49 | "public static long clojure.lang.Numbers.unchecked_add(long,long)", LADD, |
| 50 | "public static double clojure.lang.Numbers.unchecked_add(double,double)", DADD, |
| 51 | "public static long clojure.lang.Numbers.unchecked_minus(long)", LNEG, |
| 52 | "public static double clojure.lang.Numbers.unchecked_minus(double)", DNEG, |
| 53 | "public static double clojure.lang.Numbers.unchecked_minus(double,double)", DSUB, |
| 54 | "public static long clojure.lang.Numbers.unchecked_minus(long,long)", LSUB, |
| 55 | "public static long clojure.lang.Numbers.unchecked_multiply(long,long)", LMUL, |
| 56 | "public static double clojure.lang.Numbers.unchecked_multiply(double,double)", DMUL, |
| 57 | "public static double clojure.lang.Numbers.unchecked_inc(double)", oa(DCONST_1, DADD), |
| 58 | "public static long clojure.lang.Numbers.unchecked_inc(long)", oa(LCONST_1, LADD), |
| 59 | "public static double clojure.lang.Numbers.unchecked_dec(double)", oa(DCONST_1, DSUB), |
| 60 | "public static long clojure.lang.Numbers.unchecked_dec(long)", oa(LCONST_1, LSUB), |
| 61 | |
| 62 | |
| 63 | "public static short clojure.lang.RT.aget(short[],int)", SALOAD, |
| 64 | "public static float clojure.lang.RT.aget(float[],int)", FALOAD, |
| 65 | "public static double clojure.lang.RT.aget(double[],int)", DALOAD, |
| 66 | "public static int clojure.lang.RT.aget(int[],int)", IALOAD, |
| 67 | "public static long clojure.lang.RT.aget(long[],int)", LALOAD, |
| 68 | "public static char clojure.lang.RT.aget(char[],int)", CALOAD, |
| 69 | "public static byte clojure.lang.RT.aget(byte[],int)", BALOAD, |
| 70 | "public static boolean clojure.lang.RT.aget(boolean[],int)", BALOAD, |
| 71 | "public static java.lang.Object clojure.lang.RT.aget(java.lang.Object[],int)", AALOAD, |
| 72 | "public static int clojure.lang.RT.alength(int[])", ARRAYLENGTH, |
| 73 | "public static int clojure.lang.RT.alength(long[])", ARRAYLENGTH, |
| 74 | "public static int clojure.lang.RT.alength(char[])", ARRAYLENGTH, |