1 /* class: java/lang/Runtime */
7 * Class: java_lang_Runtime
9 * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
11 JNIEXPORT struct java_lang_Process* JNICALL Java_java_lang_Runtime_execInternal (JNIEnv *env , struct java_lang_Runtime* this ,
12 java_objectarray* cmd, java_objectarray* shellenv, struct java_io_File* workingdir)
14 log_text("Java_java_lang_Runtime_execInternal called");
18 * Class: java/lang/Runtime
19 * Method: exitInternal
22 JNIEXPORT void JNICALL Java_java_lang_Runtime_exitInternal ( JNIEnv *env , struct java_lang_Runtime* this, s4 par1)
24 cacao_shutdown (par1);
27 * Class: java/lang/Runtime
31 JNIEXPORT s8 JNICALL Java_java_lang_Runtime_freeMemory ( JNIEnv *env , struct java_lang_Runtime* this)
33 log_text ("java_lang_Runtime_freeMemory called");
34 return builtin_i2l (0);
37 * Class: java/lang/Runtime
41 JNIEXPORT void JNICALL Java_java_lang_Runtime_gc ( JNIEnv *env , struct java_lang_Runtime* this)
46 * Class: java/lang/Runtime
47 * Method: runFinalization
50 JNIEXPORT void JNICALL Java_java_lang_Runtime_runFinalization ( JNIEnv *env, struct java_lang_Runtime* this)
52 log_text("Java_java_lang_Runtime_runFinalization0 called");
55 * Class: java/lang/Runtime
56 * Method: runFinalizersOnExit
59 JNIEXPORT void JNICALL Java_java_lang_Runtime_runFinalizersOnExitInternal ( JNIEnv *env , jclass clazz, s4 par1)
61 log_text("Java_java_lang_Runtime_runFinalizersOnExit0 called");
64 * Class: java/lang/Runtime
68 JNIEXPORT s8 JNICALL Java_java_lang_Runtime_totalMemory ( JNIEnv *env , struct java_lang_Runtime* this)
70 log_text ("java_lang_Runtime_totalMemory called");
71 return builtin_i2l (0);
74 * Class: java/lang/Runtime
75 * Method: traceInstructions
78 JNIEXPORT void JNICALL Java_java_lang_Runtime_traceInstructions ( JNIEnv *env , struct java_lang_Runtime* this, s4 par1)
80 log_text("Java_java_lang_Runtime_traceInstructions called");
83 * Class: java/lang/Runtime
84 * Method: traceMethodCalls
87 JNIEXPORT void JNICALL Java_java_lang_Runtime_traceMethodCalls ( JNIEnv *env , struct java_lang_Runtime* this, s4 par1)
89 log_text("Java_java_lang_Runtime_traceMethodCalls called");
94 * Class: java_lang_Runtime
95 * Method: availableProcessors
98 JNIEXPORT s4 JNICALL Java_java_lang_Runtime_availableProcessors (JNIEnv *env , struct java_lang_Runtime* this ) {
99 log_text("Java_java_lang_Runtime_availableProcessors called, returning hardcoded 1");
106 * Class: java_lang_Runtime
108 * Signature: (Ljava/lang/String;)I
110 JNIEXPORT s4 JNICALL Java_java_lang_Runtime_nativeLoad (JNIEnv *env , struct java_lang_Runtime* this , struct java_lang_String*
117 data=javastring_toutf(par1,0);
120 log_text("nativeLoad: Error: empty string");
125 utf_strlen(data)+ 40;
128 buffer = MNEW(char, buffer_len);
130 strcpy(buffer, "Java_java_lang_Runtime_nativeLoad:");
131 utf_sprint(buffer+strlen(data), data);
134 MFREE(buffer, char, buffer_len);
136 log_text("Java_java_lang_Runtime_nativeLoad");
141 * Class: java_lang_Runtime
142 * Method: nativeGetLibname
143 * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
145 JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_Runtime_nativeGetLibname (JNIEnv *env , jclass clazz, struct java_lang_String* par1,
146 struct java_lang_String* par2) {
153 java_lang_String *str = (java_lang_String *) par1;;
155 data=javastring_toutf(par2,0);
158 log_text("nativeGetLibName: Error: empty string");
163 utf_strlen(data)+ 40;
165 buffer = MNEW(char, buffer_len);
167 strcpy(buffer, "Java_java_lang_Runtime_nativeGetLibname:");
168 utf_sprint(buffer+strlen(data), data);
171 MFREE(buffer, char, buffer_len);
173 log_text("Java_java_lang_Runtime_nativeGetLibname");
179 static int activeprops = 19;
181 static char *proplist[MAXPROPS][2] = {
182 { "java.class.path", NULL },
183 { "java.home", NULL },
184 { "user.home", NULL },
185 { "user.name", NULL },
186 { "user.dir", NULL },
190 { "os.version", NULL },
192 { "java.class.version", "45.3" },
193 { "java.version", PACKAGE":"VERSION },
194 { "java.vendor", "CACAO Team" },
195 { "java.vendor.url", "http://www.complang.tuwien.ac.at/java/cacao/" },
196 { "java.vm.name","CACAO"},
197 { "java.tmpdir","/tmp/"},
198 { "java.io.tmpdir","/tmp/"},
200 { "path.separator", ":" },
201 { "file.separator", "/" },
202 { "line.separator", "\n" },
203 { "java.protocol.handler.pkgs","gnu.java.net.protocol"}
208 * Class: java_lang_Runtime
209 * Method: insertSystemProperties
210 * Signature: (Ljava/util/Properties;)V
212 JNIEXPORT void JNICALL Java_java_lang_Runtime_insertSystemProperties (JNIEnv *env , jclass clazz, struct java_util_Properties* p) {
214 #define BUFFERSIZE 200
217 char buffer[BUFFERSIZE];
218 java_objectheader *o;
219 struct utsname utsnamebuf;
221 log_text("Java_java_lang_Runtime_insertSystemProperties");
223 proplist[0][1] = classpath;
224 proplist[1][1] = getenv("JAVA_HOME");
225 proplist[2][1] = getenv("HOME");
226 proplist[3][1] = getenv("USER");
227 proplist[4][1] = getcwd(buffer,BUFFERSIZE);
229 /* get properties from system */
231 proplist[5][1] = utsnamebuf.machine;
232 proplist[6][1] = utsnamebuf.sysname;
233 proplist[7][1] = utsnamebuf.release;
235 if (!p) panic ("Java_java_lang_Runtime_insertSystemProperties called with NULL-Argument");
237 /* search for method to add properties */
238 m = class_resolvemethod (
239 p->header.vftbl->class,
240 utf_new_char ("put"),
241 utf_new_char ("(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;")
244 if (!m) panic ("Can not find method 'put' for class Properties");
246 /* add the properties */
247 for (i=0; i<activeprops; i++) {
249 if (proplist[i][1]==NULL) proplist[i][1]="";
251 asm_calljavamethod(m, p,
252 javastring_new_char(proplist[i][0]),
253 javastring_new_char(proplist[i][1]),
264 * Class: java_lang_Runtime
268 JNIEXPORT s8 JNICALL Java_java_lang_Runtime_maxMemory (JNIEnv *env , struct java_lang_Runtime* this ) {
269 log_text("Java_java_lang_Runtime_maxMemory");