======================= KAFFE OpenVM 1.0 Beta 1 ======================= Notes for the port on NetWinder by Raffaele Sena (raff@aromatic.com) Created: 7/17/1998 Last update: 7/19/1998 - the configuration specific files ( config/arm/linux ) are derived partly from the arm/netbsd port and part from other linux ports (not that there is too much in them) - right now a statically linked virtual machine is generated. you can build a dynamically linked one by commenting out the 'dynamic_libraries=no' line in config/arm/linux/config.frag (but it seems to have some problems) also, the standard configuration installs the kaffe-related libraries in /usr/local/lib instead of /usr/local/share/kaffe (and I don't like it :) - also, the virtual machine is now built to use the interpreter, not the jit. Unfortunately, the interpreter does not seems to be supported as well as the jit. I found a major (and quite stupid) problem on a conversion from (Java) int to (Java) char, returning only the lower 8-bits of the integer instead of 16 (Java char ARE 2 bytes long). This was breaking the pizza compiler and so, basically, any possible testing. - there are a couple of specific changes made for this port (related to the stack for threads) and they are marked as #if defined(arm) && defined(linux) or just '#ifdef linux' if in the config/arm directory. I'm not sure what is the best way to specify arm/linux on NetWinder (if needed) - there are some changes not specifically related to the NetWinder port, but to static link (some native methods were not exported and there was a bug in the Java runtime not correctly managing the fact that there were no libraries to load). - If you want to experiment with the internal classes, keep a copy of the original Klasses.jar somewhere, so that you can restore a working environment if the newly generated does not work. - threads : the original 1.0b1 only had support for unix-jthead (a simple thread mechanism using setjmp/longjmp), so I configure arm/linux to don't use unix-internal (while arm/netbsd1 is doing the opposite). There are now sources for unix-internal too, so I will try it out. - the sources for the pizza compiler are available at: http://www.cis.unisa.edu.au/~pizza/ they don't come with much documentation on how to build them. just build all of them, in their own directories and create a new pizza.jar with something like "zip -r pizza.jar pizza" - The default configuration should be fine for NetWinder. The only extra libraries needed are X11 and jpeg6a. If you jpeg library is not in the standard path (i.e. /usr/lib or /usr/local/lib) try something like: sh configure "--x-libraries=/usr/X11/lib -L/mylibrarydir" - As today (7/19) the current status is that I can build a virtual machines and run the regression tests. The compiler now works. All the tests passes, but I had to do a hack in the jthread sleep mechanism to make the timer working. For some reason when the application is going to do a suspensive select (assuming it will be waken up by a SIGALRM signal), the interrupt handler is not installed anymore and the system call does not get interrupted. Re-installing the handler makes things working. - AWT: it does something - the simple tests in test/awt run. but it seems to be a major problem with displayed strings that are one character shorter than they should. I guess that's all for now. I'll try to keep this file updated. If you have further question, drop me a note at raff@aromatic.com Enjoy, Raffaele Sena