Changes between Version 39 and Version 40 of Developer/OpenProjects


Ignore:
Timestamp:
Mar 20, 2008, 6:17:07 PM (12 years ago)
Author:
JoelSherrill
Comment:

/* GNU Java */ Add Tom Tromey comments

Legend:

Unmodified
Added
Removed
Modified
  • Developer/OpenProjects

    v39 v40  
    577577This project will consist of the following phases:
    578578
    579  *  Port GJC Run-time to RTEMS.
    580   *  The port will be target CPU architecture independent.  Just like the GNU Ada tasking support, this should be written in a processor architecture manner using portable API calls provided by RTEMS.
    581  *  Run GJC Test Suite
     579 *  Port GJC Run-time to RTEMS.  The port will be target CPU architecture independent.  Just like the GNU Ada tasking support, this should be written in a processor architecture manner using portable API calls provided by RTEMS.
     580 *  Run GJC Test Suite.  We are already running the general GCC C/C++ testsuite and the Ada run-time tests.  So there is precedence and help available.
    582581 *  Submit modifications to GCC and RTEMS Projects
     582
     583Here is a list of technical details from Tom Tromey, the GCJ maintainer.  A lot of stuff in libgcj is optional.  So, a minimal port can be made pretty quickly.  From memory:
     584
     585 *  The GC must be ported.  This can be difficult but usually is not, since it has already been widely ported.
     586 
     587 *  For a good libgcj port, libffi must be ported.  It already runs on most architectures though.  This would only matter if the target is a new architecture or if the target has a different ABI.  A libffi port has two parts.  Each is optional.  First, the normal libffi API is used for reflection and one direction of JNI.  Second, the libffi closure API is used for the interpreter and JNI->Java calls.  libgcj will configure and build just fine if these are missing.
     588
     589 *  For an excellent libgcj port, you have to write code to turn a signal into an exception.  This is some hairy unwinding stuff, partly in gcc and partly in libgcj.  However, there is an option to have gcj add explicit checks where needed, for platforms where this is not possible.  [NOTE from joel:  This is the technique also used by GNU Ada so there should be existing code to leverage and share between the GNAT/RTEMS port and the GJC/RTEMS port.]
     590
     591 *  libgcj's thread layer must be ported.  This is usually easy.  The POSIX "flavor" already works in a lot of places.  Note that this can affect the GC as well.   This part can actually be disabled, but you can't run much java code without threads.
     592
     593 *  File I/O, sockets, and other stuff like that should be ported.  Some of this can be disabled for less-capable targets.  Again, the POSIXy code should work fine.
     594
     595 *  For the full pull, port AWT.  This is a lot of work and, really, nobody ever bothers.
    583596
    584597There was a previous effort to do this but it was not submitted to the GCC Maintainers.  At this point, it was against such an old version of gcc that it would probably have to be used as a reference more than a code base.