Hello everyone (I've copied this message to the Classpath mailing list, but please reply on the jikes researchers list)
I've been making good progress with my port of the GNU Classpath java class libraries ( http://www.gnu.org/software/classpath/classpath.html ) to the Jikes RVM. Currently I can run a hello world program (prints "hello world" to System.out) with most of the library classes coming from Classpath rather than the IBM OTI class libraries. My short term aim is to run hello world with only Classpath and JRVM code (no OTI code). To do this I still need to implement some java.io classes. Classpath implements the functionality for these classes through JNI method calls to shared object libraries. I tried to set the LD_LIBRARY_PATH variable to the relevant directory for the libjavaio.so file, but when I try run this on Linux/IA32 I get this stack trace: VM_Class: (begin) load LMainThread; VM_DynamicLibrary looking for symbol Java_java_io_File_existsInternal Got symbol address 1073842048 for Java_java_io_File_existsInternal vm internal error at: -- Stack -- LVM; sysFail(Ljava/lang/String;)V at line 419 LVM; _assertionFailure(Ljava/lang/String;)V at line 285 LVM; assert(ZLjava/lang/String;)V at line 278 LVM; assert(Z)V at line 261 LVM_JNICompilerInfo; getExceptionDeliverer()LVM_ExceptionDeliverer; at line 32 LVM_Runtime; deliverException(Ljava/lang/Throwable;LVM_Registers;)V at line 902 LVM_Runtime; deliverHardwareException(II)V at line 735 L<hardware>; <trap>()V at line 0 Ljava/io/File; existsInternal(Ljava/lang/String;)Z at line 0 Ljava/io/File; exists()Z at line 695 Ljava/io/File; canRead()Z at line 563 LVM_ClassLoader; searchRepositories(Ljava/lang/String;[Ljava/lang/String;)LVM_BinaryData; at line 589 LVM_ClassLoader; getClassOrResourceDataInternal(Ljava/lang/String;)LVM_BinaryData; at line 514 LVM_ClassLoader; getClassOrResourceData(Ljava/lang/String;)LVM_BinaryData; at line 488 LVM_Class; load()V at line 742 LVM_Runtime; initializeClassForDynamicLink(LVM_Class;)V at line 487 LVM_Runtime; newScalar(I)Ljava/lang/Object; at line 214 LVM; boot()V at line 216 vm: exit 1 Maria Butrico has suggested that JNI might be failing because it's too early in the system boot process. However this is happening in VM.boot here: VM_Collector.postBoot(); // Work around class incompatibilities in boot image writer // (JDK's java.lang.Thread does not extend VM_Thread) [--IP]. --->Thread xx = new MainThread(applicationArguments); int yy = VM_Magic.objectAsAddress(xx); VM_Thread mainThread = (VM_Thread)VM_Magic.addressAsObject(yy); I imagine that JNI should be working at this stage. Whether I can get JNI to work or not might be a moot point. I assume the OTI libraries have been changed to use the sysCall methods (see VM_BootRecord) and it might be better for me to adapt the Classpath libraries to use these methods. What do you think? John Leuner _______________________________________________ Classpath mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/classpath