1 package gov.nasa.jpf.jvm; 20 21 24 public class JPF_java_lang_System { 25 public static void setErr0 (MJIEnv env, int clsObjRef, int streamRef) { 26 env.setStaticIntField("java.lang.System", "err", streamRef); 27 } 28 29 public static void setIn0 (MJIEnv env, int clsObjRef, int streamRef) { 30 env.setStaticIntField("java.lang.System", "in", streamRef); 31 } 32 33 public static void setOut0 (MJIEnv env, int clsObjRef, int streamRef) { 34 env.setStaticIntField("java.lang.System", "out", streamRef); 35 } 36 37 public static void $clinit (MJIEnv env, int clsObjRef) { 38 env.setStaticReferenceField("java.lang.System", "out", 39 env.newObject("java.io.PrintStream")); 40 env.setStaticReferenceField("java.lang.System", "err", 41 env.newObject("java.io.PrintStream")); 42 } 43 44 public static void arraycopy (MJIEnv env, int clsObjRef, int srcArrayRef, 47 int srcIdx, int dstArrayRef, int dstIdx, 48 int length) { 49 int i; 50 51 if ((srcArrayRef == -1) || (dstArrayRef == -1)) { 52 env.throwException("java.lang.NullPointerException"); 53 54 return; 55 } 56 57 if (!env.isArray(srcArrayRef) || !env.isArray(dstArrayRef)) { 58 env.throwException("java.lang.ArrayStoreException"); 59 60 return; 61 } 62 63 int sts = env.getArrayTypeSize(srcArrayRef); 64 int dts = env.getArrayTypeSize(dstArrayRef); 65 66 if (sts != dts) { 67 env.throwException("java.lang.ArrayStoreException"); 69 70 return; 71 } 72 73 int sl = env.getArrayLength(srcArrayRef); 77 int dl = env.getArrayLength(dstArrayRef); 78 79 if ((srcIdx < 0) || ((srcIdx + length) > sl)) { 81 env.throwException("java.lang.ArrayIndexOutOfBoundsException"); 82 83 return; 84 } 85 86 if ((dstIdx < 0) || ((dstIdx + length) > dl)) { 87 env.throwException("java.lang.ArrayIndexOutOfBoundsException"); 88 89 return; 90 } 91 92 if (sts == 1) { 93 for (i = 0; i < length; i++, srcIdx++, dstIdx++) { 94 int v = env.getIntArrayElement(srcArrayRef, srcIdx); 95 env.setIntArrayElement(dstArrayRef, dstIdx, v); 96 } 97 } else { 98 for (i = 0; i < length; i++, srcIdx++, dstIdx++) { 99 long v = env.getLongArrayElement(srcArrayRef, srcIdx); 100 env.setLongArrayElement(dstArrayRef, dstIdx, v); 101 } 102 } 103 } 104 105 public static long currentTimeMillis (MJIEnv env, int clsObjRef) { 110 return 1L; 111 } 112 113 public static void exit (MJIEnv env, int clsObjRef, int ret) { 118 KernelState ks = env.getKernelState(); 119 int length = ks.tl.length(); 120 121 for (int i = 0; i < length; i++) { 122 ThreadInfo ti = ks.tl.get(i); 123 124 while (ti.countStackFrames() > 0) { 125 ti.popFrame(); 126 } 127 } 128 } 129 130 public static void gc (MJIEnv env, int clsObjRef) { 131 env.getSystemState().activateGC(); 132 } 133 134 public static int identityHashCode (MJIEnv env, int clsObjRef, int objref) { 135 return (objref ^ 0xABCD); 136 } 137 138 public static void registerNatives (MJIEnv env, int clsObjRef) { 139 } 141 142 145 public static int getProperty__Ljava_lang_String_2 (MJIEnv env, int clsObjRef, int keyRef) { 146 int r = MJIEnv.NULL; 147 148 if (keyRef != MJIEnv.NULL) { 149 String k = env.getStringObject(keyRef); 150 String v = System.getProperty(k); 151 if (v != null) { 152 r = env.newString(v); 153 } 154 } 155 156 return r; 157 } 158 } 159 | Popular Tags |