From owner-freebsd-java Fri May 5 19:57:33 2000 Delivered-To: freebsd-java@freebsd.org Received: from matsulab.is.titech.ac.jp (matsulab.is.titech.ac.jp [131.112.35.129]) by hub.freebsd.org (Postfix) with ESMTP id 09C5237BDEF for ; Fri, 5 May 2000 19:57:27 -0700 (PDT) (envelope-from fuyuhik8@is.titech.ac.jp) Received: from dittohead.is.titech.ac.jp.is.titech.ac.jp by matsulab.is.titech.ac.jp (8.8.8+Sun/3.7W) id LAA02527; Sat, 6 May 2000 11:57:14 +0900 (JST) Date: Sat, 06 May 2000 11:57:58 +0900 Message-ID: <551z3gqtah.wl@is.titech.ac.jp> From: Fuyuhiko Maruyama To: glewis@trc.adelaide.edu.au Cc: freebsd-java@freebsd.org Subject: Re: Alpha JDK 1.2.2 patchset 7 In-Reply-To: In your message of "Fri, 28 Apr 2000 15:45:58 +0930 (CST)" <200004280615.PAA97858@ares.trc.adelaide.edu.au> References: <200004280615.PAA97858@ares.trc.adelaide.edu.au> User-Agent: Wanderlust/2.2.18 (Please Forgive Me) on XEmacs/21.2.33 "Melpomene" MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: multipart/mixed; boundary="Multipart_Sat_May__6_11:57:52_2000-1" Sender: owner-freebsd-java@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --Multipart_Sat_May__6_11:57:52_2000-1 Content-Type: text/plain; charset=US-ASCII Hi all. I've tried to run FreeBSD's JDK 1.2.2 with patchset 7, found some problems and made fixes (patches are following this mail). Here is four different topics. 1. The _sigprocmask function (src/freebsd/hpi/green_threads/src/signals.c) has never been called. I think the _sigprocmask function is existing for wrapping syscall by way of management the consistency of signal masks between each green_threads, so it should be called for all unsafe (not well handled or considered by VM's self) sigprocmask call, safe calls may be written to call green_sigprocmask. Since patchset 7 and older's are named _sigprocmask (with underscore!), it has never called. It may be better to be renamed. 2. A part of awt's internationalization doesn't work with non-Sun's Motif. src/freebsd/native/sun/awt/awt_util.c's awt_util_getIMStatusHeight function may be used to calculates the Status Lines' height of given Widget using *VENDOR PRIVATE AREAS*, and I feel the private structure of Sun's Motif is completely different from others including Software2Go's, Lesstif and (may be Metroworks's). At this time, our best solution is always returning 0. In fact, I think this is not so bad, because it may only needed for Solaris's Motif integrated IM supports which doesn't exist in another Motif. This is just the same solution of Blackdown's 1.2-pre-v2. It helps to run demo/applet/DitherTest. 3. JIT compilers cannot handle NullPointerExceptions in JIT compiled codes. The function InitializeSignals() in src/freebsd/javavm/runtime/signals_md.c installs some signal handlers for JIT. In FreeBSD version, the handler for SIGSEGV is commented out. It is needed not only for sunwjit but also OpenJIT and shuJIT, FreeBSD version of tya seems to not use SIGSEGV but it checks whether the pointer is null everytime (this costs too high!). 4. Incompatible type between int32_t(int, FreeBSD defined) and jint(long, JDK defined) for x86. This is not so serious problem, but javah outputs prototypes using int32_t for Java's int when it works for old Native Method Interface. In Solaris there is same problem and its solution is defining int32_t long in src/solaris/javavm/include/typedefs_md.h. There seems to be another problem for me, but at this time, I cannot fix it. The probrem is Java2D demo's lockup after running several minutes. It may be JIT compiler related one but not clear. -- Fuyuhiko MARUYAMA Matsuoka laboratory, Department of Mathematical and Computing Sciences, Graduate School of Tokyo Institute of Technology. --Multipart_Sat_May__6_11:57:52_2000-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="fromPatcheset7.diffs" Content-Transfer-Encoding: 7bit Index: src/freebsd/hpi/green_threads/src/signals.c =================================================================== RCS file: /usr/vinum/cvsroot/jdk1.2.2/src/freebsd/hpi/green_threads/src/signals.c,v retrieving revision 1.1.1.2 retrieving revision 1.1.1.2.2.1 diff -u -r1.1.1.2 -r1.1.1.2.2.1 --- src/freebsd/hpi/green_threads/src/signals.c 2000/05/04 03:08:40 1.1.1.2 +++ src/freebsd/hpi/green_threads/src/signals.c 2000/05/04 11:20:09 1.1.1.2.2.1 @@ -632,10 +632,10 @@ } /* Prototype not available in standard .h files that keeps gcc happy. */ -int _sigprocmask(int how, const sigset_t *set, sigset_t *oset); +/* int _sigprocmask(int how, const sigset_t *set, sigset_t *oset); */ int -_sigprocmask(int how, const sigset_t *set, sigset_t *oset) +sigprocmask(int how, const sigset_t *set, sigset_t *oset) { int ret; sys_thread_t *self = greenThreadSelf(); Index: src/freebsd/javavm/include/typedefs_md.h =================================================================== RCS file: /usr/vinum/cvsroot/jdk1.2.2/src/freebsd/javavm/include/typedefs_md.h,v retrieving revision 1.1.1.3 retrieving revision 1.1.1.3.2.1 diff -u -r1.1.1.3 -r1.1.1.3.2.1 --- src/freebsd/javavm/include/typedefs_md.h 2000/05/04 03:26:40 1.1.1.3 +++ src/freebsd/javavm/include/typedefs_md.h 2000/05/04 14:25:43 1.1.1.3.2.1 @@ -22,8 +22,6 @@ #include #include -#ifndef __FreeBSD__ - #define int8_t char /* temporary scaffolding, to allow for back and forth testing */ @@ -32,6 +30,7 @@ #define uint32_t unsigned long #endif +#ifndef __FreeBSD__ #if defined(__alpha__) #define PTR_IS_64 1 Index: src/freebsd/javavm/runtime/signals_md.c =================================================================== RCS file: /usr/vinum/cvsroot/jdk1.2.2/src/freebsd/javavm/runtime/signals_md.c,v retrieving revision 1.1.1.3 retrieving revision 1.1.1.3.2.1 diff -u -r1.1.1.3 -r1.1.1.3.2.1 --- src/freebsd/javavm/runtime/signals_md.c 2000/05/04 03:26:40 1.1.1.3 +++ src/freebsd/javavm/runtime/signals_md.c 2000/05/04 11:25:34 1.1.1.3.2.1 @@ -449,9 +449,7 @@ * to be delivered. */ sysSignal(SIGFPE, panicHandler); -#ifndef __FreeBSD__ sysSignal(SIGSEGV, panicHandler); -#endif sysSignal(SIGILL, panicHandler); createSystemThread("Signal dispatcher", MaximumPriority, 0, Index: src/freebsd/native/sun/awt/awt_util.c =================================================================== RCS file: /usr/vinum/cvsroot/jdk1.2.2/src/freebsd/native/sun/awt/awt_util.c,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -r1.1.1.1 -r1.1.1.1.2.1 --- src/freebsd/native/sun/awt/awt_util.c 2000/05/04 02:18:55 1.1.1.1 +++ src/freebsd/native/sun/awt/awt_util.c 2000/05/04 11:36:52 1.1.1.1.2.1 @@ -537,6 +537,10 @@ extData = _XmGetWidgetExtData((Widget) vw, XmSHELL_EXTENSION); ve = (XmVendorShellExtObject) extData->widget; +#ifndef __solaris__ + ve->vendor.im_height = 0; + return 0; +#else if ((icp = get_iclist(vw)) == NULL) { ve->vendor.im_height = 0; return 0; @@ -655,6 +659,7 @@ XtSetValues(vw, args, 1); return height; +#endif } Widget --Multipart_Sat_May__6_11:57:52_2000-1-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message