From langel at redhat.com Mon Feb 2 06:49:57 2009 From: langel at redhat.com (Lillian Angel) Date: Mon, 02 Feb 2009 09:49:57 -0500 Subject: IcedTea6 1.4 Released! Message-ID: <49870815.6080106@redhat.com> We are proud to announce the release of IcedTea6 1.4. The IcedTea6 project provides a harness to build the source code from OpenJDK6 (http://openjdk.java.net) using Free Software build tools. What's New? ----------------- - Updated to OpenJDK b14 build. - Security fixes for: CVE-2008-5360 - Temporary files have guessable file names. CVE-2008-5350 - Allows to list files within the user home directory. CVE-2008-5348 - Denial-Of-Service in kerberos authentication. CVE-2008-5359 - Buffer overflow in image processing. CVE-2008-5351 - UTF-8 decoder accepts non-shortest form sequences. CVE-2008-5356 - Font processing vulnerability. CVE-2008-5353 - Calendar object deserialization allows privilege escalation. CVE-2008-5354 - Privilege escalation in command line applications. CVE-2008-5357 - Truetype Font processing vulnerability. CVE-2008-5352 - Jar200 Decompression buffer overflow. CVE-2008-5358 - Buffer Overflow in GIF image processing. - Upgraded to new OpenJDK7 Hotspot 14. The old OpenJDK6 Hotspot 11 can still be configured --with-hotspot-build=original but future versions will drop support for the old version and only support HS14. Zero and Shark have been forward ported to HS14 (from HS12). - XRender pipeline support: Java2D are noticably faster and running over a remote X connection feels like it is all local. Build by default (disable with --disable-xrender). Runtime enabled by running java -Dsun.java2d.xrender=True (default is to use the old X renderer for now). - IcedTeaPlugin now supports HTTPS sites and adds a user prompt for untrusted https certificates. - Use the ALSA 'default' device. Makes Java play nicer with PulseAudio. - VisualVM integration has been removed. - Gervill soft synthesizer integration updated to latest CVS version. - Integrated jtreg upgraded to 4_0-src-b02-15_oct_2008. - make check runs much faster now. jtreg -samevm support has been integrated into the langtools and jdk subsystems. Please package the test/jtreg-summary.log file with your distribution package so end users can compare the test results. - Shark (--enable-shark) now builds on 64 bit platforms, but is a pre-alpha technology preview and not recommended for use. - Better support for bootstrapping with different jar programs (supporting -J options). - If --with-pkgversion isn't given the short mercurial rev node version will be used. Package distributors are encouraged to build packages with --with-pkgversion to uniquely identify their distribution version number when java -version is run to help distribution specific bug reporting. - Various freetype font, pisces renderer and awt X window size fixes to fix visual anomalies. - Build fixes for gcc 4.3 and 4.4-pre-release. - Added support for building against a specific openjdk src dir or hg revision (--with-openjdk-src-dir or --with-hg-revision). - Many other Plugin, Zero, Shark and PulseAudio bug fixes. - Build clean up. - Several plugin bug and build fixes: (http://icedtea.classpath.org/bugzilla/ and https://bugzilla.redhat.com/). ----------------- The tarball and nosrc RPM can be downloaded here: http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-10.b14.fc11.nosrc.rpm http://icedtea.classpath.org/download/source/icedtea6-1.4.tar.gz The following people helped with this release: Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, Ioana Ivan, Matthias Klose, Omair Majid, Christian Thalinger, Mark Wielaard, Lillian Angel We would also like to thank the bug reporters and testers! To get started: $ hg clone http://icedtea.classpath.org/hg/icedtea6 $ cd icedtea6 Full build requirements and instructions are in INSTALL: $ ./configure $ make The new package has been built into Fedora 10 and Fedora 11 (rawhide) and should appear in the yum repositories in a couple of days. From ekrichardson at gmail.com Tue Feb 3 00:47:56 2009 From: ekrichardson at gmail.com (Eric Richardson) Date: Tue, 3 Feb 2009 00:47:56 -0800 Subject: Updated Icedtea7 Problem MacOSX PPC In-Reply-To: <20090130150057.GE3205@redhat.com> References: <860cb0120901272357u2c50ce95sb36b08a25483052e@mail.gmail.com> <20090128081320.GA3207@redhat.com> <860cb0120901280904u72c8206akf5c3096f853dd789@mail.gmail.com> <860cb0120901282359v1aa27138tb4115fa1b338d3aa@mail.gmail.com> <20090129102048.GB3213@redhat.com> <860cb0120901291021t46badee1tb5ec33ca444e72ec@mail.gmail.com> <20090130150057.GE3205@redhat.com> Message-ID: <860cb0120902030047q39dd9460y33285d9fd7325546@mail.gmail.com> Gary, On Fri, Jan 30, 2009 at 7:00 AM, Gary Benson wrote: > Eric Richardson wrote: > > > I guess Icedtea works from scratch on other platforms without > > errors/stopping? > > It does, however, as you saw, the only operating systems in IcedTea's > acinclude.m4 are Linux and Solaris, so it doesn't look like anybody > tried building on those yet. I saw you patched it to include "darwin", > but should it not have been patched to say "bsd"? This would be better for darwin only? Then maybe Defs-bsd.gmk might get included? diff -r 52b6f4605e43 acinclude.m4 --- a/acinclude.m4 Tue Jan 27 02:27:28 2009 +0000 +++ b/acinclude.m4 Mon Feb 02 21:53:16 2009 -0800 @@ -77,6 +77,10 @@ BUILD_OS_DIR=solaris OS_PATH=/opt/SunStudioExpress/bin:/opt/SUNWpro/bin:/usr/gnu/bin ;; + *darwin*) + BUILD_OS_DIR=bsd + OS_PATH= + ;; *) AC_MSG_ERROR([unsupported operating system ${host_os}]) ;; Given how much further along Michael is it might be worth trying his > approach. He may be able to supply you with updated patches, for > instance. When I was looking at the binary plugs list on the open-jdk site I saw the i386 libs and thought these were not going to work for PowerPC. Is this correct? Also, all I have right now is the jdk1.5 from Apple to work with on this platform. > Cheers, > Gary > > -- > http://gbenson.net/ > Thanks, Eric -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090203/bfa0b5a3/attachment.html From ekrichardson at gmail.com Tue Feb 3 01:01:04 2009 From: ekrichardson at gmail.com (Eric Richardson) Date: Tue, 3 Feb 2009 01:01:04 -0800 Subject: IcedTea Bootstrap Process In-Reply-To: <20090129101436.GA3213@redhat.com> References: <17c6771e0901132035s2588f275s8a7e8e2997241ed6@mail.gmail.com> <20090129101436.GA3213@redhat.com> Message-ID: <860cb0120902030101y661feea2sb8e744e32eba6b57@mail.gmail.com> On Thu, Jan 29, 2009 at 2:14 AM, Gary Benson wrote: > Michael Franz wrote: > > I have made some pretty good progress (I think) on building IcedTea6 > > using Apple's Java 5. I have 'grep'ed all over and cannot figure > > out where this error message is coming from. > > > > (cd > > > /Users/mfranz/developer/icedtea/icedtea6/openjdk-ecj/control/build/bsd-i586/classes > > && /Users/mfranz/developer/icedtea/icedtea6/bootstrap/jdk1.6.0/bin/jar xf > > > /Users/mfranz/developer/icedtea/icedtea6/bootstrap/jdk1.7.0/jre/lib/rt-closed.jar > > > @/Users/mfranz/developer/icedtea/icedtea6/openjdk-ecj/control/build/bsd-i586/tmp/java/plugs/jmf.clist) > > BinaryPlugs import completed: Wed Jan 28 20:31:33 EST 2009 > > make[4]: *** No rule to make target > > > `/Users/mfranz/developer/icedtea/icedtea6/openjdk-ecj/control/build/bsd-i586/hotspot/import/jre/lib/i386/server/libjvm.so', > > needed by > > > `/Users/mfranz/developer/icedtea/icedtea6/openjdk-ecj/control/build/bsd-i586/lib/i386/server/libjvm.so'. > > Stop. > > make[3]: *** [all] Error 1 > > make[2]: *** [all] Error 1 > > make[1]: *** [jdk-build] Error 2 > > make: *** [stamps/icedtea-ecj.stamp] Error 2 > > > > Somewhere it does not know that the shared libs end in .dylib. The > > directory in question has: > > Xusage.txt > > libjsig.dylib > > libjvm.dylib > > > > I was able to get past this step by make sym links to of libjvm.dylib to > > libjvm.so. > > Check out openjdk/jdk/make/common/shared/Platform.gmk: > > 467 # Unix type settings (same for all unix platforms) > 468 ifneq ($(PLATFORM), windows) > ... > 478 # The suffix applied to runtime libraries > 479 LIBRARY_SUFFIX = so This looks like this is fixed in Icedtea7. 520 # Darwin-specific Overrides ifeq ($(SYSTEM_UNAME),Darwin) # The suffix applied to runtime libraries LIBRARY_SUFFIX = dylib # The suffix applied to link libraries LIB_SUFFIX = dylib endif Eric > > > Cheers, > Gary > > -- > http://gbenson.net/ > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090203/1223c294/attachment.html From bugzilla-daemon at icedtea.classpath.org Tue Feb 3 03:20:52 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 03 Feb 2009 11:20:52 +0000 Subject: [Bug 291] New: scaron html entity not rendered properly Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=291 Summary: scaron html entity not rendered properly Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: ripper42 at gmail.com š is a legal html entity and when used in a JLabel with tags, it should be rendered as ? character. With Sun Java this happens. With OpenJDK this does not happen, it is still rendered as š See attachment as a test case. My system (Ubuntu 8.10): $ java -version java version "1.6.0_0" IcedTea6 1.3.1 (6b12-0ubuntu6.1) Runtime Environment (build 1.6.0_0-b12) OpenJDK Server VM (build 1.6.0_0-b12, mixed mode) I don't know if this should be reported in OpenJDK bugtracker instead of here (IcedTea), but I didn't find any OpenJDK bugtracker. And I am really confused which project is which. So please take look at it, thanks. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Feb 3 03:22:07 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 03 Feb 2009 11:22:07 +0000 Subject: [Bug 291] scaron html entity not rendered properly Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=291 ------- Comment #1 from ripper42 at gmail.com 2009-02-03 11:22 ------- Created an attachment (id=157) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=157&action=view) test case -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Feb 3 03:37:27 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 03 Feb 2009 11:37:27 +0000 Subject: [Bug 291] scaron html entity not rendered properly Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=291 ------- Comment #2 from ripper42 at gmail.com 2009-02-03 11:37 ------- The same for Š -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gnu_andrew at member.fsf.org Tue Feb 3 04:13:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:56 +0000 Subject: changeset in /hg/icedtea6: More build fixes for NIO2. Message-ID: changeset 981d5e01b698 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=981d5e01b698 description: More build fixes for NIO2. 2009-01-12 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java: Fix imports. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/ProtocolFamily.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/SocketOption.java: Add missing files. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java: Fix imports. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MembershipKey.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/NetworkChannel.java: Add missing files. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java: Fix imports. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java: Add missing file. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java: Fix imports. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java: Add missing file. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java: Fix imports. * patches/icedtea-nio2.patch: Add missing files to java/nio/FILES_java.gmk diffstat: 43 files changed, 1355 insertions(+), 47 deletions(-) ChangeLog | 55 + overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/ProtocolFamily.java | 40 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/SocketOption.java | 56 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MembershipKey.java | 183 +++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java | 216 +++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/NetworkChannel.java | 165 ++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java | 5 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java | 5 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java | 361 ++++++++++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java | 6 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java | 167 ++++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java | 4 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java | 4 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java | 4 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java | 5 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java | 7 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java | 5 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java | 5 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java | 9 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java | 4 patches/icedtea-nio2.patch | 11 diffs (truncated from 1917 to 500 lines): diff -r 2257885742d0 -r 981d5e01b698 ChangeLog --- a/ChangeLog Mon Jan 12 21:46:12 2009 +0000 +++ b/ChangeLog Tue Jan 13 16:37:09 2009 +0000 @@ -1,3 +1,58 @@ 2009-01-12 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/ProtocolFamily.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/SocketOption.java: + Add missing files. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MembershipKey.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/NetworkChannel.java: + Add missing files. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java: + Add missing file. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java: + Add missing file. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java: + Fix imports. + * patches/icedtea-nio2.patch: + Add missing files to java/nio/FILES_java.gmk + 2009-01-12 Andrew John Hughes Initial import of NIO2 code. diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java Tue Jan 13 16:37:09 2009 +0000 @@ -25,7 +25,7 @@ package com.sun.nio.file; -import java.nio.file.CopyOption; +import org.classpath.icedtea.java.nio.file.CopyOption; /** * Defines extended copy options supported on some platforms diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java Tue Jan 13 16:37:09 2009 +0000 @@ -25,7 +25,7 @@ package com.sun.nio.file; -import java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.OpenOption; /** * Defines extended open options supported on some platforms diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java Tue Jan 13 16:37:09 2009 +0000 @@ -25,7 +25,7 @@ package com.sun.nio.file; -import java.nio.file.WatchEvent.Modifier; +import org.classpath.icedtea.java.nio.file.WatchEvent.Modifier; /** * Defines extended watch event modifiers supported on some platforms diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/ProtocolFamily.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/ProtocolFamily.java Tue Jan 13 16:37:09 2009 +0000 @@ -0,0 +1,40 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.net; + +/** + * Represents a family of communication protocols. + * + * @since 1.7 + */ + +public interface ProtocolFamily { + /** + * Returns the name of the protocol family. + */ + String name(); +} diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/SocketOption.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/SocketOption.java Tue Jan 13 16:37:09 2009 +0000 @@ -0,0 +1,56 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.net; + +/** + * A socket option associated with a socket. + * + *

In the {@link java.nio.channels channels} package, the {@link + * java.nio.channels.NetworkChannel} interface defines the {@link + * java.nio.channels.NetworkChannel#setOption(SocketOption,Object) setOption} + * and {@link java.nio.channels.NetworkChannel#getOption(SocketOption) getOption} + * methods to set and query the channel's socket options. + * + * @param The type of the socket option value. + * + * @since 1.7 + * + * @see StandardSocketOption + */ + +public interface SocketOption { + + /** + * Returns the name of the socket option. + */ + String name(); + + /** + * Returns the type of the socket option value. + */ + Class type(); +} diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java Tue Jan 13 16:37:09 2009 +0000 @@ -26,9 +26,10 @@ package org.classpath.icedtea.java.nio.channels; -import java.nio.channels.spi.AsynchronousChannelProvider; import java.io.IOException; import java.util.concurrent.*; + +import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider; /** * A grouping of asynchronous channels for the purpose of resource sharing. diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java Tue Jan 13 16:37:09 2009 +0000 @@ -26,14 +26,16 @@ package org.classpath.icedtea.java.nio.channels; -import java.nio.channels.spi.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.Future; import java.io.IOException; -import java.net.SocketOption; import java.net.SocketAddress; -import java.net.ProtocolFamily; import java.nio.ByteBuffer; + +import org.classpath.icedtea.java.net.ProtocolFamily; +import org.classpath.icedtea.java.net.SocketOption; + +import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider; /** * An asynchronous channel for datagram-oriented sockets. diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java Tue Jan 13 16:37:09 2009 +0000 @@ -26,9 +26,6 @@ package org.classpath.icedtea.java.nio.channels; -import java.nio.file.*; -import java.nio.file.attribute.FileAttribute; -import java.nio.file.spi.*; import java.nio.ByteBuffer; import java.io.IOException; import java.util.concurrent.Future; @@ -36,6 +33,11 @@ import java.util.Set; import java.util.Set; import java.util.HashSet; import java.util.Collections; + +import org.classpath.icedtea.java.nio.file.FileSystemProvider; +import org.classpath.icedtea.java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; /** * An asynchronous channel for reading, writing, and manipulating a file. diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java Mon Jan 12 21:46:12 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java Tue Jan 13 16:37:09 2009 +0000 @@ -26,11 +26,12 @@ package org.classpath.icedtea.java.nio.channels; -import java.nio.channels.spi.*; import java.net.SocketOption; import java.net.SocketAddress; import java.util.concurrent.Future; import java.io.IOException; + +import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider; /** * An asynchronous channel for stream-oriented listening sockets. diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MembershipKey.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MembershipKey.java Tue Jan 13 16:37:09 2009 +0000 @@ -0,0 +1,183 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.nio.channels; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.io.IOException; + +/** + * A token representing the membership of an Internet Protocol (IP) multicast + * group. + * + *

A membership key may represent a membership to receive all datagrams sent + * to the group, or it may be source-specific, meaning that it + * represents a membership that receives only datagrams from a specific source + * address. Whether or not a membership key is source-specific may be determined + * by invoking its {@link #sourceAddress() sourceAddress} method. + * + *

A membership key is valid upon creation and remains valid until the + * membership is dropped by invoking the {@link #drop() drop} method, or + * the channel is closed. The validity of the membership key may be tested + * by invoking its {@link #isValid() isValid} method. + * + *

Where a membership key is not source-specific and the underlying operation + * system supports source filtering, then the {@link #block block} and {@link + * #unblock unblock} methods can be used to block or unblock multicast datagrams + * from particular source addresses. + * + * @see MulticastChannel + * + * @since 1.7 + */ +public abstract class MembershipKey { + + /** + * Initializes a new instance of this class. + */ + protected MembershipKey() { + } + + /** + * Tells whether or not this membership is valid. + * + *

A multicast group membership is valid upon creation and remains + * valid until the membership is dropped by invoking the {@link #drop() drop} + * method, or the channel is closed. + * + * @return {@code true} if this membership key is valid, {@code false} + * otherwise + */ + public abstract boolean isValid(); + + /** + * Drop membership. + * + *

If the membership key represents a membership to receive all datagrams + * then the membership is dropped and the channel will no longer receive any + * datagrams sent to the group. If the membership key is source-specific + * then the channel will no longer receive datagrams sent to the group from + * that source address. + * + *

After membership is dropped it may still be possible to receive + * datagrams sent to the group. This can arise when datagrams are waiting to + * be received in the socket's receive buffer. After membership is dropped + * then the channel may {@link MulticastChannel#join join} the group again + * in which case a new membership key is returned. + * + *

Upon return, this membership object will be {@link #isValid() invalid}. + * If the multicast group membership is already invalid then invoking this + * method has no effect. Once a multicast group membership is invalid, + * it remains invalid forever. + * + * @throws IOException + * If an I/O error occurs + */ + public abstract void drop() throws IOException; + + /** + * Block multicast datagrams from the given source address. + * + *

If this membership key is not source-specific, and the underlying + * operating system supports source filtering, then this method blocks + * multicast datagrams from the given source address. If the given source + * address is already blocked then this method has no effect. + * After a source address is blocked it may still be possible to receive + * datagams from that source. This can arise when datagrams are waiting to + * be received in the socket's receive buffer. + * + * @param source + * The source address to block + * + * @return This membership key + * + * @throws IllegalArgumentException + * If the {@code source} parameter is not a unicast address or + * is not the same address type as the multicast group + * @throws IllegalStateException + * If this membership key is source-specific or is no longer valid + * @throws UnsupportedOperationException + * If the underlying operating system does not support source + * filtering + * @throws IOException + * If an I/O error occurs + */ + public abstract MembershipKey block(InetAddress source) throws IOException; + + /** + * Unblock multicast datagrams from the given source address that was + * previously blocked using the {@link #block(InetAddress) block} method. + * + * @param source + * The source address to unblock + * + * @return This membership key + * + * @throws IllegalStateException + * If the given source address is not currently blocked or the + * membership key is no longer valid + * @throws IOException + * If an I/O error occurs + */ + public abstract MembershipKey unblock(InetAddress source) throws IOException; + + /** + * Returns the channel for which this membership key was created. This + * method will continue to return the channel even after the membership + * becomes {@link #isValid invalid}. + * + * @return the channel + */ + public abstract MulticastChannel channel(); + + /** + * Returns the multicast group for which this membership key was created. + * This method will continue to return the group even after the membership + * becomes {@link #isValid invalid}. + * + * @return the multicast group + */ + public abstract InetAddress group(); + + /** + * Returns the network interface for which this membership key was created. + * This method will continue to return the network interface even after the + * membership becomes {@link #isValid invalid}. + * + * @return the network interface + */ + public abstract NetworkInterface networkInterface(); + + /** + * Returns the source address if this membership key is source-specific, + * or {@code null} if this membership is not source-specific. + * + * @return The source address if this membership key is source-specific, + * otherwise {@code null} + */ + public abstract InetAddress sourceAddress(); +} diff -r 2257885742d0 -r 981d5e01b698 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java Tue Jan 13 16:37:09 2009 +0000 @@ -0,0 +1,216 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.nio.channels; From gnu_andrew at member.fsf.org Tue Feb 3 04:13:55 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:55 +0000 Subject: changeset in /hg/icedtea6: Initial import of NIO2. Message-ID: changeset 2257885742d0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2257885742d0 description: Initial import of NIO2. 2009-01-12 Andrew John Hughes Initial import of NIO2 code. * patches/ecj/icedtea-pr261.patch: Moved to general patches. * Makefile.am: Add NIO2 patch. * configure.ac: Add --enable-nio2 option (on by default). * overlays/nio2/openjdk/jdk/make/mkdemo/nio/Makefile, * overlays/nio2/openjdk/jdk/make/mkdemo/nio/ZipFileSystem/Makefile, * overlays/nio2/openjdk/jdk/make/mksample/nio/aio/Makefile, * overlays/nio2/openjdk/jdk/make/mksample/nio/file/Makefile, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/File.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/FilePermission.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Inputs.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Outputs.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousByteChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/Channels.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/CompletionHandler.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/package-info.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/package.html, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessDeniedException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessMode.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AtomicMoveNotSupportedException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedDirectoryStreamException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedFileSystemException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedWatchServiceException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/CopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryNotEmptyException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStream.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStreamFilters.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAction.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAlreadyExistsException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileRef.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileStore.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystem.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemAlreadyExistsException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemNotFoundException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitResult.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/InvalidPathException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkPermission.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NoSuchFileException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotDirectoryException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotLinkException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/OpenOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/PathMatcher.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderMismatchException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderNotFoundException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ReadOnlyFileSystemException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardCopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardOpenOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardWatchEventKind.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchEvent.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchKey.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchService.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Watchable.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntry.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryFlag.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryPermission.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryType.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttribute.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileOwnerAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/GroupPrincipal.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermission.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipal.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalLookupService.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalNotFoundException.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/package-info.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/package-info.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/package-info.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/Scanner.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Cancellable.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Groupable.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Globs.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/MimeType.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffer.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffers.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Reflect.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/aio/EchoServer.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/AclEdit.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Chmod.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Copy.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/DiskUsage.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/FileType.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/WatchDir.java, * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Xdd.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNativeDispatcher.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileStore.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNativeDispatcher.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileKey.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStoreAttributes.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixMountEntry.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/EPollPort.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/SolarisEventPort.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousSocketChannelImpl.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisWatchService.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixCopyFile.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c, * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/Iocp.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/PendingIoCache.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsConstants.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsException.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributes.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNativeDispatcher.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathType.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurity.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUriSupport.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUserPrincipals.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/Iocp.c, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.c, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c, * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c, * overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/Sanity.java, * overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/sanity.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/io/Inputs/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Attack.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/GroupOfOne.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Identity.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/PrivilegedThreadFactory.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Restart.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Unbounded.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/run_any_task.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/CustomThreadPool.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Lock.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/MyThreadFactory.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/WithSecurityManager.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.allow, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.deny, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Leaky.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/Channels/Basic2.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/CheckProvider.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/META-INF/services/java.nio.channels.spi.AsynchronousChannelProvider, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider1.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider2.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/custom_provider.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Filters.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/SecureDS.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileStore/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileSystem/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ContentType.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/CreateFileTree.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ForceLoad.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/Misc.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/PrintFileTree.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SimpleFileTypeDetector.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SkipSiblings.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/TerminateWalk.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/content_type.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/walk_file_tree.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/CopyAndMove.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/DeleteOnClose.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Links.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Misc.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/PathOps.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/SBC.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/TemporaryFiles.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/UriImportExport.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/delete_on_close.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/temporary_files.sh, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/PathMatcher/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/TestUtil.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/FileTreeModifier.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/WithSecurityManager.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/denyAll.policy, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndOneLevel.policy, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndTree.policy, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirOnly.policy, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/Attributes/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView/Basic.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/SetDefaultProvider.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/TestProvider.java: Added. * patches/icedtea-nio2.patch: New patch. * patches/icedtea-pr261.patch: Moved from ecj-specific patches. diffstat: 317 files changed, 69760 insertions(+), 45 deletions(-) ChangeLog | 320 + Makefile.am | 17 configure.ac | 8 overlays/nio2/openjdk/jdk/make/mkdemo/nio/Makefile | 37 overlays/nio2/openjdk/jdk/make/mkdemo/nio/ZipFileSystem/Makefile | 40 overlays/nio2/openjdk/jdk/make/mksample/nio/aio/Makefile | 50 overlays/nio2/openjdk/jdk/make/mksample/nio/file/Makefile | 56 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java | 43 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java | 50 overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java | 43 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/File.java | 450 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/FilePermission.java | 852 +++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Inputs.java | 391 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Outputs.java | 362 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousByteChannel.java | 206 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannel.java | 118 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java | 316 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java | 705 ++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java | 775 ++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java | 304 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java | 671 ++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/Channels.java | 214 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/CompletionHandler.java | 78 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java | 1160 ++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java | 319 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java | 170 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions | 68 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/package-info.java | 293 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java | 278 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/package.html | 46 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessDeniedException.java | 69 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessMode.java | 50 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AtomicMoveNotSupportedException.java | 57 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedDirectoryStreamException.java | 46 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedFileSystemException.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedWatchServiceException.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/CopyOption.java | 42 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryNotEmptyException.java | 50 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStream.java | 139 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStreamFilters.java | 211 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAction.java | 65 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAlreadyExistsException.java | 64 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileRef.java | 425 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileStore.java | 173 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystem.java | 426 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemAlreadyExistsException.java | 54 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemException.java | 126 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemNotFoundException.java | 53 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java | 414 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java | 245 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitOption.java | 46 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitResult.java | 63 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java | 176 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java | 404 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/InvalidPathException.java | 131 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkOption.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkPermission.java | 108 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NoSuchFileException.java | 64 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotDirectoryException.java | 50 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotLinkException.java | 64 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/OpenOption.java | 46 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java | 1573 +++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/PathMatcher.java | 50 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java | 125 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderMismatchException.java | 54 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderNotFoundException.java | 53 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ReadOnlyFileSystemException.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java | 325 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java | 122 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardCopyOption.java | 48 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardOpenOption.java | 126 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardWatchEventKind.java | 95 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchEvent.java | 117 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchKey.java | 138 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchService.java | 179 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Watchable.java | 128 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntry.java | 395 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryFlag.java | 66 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryPermission.java | 131 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryType.java | 57 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java | 212 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AttributeView.java | 119 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java | 713 ++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView.java | 185 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributes.java | 164 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView.java | 180 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributes.java | 85 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttribute.java | 51 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttributeView.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileOwnerAttributeView.java | 102 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView.java | 39 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java | 95 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributes.java | 67 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/GroupPrincipal.java | 43 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java | 237 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java | 197 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributes.java | 78 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermission.java | 87 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java | 181 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipal.java | 55 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalLookupService.java | 105 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalNotFoundException.java | 65 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/package-info.java | 120 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/package-info.java | 116 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java | 522 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java | 435 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java | 101 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/package-info.java | 39 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/Scanner.java | 2657 ++++++++++ overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java | 63 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java | 349 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java | 164 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java | 67 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java | 219 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java | 540 ++ overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Cancellable.java | 39 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java | 113 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java | 283 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Groupable.java | 35 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java | 271 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java | 257 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java | 410 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java | 429 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java | 167 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java | 110 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java | 208 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java | 119 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java | 69 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java | 117 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java | 290 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java | 176 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java | 161 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java | 134 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java | 111 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Globs.java | 155 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/MimeType.java | 73 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffer.java | 87 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffers.java | 140 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java | 443 + overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Reflect.java | 63 overlays/nio2/openjdk/jdk/src/share/sample/nio/aio/EchoServer.java | 165 overlays/nio2/openjdk/jdk/src/share/sample/nio/file/AclEdit.java | 301 + overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Chmod.java | 363 + overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Copy.java | 227 overlays/nio2/openjdk/jdk/src/share/sample/nio/file/DiskUsage.java | 78 overlays/nio2/openjdk/jdk/src/share/sample/nio/file/FileType.java | 62 overlays/nio2/openjdk/jdk/src/share/sample/nio/file/WatchDir.java | 204 overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Xdd.java | 119 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java | 56 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java | 93 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java | 96 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java | 242 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java | 314 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java | 678 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java | 73 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java | 36 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java | 98 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java | 297 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java | 102 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java | 180 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java | 41 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java | 340 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNativeDispatcher.java | 126 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java | 464 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java | 408 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileStore.java | 102 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java | 178 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java | 41 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNamedAttributeView.java | 293 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNativeDispatcher.java | 56 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java | 771 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java | 284 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java | 608 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java | 267 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java | 113 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java | 392 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java | 307 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileKey.java | 60 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java | 84 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java | 277 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStoreAttributes.java | 59 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java | 362 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java | 141 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixMountEntry.java | 82 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java | 556 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java | 1174 ++++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java | 643 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java | 216 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java | 175 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/EPollPort.c | 173 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/SolarisEventPort.c | 155 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.c | 47 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousSocketChannelImpl.c | 53 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c | 205 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c | 160 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c | 156 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c | 70 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisWatchService.c | 141 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixCopyFile.c | 85 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c | 1078 ++++ overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c | 104 overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c | 129 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java | 43 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/Iocp.java | 435 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/PendingIoCache.java | 161 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousChannelProvider.java | 96 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java | 736 ++ overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.java | 367 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java | 911 +++ overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileSystemProvider.java | 38 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileTypeDetector.java | 36 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java | 82 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java | 231 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java | 326 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsConstants.java | 191 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java | 225 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsException.java | 109 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java | 298 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributes.java | 296 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java | 518 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java | 324 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java | 318 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java | 145 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java | 462 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java | 342 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNativeDispatcher.java | 1131 ++++ overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java | 1294 ++++ overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java | 225 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathType.java | 38 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurity.java | 123 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java | 392 + overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUriSupport.java | 167 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUserPrincipals.java | 169 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java | 581 ++ overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/Iocp.c | 144 overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c | 132 overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.c | 142 overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c | 222 overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c | 62 overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c | 1328 ++++ overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/Sanity.java | 168 overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/sanity.sh | 71 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/io/Inputs/Basic.java | 218 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java | 84 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Attack.java | 63 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Basic.java | 261 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/GroupOfOne.java | 137 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Identity.java | 167 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/PrivilegedThreadFactory.java | 50 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Restart.java | 134 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Unbounded.java | 120 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/run_any_task.sh | 52 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel/Basic.java | 377 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Basic.java | 585 ++ overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/CustomThreadPool.java | 67 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Lock.java | 340 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/MyThreadFactory.java | 49 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/Basic.java | 136 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/WithSecurityManager.java | 76 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.allow | 3 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.deny | 3 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Basic.java | 805 +++ overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Leaky.java | 104 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/Channels/Basic2.java | 172 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/CheckProvider.java | 38 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/META-INF/services/java.nio.channels.spi.AsynchronousChannelProvider | 1 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider1.java | 62 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider2.java | 62 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/custom_provider.sh | 71 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Basic.java | 153 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Filters.java | 241 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/SecureDS.java | 370 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileStore/Basic.java | 79 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileSystem/Basic.java | 82 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ContentType.java | 91 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/CreateFileTree.java | 96 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ForceLoad.java | 38 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector | 1 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/Misc.java | 126 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/PrintFileTree.java | 78 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SimpleFileTypeDetector.java | 47 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SkipSiblings.java | 85 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/TerminateWalk.java | 70 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/content_type.sh | 70 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/walk_file_tree.sh | 86 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/CopyAndMove.java | 983 +++ overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/DeleteOnClose.java | 77 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java | 117 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Links.java | 143 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Misc.java | 349 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/PathOps.java | 646 ++ overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/SBC.java | 468 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/TemporaryFiles.java | 76 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/UriImportExport.java | 80 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/delete_on_close.sh | 61 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/temporary_files.sh | 65 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/PathMatcher/Basic.java | 163 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/TestUtil.java | 117 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/Basic.java | 493 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/FileTreeModifier.java | 148 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/WithSecurityManager.java | 83 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/denyAll.policy | 3 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndOneLevel.policy | 5 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndTree.policy | 5 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirOnly.policy | 4 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView/Basic.java | 166 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/Attributes/Basic.java | 254 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView/Basic.java | 150 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView/Basic.java | 155 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView/Basic.java | 170 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java | 209 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView/Basic.java | 398 + overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/SetDefaultProvider.java | 44 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/TestProvider.java | 128 patches/ecj/icedtea-pr261.patch | 40 patches/icedtea-nio2.patch | 761 ++ patches/icedtea-pr261.patch | 40 diffs (truncated from 71109 to 500 lines): diff -r e34ba0ba2281 -r 2257885742d0 ChangeLog --- a/ChangeLog Mon Jan 12 17:29:21 2009 +0000 +++ b/ChangeLog Mon Jan 12 21:46:12 2009 +0000 @@ -1,3 +1,323 @@ 2009-01-12 Andrew Haley + + Initial import of NIO2 code. + * patches/ecj/icedtea-pr261.patch: Moved to general patches. + * Makefile.am: Add NIO2 patch. + * configure.ac: Add --enable-nio2 option (on by default). + * overlays/nio2/openjdk/jdk/make/mkdemo/nio/Makefile, + * overlays/nio2/openjdk/jdk/make/mkdemo/nio/ZipFileSystem/Makefile, + * overlays/nio2/openjdk/jdk/make/mksample/nio/aio/Makefile, + * overlays/nio2/openjdk/jdk/make/mksample/nio/file/Makefile, + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedWatchEventModifier.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/File.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/FilePermission.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Inputs.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/io/Outputs.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousByteChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/Channels.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/CompletionHandler.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/package-info.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/package.html, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessDeniedException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AccessMode.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/AtomicMoveNotSupportedException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedDirectoryStreamException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedFileSystemException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ClosedWatchServiceException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/CopyOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryNotEmptyException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/DirectoryStreamFilters.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAction.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileAlreadyExistsException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileRef.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileStore.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystem.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemAlreadyExistsException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystemNotFoundException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileSystems.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitResult.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/InvalidPathException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/LinkPermission.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NoSuchFileException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotDirectoryException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/NotLinkException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/OpenOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/PathMatcher.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderMismatchException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ProviderNotFoundException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/ReadOnlyFileSystemException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardCopyOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardOpenOption.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/StandardWatchEventKind.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchEvent.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchKey.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/WatchService.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Watchable.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntry.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryFlag.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryPermission.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclEntryType.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttribute.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileOwnerAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/GroupPrincipal.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermission.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipal.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalLookupService.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/UserPrincipalNotFoundException.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/package-info.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/package-info.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/package-info.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/Scanner.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Cancellable.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Groupable.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Globs.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/MimeType.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffer.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/NativeBuffers.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Reflect.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/aio/EchoServer.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/AclEdit.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Chmod.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Copy.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/DiskUsage.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/FileType.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/WatchDir.java, + * overlays/nio2/openjdk/jdk/src/share/sample/nio/file/Xdd.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNativeDispatcher.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisNativeDispatcher.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileKey.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStoreAttributes.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixMountEntry.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixNativeDispatcher.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/EPollPort.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/SolarisEventPort.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/ch/UnixAsynchronousSocketChannelImpl.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxWatchService.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/SolarisWatchService.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixCopyFile.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genSolarisConstants.c, + * overlays/nio2/openjdk/jdk/src/solaris/native/sun/nio/fs/genUnixConstants.c, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/Iocp.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/PendingIoCache.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/DefaultFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsConstants.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsException.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNativeDispatcher.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPathType.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurity.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUriSupport.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsUserPrincipals.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/Iocp.c, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.c, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.c, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c, + * overlays/nio2/openjdk/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c, + * overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/Sanity.java, + * overlays/nio2/openjdk/jdk/test/demo/nio/ZipFileSystem/sanity.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/io/Inputs/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/AsExecutor.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Attack.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/GroupOfOne.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Identity.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/PrivilegedThreadFactory.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Restart.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/Unbounded.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousChannelGroup/run_any_task.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousDatagramChannel/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/CustomThreadPool.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/Lock.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel/MyThreadFactory.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/WithSecurityManager.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.allow, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel/java.policy.deny, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel/Leaky.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/Channels/Basic2.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/CheckProvider.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/META-INF/services/java.nio.channels.spi.AsynchronousChannelProvider, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider1.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/Provider2.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/channels/spi/AsynchronousChannelProvider/custom_provider.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/Filters.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/DirectoryStream/SecureDS.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileStore/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/FileSystem/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ContentType.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/CreateFileTree.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/ForceLoad.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/Misc.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/PrintFileTree.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SimpleFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/SkipSiblings.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/TerminateWalk.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/content_type.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Files/walk_file_tree.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/CopyAndMove.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/DeleteOnClose.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Links.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/Misc.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/PathOps.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/SBC.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/TemporaryFiles.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/UriImportExport.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/delete_on_close.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/temporary_files.sh, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/PathMatcher/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/TestUtil.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/FileTreeModifier.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/WithSecurityManager.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/denyAll.policy, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndOneLevel.policy, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirAndTree.policy, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/WatchService/grantDirOnly.policy, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/Attributes/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/BasicFileAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/DosFileAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/FileStoreAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView/Basic.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/SetDefaultProvider.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/spi/TestProvider.java: Added. + * patches/icedtea-nio2.patch: New patch. + * patches/icedtea-pr261.patch: Moved from ecj-specific patches. + 2009-01-12 Andrew Haley * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::do_ldc): diff -r e34ba0ba2281 -r 2257885742d0 Makefile.am --- a/Makefile.am Mon Jan 12 17:29:21 2009 +0000 +++ b/Makefile.am Mon Jan 12 21:46:12 2009 +0000 @@ -643,7 +643,8 @@ ICEDTEA_PATCHES += \ patches/icedtea-samejvm-safe.patch \ patches/icedtea-6728542-epoll.patch \ patches/icedtea-io_util-overflow.patch \ - patches/icedtea-cc-interp-jvmti.patch + patches/icedtea-cc-interp-jvmti.patch \ + patches/icedtea-pr261.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -686,6 +687,10 @@ XRENDER_PATCHES = patches/xrender/icedte XRENDER_PATCHES = patches/xrender/icedtea-???.patch XRENDER_PATCH_FILES = $(sort $(wildcard $(abs_top_srcdir)/$(XRENDER_PATCHES))) ICEDTEA_PATCHES += $(sort $(subst $(abs_top_srcdir)/,,$(XRENDER_PATCH_FILES))) +endif + +if ENABLE_NIO2 +ICEDTEA_PATCHES += patches/icedtea-nio2.patch endif ICEDTEA_PATCHES += \ @@ -883,8 +888,11 @@ clean-patch-fsg: fi stamps/overlay.stamp: stamps/patch.stamp - cp -r $(abs_top_srcdir)/overlays/openjdk/* openjdk/ \ - && touch stamps/overlay.stamp + cp -r $(abs_top_srcdir)/overlays/openjdk/* openjdk/ +if ENABLE_NIO2 + cp -r $(abs_top_srcdir)/overlays/nio2/openjdk/* openjdk/ +endif + touch stamps/overlay.stamp # OpenJDK ecj Source Preparation Targets # ====================================== @@ -927,8 +935,7 @@ ICEDTEA_ECJ_PATCHES = patches/ecj/icedte ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea.patch \ patches/ecj/icedtea-hotspot-$(HSBUILD).patch \ patches/ecj/icedtea-spp.patch \ - patches/ecj/icedtea-jopt.patch \ - patches/ecj/icedtea-pr261.patch + patches/ecj/icedtea-jopt.patch stamps/patch-ecj.stamp: stamps/extract-ecj.stamp mkdir -p stamps; \ diff -r e34ba0ba2281 -r 2257885742d0 configure.ac --- a/configure.ac Mon Jan 12 17:29:21 2009 +0000 +++ b/configure.ac Mon Jan 12 21:46:12 2009 +0000 @@ -148,6 +148,14 @@ AC_ARG_ENABLE([xrender], [ENABLE_XRENDER="${enableval}"], [ENABLE_XRENDER='yes']) AM_CONDITIONAL([ENABLE_XRENDER], [test x$ENABLE_XRENDER = xyes]) AC_MSG_RESULT(${ENABLE_XRENDER}) + +AC_MSG_CHECKING(whether to include NIO2 support) +AC_ARG_ENABLE([nio2], + [AS_HELP_STRING([--disable-nio2], + [Disable inclusion of backported NIO2])], + [ENABLE_XRENDER="${enableval}"], [ENABLE_NIO2='yes']) +AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) +AC_MSG_RESULT(${ENABLE_NIO2}) AC_MSG_CHECKING(whether to build VisualVM) AC_ARG_ENABLE([visualvm], diff -r e34ba0ba2281 -r 2257885742d0 overlays/nio2/openjdk/jdk/make/mkdemo/nio/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/make/mkdemo/nio/Makefile Mon Jan 12 21:46:12 2009 +0000 @@ -0,0 +1,37 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# +# Makefile for building the NIO demo(s) +# + +BUILDDIR = ../.. +PRODUCT = demos +include $(BUILDDIR)/common/Defs.gmk + +SUBDIRS = ZipFileSystem + +all build clean clobber:: + $(SUBDIRS-loop) diff -r e34ba0ba2281 -r 2257885742d0 overlays/nio2/openjdk/jdk/make/mkdemo/nio/ZipFileSystem/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/make/mkdemo/nio/ZipFileSystem/Makefile Mon Jan 12 21:46:12 2009 +0000 @@ -0,0 +1,40 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +BUILDDIR = ../../.. +PRODUCT = demo/nio +DEMONAME = ZipFileSystem +include $(BUILDDIR)/common/Defs.gmk + +DEMO_ROOT = $(SHARE_SRC)/demo/nio/$(DEMONAME) +DEMO_TOPFILES = ./README.txt +DEMO_MAINCLASS = $(DEMONAME) +DEMO_DESTDIR = $(DEMODIR)/nio/$(DEMONAME) + +# +# Demo jar building rules. +# +include $(BUILDDIR)/common/Demo.gmk + diff -r e34ba0ba2281 -r 2257885742d0 overlays/nio2/openjdk/jdk/make/mksample/nio/aio/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/make/mksample/nio/aio/Makefile Mon Jan 12 21:46:12 2009 +0000 @@ -0,0 +1,50 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, From gnu_andrew at member.fsf.org Tue Feb 3 04:13:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:56 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset b2de95a6931c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b2de95a6931c description: Merge. diffstat: 7 files changed, 362 insertions(+), 30 deletions(-) ChangeLog | 13 HACKING | 4 Makefile.am | 2 contrib/jck/compile-native-code.sh | 25 + patches/hotspot/14.0b08/icedtea-6791168.patch | 230 ++++++++++++++++ patches/hotspot/14.0b08/icedtea-hotspot-dispatch.patch | 11 patches/hotspot/14.0b08/icedtea-includedb.patch | 107 ++++++- diffs (478 lines): diff -r 981d5e01b698 -r b2de95a6931c ChangeLog --- a/ChangeLog Tue Jan 13 16:37:09 2009 +0000 +++ b/ChangeLog Tue Jan 13 16:38:40 2009 +0000 @@ -52,6 +52,10 @@ 2009-01-12 Andrew John Hughes + + * contrib/jck/compile-native-code.sh: Build with -m32 or -m64. 2009-01-12 Andrew John Hughes @@ -372,6 +376,15 @@ 2009-01-12 Andrew John Hughes + + * patches/hotspot/14.0b08/icedtea-hotspot-dispatch.patch: Remove, + replaced by ... + * patches/hotspot/14.0b08/icedtea-6791168.patch: New. + * patches/hotspot/14.0b08/icedtea-includedb.patch: Update. + * HACKING: Update for the above. + * Makefile.am: Update for the above. 2009-01-12 Andrew Haley diff -r 981d5e01b698 -r b2de95a6931c HACKING --- a/HACKING Tue Jan 13 16:37:09 2009 +0000 +++ b/HACKING Tue Jan 13 16:38:40 2009 +0000 @@ -80,9 +80,9 @@ The following patches are currently appl * icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. * icedtea-a11y-property-change.patch: Dont fire PropertyChangeEvent if the property hasnt changed. * icedtea-demo-swingapplet.patch: Add missing html file needed to run the demo. -* icedtea-hotspot-dispatch.patch: Fix build failure with GCC-4.4 (PR 38725). +* icedtea-6791168.patch: Fix build failure with GCC-4.4 (PR 38725) and compiler warnings. * icedtea-no-precompiled.patch: Don't use precompiled header files in hotspot. -* icedtea-includedb.patch: Add missing include. +* icedtea-includedb.patch: Add missing include files. * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). The following patches are only applied to OpenJDK6 in IcedTea6: diff -r 981d5e01b698 -r b2de95a6931c Makefile.am --- a/Makefile.am Tue Jan 13 16:37:09 2009 +0000 +++ b/Makefile.am Tue Jan 13 16:38:40 2009 +0000 @@ -651,7 +651,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-format-warnings.patch \ patches/icedtea-fortify-source.patch \ patches/hotspot/$(HSBUILD)/icedtea-sparc-buildfixes.patch \ - patches/hotspot/$(HSBUILD)/icedtea-hotspot-dispatch.patch \ + patches/hotspot/$(HSBUILD)/icedtea-6791168.patch \ patches/hotspot/$(HSBUILD)/icedtea-includedb.patch endif diff -r 981d5e01b698 -r b2de95a6931c contrib/jck/compile-native-code.sh --- a/contrib/jck/compile-native-code.sh Tue Jan 13 16:37:09 2009 +0000 +++ b/contrib/jck/compile-native-code.sh Tue Jan 13 16:38:40 2009 +0000 @@ -17,6 +17,19 @@ if [ -z $basedir ]; then exit 1 fi +arch=$(uname -m) +case "$arch" in + i?86|ppc) + MFLAG=-m32 + ;; + x86_64|ppc64) + MFLAG=-m64 + ;; + *) + echo 1>&2 "error: unhandled arch '$arch'" + exit 1 +esac + LIBDIR=$basedir/lib RESDIR=$basedir/resources @@ -29,31 +42,31 @@ cp -r $JCKDIR/tests/api/javax_management cp -r $JCKDIR/tests/api/javax_management/loading/data/* $RESDIR chmod -R +w $RESDIR -gcc -fPIC -shared -o $LIBDIR/libjckatr.so -I$JCKDIR \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libjckatr.so -I$JCKDIR \ $JCKDIR/src/share/lib/atr/jckatr.c -gcc -fPIC -shared -o $LIBDIR/libjckjni.so -I$JCKDIR \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libjckjni.so -I$JCKDIR \ -I$JCKDIR/src/share/lib/jni/include \ -I$JCKDIR/src/share/lib/jni/include/solaris \ $JCKDIR/src/share/lib/jni/jckjni.c -gcc -fPIC -shared -o $LIBDIR/libjckjvmti.so -I$JCKDIR \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libjckjvmti.so -I$JCKDIR \ -I$JCKDIR/src/share/lib/jvmti/include \ -I$JCKDIR/src/share/lib/jni/include \ -I$JCKDIR/src/share/lib/jni/include/solaris \ $JCKDIR/src/share/lib/jvmti/jckjvmti.c -gcc -fPIC -shared -o $LIBDIR/libsystemInfo.so \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libsystemInfo.so \ -I$JCKDIR/src/share/lib/jni/include \ -I$JCKDIR/src/share/lib/jni/include/solaris \ $JCKDIR/tests/api/javax_management/loading/data/archives/src/C/com_sun_management_mbeans_loading_SystemInfoUseNativeLib.c -gcc -fPIC -shared -o $LIBDIR/libjmxlibid.so \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libjmxlibid.so \ -I$JCKDIR/src/share/lib/jni/include \ -I$JCKDIR/src/share/lib/jni/include/solaris \ $JCKDIR/tests/api/javax_management/loading/data/archives/src/C/com_sun_management_mbeans_loading_GetLibIdFromNativeLib.c -gcc -fPIC -shared -o $LIBDIR/libgenrandom.so \ +gcc $MFLAG -fPIC -shared -o $LIBDIR/libgenrandom.so \ -I$JCKDIR/src/share/lib/jni/include \ -I$JCKDIR/src/share/lib/jni/include/solaris \ $JCKDIR/tests/api/javax_management/loading/data/archives/src/C/com_sun_management_mbeans_loading_RandomGen.c diff -r 981d5e01b698 -r b2de95a6931c patches/hotspot/14.0b08/icedtea-6791168.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/14.0b08/icedtea-6791168.patch Tue Jan 13 16:38:40 2009 +0000 @@ -0,0 +1,230 @@ +--- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -594,7 +594,7 @@ + __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); + + // for c++ interpreter can rsi really be munged? +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state + __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method + __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer + +@@ -658,7 +658,7 @@ + const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); + // Always give one monitor to allow us to start interp if sync method. + // Any additional monitors need a check when moving the expression stack +- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; ++ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; + __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words + __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); + __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); +@@ -1829,7 +1829,7 @@ + Label unwind_and_forward; + + // restore state pointer. +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + + __ movptr(rbx, STATE(_method)); // get method + #ifdef _LP64 +@@ -1877,14 +1877,14 @@ + + // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases + if (UseSSE < 2) { +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + __ movptr(rbx, STATE(_result._to_call._callee)); // get method just executed + __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset())); + __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT)); // Result stub address array index + __ jcc(Assembler::equal, do_float); + __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE)); // Result stub address array index + __ jcc(Assembler::equal, do_double); +-#ifdef COMPILER2 ++#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) + __ empty_FPU_stack(); + #endif // COMPILER2 + __ jmp(done_conv); +@@ -1928,7 +1928,7 @@ + + // Restore rsi/r13 as compiled code may not preserve it + +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + + // restore stack to what we had when we left (in case i2c extended it) + +@@ -1942,7 +1942,7 @@ + #else + __ movptr(rcx, STATE(_thread)); // get thread + __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD); +-#endif / __LP64 ++#endif // _LP64 + __ jcc(Assembler::notZero, return_with_exception); + + // get method just executed +--- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -139,7 +139,7 @@ + #ifdef CC_INTERP + + inline interpreterState frame::get_interpreterState() const { +- return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize )); ++ return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); + } + + inline intptr_t* frame::sender_sp() const { +--- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -6943,29 +6943,32 @@ + + Label slow_case, done; + +- // x ?<= pi/4 +- fld_d(ExternalAddress((address)&pi_4)); +- fld_s(1); // Stack: X PI/4 X +- fabs(); // Stack: |X| PI/4 X +- fcmp(tmp); +- jcc(Assembler::above, slow_case); +- +- // fastest case: -pi/4 <= x <= pi/4 +- switch(trig) { +- case 's': +- fsin(); +- break; +- case 'c': +- fcos(); +- break; +- case 't': +- ftan(); +- break; +- default: +- assert(false, "bad intrinsic"); +- break; ++ ExternalAddress pi4_adr = (address)&pi_4; ++ if (reachable(pi4_adr)) { ++ // x ?<= pi/4 ++ fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); ++ fld_s(1); // Stack: X PI/4 X ++ fabs(); // Stack: |X| PI/4 X ++ fcmp(tmp); ++ jcc(Assembler::above, slow_case); ++ ++ // fastest case: -pi/4 <= x <= pi/4 ++ switch(trig) { ++ case 's': ++ fsin(); ++ break; ++ case 'c': ++ fcos(); ++ break; ++ case 't': ++ ftan(); ++ break; ++ default: ++ assert(false, "bad intrinsic"); ++ break; ++ } ++ jmp(done); + } +- jmp(done); + + // slow case: runtime call + bind(slow_case); +--- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -2954,10 +2954,16 @@ + __ pushptr(Address(rcx, 0)); // Save return address + __ enter(); // Save old & set new rbp + __ subptr(rsp, rbx); // Prolog ++#ifdef CC_INTERP ++ __ movptr(Address(rbp, ++ -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))), ++ sender_sp); // Make it walkable ++#else // CC_INTERP + __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), + sender_sp); // Make it walkable + // This value is corrected by layout_activation_impl + __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD ); ++#endif // CC_INTERP + __ mov(sender_sp, rsp); // Pass sender_sp to next frame + __ addptr(rsi, wordSize); // Bump array pointer (sizes) + __ addptr(rcx, wordSize); // Bump array pointer (pcs) +--- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -213,7 +213,7 @@ + + inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) { + /* it's possible we could catch this special case implicitly */ +- if (op1 == 0x80000000 && op2 == -1) return op1; ++ if ((juint)op1 == 0x80000000 && op2 == -1) return op1; + else return op1 / op2; + } + +@@ -231,7 +231,7 @@ + + inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) { + /* it's possible we could catch this special case implicitly */ +- if (op1 == 0x80000000 && op2 == -1) return 0; ++ if ((juint)op1 == 0x80000000 && op2 == -1) return 0; + else return op1 % op2; + } + +--- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -30,7 +30,7 @@ + + #ifdef CC_INTERP + void InterpreterMacroAssembler::get_method(Register reg) { +- movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize))); ++ movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize))); + movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method))); + } + #endif // CC_INTERP +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2009-01-13 10:16:45.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -163,7 +163,7 @@ + #ifdef USELABELS + // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an + // initialization (which is is the initialization of the table pointer...) +-#define DISPATCH(opcode) goto *dispatch_table[opcode] ++#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode] + #define CONTINUE { \ + opcode = *pc; \ + DO_UPDATE_INSTRUCTION_COUNT(opcode); \ +@@ -341,7 +341,7 @@ + */ + #undef CHECK_NULL + #define CHECK_NULL(obj_) \ +- if ((obj_) == 0) { \ ++ if ((obj_) == NULL) { \ + VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), ""); \ + } + +@@ -1362,7 +1362,7 @@ + + #define NULL_COMPARISON_NOT_OP(name) \ + CASE(_if##name): { \ +- int skip = (!(STACK_OBJECT(-1) == 0)) \ ++ int skip = (!(STACK_OBJECT(-1) == NULL)) \ + ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ + address branch_pc = pc; \ + UPDATE_PC_AND_TOS(skip, -1); \ +@@ -1372,7 +1372,7 @@ + + #define NULL_COMPARISON_OP(name) \ + CASE(_if##name): { \ +- int skip = ((STACK_OBJECT(-1) == 0)) \ ++ int skip = ((STACK_OBJECT(-1) == NULL)) \ + ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ + address branch_pc = pc; \ + UPDATE_PC_AND_TOS(skip, -1); \ +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -66,7 +66,6 @@ + friend class InterpreterGenerator; + friend class InterpreterMacroAssembler; + friend class frame; +-friend class SharedRuntime; + friend class VMStructs; + + public: diff -r 981d5e01b698 -r b2de95a6931c patches/hotspot/14.0b08/icedtea-hotspot-dispatch.patch --- a/patches/hotspot/14.0b08/icedtea-hotspot-dispatch.patch Tue Jan 13 16:37:09 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.old 2009-01-06 16:16:57.000000000 -0700 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-06 16:17:53.000000000 -0700 -@@ -163,7 +163,7 @@ - #ifdef USELABELS - // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an - // initialization (which is is the initialization of the table pointer...) --#define DISPATCH(opcode) goto *dispatch_table[opcode] -+#define DISPATCH(opcode) goto *(void *)dispatch_table[opcode] - #define CONTINUE { \ - opcode = *pc; \ - DO_UPDATE_INSTRUCTION_COUNT(opcode); \ diff -r 981d5e01b698 -r b2de95a6931c patches/hotspot/14.0b08/icedtea-includedb.patch --- a/patches/hotspot/14.0b08/icedtea-includedb.patch Tue Jan 13 16:37:09 2009 +0000 +++ b/patches/hotspot/14.0b08/icedtea-includedb.patch Tue Jan 13 16:38:40 2009 +0000 @@ -1,10 +1,97 @@ ---- openjdk/hotspot/src/share/vm/includeDB_core.orig 2008-11-21 17:11:18.000000000 -0700 -+++ openjdk/hotspot/src/share/vm/includeDB_core 2009-01-08 14:32:58.000000000 -0700 -@@ -1314,6 +1314,7 @@ - cppInterpreter_.cpp interpreterRuntime.hpp - cppInterpreter_.cpp interpreter.hpp - cppInterpreter_.cpp interpreterGenerator.hpp -+cppInterpreter_.cpp interfaceSupport.hpp - cppInterpreter_.cpp jvmtiExport.hpp - cppInterpreter_.cpp jvmtiThreadState.hpp - cppInterpreter_.cpp methodDataOop.hpp +--- openjdk/hotspot/src/share/vm/includeDB_compiler2.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/includeDB_compiler2 2009-01-13 10:11:17.000000000 +0000 +@@ -140,6 +140,7 @@ + c2_globals_.hpp macros.hpp + + c2_init_.cpp compile.hpp ++c2_init_.cpp node.hpp + + c2compiler.cpp ad_.hpp + c2compiler.cpp c2compiler.hpp +@@ -839,6 +840,7 @@ + phase.cpp compile.hpp + phase.cpp compileBroker.hpp + phase.cpp nmethod.hpp ++phase.cpp node.hpp + phase.cpp phase.hpp + + phase.hpp port.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 2009-01-13 10:11:17.000000000 +0000 +@@ -34,6 +34,7 @@ + collectionSetChooser.cpp g1CollectedHeap.hpp + collectionSetChooser.cpp g1CollectorPolicy.hpp + collectionSetChooser.cpp collectionSetChooser.hpp ++collectionSetChooser.cpp space.inline.hpp + + collectionSetChooser.hpp heapRegion.hpp + collectionSetChooser.hpp growableArray.hpp +@@ -44,6 +45,7 @@ + concurrentG1Refine.cpp copy.hpp + concurrentG1Refine.cpp g1CollectedHeap.hpp + concurrentG1Refine.cpp g1RemSet.hpp ++concurrentG1Refine.cpp space.inline.hpp + + concurrentG1Refine.hpp globalDefinitions.hpp + +@@ -264,7 +266,7 @@ + heapRegion.cpp iterator.hpp + heapRegion.cpp oop.inline.hpp + +-heapRegion.hpp space.hpp ++heapRegion.hpp space.inline.hpp + heapRegion.hpp spaceDecorator.hpp + heapRegion.hpp g1BlockOffsetTable.inline.hpp + heapRegion.hpp watermark.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge 2009-01-13 10:11:17.000000000 +0000 +@@ -306,6 +306,8 @@ + psPermGen.cpp psMarkSweepDecorator.hpp + psPermGen.cpp psParallelCompact.hpp + psPermGen.cpp psPermGen.hpp ++psPermGen.cpp markOop.inline.hpp ++psPermGen.cpp markSweep.inline.hpp + + psPermGen.hpp psOldGen.hpp + +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep 2009-01-13 10:11:17.000000000 +0000 +@@ -28,6 +28,7 @@ + binaryTreeDictionary.cpp binaryTreeDictionary.hpp + binaryTreeDictionary.cpp globals.hpp + binaryTreeDictionary.cpp ostream.hpp ++binaryTreeDictionary.cpp space.inline.hpp + binaryTreeDictionary.cpp spaceDecorator.hpp + + binaryTreeDictionary.hpp freeBlockDictionary.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew 2009-01-13 10:11:17.000000000 +0000 +@@ -29,6 +29,8 @@ + asParNewGeneration.cpp cmsAdaptiveSizePolicy.hpp + asParNewGeneration.cpp cmsGCAdaptivePolicyCounters.hpp + asParNewGeneration.cpp defNewGeneration.inline.hpp ++asParNewGeneration.cpp markOop.inline.hpp ++asParNewGeneration.cpp markSweep.inline.hpp + asParNewGeneration.cpp oop.pcgc.inline.hpp + asParNewGeneration.cpp parNewGeneration.hpp + asParNewGeneration.cpp referencePolicy.hpp +@@ -40,7 +42,7 @@ + parCardTableModRefBS.cpp java.hpp + parCardTableModRefBS.cpp mutexLocker.hpp + parCardTableModRefBS.cpp sharedHeap.hpp +-parCardTableModRefBS.cpp space.hpp ++parCardTableModRefBS.cpp space.inline.hpp + parCardTableModRefBS.cpp universe.hpp + parCardTableModRefBS.cpp virtualspace.hpp + +--- openjdk/hotspot/src/share/vm/includeDB_features.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/includeDB_features 2009-01-13 10:11:17.000000000 +0000 +@@ -59,6 +59,8 @@ + + dump_.cpp assembler_.inline.hpp + dump_.cpp compactingPermGenGen.hpp ++dump_.cpp generation.inline.hpp ++dump_.cpp space.inline.hpp + + forte.cpp collectedHeap.inline.hpp + forte.cpp debugInfoRec.hpp From gnu_andrew at member.fsf.org Tue Feb 3 04:13:56 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:56 +0000 Subject: changeset in /hg/icedtea6: More NIO build fixes. Message-ID: changeset 3f4c11b93ded in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3f4c11b93ded description: More NIO build fixes. 2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java: Added missing files. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java: Added. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java: Added to allow access to private members of java.util.concurrent.ThreadPoolExecutor. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java: Fix imports. * patches/icedtea-nio2.patch: Patch ThreadPoolExecutor to allow access to private variables, add missing files to nio/FILES_java.gmk diffstat: 32 files changed, 1989 insertions(+), 31 deletions(-) ChangeLog | 41 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java | 46 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java | 370 ++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java | 5 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java | 12 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java | 6 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java | 11 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java | 18 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java | 10 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java | 1364 ++++++++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java | 55 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java | 2 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java | 1 patches/icedtea-nio2.patch | 35 diffs (truncated from 2405 to 500 lines): diff -r b2de95a6931c -r 3f4c11b93ded ChangeLog --- a/ChangeLog Tue Jan 13 16:38:40 2009 +0000 +++ b/ChangeLog Wed Jan 14 05:27:57 2009 +0000 @@ -1,3 +1,44 @@ 2009-01-12 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java: + Added missing files. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousSocketChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileLock.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/MulticastChannel.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileTreeWalker.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/FileVisitor.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Files.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Path.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/Paths.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SecureDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/SimpleFileVisitor.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/AclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/Attributes.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/FileStoreSpaceAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/PosixFilePermissions.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileTypeDetector.java: + Fixed imports. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java: + Added. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java: + Added to allow access to private members of java.util.concurrent.ThreadPoolExecutor. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AbstractFuture.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/DefaultFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java: + Fix imports. + * patches/icedtea-nio2.patch: + Patch ThreadPoolExecutor to allow access to private variables, add missing files to + nio/FILES_java.gmk + 2009-01-12 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, diff -r b2de95a6931c -r 3f4c11b93ded overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java Wed Jan 14 05:27:57 2009 +0000 @@ -0,0 +1,46 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.net; + +/** + * Defines the standard families of communication protocols. + * + * @since 1.7 + */ + +public enum StandardProtocolFamily implements ProtocolFamily { + + /** + * Internet Protocol Version 4 (IPv4) + */ + INET, + + /** + * Internet Protocol Version 6 (IPv6) + */ + INET6 +} diff -r b2de95a6931c -r 3f4c11b93ded overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java Wed Jan 14 05:27:57 2009 +0000 @@ -0,0 +1,370 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.net; + +import java.net.NetworkInterface; + +/** + * Defines the standard socket options. + * + *

The {@link SocketOption#name name} of each socket option defined by this + * class is its field name. + * + *

In this release, the socket options defined here are used by {@link + * java.nio.channels.NetworkChannel network} channels in the {@link + * java.nio.channels channels} package. + * + * @since 1.7 + */ + +public final class StandardSocketOption { + private StandardSocketOption() { } + + // -- SOL_SOCKET -- + + /** + * Allow transmission of broadcast datagrams. + * + *

The value of this socket option is a {@code Boolean} that represents + * whether the option is enabled or disabled. The option is specific to + * datagram-oriented sockets sending to {@link java.net.Inet4Address IPv4} + * broadcast addresses. When the socket option is enabled then the socket + * can be used to send broadcast datagrams. + * + *

The initial value of this socket option is {@code FALSE}. The socket + * option may be enabled or disabled at any time. Some operating systems may + * require that the Java virtual machine be started with implementation + * specific privileges to enable this option or send broadcast datagrams. + * + * @see RFC 929: + * Broadcasting Internet Datagrams + * @see DatagramSocket#setBroadcast + */ + public static final SocketOption SO_BROADCAST = + new StdSocketOption("SO_BROADCAST", Boolean.class); + + /** + * Keep connection alive. + * + *

The value of this socket option is a {@code Boolean} that represents + * whether the option is enabled or disabled. When the {@code SO_KEEPALIVE} + * option is enabled the operating system may use a keep-alive + * mechanism to periodically probe the other end of a connection when the + * connection is otherwise idle. The exact semantics of the keep alive + * mechanism is system dependent and therefore unspecified. + * + *

The initial value of this socket option is {@code FALSE}. The socket + * option may be enabled or disabled at any time. + * + * @see RFC 1122 + * Requirements for Internet Hosts -- Communication Layers + * @see Socket#setKeepAlive + */ + public static final SocketOption SO_KEEPALIVE = + new StdSocketOption("SO_KEEPALIVE", Boolean.class); + + /** + * The size of the socket send buffer. + * + *

The value of this socket option is an {@code Integer} that is the + * size of the socket send buffer in bytes. The socket send buffer is an + * output buffer used by the networking implementation. It may need to be + * increased for high-volume connections. The value of the socket option is + * a hint to the implementation to size the buffer and the actual + * size may differ. The socket option can be queried to retrieve the actual + * size. + * + *

For datagram-oriented sockets, the size of the send buffer may limit + * the size of the datagrams that may be sent by the socket. Whether + * datagrams larger than the buffer size are sent or discarded is system + * dependent. + * + *

The initial/default size of the socket send buffer and the range of + * allowable values is system dependent although a negative size is not + * allowed. An attempt to set the socket send buffer to larger than its + * maximum size causes it to be set to its maximum size. + * + *

An implementation allows this socket option to be set before the + * socket is bound or connected. Whether an implementation allows the + * socket send buffer to be changed after the socket is bound is system + * dependent. + * + * @see Socket#setSendBufferSize + */ + public static final SocketOption SO_SNDBUF = + new StdSocketOption("SO_SNDBUF", Integer.class); + + + /** + * The size of the socket receive buffer. + * + *

The value of this socket option is an {@code Integer} that is the + * size of the socket receive buffer in bytes. The socket receive buffer is + * an input buffer used by the networking implementation. It may need to be + * increased for high-volume connections or decreased to limit the possible + * backlog of incoming data. The value of the socket option is a + * hint to the implementation to size the buffer and the actual + * size may differ. + * + *

For datagram-oriented sockets, the size of the receive buffer may + * limit the size of the datagrams that can be received. Whether datagrams + * larger than the buffer size can be received is system dependent. + * Increasing the socket receive buffer may be important for cases where + * datagrams arrive in bursts faster than they can be processed. + * + *

In the case of stream-oriented sockets and the TCP/IP protocol, the + * size of the socket receive buffer may be used when advertising the size + * of the TCP receive window to the remote peer. + * + *

The initial/default size of the socket receive buffer and the range + * of allowable values is system dependent although a negative size is not + * allowed. An attempt to set the socket receive buffer to larger than its + * maximum size causes it to be set to its maximum size. + * + *

An implementation allows this socket option to be set before the + * socket is bound or connected. Whether an implementation allows the + * socket receive buffer to be changed after the socket is bound is system + * dependent. + * + * @see RFC 1323: TCP + * Extensions for High Performance + * @see Socket#setReceiveBufferSize + * @see ServerSocket#setReceiveBufferSize + */ + public static final SocketOption SO_RCVBUF = + new StdSocketOption("SO_RCVBUF", Integer.class); + + /** + * Re-use address. + * + *

The value of this socket option is a {@code Boolean} that represents + * whether the option is enabled or disabled. The exact semantics of this + * socket option are socket type and system dependent. + * + *

In the case of stream-oriented sockets, this socket option will + * usually determine whether the socket can be bound to a socket address + * when a previous connection involving that socket address is in the + * TIME_WAIT state. On implementations where the semantics differ, + * and the socket option is not required to be enabled in order to bind the + * socket when a previous connection is in this state, then the + * implementation may choose to ignore this option. + * + *

For datagram-oriented sockets the socket option is used to allow + * multiple programs bind to the same address. This option should be enabled + * when the socket is to be used for Internet Protocol (IP) multicasting. + * + *

An implementation allows this socket option to be set before the + * socket is bound or connected. Changing the value of this socket option + * after the socket is bound has no effect. The default value of this + * socket option is system dependent. + * + * @see RFC 793: Transmission + * Control Protocol + * @see ServerSocket#setReuseAddress + */ + public static final SocketOption SO_REUSEADDR = + new StdSocketOption("SO_REUSEADDR", Boolean.class); + + /** + * Linger on close if data is present. + * + *

The value of this socket option is an {@code Integer} that controls + * the action taken when unsent data is queued on the socket and a method + * to close the socket is invoked. If the value of the socket option is zero + * or greater, then it represents a timeout value, in seconds, known as the + * linger interval. The linger interval is the timeout for the + * {@code close} method to block while the operating system attempts to + * transmit the unsent data or it decides that it is unable to transmit the + * data. If the value of the socket option is less than zero then the option + * is disabled. In that case the {@code close} method does not wait until + * unsent data is transmitted; if possible the operating system will transmit + * any unsent data before the connection is closed. + * + *

This socket option is intended for use with sockets that are configured + * in {@link java.nio.channels.SelectableChannel#isBlocking() blocking} mode + * only. The behavior of the {@code close} method when this option is + * enabled on a non-blocking socket is not defined. + * + *

The initial value of this socket option is a negative value, meaning + * that the option is disabled. The option may be enabled, or the linger + * interval changed, at any time. The maximum value of the linger interval + * is system dependent. Setting the linger interval to a value that is + * greater than its maximum value causes the linger interval to be set to + * its maximum value. + * + * @see Socket#setSoLinger + */ + public static final SocketOption SO_LINGER = + new StdSocketOption("SO_LINGER", Integer.class); + + + // -- IPPROTO_IP -- + + /** + * The Type of Service (ToS) octet in the Internet Protocol (IP) header. + * + *

The value of this socket option is an {@code Integer} representing + * the value of the ToS octet in IP packets sent by sockets to an {@link + * StandardProtocolFamily#INET IPv4} socket. The interpretation of the ToS + * octet is network specific and is not defined by this class. Further + * information on the ToS octet can be found in RFC 1349 and RFC 2474. The value + * of the socket option is a hint. An implementation may ignore the + * value, or ignore specific values. + * + *

The initial/default value of the TOS field in the ToS octet is + * implementation specific but will typically be {@code 0}. For + * datagram-oriented sockets the option may be configured at any time after + * the socket has been bound. The new value of the octet is used when sending + * subsequent datagrams. It is system dependent whether this option can be + * queried or changed prior to binding the socket. + * + *

The behavior of this socket option on a stream-oriented socket, or an + * {@link StandardProtocolFamily#INET6 IPv6} socket, is not defined in this + * release. + * + * @see DatagramSocket#setTrafficClass + */ + public static final SocketOption IP_TOS = + new StdSocketOption("IP_TOS", Integer.class); + + /** + * The network interface for Internet Protocol (IP) multicast datagrams. + * + *

The value of this socket option is a {@link NetworkInterface} that + * represents the outgoing interface for multicast datagrams sent by the + * datagram-oriented socket. For {@link StandardProtocolFamily#INET6 IPv6} + * sockets then it is system dependent whether setting this option also + * sets the outgoing interface for multlicast datagrams sent to IPv4 + * addresses. + * + *

The initial/default value of this socket option may be {@code null} + * to indicate that outgoing interface will be selected by the operating + * system, typically based on the network routing tables. An implementation + * allows this socket option to be set after the socket is bound. Whether + * the socket option can be queried or changed prior to binding the socket + * is system dependent. + * + * @see java.nio.channels.MulticastChannel + * @see MulticastSocket#setInterface + */ + public static final SocketOption IP_MULTICAST_IF = + new StdSocketOption("IP_MULTICAST_IF", NetworkInterface.class); + + /** + * The time-to-live for Internet Protocol (IP) multicast datagrams. + * + *

The value of this socket option is an {@code Integer} in the range + * 0 <= value <= 255. It is used to control + * the scope of multicast datagrams sent by the datagram-oriented socket. + * In the case of an {@link StandardProtocolFamily#INET IPv4} socket + * the option is the time-to-live (TTL) on multicast datagrams sent by the + * socket. Datagrams with a TTL of zero are not transmitted on the network + * but may be delivered locally. In the case of an {@link + * StandardProtocolFamily#INET6 IPv6} socket the option is the + * hop limit which is number of hops that the datagram can + * pass through before expiring on the network. For IPv6 sockets it is + * system dependent whether the option also sets the time-to-live + * on multicast datagrams sent to IPv4 addresses. + * + *

The initial/default value of the time-to-live setting is typically + * {@code 1}. An implementation allows this socket option to be set after + * the socket is bound. Whether the socket option can be queried or changed + * prior to binding the socket is system dependent. + * + * @see java.nio.channels.MulticastChannel + * @see MulticastSocket#setTimeToLive + */ + public static final SocketOption IP_MULTICAST_TTL = + new StdSocketOption("IP_MULTICAST_TTL", Integer.class); + + /** + * Loopback for Internet Protocol (IP) multicast datagrams. + * + *

The value of this socket option is a {@code Boolean} that controls + * the loopback of multicast datagrams. The value of the socket + * option represents if the option is enabled or disabled. + * + *

The exact semantics of this socket options are system dependent. + * In particular, it is system dependent whether the loopback applies to + * multicast datagrams sent from the socket or received by the socket. + * For {@link StandardProtocolFamily#INET6 IPv6} sockets then it is + * system dependent whether the option also applies to multicast datagrams + * sent to IPv4 addresses. + * + *

The initial/default value of this socket option is {@code TRUE}. An + * implementation allows this socket option to be set after the socket is + * bound. Whether the socket option can be queried or changed prior to + * binding the socket is system dependent. + * + * @see java.nio.channels.MulticastChannel + * @see MulticastSocket#setLoopbackMode + */ + public static final SocketOption IP_MULTICAST_LOOP = + new StdSocketOption("IP_MULTICAST_LOOP", Boolean.class); + + + // -- IPPROTO_TCP -- + + /** + * Disable the Nagle algorithm. + * + *

The value of this socket option is a {@code Boolean} that represents + * whether the option is enabled or disabled. The socket option is specific to + * stream-oriented sockets using the TCP/IP protocol. TCP/IP uses an algorithm + * known as The Nagle Algorithm to coalesce short segments and + * improve network efficiency. + * + *

The default value of this socket option is {@code FALSE}. The + * socket option should only be enabled in cases where it is known that the + * coalescing impacts performance. The socket option may be enabled at any + * time. In other words, the Nagle Algorithm can be disabled. Once the option + * is enabled, it is system dependent whether it can be subsequently + * disabled. If it cannot, then invoking the {@code setOption} method to + * disable the option has no effect. + * + * @see RFC 1122: + * Requirements for Internet Hosts -- Communication Layers + * @see Socket#setTcpNoDelay + */ + public static final SocketOption TCP_NODELAY = + new StdSocketOption("TCP_NODELAY", Boolean.class); + + + private static class StdSocketOption implements SocketOption { + private final String name; + private final Class type; + StdSocketOption(String name, Class type) { + this.name = name; + this.type = type; + } + public String name() { return name; } + public Class type() { return type; } + public String toString() { return name; } + } +} diff -r b2de95a6931c -r 3f4c11b93ded overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java Tue Jan 13 16:38:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousFileChannel.java Wed Jan 14 05:27:57 2009 +0000 @@ -34,10 +34,10 @@ import java.util.HashSet; import java.util.HashSet; import java.util.Collections; -import org.classpath.icedtea.java.nio.file.FileSystemProvider; import org.classpath.icedtea.java.nio.file.OpenOption; import org.classpath.icedtea.java.nio.file.Path; import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; +import org.classpath.icedtea.java.nio.file.spi.FileSystemProvider; /** * An asynchronous channel for reading, writing, and manipulating a file. diff -r b2de95a6931c -r 3f4c11b93ded overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java Tue Jan 13 16:38:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/AsynchronousServerSocketChannel.java Wed Jan 14 05:27:57 2009 +0000 @@ -26,11 +26,11 @@ package org.classpath.icedtea.java.nio.channels; -import java.net.SocketOption; import java.net.SocketAddress; import java.util.concurrent.Future; import java.io.IOException; +import org.classpath.icedtea.java.net.SocketOption; From gnu_andrew at member.fsf.org Tue Feb 3 04:13:57 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:57 +0000 Subject: changeset in /hg/icedtea6: Add SharedSecrets stuff. Message-ID: changeset 9eb9c1670c99 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9eb9c1670c99 description: Add SharedSecrets stuff. 2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: Add missing SharedSecrets files. diffstat: 3 files changed, 135 insertions(+) ChangeLog | 6 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java | 43 +++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java | 86 ++++++++++ diffs (150 lines): diff -r 3f4c11b93ded -r 9eb9c1670c99 ChangeLog --- a/ChangeLog Wed Jan 14 05:27:57 2009 +0000 +++ b/ChangeLog Wed Jan 14 05:29:15 2009 +0000 @@ -1,3 +1,9 @@ 2009-01-13 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: + Add missing SharedSecrets files. + 2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java, diff -r 3f4c11b93ded -r 9eb9c1670c99 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java Wed Jan 14 05:29:15 2009 +0000 @@ -0,0 +1,43 @@ +/* JavaIODeleteOnExitAccess.java + Copyright (C) 2009 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + */ + +package org.classpath.icedtea.misc; + +public interface JavaIODeleteOnExitAccess +{ + void add(String path); +} diff -r 3f4c11b93ded -r 9eb9c1670c99 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java Wed Jan 14 05:29:15 2009 +0000 @@ -0,0 +1,86 @@ +/* SharedSecrets.java + Copyright (C) 2009 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + */ + +/** Based on sun.misc.SharedSecrets */ +package org.classpath.icedtea.misc; + +import sun.misc.Unsafe; + +/** A repository of "shared secrets", which are a mechanism for + calling implementation-private methods in another package without + using reflection. A package-private class implements a public + interface and provides the ability to call package-private methods + within that package; the object implementing that interface is + provided through a third package to which access is restricted. + This framework avoids the primary disadvantage of using reflection + for this purpose, namely the loss of compile-time checking. */ + +public class SharedSecrets +{ + private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static JavaIODeleteOnExitAccess javaIODeleteOnExitAccess; + private static JavaUtilConcurrentThreadPoolExecutorAccess javaUtilConcurrentThreadPoolExecutorAccess; + + public static void setJavaIODeleteOnExitAccess(JavaIODeleteOnExitAccess jida) + { + javaIODeleteOnExitAccess = jida; + } + + public static JavaIODeleteOnExitAccess getJavaIODeleteOnExitAccess() + { + if (javaIODeleteOnExitAccess == null) + { + unsafe.ensureClassInitialized(java.io.File.class); + } + return javaIODeleteOnExitAccess; + } + + public static void setJavaUtilConcurrentThreadPoolExecutorAccess(JavaUtilConcurrentThreadPoolExecutorAccess juctpea) + { + javaUtilConcurrentThreadPoolExecutorAccess = juctpea; + } + + public static JavaUtilConcurrentThreadPoolExecutorAccess getJavaUtilConcurrentThreadPoolExecutorAccess() + { + if (javaUtilConcurrentThreadPoolExecutorAccess == null) + { + unsafe.ensureClassInitialized(java.util.concurrent.ThreadPoolExecutor.class); + } + return javaUtilConcurrentThreadPoolExecutorAccess; + } + +} From gnu_andrew at member.fsf.org Tue Feb 3 04:13:57 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:57 +0000 Subject: changeset in /hg/icedtea6: Fix some sun.nio.ch classes. Message-ID: changeset dbdaa8e2cf1f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=dbdaa8e2cf1f description: Fix some sun.nio.ch classes. 2009-01-14 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: Extend java.nio.channels.FileChannel to minimise code. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java: Adapted to use the SharedSecrets backdoor. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java: Add remaining methods needed for our ScheduledThreadPoolExecutor. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java: Create a ScheduledThreadPoolExecutor directly so ours is used. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java: Refer to AsynchronousFileLockImpl not FileLockImpl. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java: Fix imports. * patches/icedtea-nio2.patch: Update implementation of secrets interface. diffstat: 9 files changed, 86 insertions(+), 797 deletions(-) ChangeLog | 18 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java | 774 ---------- overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java | 25 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java | 9 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java | 15 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java | 17 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java | 6 patches/icedtea-nio2.patch | 17 diffs (truncated from 1118 to 500 lines): diff -r 9eb9c1670c99 -r dbdaa8e2cf1f ChangeLog --- a/ChangeLog Wed Jan 14 05:29:15 2009 +0000 +++ b/ChangeLog Thu Jan 15 02:31:47 2009 +0000 @@ -1,3 +1,21 @@ 2009-01-13 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: + Extend java.nio.channels.FileChannel to minimise code. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/util/concurrent/ScheduledThreadPoolExecutor.java: + Adapted to use the SharedSecrets backdoor. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaUtilConcurrentThreadPoolExecutorAccess.java: + Add remaining methods needed for our ScheduledThreadPoolExecutor. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousChannelGroupImpl.java: + Create a ScheduledThreadPoolExecutor directly so ours is used. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileChannelImpl.java: + Refer to AsynchronousFileLockImpl not FileLockImpl. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/FileLockTable.java: + Fix imports. + * patches/icedtea-nio2.patch: + Update implementation of secrets interface. + 2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java, diff -r 9eb9c1670c99 -r dbdaa8e2cf1f overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Wed Jan 14 05:29:15 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Thu Jan 15 02:31:47 2009 +0000 @@ -162,8 +162,8 @@ import org.classpath.icedtea.java.nio.fi */ public abstract class FileChannel - extends AbstractInterruptibleChannel - implements SeekableByteChannel, GatheringByteChannel, ScatteringByteChannel + extends java.nio.channels.FileChannel + implements SeekableByteChannel { /** * Initializes a new instance of this class. @@ -288,9 +288,9 @@ public abstract class FileChannel * * @since 1.7 */ - public static FileChannel open(Path file, - Set options, - FileAttribute... attrs) + public static java.nio.channels.FileChannel open(Path file, + Set options, + FileAttribute... attrs) throws IOException { FileSystemProvider provider = file.getFileSystem().provider(); @@ -335,110 +335,13 @@ public abstract class FileChannel * * @since 1.7 */ - public static FileChannel open(Path file, OpenOption... options) + public static java.nio.channels.FileChannel open(Path file, OpenOption... options) throws IOException { Set set = new HashSet(options.length); Collections.addAll(set, options); return open(file, set, NO_ATTRIBUTES); } - - // -- Channel operations -- - - /** - * Reads a sequence of bytes from this channel into the given buffer. - * - *

Bytes are read starting at this channel's current file position, and - * then the file position is updated with the number of bytes actually - * read. Otherwise this method behaves exactly as specified in the {@link - * ReadableByteChannel} interface.

- */ - public abstract int read(ByteBuffer dst) throws IOException; - - /** - * Reads a sequence of bytes from this channel into a subsequence of the - * given buffers. - * - *

Bytes are read starting at this channel's current file position, and - * then the file position is updated with the number of bytes actually - * read. Otherwise this method behaves exactly as specified in the {@link - * ScatteringByteChannel} interface.

- */ - public abstract long read(ByteBuffer[] dsts, int offset, int length) - throws IOException; - - /** - * Reads a sequence of bytes from this channel into the given buffers. - * - *

Bytes are read starting at this channel's current file position, and - * then the file position is updated with the number of bytes actually - * read. Otherwise this method behaves exactly as specified in the {@link - * ScatteringByteChannel} interface.

- */ - public final long read(ByteBuffer[] dsts) throws IOException { - return read(dsts, 0, dsts.length); - } - - /** - * Writes a sequence of bytes to this channel from the given buffer. - * - *

Bytes are written starting at this channel's current file position - * unless the channel is in append mode, in which case the position is - * first advanced to the end of the file. The file is grown, if necessary, - * to accommodate the written bytes, and then the file position is updated - * with the number of bytes actually written. Otherwise this method - * behaves exactly as specified by the {@link WritableByteChannel} - * interface.

- */ - public abstract int write(ByteBuffer src) throws IOException; - - /** - * Writes a sequence of bytes to this channel from a subsequence of the - * given buffers. - * - *

Bytes are written starting at this channel's current file position - * unless the channel is in append mode, in which case the position is - * first advanced to the end of the file. The file is grown, if necessary, - * to accommodate the written bytes, and then the file position is updated - * with the number of bytes actually written. Otherwise this method - * behaves exactly as specified in the {@link GatheringByteChannel} - * interface.

- */ - public abstract long write(ByteBuffer[] srcs, int offset, int length) - throws IOException; - - /** - * Writes a sequence of bytes to this channel from the given buffers. - * - *

Bytes are written starting at this channel's current file position - * unless the channel is in append mode, in which case the position is - * first advanced to the end of the file. The file is grown, if necessary, - * to accommodate the written bytes, and then the file position is updated - * with the number of bytes actually written. Otherwise this method - * behaves exactly as specified in the {@link GatheringByteChannel} - * interface.

- */ - public final long write(ByteBuffer[] srcs) throws IOException { - return write(srcs, 0, srcs.length); - } - - - // -- Other operations -- - - /** - * Returns this channel's file position.

- * - * @return This channel's file position, - * a non-negative integer counting the number of bytes - * from the beginning of the file to the current position - * - * @throws ClosedChannelException - * If this channel is closed - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract long position() throws IOException; /** * Sets this channel's file position. @@ -469,20 +372,6 @@ public abstract class FileChannel public abstract FileChannel position(long newPosition) throws IOException; /** - * Returns the current size of this channel's file.

- * - * @return The current size of this channel's file, - * measured in bytes - * - * @throws ClosedChannelException - * If this channel is closed - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract long size() throws IOException; - - /** * Truncates this channel's file to the given size. * *

If the given size is less than the file's current size then the file @@ -511,656 +400,5 @@ public abstract class FileChannel */ public abstract FileChannel truncate(long size) throws IOException; - /** - * Forces any updates to this channel's file to be written to the storage - * device that contains it. - * - *

If this channel's file resides on a local storage device then when - * this method returns it is guaranteed that all changes made to the file - * since this channel was created, or since this method was last invoked, - * will have been written to that device. This is useful for ensuring that - * critical information is not lost in the event of a system crash. - * - *

If the file does not reside on a local device then no such guarantee - * is made. - * - *

The metaData parameter can be used to limit the number of - * I/O operations that this method is required to perform. Passing - * false for this parameter indicates that only updates to the - * file's content need be written to storage; passing true - * indicates that updates to both the file's content and metadata must be - * written, which generally requires at least one more I/O operation. - * Whether this parameter actually has any effect is dependent upon the - * underlying operating system and is therefore unspecified. - * - *

Invoking this method may cause an I/O operation to occur even if the - * channel was only opened for reading. Some operating systems, for - * example, maintain a last-access time as part of a file's metadata, and - * this time is updated whenever the file is read. Whether or not this is - * actually done is system-dependent and is therefore unspecified. - * - *

This method is only guaranteed to force changes that were made to - * this channel's file via the methods defined in this class. It may or - * may not force changes that were made by modifying the content of a - * {@link MappedByteBuffer mapped byte buffer} obtained by - * invoking the {@link #map map} method. Invoking the {@link - * MappedByteBuffer#force force} method of the mapped byte buffer will - * force changes made to the buffer's content to be written.

- * - * @param metaData - * If true then this method is required to force changes - * to both the file's content and metadata to be written to - * storage; otherwise, it need only force content changes to be - * written - * - * @throws ClosedChannelException - * If this channel is closed - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract void force(boolean metaData) throws IOException; - - /** - * Transfers bytes from this channel's file to the given writable byte - * channel. - * - *

An attempt is made to read up to count bytes starting at - * the given position in this channel's file and write them to the - * target channel. An invocation of this method may or may not transfer - * all of the requested bytes; whether or not it does so depends upon the - * natures and states of the channels. Fewer than the requested number of - * bytes are transferred if this channel's file contains fewer than - * count bytes starting at the given position, or if the - * target channel is non-blocking and it has fewer than count - * bytes free in its output buffer. - * - *

This method does not modify this channel's position. If the given - * position is greater than the file's current size then no bytes are - * transferred. If the target channel has a position then bytes are - * written starting at that position and then the position is incremented - * by the number of bytes written. - * - *

This method is potentially much more efficient than a simple loop - * that reads from this channel and writes to the target channel. Many - * operating systems can transfer bytes directly from the filesystem cache - * to the target channel without actually copying them.

- * - * @param position - * The position within the file at which the transfer is to begin; - * must be non-negative - * - * @param count - * The maximum number of bytes to be transferred; must be - * non-negative - * - * @param target - * The target channel - * - * @return The number of bytes, possibly zero, - * that were actually transferred - * - * @throws IllegalArgumentException - * If the preconditions on the parameters do not hold - * - * @throws NonReadableChannelException - * If this channel was not opened for reading - * - * @throws NonWritableChannelException - * If the target channel was not opened for writing - * - * @throws ClosedChannelException - * If either this channel or the target channel is closed - * - * @throws AsynchronousCloseException - * If another thread closes either channel - * while the transfer is in progress - * - * @throws ClosedByInterruptException - * If another thread interrupts the current thread while the - * transfer is in progress, thereby closing both channels and - * setting the current thread's interrupt status - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract long transferTo(long position, long count, - WritableByteChannel target) - throws IOException; - - /** - * Transfers bytes into this channel's file from the given readable byte - * channel. - * - *

An attempt is made to read up to count bytes from the - * source channel and write them to this channel's file starting at the - * given position. An invocation of this method may or may not - * transfer all of the requested bytes; whether or not it does so depends - * upon the natures and states of the channels. Fewer than the requested - * number of bytes will be transferred if the source channel has fewer than - * count bytes remaining, or if the source channel is non-blocking - * and has fewer than count bytes immediately available in its - * input buffer. - * - *

This method does not modify this channel's position. If the given - * position is greater than the file's current size then no bytes are - * transferred. If the source channel has a position then bytes are read - * starting at that position and then the position is incremented by the - * number of bytes read. - * - *

This method is potentially much more efficient than a simple loop - * that reads from the source channel and writes to this channel. Many - * operating systems can transfer bytes directly from the source channel - * into the filesystem cache without actually copying them.

- * - * @param src - * The source channel - * - * @param position - * The position within the file at which the transfer is to begin; - * must be non-negative - * - * @param count - * The maximum number of bytes to be transferred; must be - * non-negative - * - * @return The number of bytes, possibly zero, - * that were actually transferred - * - * @throws IllegalArgumentException - * If the preconditions on the parameters do not hold - * - * @throws NonReadableChannelException - * If the source channel was not opened for reading - * - * @throws NonWritableChannelException - * If this channel was not opened for writing - * - * @throws ClosedChannelException - * If either this channel or the source channel is closed - * - * @throws AsynchronousCloseException - * If another thread closes either channel - * while the transfer is in progress - * - * @throws ClosedByInterruptException - * If another thread interrupts the current thread while the - * transfer is in progress, thereby closing both channels and - * setting the current thread's interrupt status - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract long transferFrom(ReadableByteChannel src, - long position, long count) - throws IOException; - - /** - * Reads a sequence of bytes from this channel into the given buffer, - * starting at the given file position. - * - *

This method works in the same manner as the {@link - * #read(ByteBuffer)} method, except that bytes are read starting at the - * given file position rather than at the channel's current position. This - * method does not modify this channel's position. If the given position - * is greater than the file's current size then no bytes are read.

- * - * @param dst - * The buffer into which bytes are to be transferred - * - * @param position - * The file position at which the transfer is to begin; - * must be non-negative - * - * @return The number of bytes read, possibly zero, or -1 if the - * given position is greater than or equal to the file's current - * size - * - * @throws IllegalArgumentException - * If the position is negative - * - * @throws NonReadableChannelException - * If this channel was not opened for reading - * - * @throws ClosedChannelException - * If this channel is closed - * - * @throws AsynchronousCloseException - * If another thread closes this channel - * while the read operation is in progress - * - * @throws ClosedByInterruptException - * If another thread interrupts the current thread - * while the read operation is in progress, thereby - * closing the channel and setting the current thread's - * interrupt status - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract int read(ByteBuffer dst, long position) throws IOException; - - /** - * Writes a sequence of bytes to this channel from the given buffer, - * starting at the given file position. - * - *

This method works in the same manner as the {@link - * #write(ByteBuffer)} method, except that bytes are written starting at - * the given file position rather than at the channel's current position. - * This method does not modify this channel's position. If the given - * position is greater than the file's current size then the file will be - * grown to accommodate the new bytes; the values of any bytes between the - * previous end-of-file and the newly-written bytes are unspecified.

- * - * @param src - * The buffer from which bytes are to be transferred - * - * @param position - * The file position at which the transfer is to begin; - * must be non-negative - * - * @return The number of bytes written, possibly zero - * - * @throws IllegalArgumentException - * If the position is negative - * - * @throws NonWritableChannelException - * If this channel was not opened for writing - * - * @throws ClosedChannelException - * If this channel is closed - * - * @throws AsynchronousCloseException - * If another thread closes this channel - * while the write operation is in progress - * - * @throws ClosedByInterruptException - * If another thread interrupts the current thread - * while the write operation is in progress, thereby - * closing the channel and setting the current thread's - * interrupt status - * - * @throws IOException - * If some other I/O error occurs - */ - public abstract int write(ByteBuffer src, long position) throws IOException; - - - // -- Memory-mapped buffers -- - - /** - * A typesafe enumeration for file-mapping modes. - * - * @since 1.4 - * - * @see java.nio.channels.FileChannel#map - */ - public static class MapMode { - - /** - * Mode for a read-only mapping. - */ - public static final MapMode READ_ONLY - = new MapMode("READ_ONLY"); - - /** - * Mode for a read/write mapping. - */ - public static final MapMode READ_WRITE - = new MapMode("READ_WRITE"); - - /** - * Mode for a private (copy-on-write) mapping. - */ - public static final MapMode PRIVATE - = new MapMode("PRIVATE"); - - private final String name; - - private MapMode(String name) { - this.name = name; - } - - /** From gnu_andrew at member.fsf.org Tue Feb 3 04:13:57 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:57 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset 585bc814cee8 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=585bc814cee8 description: Merge. diffstat: 2 files changed, 33 insertions(+), 2 deletions(-) ChangeLog | 8 +++++ rt/net/sourceforge/jnlp/cache/ResourceTracker.java | 27 ++++++++++++++++++-- diffs (69 lines): diff -r dbdaa8e2cf1f -r 585bc814cee8 ChangeLog --- a/ChangeLog Thu Jan 15 02:31:47 2009 +0000 +++ b/ChangeLog Thu Jan 15 02:32:49 2009 +0000 @@ -15,6 +15,14 @@ 2009-01-14 Andrew John Hughes + + * rt/net/sourceforge/jnlp/cache/ResourceTracker.java + (downloadResource): Call getVersionedResourceURL to get the versioned jar. + (initializeResource): Likewise. + (getVersionedResourceURL): New function. Constructs a URL with a + version-id as the query. 2009-01-13 Andrew John Hughes diff -r dbdaa8e2cf1f -r 585bc814cee8 rt/net/sourceforge/jnlp/cache/ResourceTracker.java --- a/rt/net/sourceforge/jnlp/cache/ResourceTracker.java Thu Jan 15 02:31:47 2009 +0000 +++ b/rt/net/sourceforge/jnlp/cache/ResourceTracker.java Thu Jan 15 02:32:49 2009 +0000 @@ -605,7 +605,7 @@ public class ResourceTracker { try { // create out second in case in does not exist - URLConnection con = resource.location.openConnection(); + URLConnection con = getVersionedResourceURL(resource).openConnection(); InputStream in = new BufferedInputStream(con.getInputStream()); OutputStream out = CacheUtil.getOutputStream(resource.location, resource.downloadVersion); byte buf[] = new byte[1024]; @@ -652,7 +652,7 @@ public class ResourceTracker { File localFile = CacheUtil.getCacheFile(resource.location, resource.downloadVersion); // connect - URLConnection connection = resource.location.openConnection(); // this won't change so should be okay unsynchronized + URLConnection connection = getVersionedResourceURL(resource).openConnection(); // this won't change so should be okay unsynchronized int size = connection.getContentLength(); boolean current = CacheUtil.isCurrent(resource.location, resource.requestVersion, connection) && resource.getUpdatePolicy() != UpdatePolicy.FORCE; @@ -696,6 +696,29 @@ public class ResourceTracker { } } + + + private URL getVersionedResourceURL(Resource resource) { + String actualLocation = resource.location.getProtocol() + "://" + + resource.location.getHost(); + if (resource.location.getPort() != -1) { + actualLocation += ":" + resource.location.getPort(); + } + actualLocation += resource.location.getPath(); + if (resource.requestVersion != null + && resource.requestVersion.isVersionId()) { + actualLocation += "?version-id=" + resource.requestVersion; + } + URL versionedURL; + try { + versionedURL = new URL(actualLocation); + } catch (MalformedURLException e) { + return resource.location; + } + return versionedURL; + } + + /** * Pick the next resource to download or initialize. If there * are no more resources requested then one is taken from a From gnu_andrew at member.fsf.org Tue Feb 3 04:13:58 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:58 +0000 Subject: changeset in /hg/icedtea6: Complete sun.nio.ch fixes. Message-ID: changeset f42c98fdd7f4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f42c98fdd7f4 description: Complete sun.nio.ch fixes. 2009-01-19 Andrew John Hughes * generated/sun/nio/ch/SocketOptionRegistry.java: * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java: Added (1.7 extensions). * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions: Fix package. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/SelectorProvider.java: Added (1.7 extensions). * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: Added to provide access to package-private NetworkInterface.getIndex(). * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ExtendedSocketOption.java: Added. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/OptionKey.java: Added. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/share/native/sun/nio/ch/genSocketOptionRegistry.c, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java: Added. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultSelectorProvider.java: Added. * patches/icedtea-nio2.patch: Add hook for SharedSecrets to NetworkInterface, extend sun.nio.ch.{Net,DatagramChannelImpl,SelectorProviderImpl} to handle 1.7 extensions. diffstat: 21 files changed, 1487 insertions(+), 16 deletions(-) ChangeLog | 29 generated/sun/nio/ch/SocketOptionRegistry.java | 83 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java | 223 ++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions | 2 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/SelectorProvider.java | 199 +++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java | 45 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java | 16 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java | 5 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ExtendedSocketOption.java | 44 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java | 5 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/OptionKey.java | 48 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java | 4 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java | 14 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java | 3 overlays/nio2/openjdk/jdk/src/share/native/sun/nio/ch/genSocketOptionRegistry.c | 129 ++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java | 76 + overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java | 3 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultSelectorProvider.java | 49 patches/icedtea-nio2.patch | 515 +++++++++- diffs (truncated from 1771 to 500 lines): diff -r 585bc814cee8 -r f42c98fdd7f4 ChangeLog --- a/ChangeLog Thu Jan 15 02:32:49 2009 +0000 +++ b/ChangeLog Mon Jan 19 14:23:34 2009 +0000 @@ -1,3 +1,32 @@ 2009-01-14 Andrew John Hughes + + * generated/sun/nio/ch/SocketOptionRegistry.java: + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java: + Added (1.7 extensions). + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions: Fix package. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/SelectorProvider.java: + Added (1.7 extensions). + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java, + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: + Added to provide access to package-private NetworkInterface.getIndex(). + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/CompletedFuture.java: + Fixed imports. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ExtendedSocketOption.java: Added. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/Invoker.java: Fixed imports. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/OptionKey.java: Added. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/PendingFuture.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousDatagramChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/ThreadPool.java: Fixed imports. + * overlays/nio2/openjdk/jdk/src/share/native/sun/nio/ch/genSocketOptionRegistry.c, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java: Added. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java: + Fixed imports. + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/ch/DefaultSelectorProvider.java: Added. + * patches/icedtea-nio2.patch: Add hook for SharedSecrets to NetworkInterface, extend + sun.nio.ch.{Net,DatagramChannelImpl,SelectorProviderImpl} to handle 1.7 extensions. + 2009-01-14 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: diff -r 585bc814cee8 -r f42c98fdd7f4 generated/sun/nio/ch/SocketOptionRegistry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generated/sun/nio/ch/SocketOptionRegistry.java Mon Jan 19 14:23:34 2009 +0000 @@ -0,0 +1,83 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ +// AUTOMATICALLY GENERATED FILE - DO NOT EDIT +package sun.nio.ch; +import java.util.Map; +import java.util.HashMap; +import org.classpath.icedtea.java.net.ProtocolFamily; +import org.classpath.icedtea.java.net.StandardProtocolFamily; +import org.classpath.icedtea.java.net.SocketOption; +import org.classpath.icedtea.java.net.StandardSocketOption; +class SocketOptionRegistry { + private SocketOptionRegistry() { } + private static class RegistryKey { + private final SocketOption name; + private final ProtocolFamily family; + RegistryKey(SocketOption name, ProtocolFamily family) { + this.name = name; + this.family = family; + } + public int hashCode() { + return name.hashCode() + family.hashCode(); + } + public boolean equals(Object ob) { + if (ob == null) return false; + if (!(ob instanceof RegistryKey)) return false; + RegistryKey other = (RegistryKey)ob; + if (this.name != other.name) return false; + if (this.family != other.family) return false; + return true; + } + } + private static class LazyInitialization { + static final Map options = options(); + private static Map options() { + Map map = + new HashMap(); + map.put(new RegistryKey(StandardSocketOption.SO_BROADCAST, Net.UNSPEC), new OptionKey(1, 6)); + map.put(new RegistryKey(StandardSocketOption.SO_KEEPALIVE, Net.UNSPEC), new OptionKey(1, 9)); + map.put(new RegistryKey(StandardSocketOption.SO_LINGER, Net.UNSPEC), new OptionKey(1, 13)); + map.put(new RegistryKey(StandardSocketOption.SO_SNDBUF, Net.UNSPEC), new OptionKey(1, 7)); + map.put(new RegistryKey(StandardSocketOption.SO_RCVBUF, Net.UNSPEC), new OptionKey(1, 8)); + map.put(new RegistryKey(StandardSocketOption.SO_REUSEADDR, Net.UNSPEC), new OptionKey(1, 2)); + map.put(new RegistryKey(StandardSocketOption.TCP_NODELAY, Net.UNSPEC), new OptionKey(6, 1)); + map.put(new RegistryKey(StandardSocketOption.IP_TOS, StandardProtocolFamily.INET), new OptionKey(0, 1)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_IF, StandardProtocolFamily.INET), new OptionKey(0, 32)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_TTL, StandardProtocolFamily.INET), new OptionKey(0, 33)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_LOOP, StandardProtocolFamily.INET), new OptionKey(0, 34)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_IF, StandardProtocolFamily.INET6), new OptionKey(41, 17)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_TTL, StandardProtocolFamily.INET6), new OptionKey(41, 18)); + map.put(new RegistryKey(StandardSocketOption.IP_MULTICAST_LOOP, StandardProtocolFamily.INET6), new OptionKey(41, 19)); + map.put(new RegistryKey(ExtendedSocketOption.SO_OOBINLINE, Net.UNSPEC), new OptionKey(1, 10)); + return map; + } + } + public static OptionKey findOption(SocketOption name, ProtocolFamily family) { + RegistryKey key = new RegistryKey(name, family); + return LazyInitialization.options.get(key); + } +} diff -r 585bc814cee8 -r f42c98fdd7f4 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java Mon Jan 19 14:23:34 2009 +0000 @@ -0,0 +1,223 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.nio.channels; + +import java.io.IOException; +import java.net.DatagramSocket; +import java.net.SocketAddress; +import java.nio.ByteBuffer; + +import org.classpath.icedtea.java.net.ProtocolFamily; +import org.classpath.icedtea.java.net.SocketOption; + +import org.classpath.icedtea.java.nio.channels.spi.SelectorProvider; + +/** + * A selectable channel for datagram-oriented sockets. + * + *

{@note revised} A datagram channel is created by invoking one of the {@link #open open} methods + * of this class. It is not possible to create a channel for an arbitrary, + * pre-existing datagram socket. A newly-created datagram channel is open but not + * connected. A datagram channel need not be connected in order for the {@link #send + * send} and {@link #receive receive} methods to be used. A datagram channel may be + * connected, by invoking its {@link #connect connect} method, in order to + * avoid the overhead of the security checks are otherwise performed as part of + * every send and receive operation. A datagram channel must be connected in + * order to use the {@link #read(java.nio.ByteBuffer) read} and {@link + * #write(java.nio.ByteBuffer) write} methods, since those methods do not + * accept or return socket addresses. + * + *

Once connected, a datagram channel remains connected until it is + * disconnected or closed. Whether or not a datagram channel is connected may + * be determined by invoking its {@link #isConnected isConnected} method. + * + *

Socket options are configured using the {@link #setOption(SocketOption,Object) + * setOption} method. A datagram channel to an Internet Protocol socket supports + * the following options: + *

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Option NameDescription
{@link java.net.StandardSocketOption#SO_SNDBUF SO_SNDBUF} The size of the socket send buffer
{@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} The size of the socket receive buffer
{@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} Re-use address
{@link java.net.StandardSocketOption#SO_BROADCAST SO_BROADCAST} Allow transmission of broadcast datagrams
{@link java.net.StandardSocketOption#IP_TOS IP_TOS} The Type of Service (ToS) octet in the Internet Protocol (IP) header
{@link java.net.StandardSocketOption#IP_MULTICAST_IF IP_MULTICAST_IF} The network interface for Internet Protocol (IP) multicast datagrams
{@link java.net.StandardSocketOption#IP_MULTICAST_TTL + * IP_MULTICAST_TTL} The time-to-live for Internet Protocol (IP) multicast + * datagrams
{@link java.net.StandardSocketOption#IP_MULTICAST_LOOP + * IP_MULTICAST_LOOP} Loopback for Internet Protocol (IP) multicast datagrams
+ *
+ * Additional (implementation specific) options may also be supported. + * + *

Datagram channels are safe for use by multiple concurrent threads. They + * support concurrent reading and writing, though at most one thread may be + * reading and at most one thread may be writing at any given time.

+ * + * @author Mark Reinhold + * @author JSR-51 Expert Group + * @since 1.4 + * @updated 1.7 + */ + +public abstract class DatagramChannel + extends java.nio.channels.DatagramChannel + implements MulticastChannel +{ + + /** + * Initializes a new instance of this class. + */ + protected DatagramChannel(SelectorProvider provider) { + super(provider); + } + + /** + * Opens a datagram channel. + * + *

The new channel is created by invoking the {@link + * java.nio.channels.spi.SelectorProvider#openDatagramChannel() + * openDatagramChannel} method of the system-wide default {@link + * java.nio.channels.spi.SelectorProvider} object. The channel will not be + * connected.

+ * + * @return A new datagram channel + * + * @throws IOException + * If an I/O error occurs + */ + public static DatagramChannel open() throws IOException { + return SelectorProvider.provider().openDatagramChannel(); + } + + /** + * Opens a datagram channel. + * + *

The {@code family} parameter is used to specify the {@link + * ProtocolFamily}. If the datagram channel is to be used for IP multicasing + * then this should correspond to the address type of the multicast groups + * that this channel will join. + * + *

The new channel is created by invoking the {@link + * java.nio.channels.spi.SelectorProvider#openDatagramChannel(ProtocolFamily) + * openDatagramChannel} method of the system-wide default {@link + * java.nio.channels.spi.SelectorProvider} object. The channel will not be + * connected. + * + * @param family + * The protocol family + * + * @return A new datagram channel + * + * @throws UnsupportedOperationException + * If the specified protocol family is not supported. For example, + * suppose the parameter is specified as {@link + * java.net.StandardProtocolFamily#INET6 StandardProtocolFamily.INET6} + * but IPv6 is not enabled on the platform. + * @throws IOException + * If an I/O error occurs + * + * @since 1.7 + */ + public static DatagramChannel open(ProtocolFamily family) throws IOException { + return SelectorProvider.provider().openDatagramChannel(family); + } + + + // -- Socket-specific operations -- + + /** + * @throws AlreadyBoundException {@inheritDoc} + * @throws UnsupportedAddressTypeException {@inheritDoc} + * @throws ClosedChannelException {@inheritDoc} + * @throws IOException {@inheritDoc} + * @throws SecurityException + * If a security manager has been installed and its {@link + * SecurityManager#checkListen checkListen} method denies the + * operation + * + * @since 1.7 + */ + public abstract DatagramChannel bind(SocketAddress local) + throws IOException; + + /** + * @throws IllegalArgumentException {@inheritDoc} + * @throws ClosedChannelException {@inheritDoc} + * @throws IOException {@inheritDoc} + * + * @since 1.7 + */ + public abstract DatagramChannel setOption(SocketOption name, T value) + throws IOException; + + /** + * {@note new} + * Returns the remote address to which this channel's socket is connected. + * + * @return The remote address; {@code null} if the channel's socket is not + * connected + * + * @throws ClosedChannelException + * If the channel is closed + * @throws IOException + * If an I/O error occurs + * + * @since 1.7 + */ + public abstract SocketAddress getRemoteAddress() throws IOException; + +} diff -r 585bc814cee8 -r f42c98fdd7f4 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions Thu Jan 15 02:32:49 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/exceptions Mon Jan 19 14:23:34 2009 +0000 @@ -25,7 +25,7 @@ # Generated exception classes for java.nio.channels -PACKAGE=java.nio.channels +PACKAGE=org.classpath.icedtea.java.nio.channels # This year should only change if the generated source is modified. COPYRIGHT_YEARS=2000-2007 SINCE=1.7 diff -r 585bc814cee8 -r f42c98fdd7f4 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/SelectorProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/spi/SelectorProvider.java Mon Jan 19 14:23:34 2009 +0000 @@ -0,0 +1,199 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2009 Red Hat, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package org.classpath.icedtea.java.nio.channels.spi; + +import java.io.IOException; + +import java.security.AccessController; +import java.security.PrivilegedAction; + +import java.util.Iterator; +import java.util.ServiceLoader; +import java.util.ServiceConfigurationError; + +import org.classpath.icedtea.java.net.ProtocolFamily; + +import org.classpath.icedtea.java.nio.channels.DatagramChannel; + +/** + * Service-provider class for selectors and selectable channels. + * + *

A selector provider is a concrete subclass of this class that has a + * zero-argument constructor and implements the abstract methods specified + * below. A given invocation of the Java virtual machine maintains a single + * system-wide default provider instance, which is returned by the {@link + * #provider() provider} method. The first invocation of that method will locate + * the default provider as specified below. + * + *

The system-wide default provider is used by the static open + * methods of the {@link java.nio.channels.DatagramChannel#open + * DatagramChannel}, {@link java.nio.channels.Pipe#open Pipe}, {@link + * java.nio.channels.Selector#open Selector}, {@link + * java.nio.channels.ServerSocketChannel#open ServerSocketChannel}, and {@link + * java.nio.channels.SocketChannel#open SocketChannel} classes. It is also + * used by the {@link java.lang.System#inheritedChannel System.inheritedChannel()} + * method. A program may make use of a provider other than the default provider + * by instantiating that provider and then directly invoking the open + * methods defined in this class. + * + *

All of the methods in this class are safe for use by multiple concurrent + * threads.

+ * + * + * @author Mark Reinhold + * @author JSR-51 Expert Group + * @since 1.4 + */ + +public abstract class SelectorProvider + extends java.nio.channels.spi.SelectorProvider { + + private static final Object lock = new Object(); + private static SelectorProvider provider = null; + + /** + * Opens a datagram channel.

+ * + * @return The new channel + */ + public abstract DatagramChannel openDatagramChannel() + throws IOException; + + /** + * {@note new} + * Opens a datagram channel. + * + * @param family + * The protocol family + * + * @return A new datagram channel + * + * @throws UnsupportedOperationException + * If the specified protocol family is not supported + * @throws IOException + * If an I/O error occurs + * + * @since 1.7 + */ + public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) + throws IOException; + + /** + * Returns the system-wide default selector provider for this invocation of + * the Java virtual machine. + * + *

The first invocation of this method locates the default provider + * object as follows:

+ * + *
    + * + *
  1. If the system property + * java.nio.channels.spi.SelectorProvider is defined then it is + * taken to be the fully-qualified name of a concrete provider class. + * The class is loaded and instantiated; if this process fails then an + * unspecified error is thrown.

  2. + * + *
  3. If a provider class has been installed in a jar file that is + * visible to the system class loader, and that jar file contains a + * provider-configuration file named + * java.nio.channels.spi.SelectorProvider in the resource + * directory META-INF/services, then the first class name + * specified in that file is taken. The class is loaded and + * instantiated; if this process fails then an unspecified error is + * thrown.

  4. + * + *
  5. Finally, if no provider has been specified by any of the above + * means then the system-default provider class is instantiated and the + * result is returned.

  6. + * + *
+ * From gnu_andrew at member.fsf.org Tue Feb 3 04:13:58 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:58 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset fb3c68368b7f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=fb3c68368b7f description: Merge. diffstat: 6 files changed, 41 insertions(+), 38 deletions(-) ChangeLog | 22 ++++++++++++++ HACKING | 1 Makefile.am | 1 patches/icedtea-a11y-property-change.patch | 17 ----------- patches/icedtea-samejvm-safe.patch | 2 - ports/hotspot/src/cpu/zero/vm/globals_zero.hpp | 36 ++++++++++++------------ diffs (140 lines): diff -r f42c98fdd7f4 -r fb3c68368b7f ChangeLog --- a/ChangeLog Mon Jan 19 14:23:34 2009 +0000 +++ b/ChangeLog Mon Jan 19 14:25:02 2009 +0000 @@ -26,6 +26,28 @@ 2009-01-19 Andrew John Hughes + + * patches/icedtea-version.patch (samejvmsafe): Removed the following + directories that contain test that are not samevm safe. + javax/crypto/Cipher (TestGetInstance) + javax/naming (CompareToEqualsTests) + sun/rmi (RmicDefault) + sun/security/util (OidFormat) + sun/security/x509 + (ExtensibleAlgorithmId,EmailAddressEncoding,AllAttribs) + +2009-01-15 Omair Majid + + * patches/icedtea-a11y-property-change.patch: Removed incorrect patch. + * HACKING: Remove above patch. + * Makefile.am (ICEDTEA_PATCHES): Removed patch. + +2009-01-15 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp + (StackShadowPages): Increase for 64-bit builds. 2009-01-14 Andrew John Hughes diff -r f42c98fdd7f4 -r fb3c68368b7f HACKING --- a/HACKING Mon Jan 19 14:23:34 2009 +0000 +++ b/HACKING Mon Jan 19 14:25:02 2009 +0000 @@ -78,7 +78,6 @@ The following patches are currently appl * icedtea-format-warnings.patch: Fix build failures with -Wformat=1. * icedtea-io_util-overflow.patch: Replace some code to correctly handle overflows. (S6788196) * icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter. -* icedtea-a11y-property-change.patch: Dont fire PropertyChangeEvent if the property hasnt changed. * icedtea-demo-swingapplet.patch: Add missing html file needed to run the demo. * icedtea-6791168.patch: Fix build failure with GCC-4.4 (PR 38725) and compiler warnings. * icedtea-no-precompiled.patch: Don't use precompiled header files in hotspot. diff -r f42c98fdd7f4 -r fb3c68368b7f Makefile.am --- a/Makefile.am Mon Jan 19 14:23:34 2009 +0000 +++ b/Makefile.am Mon Jan 19 14:25:02 2009 +0000 @@ -695,7 +695,6 @@ endif ICEDTEA_PATCHES += \ $(DISTRIBUTION_PATCHES) \ - patches/icedtea-a11y-property-change.patch \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch diff -r f42c98fdd7f4 -r fb3c68368b7f patches/icedtea-a11y-property-change.patch --- a/patches/icedtea-a11y-property-change.patch Mon Jan 19 14:23:34 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ ---- AccessibleContext.java.orig 2008-12-24 11:33:22.000000000 -0500 -+++ openjdk/jdk/src/share/classes/javax/accessibility/AccessibleContext.java 2008-12-24 11:35:29.000000000 -0500 -@@ -736,6 +736,14 @@ - Object oldValue, - Object newValue) { - if (accessibleChangeSupport != null) { -+ -+ if (oldValue == newValue) { -+ return; -+ } -+ if (oldValue != null && newValue != null && oldValue.equals(newValue)) { -+ return; -+ } -+ - if (newValue instanceof PropertyChangeEvent) { - PropertyChangeEvent pce = (PropertyChangeEvent)newValue; - accessibleChangeSupport.firePropertyChange(pce); diff -r f42c98fdd7f4 -r fb3c68368b7f patches/icedtea-samejvm-safe.patch --- a/patches/icedtea-samejvm-safe.patch Mon Jan 19 14:23:34 2009 +0000 +++ b/patches/icedtea-samejvm-safe.patch Mon Jan 19 14:25:02 2009 +0000 @@ -9,4 +9,4 @@ +# -samejvm mode. Only used if the test root (dir containing this file) is +# given to jtreg and the -samejvm argument is used, ignored otherwise +# (meaning all tests are assumed to be same jvm safe). -+samejvmsafe=com/sun/crypto com/sun/management com/sun/media com/sun/security java/beans/beancontext java/beans/PropertyChangeSupport java/beans/Statement java/beans/VetoableChangeSupport java/lang/Boolean java/lang/Byte java/lang/Double java/lang/Float java/lang/Integer java/lang/Long java/lang/Short java/lang/Math java/lang/StrictMath java/lang/String java/lang/Throwable java/lang/instrument java/math java/net/URI java/net/URLDecoder java/net/URLEncoder java/nio/Buffer java/nio/ByteOrder java/nio/MappedByteBuffer java/nio/channels/Channels java/nio/channels/DatagramChannel java/nio/channels/spi java/security/cert java/security/Provider java/text java/util/jar java/util/zip java/util/Array java/util/BitSet java/util/Collection java/util/List javax/crypto/Cipher javax/imageio javax/management/openmbean javax/naming javax/rmi javax/sound sun/net/www/protocol sun/misc sun/nio sun/rmi sun/security/pkcs11 sun/security/rsa sun/security/util sun/security/x509 sun/util ++samejvmsafe=com/sun/crypto com/sun/management com/sun/media com/sun/security java/beans/beancontext java/beans/PropertyChangeSupport java/beans/Statement java/beans/VetoableChangeSupport java/lang/Boolean java/lang/Byte java/lang/Double java/lang/Float java/lang/Integer java/lang/Long java/lang/Short java/lang/Math java/lang/StrictMath java/lang/String java/lang/Throwable java/lang/instrument java/math java/net/URI java/net/URLDecoder java/net/URLEncoder java/nio/Buffer java/nio/ByteOrder java/nio/MappedByteBuffer java/nio/channels/Channels java/nio/channels/DatagramChannel java/nio/channels/spi java/security/cert java/security/Provider java/text java/util/jar java/util/zip java/util/Array java/util/BitSet java/util/Collection java/util/List javax/imageio javax/management/openmbean javax/rmi javax/sound sun/net/www/protocol sun/misc sun/nio sun/security/pkcs11 sun/security/rsa sun/util diff -r f42c98fdd7f4 -r fb3c68368b7f ports/hotspot/src/cpu/zero/vm/globals_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/globals_zero.hpp Mon Jan 19 14:23:34 2009 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/globals_zero.hpp Mon Jan 19 14:25:02 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,27 +28,27 @@ // runtime system. See globals.hpp for details of what they do. // -define_pd_global(bool, ConvertSleepToYield, true); -define_pd_global(bool, ShareVtableStubs, true); -define_pd_global(bool, CountInterpCalls, true); -define_pd_global(bool, NeedsDeoptSuspend, false); +define_pd_global(bool, ConvertSleepToYield, true); +define_pd_global(bool, ShareVtableStubs, true); +define_pd_global(bool, CountInterpCalls, true); +define_pd_global(bool, NeedsDeoptSuspend, false); -define_pd_global(bool, ImplicitNullChecks, true); -define_pd_global(bool, UncommonNullCast, true); +define_pd_global(bool, ImplicitNullChecks, true); +define_pd_global(bool, UncommonNullCast, true); -define_pd_global(intx, CodeEntryAlignment, 32); -define_pd_global(uintx, TLABSize, 0); +define_pd_global(intx, CodeEntryAlignment, 32); +define_pd_global(uintx, TLABSize, 0); #ifdef _LP64 -define_pd_global(uintx, NewSize, ScaleForWordSize(2048 * K)); +define_pd_global(uintx, NewSize, ScaleForWordSize(2048 * K)); #else -define_pd_global(uintx, NewSize, ScaleForWordSize(1024 * K)); +define_pd_global(uintx, NewSize, ScaleForWordSize(1024 * K)); #endif // _LP64 -define_pd_global(intx, InlineFrequencyCount, 100); -define_pd_global(intx, PreInflateSpin, 10); +define_pd_global(intx, InlineFrequencyCount, 100); +define_pd_global(intx, PreInflateSpin, 10); -define_pd_global(intx, StackYellowPages, 2); -define_pd_global(intx, StackRedPages, 1); -define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+3)); +define_pd_global(intx, StackYellowPages, 2); +define_pd_global(intx, StackRedPages, 1); +define_pd_global(intx, StackShadowPages, 3 LP64_ONLY(+3) DEBUG_ONLY(+3)); -define_pd_global(bool, RewriteBytecodes, true); -define_pd_global(bool, RewriteFrequentPairs, true); +define_pd_global(bool, RewriteBytecodes, true); +define_pd_global(bool, RewriteFrequentPairs, true); From gnu_andrew at member.fsf.org Tue Feb 3 04:13:58 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:58 +0000 Subject: changeset in /hg/icedtea6: Fix UNIX sun.nio.ch and shared sun.ni... Message-ID: changeset 913512a256bd in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=913512a256bd description: Fix UNIX sun.nio.ch and shared sun.nio.fs classes. 2009-01-19 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java: (getByIndex(int)): New method. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java: Fixed imports. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipKeyImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipRegistry.java: New files. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java: Fix imports, refer to AsynchronousFileLockImpl instead of FileLockImpl. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java: Fix imports and vararg usage. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java: Fix vararg usage. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java: Fix imports. * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java: Fix imports and vararg usage. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java: Fix imports. * patches/icedtea-nio2.patch: Add new classes. (Unsafe.copyMemory(long,long,long)): Backported. (Unsafe.copyMemory(Object,long,Object,long,long)): Backported. (Unsafe.ARRAY_BYTE_BASE_OFFSET): Likewise. (DatagramChannelImpl.bind(SocketAddress)): Likewise. (DatagramChannelImpl.getLocalAddress()): Likewise. (DatagramChannelImpl.getOption(SocketOption)): Likewise. (DatagramChannelImpl.innerJoin(InetAddress,NetworkInterface,InetAddress)): Likewise. (DatagramChannelImpl.join(InetAddress,NetworkInterface)): Likewise. (DatagramChannelImpl.join(InetAddress,NetworkInterface,InetAddress)): Likewise. (DatagramChannelImpl.block(MembershipKeyImpl,InetAddress)): Likewise. (DatagramChannelImpl.unblock(MembershipKeyImpl,InetAddress)): Likewise. (DatagramChannelImpl.drop(MembershipKeyImpl)): Likewise. (Net.getInterface4(FileDescriptor)): Likewise. (Net.getInterface6(FileDescriptor)): Likewise. (Net.inet4FromInt(int)): Likewise. (Net.inet6AsByteArray(InetAddress)): Likewise. (Net.join6(FileDescriptor,byte[],int,byte[])): Likewise. (Net.drop6(FileDescriptor,byte[],int,byte[])): Likewise. (Net.joinOrDrop6(boolean,FileDescriptor,byte[],int,byte[])): Likewise. (Net.block6(FileDescriptor,byte[],int,byte[])): Likewise. (Net.unblock6(FileDescriptor,byte[],int,byte[])): Likewise. (Net.blockOrUnblock6(boolean,FileDescriptor,byte[],int,byte[])): Likewise. (Net.join4(FileDescriptor,int,int,int)): Likewise. (Net.drop4(FileDescriptor,int,int,int)): Likewise. (Net.joinOrDrop4(boolean,FileDescriptor,int,int,int)): Likewise. (Net.block4(FileDescriptor,int,int,int)): Likewise. (Net.unblock4(FileDescriptor,int,int,int)): Likewise. (Net.blockOrUnblock4(boolean,FileDescriptor,int,int,int)): Likewise. (Net.connect(FileDescriptor,InetAddress,int)): Likewise. (Net.connect(ProtocolFamily,FileDescriptor,InetAddress,int)): Likewise. (Net.connect0(boolean,FileDescriptor,InetAddress,int)): Likewise. (FileDispatcher.NO_LOCK)): Likewise. (FileDispatcher.LOCKED)): Likewise. (FileDispatcher.RET_EX_LOCK)): Likewise. (FileDispatcher.INTERRUPTED)): Likewise. (FileDispatcher.size(FileDescriptor)): Likewise. (FileDispatcher.truncate(FileDescriptor, long)): Likewise. (FileDispatcher.force(FileDescriptor, boolean)): Likewise. (FileDispatcher.lock(FileDescriptor, boolean, long, long, boolean)): Likewise. (FileDispatcher.release(FileDescriptor, long, long)): Likewise. (FileDispatcher.force0(FileDescriptor,boolean)): Likewise. (FileDispatcher.truncate0(FileDescriptor, long)): Likewise. (FileDispatcher.size0(FileDescriptor)): Likewise. (FileDispatcher.lock0(FileDescriptor, boolean, long, long, boolean)): Likewise. (FileDispatcher.release0(FileDescriptor, long, long)): Likewise. diffstat: 19 files changed, 1133 insertions(+), 31 deletions(-) ChangeLog | 76 + overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipKeyImpl.java | 224 +++ overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipRegistry.java | 132 ++ overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java | 18 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java | 2 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java | 3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java | 6 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java | 7 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java | 7 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java | 8 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java | 9 patches/icedtea-nio2.patch | 652 +++++++++- diffs (truncated from 1562 to 500 lines): diff -r fb3c68368b7f -r 913512a256bd ChangeLog --- a/ChangeLog Mon Jan 19 14:25:02 2009 +0000 +++ b/ChangeLog Tue Jan 20 00:06:18 2009 +0000 @@ -1,3 +1,79 @@ 2009-01-19 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java: + (getByIndex(int)): New method. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java: + Fixed imports. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipKeyImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipRegistry.java: + New files. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java: + Fix imports, refer to AsynchronousFileLockImpl instead of FileLockImpl. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java: + Fix imports and vararg usage. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractFileStoreSpaceAttributeView.java: + Fix vararg usage. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java: + Fix imports and vararg usage. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/LinuxAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/Port.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java: + Fix imports. + * patches/icedtea-nio2.patch: + Add new classes. + (Unsafe.copyMemory(long,long,long)): Backported. + (Unsafe.copyMemory(Object,long,Object,long,long)): Backported. + (Unsafe.ARRAY_BYTE_BASE_OFFSET): Likewise. + (DatagramChannelImpl.bind(SocketAddress)): Likewise. + (DatagramChannelImpl.getLocalAddress()): Likewise. + (DatagramChannelImpl.getOption(SocketOption)): Likewise. + (DatagramChannelImpl.innerJoin(InetAddress,NetworkInterface,InetAddress)): Likewise. + (DatagramChannelImpl.join(InetAddress,NetworkInterface)): Likewise. + (DatagramChannelImpl.join(InetAddress,NetworkInterface,InetAddress)): Likewise. + (DatagramChannelImpl.block(MembershipKeyImpl,InetAddress)): Likewise. + (DatagramChannelImpl.unblock(MembershipKeyImpl,InetAddress)): Likewise. + (DatagramChannelImpl.drop(MembershipKeyImpl)): Likewise. + (Net.getInterface4(FileDescriptor)): Likewise. + (Net.getInterface6(FileDescriptor)): Likewise. + (Net.inet4FromInt(int)): Likewise. + (Net.inet6AsByteArray(InetAddress)): Likewise. + (Net.join6(FileDescriptor,byte[],int,byte[])): Likewise. + (Net.drop6(FileDescriptor,byte[],int,byte[])): Likewise. + (Net.joinOrDrop6(boolean,FileDescriptor,byte[],int,byte[])): Likewise. + (Net.block6(FileDescriptor,byte[],int,byte[])): Likewise. + (Net.unblock6(FileDescriptor,byte[],int,byte[])): Likewise. + (Net.blockOrUnblock6(boolean,FileDescriptor,byte[],int,byte[])): Likewise. + (Net.join4(FileDescriptor,int,int,int)): Likewise. + (Net.drop4(FileDescriptor,int,int,int)): Likewise. + (Net.joinOrDrop4(boolean,FileDescriptor,int,int,int)): Likewise. + (Net.block4(FileDescriptor,int,int,int)): Likewise. + (Net.unblock4(FileDescriptor,int,int,int)): Likewise. + (Net.blockOrUnblock4(boolean,FileDescriptor,int,int,int)): Likewise. + (Net.connect(FileDescriptor,InetAddress,int)): Likewise. + (Net.connect(ProtocolFamily,FileDescriptor,InetAddress,int)): Likewise. + (Net.connect0(boolean,FileDescriptor,InetAddress,int)): Likewise. + (FileDispatcher.NO_LOCK)): Likewise. + (FileDispatcher.LOCKED)): Likewise. + (FileDispatcher.RET_EX_LOCK)): Likewise. + (FileDispatcher.INTERRUPTED)): Likewise. + (FileDispatcher.size(FileDescriptor)): Likewise. + (FileDispatcher.truncate(FileDescriptor, long)): Likewise. + (FileDispatcher.force(FileDescriptor, boolean)): Likewise. + (FileDispatcher.lock(FileDescriptor, boolean, long, long, boolean)): Likewise. + (FileDispatcher.release(FileDescriptor, long, long)): Likewise. + (FileDispatcher.force0(FileDescriptor,boolean)): Likewise. + (FileDispatcher.truncate0(FileDescriptor, long)): Likewise. + (FileDispatcher.size0(FileDescriptor)): Likewise. + (FileDispatcher.lock0(FileDescriptor, boolean, long, long, boolean)): Likewise. + (FileDispatcher.release0(FileDescriptor, long, long)): Likewise. + 2009-01-19 Andrew John Hughes * generated/sun/nio/ch/SocketOptionRegistry.java: diff -r fb3c68368b7f -r 913512a256bd overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java Mon Jan 19 14:25:02 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java Tue Jan 20 00:06:18 2009 +0000 @@ -42,4 +42,5 @@ public interface JavaNetGetIndexAccess public interface JavaNetGetIndexAccess { int getIndex(NetworkInterface nf); + NetworkInterface getByIndex(int i); } diff -r fb3c68368b7f -r 913512a256bd overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java Mon Jan 19 14:25:02 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java Tue Jan 20 00:06:18 2009 +0000 @@ -25,11 +25,11 @@ package sun.nio.ch; -import java.nio.channels.*; import java.net.SocketAddress; import java.net.InetSocketAddress; import java.io.FileDescriptor; import java.io.IOException; +import java.nio.channels.ClosedChannelException; import java.util.Set; import java.util.HashSet; import java.util.Collections; diff -r fb3c68368b7f -r 913512a256bd overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipKeyImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipKeyImpl.java Tue Jan 20 00:06:18 2009 +0000 @@ -0,0 +1,224 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package sun.nio.ch; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.io.IOException; +import java.util.HashSet; + +import org.classpath.icedtea.java.nio.channels.MembershipKey; +import org.classpath.icedtea.java.nio.channels.MulticastChannel; + +/** + * MembershipKey implementation. + */ + +class MembershipKeyImpl + extends MembershipKey +{ + private final MulticastChannel ch; + private final InetAddress group; + private final NetworkInterface interf; + private final InetAddress source; + + // true when key is valid + private volatile boolean valid = true; + + // lock used when creating or accessing blockedSet + private Object stateLock = new Object(); + + // set of source addresses that are blocked + private HashSet blockedSet; + + private MembershipKeyImpl(MulticastChannel ch, + InetAddress group, + NetworkInterface interf, + InetAddress source) + { + this.ch = ch; + this.group = group; + this.interf = interf; + this.source = source; + } + + /** + * MembershipKey will additional context for IPv4 membership + */ + static class Type4 extends MembershipKeyImpl { + private final int groupAddress; + private final int interfAddress; + private final int sourceAddress; + + Type4(MulticastChannel ch, + InetAddress group, + NetworkInterface interf, + InetAddress source, + int groupAddress, + int interfAddress, + int sourceAddress) + { + super(ch, group, interf, source); + this.groupAddress = groupAddress; + this.interfAddress = interfAddress; + this.sourceAddress = sourceAddress; + } + + int groupAddress() { + return groupAddress; + } + + int interfaceAddress() { + return interfAddress; + } + + int source() { + return sourceAddress; + } + } + + /** + * MembershipKey will additional context for IPv6 membership + */ + static class Type6 extends MembershipKeyImpl { + private final byte[] groupAddress; + private final int index; + private final byte[] sourceAddress; + + Type6(MulticastChannel ch, + InetAddress group, + NetworkInterface interf, + InetAddress source, + byte[] groupAddress, + int index, + byte[] sourceAddress) + { + super(ch, group, interf, source); + this.groupAddress = groupAddress; + this.index = index; + this.sourceAddress = sourceAddress; + } + + byte[] groupAddress() { + return groupAddress; + } + + int index() { + return index; + } + + byte[] source() { + return sourceAddress; + } + } + + public boolean isValid() { + return valid; + } + + // package-private + void invalidate() { + valid = false; + } + + public void drop() throws IOException { + // delegate to channel + ((DatagramChannelImpl)ch).drop(this); + } + + + public MulticastChannel channel() { + return ch; + } + + + public InetAddress group() { + return group; + } + + + public NetworkInterface networkInterface() { + return interf; + } + + + public InetAddress sourceAddress() { + return source; + } + + + public MembershipKey block(InetAddress toBlock) + throws IOException + { + if (source != null) + throw new IllegalStateException("key is source-specific"); + + synchronized (stateLock) { + if ((blockedSet != null) && blockedSet.contains(toBlock)) { + // already blocked, nothing to do + return this; + } + + ((DatagramChannelImpl)ch).block(this, toBlock); + + // created blocked set if required and add source address + if (blockedSet == null) + blockedSet = new HashSet(); + blockedSet.add(toBlock); + } + return this; + } + + + public MembershipKey unblock(InetAddress toUnblock) + throws IOException + { + synchronized (stateLock) { + if ((blockedSet == null) || !blockedSet.contains(toUnblock)) + throw new IllegalStateException("not blocked"); + + ((DatagramChannelImpl)ch).unblock(this, toUnblock); + + blockedSet.remove(toUnblock); + } + return this; + } + + + public String toString() { + StringBuilder sb = new StringBuilder(64); + sb.append('<'); + sb.append(group.getHostAddress()); + sb.append(','); + sb.append(interf.getName()); + if (source != null) { + sb.append(','); + sb.append(source.getHostAddress()); + } + sb.append('>'); + return sb.toString(); + } +} diff -r fb3c68368b7f -r 913512a256bd overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipRegistry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/MembershipRegistry.java Tue Jan 20 00:06:18 2009 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package sun.nio.ch; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.util.*; + +import org.classpath.icedtea.java.nio.channels.MembershipKey; + +/** + * Simple registry of membership keys for a MulticastChannel. + * + * Instances of this object are not safe by multiple concurrent threads. + */ + +class MembershipRegistry { + + // map multicast group to keys + private Map> groups = null; + + MembershipRegistry() { + } + + /** + * Checks registry for membership of the group on the given + * network interface. + */ + MembershipKey checkMembership(InetAddress group, NetworkInterface interf, + InetAddress source) + { + if (groups != null) { + List keys = groups.get(group); + if (keys != null) { + for (MembershipKeyImpl key: keys) { + if (key.networkInterface().equals(interf)) { + // already a member to receive all packets so return + // existing key or detect conflict + if (source == null) { + if (key.sourceAddress() == null) + return key; + throw new IllegalStateException("Already a member to receive all packets"); + } + + // already have source-specific membership so return key + // or detect conflict + if (key.sourceAddress() == null) + throw new IllegalStateException("Already have source-specific membership"); + if (source.equals(key.sourceAddress())) + return key; + } + } + } + } + return null; + } + + /** + * Add membership to the registry, returning a new membership key. + */ + void add(MembershipKeyImpl key) { + InetAddress group = key.group(); + List keys; + if (groups == null) { + groups = new HashMap>(); + keys = null; + } else { + keys = groups.get(group); + } + if (keys == null) { + keys = new LinkedList(); + groups.put(group, keys); + } + keys.add(key); + } + + /** + * Remove a key from the registry + */ + void remove(MembershipKeyImpl key) { + InetAddress group = key.group(); + List keys = groups.get(group); + if (keys != null) { + Iterator i = keys.iterator(); + while (i.hasNext()) { + if (i.next() == key) { + i.remove(); + break; + } + } + if (keys.isEmpty()) { + groups.remove(group); + } + } + } + + /** + * Invalidate all keys in the registry + */ + void invalidateAll() { + if (groups != null) { + for (InetAddress group: groups.keySet()) { + for (MembershipKeyImpl key: groups.get(group)) { + key.invalidate(); + } + } + } + } +} diff -r fb3c68368b7f -r 913512a256bd overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java Mon Jan 19 14:25:02 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java Tue Jan 20 00:06:18 2009 +0000 @@ -25,13 +25,21 @@ package sun.nio.ch; -import java.nio.channels.*; import java.util.concurrent.*; import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousCloseException; +import java.nio.channels.ClosedChannelException; +import java.nio.channels.NonReadableChannelException; +import java.nio.channels.NonWritableChannelException; import java.security.AccessController; import java.security.PrivilegedAction; import java.io.FileDescriptor; import java.io.IOException; + +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.CompletionHandler; +import org.classpath.icedtea.java.nio.channels.FileLock; +import org.classpath.icedtea.java.nio.channels.ShutdownChannelGroupException; /** * "Portable" implementation of AsynchronousFileChannel for use on operating @@ -60,7 +68,7 @@ public class SimpleAsynchronousFileChann } From gnu_andrew at member.fsf.org Tue Feb 3 04:13:59 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:59 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset 721c79ccc804 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=721c79ccc804 description: Merge. diffstat: 18 files changed, 678 insertions(+), 95 deletions(-) ChangeLog | 33 + IcedTeaPlugin.cc | 2 plugin/icedtea/sun/applet/PluginAppletViewer.java | 12 plugin/icedtea/sun/applet/PluginMain.java | 22 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 34 + rt/net/sourceforge/jnlp/security/AccessWarningPane.java | 34 + rt/net/sourceforge/jnlp/security/AppletWarningPane.java | 6 rt/net/sourceforge/jnlp/security/CertWarningPane.java | 27 - rt/net/sourceforge/jnlp/security/CertsInfoPane.java | 4 rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java | 119 +++++ rt/net/sourceforge/jnlp/security/MoreInfoPane.java | 30 - rt/net/sourceforge/jnlp/security/SecurityDialogUI.java | 32 - rt/net/sourceforge/jnlp/security/SecurityWarningDialog.java | 50 +- rt/net/sourceforge/jnlp/security/SingleCertInfoPane.java | 6 rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 222 ++++++++++ rt/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 18 rt/net/sourceforge/jnlp/tools/CertVerifier.java | 92 ++++ rt/net/sourceforge/jnlp/tools/JarSigner.java | 30 + diffs (truncated from 1216 to 500 lines): diff -r 913512a256bd -r 721c79ccc804 ChangeLog --- a/ChangeLog Tue Jan 20 00:06:18 2009 +0000 +++ b/ChangeLog Tue Jan 20 09:44:16 2009 +0000 @@ -74,6 +74,39 @@ 2009-01-19 Andrew John Hughes + * IcedTeaPlugin.cc: Add "Java" in the plugin description string. + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Change the way the + image was searched locally. + * plugin/icedtea/sun/applet/PluginMain.java: Install a custom SSL trust + manager. + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Cache file names + from jars. + * rt/net/sourceforge/jnlp/security/AccessWarningPane.java: Accept + CertVerifier as an additional argument. + * rt/net/sourceforge/jnlp/security/AppletWarningPane.java: Same. + * rt/net/sourceforge/jnlp/security/CertWarningPane.java: Same. + * rt/net/sourceforge/jnlp/security/CertsInfoPane.java: Same. + * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java: New file. + Implements information gathering functions used by various prompt dialogs. + * rt/net/sourceforge/jnlp/security/MoreInfoPane.java: Accept CertVerifier + as an additional argument. + * rt/net/sourceforge/jnlp/security/SecurityDialogUI.java: Same. + * rt/net/sourceforge/jnlp/security/SecurityWarningDialog.java: Use the new + common CertVerifier interface to gather information. + * rt/net/sourceforge/jnlp/security/SingleCertInfoPane.java: Accept + CertVerifier as an additional argument. + * rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: + Customized trustmanager that can temporarily trust certificates on the + fly. + * rt/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Accept + CertVerifier as an additional argument. + * rt/net/sourceforge/jnlp/tools/CertVerifier.java: New common interface + that all security related dialogs now query for certificate info (jar and + https). + * rt/net/sourceforge/jnlp/tools/JarSigner.java: Implement the new + CertVerifier verifier interface. + 2009-01-19 Andrew John Hughes * generated/sun/nio/ch/SocketOptionRegistry.java: diff -r 913512a256bd -r 721c79ccc804 IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Tue Jan 20 00:06:18 2009 +0000 +++ b/IcedTeaPlugin.cc Tue Jan 20 09:44:16 2009 +0000 @@ -275,7 +275,7 @@ inline long get_time_in_s() #define PLUGIN_CHECK(message, result) #endif -#define PLUGIN_NAME "IcedTea Web Browser Plugin" +#define PLUGIN_NAME "IcedTea Java Web Browser Plugin" #define PLUGIN_DESCRIPTION "The " PLUGIN_NAME PLUGIN_VERSION " executes Java applets." #define PLUGIN_MIME_DESC \ "application/x-java-vm:class,jar:IcedTea;" \ diff -r 913512a256bd -r 721c79ccc804 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Jan 20 00:06:18 2009 +0000 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Jan 20 09:44:16 2009 +0000 @@ -176,7 +176,7 @@ import sun.misc.Ref; AccessController.doPrivileged(new PrivilegedAction() { public Object run() { try { - panel = new NetxPanel(doc, atts, true); + panel = new NetxPanel(doc, atts, false); AppletViewerPanel.debug("Using NetX panel"); PluginDebug.debug(atts.toString()); } catch (Exception ex) { @@ -612,8 +612,14 @@ import sun.misc.Ref; // try to fetch it locally if (panel instanceof NetxPanel) { + URL localURL = null; - localURL = ((NetxPanel) panel).getAppletClassLoader().getResource(originalURL.substring(codeBase.length())); + + String resourceName = originalURL.substring(codeBase.length()); + JNLPClassLoader loader = (JNLPClassLoader) ((NetxPanel) panel).getAppletClassLoader(); + + if (loader.resourceAvailableLocally(resourceName)) + localURL = loader.getResource(resourceName); url = localURL != null ? localURL : url; } @@ -630,7 +636,7 @@ import sun.misc.Ref; return ref; } } catch (Exception e) { - System.err.println("Error occurred wgen trying to fetch image:"); + System.err.println("Error occurred when trying to fetch image:"); e.printStackTrace(); return null; } diff -r 913512a256bd -r 721c79ccc804 plugin/icedtea/sun/applet/PluginMain.java --- a/plugin/icedtea/sun/applet/PluginMain.java Tue Jan 20 00:06:18 2009 +0000 +++ b/plugin/icedtea/sun/applet/PluginMain.java Tue Jan 20 09:44:16 2009 +0000 @@ -33,6 +33,14 @@ import java.net.Socket; import java.net.Socket; import java.util.Enumeration; import java.util.Properties; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; + +import javax.net.ssl.HttpsURLConnection; + +import net.sourceforge.jnlp.security.VariableX509TrustManager; /** * The main entry point into PluginAppletViewer. @@ -152,7 +160,19 @@ public class PluginMain // INSTALL THE PROPERTY LIST System.setProperties(avProps); - // REMIND: Create and install a socket factory! + + try { + SSLSocketFactory sslSocketFactory; + SSLContext context = SSLContext.getInstance("SSL"); + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; + context.init(null, trust, null); + sslSocketFactory = context.getSocketFactory(); + + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); + } catch (Exception e) { + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); + e.printStackTrace(); + } } static boolean messageAvailable() { diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Jan 20 09:44:16 2009 +0000 @@ -29,7 +29,6 @@ import java.security.Permission; import java.security.Permission; import java.security.PermissionCollection; import java.security.Permissions; -import java.security.Policy; import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Enumeration; @@ -38,6 +37,7 @@ import java.util.List; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.TreeSet; import java.util.Vector; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -131,7 +131,11 @@ public class JNLPClassLoader extends URL private boolean signing = false; + /** ArrayList containing jar indexes for various jars available to this classloader */ private ArrayList jarIndexes = new ArrayList(); + + /** File entries in the jar files available to this classloader */ + private TreeSet jarEntries = new TreeSet(); /** * Create a new JNLPClassLoader from the specified file. @@ -478,7 +482,6 @@ public class JNLPClassLoader extends URL // transfer the Jars waitForJars(jars); - for (int i=0; i < jars.size(); i++) { JARDesc jar = (JARDesc) jars.get(i); @@ -488,8 +491,23 @@ public class JNLPClassLoader extends URL File localFile = tracker.getCacheFile(jar.getLocation()); try { URL location = jar.getLocation(); // non-cacheable, use source location - if (localFile != null) + if (localFile != null) { location = localFile.toURL(); // cached file + + // This is really not the best way.. but we need some way for + // PluginAppletViewer::getCachedImageRef() to check if the image + // is available locally, and it cannot use getResources() because + // that prefetches the resource, which confuses MediaTracker.waitForAll() + // which does a wait(), waiting for notification (presumably + // thrown after a resource is fetched). This bug manifests itself + // particularly when using The FileManager applet from Webmin. + + JarFile jarFile = new JarFile(localFile); + Enumeration e = jarFile.entries(); + while (e.hasMoreElements()) + jarEntries.add(((JarEntry) e.nextElement()).getName()); + + } addURL(location); @@ -829,6 +847,16 @@ public class JNLPClassLoader extends URL return resources.elements(); } + + /** + * Returns if the specified resource is available locally from a cached jar + * + * @param s The name of the resource + * @return Whether or not the resource is available locally + */ + public boolean resourceAvailableLocally(String s) { + return jarEntries.contains(s); + } /** * Adds whatever resources have already been downloaded in the diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/AccessWarningPane.java --- a/rt/net/sourceforge/jnlp/security/AccessWarningPane.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/security/AccessWarningPane.java Tue Jan 20 09:44:16 2009 +0000 @@ -37,14 +37,28 @@ exception statement from your version. package net.sourceforge.jnlp.security; -import java.awt.*; -import javax.swing.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import java.net.URL; + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingConstants; import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.tools.CertVerifier; /** * Provides the look and feel for a SecurityWarningDialog. These dialogs are @@ -59,12 +73,12 @@ public class AccessWarningPane extends S JCheckBox alwaysAllow; Object[] extras; - public AccessWarningPane(JComponent x) { - super(x); - } - - public AccessWarningPane(JComponent x, Object[] extras) { - super(x); + public AccessWarningPane(JComponent x, CertVerifier certVerifier) { + super(x, certVerifier); + } + + public AccessWarningPane(JComponent x, Object[] extras, CertVerifier certVerifier) { + super(x, certVerifier); this.extras = extras; } diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/AppletWarningPane.java --- a/rt/net/sourceforge/jnlp/security/AppletWarningPane.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/security/AppletWarningPane.java Tue Jan 20 09:44:16 2009 +0000 @@ -50,10 +50,12 @@ import javax.swing.JLabel; import javax.swing.JLabel; import javax.swing.JPanel; +import net.sourceforge.jnlp.tools.CertVerifier; + public class AppletWarningPane extends SecurityDialogUI { - public AppletWarningPane(JComponent x) { - super(x); + public AppletWarningPane(JComponent x, CertVerifier certVerifier) { + super(x, certVerifier); } protected void installComponents() { diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/CertWarningPane.java --- a/rt/net/sourceforge/jnlp/security/CertWarningPane.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/security/CertWarningPane.java Tue Jan 20 09:44:16 2009 +0000 @@ -37,18 +37,31 @@ exception statement from your version. package net.sourceforge.jnlp.security; -import java.awt.*; -import javax.swing.*; - - +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; import java.security.cert.Certificate; import java.security.cert.X509Certificate; + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingConstants; import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.PluginBridge; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.tools.CertVerifier; import net.sourceforge.jnlp.tools.KeyTool; /** @@ -63,8 +76,8 @@ public class CertWarningPane extends Sec JCheckBox alwaysTrust; - public CertWarningPane(JComponent x) { - super(x); + public CertWarningPane(JComponent x, CertVerifier certVerifier) { + super(x, certVerifier); } /** diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/CertsInfoPane.java --- a/rt/net/sourceforge/jnlp/security/CertsInfoPane.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/security/CertsInfoPane.java Tue Jan 20 09:44:16 2009 +0000 @@ -76,8 +76,8 @@ public class CertsInfoPane extends Secur private String[] columnNames = { "Field", "Value" }; protected ArrayList certsData; - public CertsInfoPane(JComponent x) { - super(x); + public CertsInfoPane(JComponent x, CertVerifier certVerifier) { + super(x, certVerifier); } /** diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java Tue Jan 20 09:44:16 2009 +0000 @@ -0,0 +1,119 @@ +/* VariableX509TrustManager.java + Copyright (C) 2009 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. +*/ + +package net.sourceforge.jnlp.security; + +import java.security.cert.CertPath; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.ArrayList; + +import net.sourceforge.jnlp.tools.CertVerifier; + +public class HttpsCertVerifier implements CertVerifier { + + private VariableX509TrustManager tm; + private X509Certificate[] chain; + private String authType; + + public HttpsCertVerifier(VariableX509TrustManager tm, X509Certificate[] chain, String authType) { + this.tm = tm; + this.chain = chain; + this.authType = authType; + } + + public boolean getAlreadyTrustPublisher() { + try { + tm.checkServerTrusted(chain, authType, true); + return true; + } catch (CertificateException ce) { + return false; + } + } + + public ArrayList getCerts() { + + ArrayList list = new ArrayList(); + for (int i=0; i < chain.length; i++) + list.add(chain[i]); + + ArrayList certPaths = new ArrayList(); + + try { + certPaths.add(CertificateFactory.getInstance("X.509").generateCertPath(list)); + } catch (CertificateException ce) { + ce.printStackTrace(); + + // carry on + } + + return certPaths; + } + + public ArrayList getDetails() { + // TODO Auto-generated method stub + return new ArrayList(); + } + + public Certificate getPublisher() { + // TODO Auto-generated method stub + return null; + } + + public Certificate getRoot() { + // TODO Auto-generated method stub + return null; + } + + public boolean getRootInCacerts() { + // TODO Auto-generated method stub + return false; + } + + public boolean hasSigningIssues() { + // TODO Auto-generated method stub + return false; + } + + public boolean noSigningIssues() { + // TODO Auto-generated method stub + return false; + } + +} diff -r 913512a256bd -r 721c79ccc804 rt/net/sourceforge/jnlp/security/MoreInfoPane.java --- a/rt/net/sourceforge/jnlp/security/MoreInfoPane.java Tue Jan 20 00:06:18 2009 +0000 +++ b/rt/net/sourceforge/jnlp/security/MoreInfoPane.java Tue Jan 20 09:44:16 2009 +0000 @@ -37,15 +37,23 @@ exception statement from your version. package net.sourceforge.jnlp.security; -import java.awt.*; -import javax.swing.*; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; -import net.sourceforge.jnlp.runtime.*; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingConstants; -import java.util.ArrayList; -import java.awt.event.ActionListener; From gnu_andrew at member.fsf.org Tue Feb 3 04:13:59 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:59 +0000 Subject: changeset in /hg/icedtea6: Fix remaining Java files and backport... Message-ID: changeset 050b48f42fb3 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=050b48f42fb3 description: Fix remaining Java files and backport Net.c and RESTARTABLE macro. 2009-01-26 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java: Fix imports. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java: Fix imports and use of varargs. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java: Fix imports. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java: Fix imports and use of varargs. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java: Fix imports. * patches/icedtea-nio2.patch: (FileChannelImpl): Fix imports. (Net.c): Patch to new version with new functions. (nio_util.h): Add RESTARTABLE macro. diffstat: 22 files changed, 898 insertions(+), 47 deletions(-) ChangeLog | 75 - overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java | 1 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java | 15 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java | 4 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java | 10 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java | 6 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java | 7 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java | 9 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java | 9 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java | 1 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java | 6 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java | 13 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java | 3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java | 4 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java | 13 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java | 11 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java | 15 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java | 32 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java | 20 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java | 4 patches/icedtea-nio2.patch | 684 ++++++++++ diffs (truncated from 1408 to 500 lines): diff -r 721c79ccc804 -r 050b48f42fb3 ChangeLog --- a/ChangeLog Tue Jan 20 09:44:16 2009 +0000 +++ b/ChangeLog Mon Jan 26 23:09:32 2009 +0000 @@ -1,4 +1,36 @@ 2009-01-19 Andrew John Hughes +2009-01-26 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java: + Fix imports and use of varargs. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java: + Fix imports and use of varargs. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java: + Fix imports. + * patches/icedtea-nio2.patch: + (FileChannelImpl): Fix imports. + (Net.c): Patch to new version with new functions. + (nio_util.h): Add RESTARTABLE macro. + +2009-01-19 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java: (getByIndex(int)): New method. @@ -75,6 +107,7 @@ 2009-01-19 Andrew John Hughes + * IcedTeaPlugin.cc: Add "Java" in the plugin description string. * plugin/icedtea/sun/applet/PluginAppletViewer.java: Change the way the image was searched locally. @@ -107,7 +140,7 @@ 2009-01-19 Deepak Bhole +2009-01-19 Andrew John Hughes * generated/sun/nio/ch/SocketOptionRegistry.java: * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java: @@ -158,7 +191,7 @@ 2009-01-15 Gary Benson +2009-01-14 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: Extend java.nio.channels.FileChannel to minimise code. @@ -184,13 +217,13 @@ 2009-01-13 Omair Majid +2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: Add missing SharedSecrets files. -2009-01-13 Andrew John Hughes +2009-01-13 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java: @@ -231,7 +264,7 @@ 2009-01-13 Andrew John Hughes +2009-01-12 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, @@ -290,7 +323,7 @@ 2009-01-13 Gary Benson +2009-01-12 Andrew John Hughes Initial import of NIO2 code. * patches/ecj/icedtea-pr261.patch: Moved to general patches. @@ -750,13 +783,13 @@ 2008-12-19 Andrew Haley +2008-12-17 Andrew John Hughes * acinclude.m4: (FIND_RHINO_JAR): Check for js.jar in Gentoo install location too. -2008-12-17 Andrew John Hughes +2008-12-17 Andrew John Hughes * Makefile.am: No need to check again that SYSTEM_GCJ_DIR exists. @@ -769,7 +802,7 @@ 2008-12-17 Andrew John Hughes +2008-12-17 Andrew John Hughes * Makefile.am: Remove use of LIBGCJ_JAR, replacing with @@ -783,7 +816,7 @@ 2008-12-17 Andrew John Hughes +2008-12-17 Andrew John Hughes * Makefile.am: Remove the HotSpot directory while extracting @@ -855,7 +888,7 @@ 2008-12-10 Deepak Bhole +2008-12-09 Andrew John Hughes * Makefile.am: Support use of HGREV. @@ -864,14 +897,14 @@ 2008-12-09 Andrew John Hughes +2008-12-09 Andrew John Hughes * Makefile.am: Properly support --with-openjdk-src-dir. * acinclude.m4: Correct the define for OPENJDK_SRC_DIR. -2008-12-09 Andrew John Hughes +2008-12-09 Andrew John Hughes * Makefile.am: Support downloading from the Mercurial repository. @@ -880,7 +913,7 @@ 2008-12-09 Andrew John Hughes +2008-12-09 Andrew John Hughes * Makefile.am: Make XRender patch wildcard work where @@ -888,7 +921,7 @@ 2008-12-09 Andrew John Hughes +2008-12-09 Andrew John Hughes * Makefile.am: Don't use find to locate the hotspot directory, @@ -957,7 +990,7 @@ 2008-12-04 Matthias Klose +2008-12-04 Andrew John Hughes * Makefile.am: Prefix the call to uname -m with @@ -965,7 +998,7 @@ 2008-12-04 Andrew John Hughes +2008-12-04 Andrew John Hughes * Makefile.am: Prefix make invocations with @@ -1081,7 +1114,7 @@ 2008-12-02 Omair Majid +2008-12-03 Andrew John Hughes Create hierarchical patch space. * patches/icedtea-4486841.patch, @@ -1263,7 +1296,7 @@ 2008-12-02 Lillian Angel +2008-12-02 Andrew John Hughes * patches/icedtea-bytecodeInterpreter.patch, * patches/icedtea-hotspot7-build-fixes.patch: @@ -1282,7 +1315,7 @@ 2008-12-02 Andrew John Hughes +2008-12-01 Andrew John Hughes * patches/icedtea-hotspot-params-cast-size_t.patch, * patches/icedtea-hotspot-use-idx_t.patch, diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java Mon Jan 26 23:09:32 2009 +0000 @@ -27,6 +27,7 @@ package sun.nio.ch; package sun.nio.ch; import java.io.IOException; +import java.nio.channels.Channel; import java.nio.channels.ClosedChannelException; import java.nio.channels.FileChannel; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,14 +25,25 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.file.attribute.*; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedExceptionAction; import java.security.PrivilegedActionException; import java.io.IOException; import java.util.*; + +import org.classpath.icedtea.java.nio.file.ClosedWatchServiceException; +import org.classpath.icedtea.java.nio.file.DirectoryStream; +import org.classpath.icedtea.java.nio.file.FileRef; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.NotDirectoryException; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.StandardWatchEventKind; +import org.classpath.icedtea.java.nio.file.WatchEvent; +import org.classpath.icedtea.java.nio.file.WatchKey; + +import org.classpath.icedtea.java.nio.file.attribute.Attributes; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; /** * Simple WatchService implementation that uses background thread to poll diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,10 +25,11 @@ package sun.nio.fs; -import java.nio.file.FileRef; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; + +import org.classpath.icedtea.java.nio.file.FileRef; /** * File type detector that uses the GNOME I/O library or the deprecated diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java Mon Jan 26 23:09:32 2009 +0000 @@ -30,6 +30,8 @@ import java.io.IOException; import java.io.IOException; import sun.misc.Unsafe; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributeView; import static sun.nio.fs.UnixNativeDispatcher.*; @@ -105,7 +107,7 @@ class LinuxDosFileAttributeView } - public Map readAttributes(String first, String[] rest) + public Map readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest); diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,13 +25,19 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.file.attribute.*; import java.io.IOException; import java.util.*; import java.security.AccessController; import sun.security.action.GetPropertyAction; import static sun.nio.fs.LinuxNativeDispatcher.*; + +import org.classpath.icedtea.java.nio.file.FileStore; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.WatchService; + +import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.NamedAttributeView; /** * Linux implementation of FileSystem diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,11 +25,15 @@ package sun.nio.fs; -import java.nio.file.*; import java.nio.ByteBuffer; import java.io.IOException; import java.util.*; import sun.misc.Unsafe; + +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.FileChannel; + +import org.classpath.icedtea.java.nio.file.FileSystemException; import static sun.nio.fs.UnixConstants.*; import static sun.nio.fs.LinuxNativeDispatcher.*; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,12 +25,17 @@ package sun.nio.fs; -import java.nio.file.*; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.*; import java.io.IOException; import sun.misc.Unsafe; + +import org.classpath.icedtea.java.nio.file.NotDirectoryException; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.StandardWatchEventKind; +import org.classpath.icedtea.java.nio.file.WatchEvent; +import org.classpath.icedtea.java.nio.file.WatchKey; import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,8 +25,6 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.channels.*; import java.io.FileDescriptor; import java.util.Set; @@ -35,6 +33,13 @@ import sun.nio.ch.SimpleAsynchronousFile import sun.nio.ch.SimpleAsynchronousFileChannelImpl; import sun.misc.SharedSecrets; import sun.misc.JavaIOFileDescriptorAccess; + +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.FileChannel; + +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.StandardOpenOption; import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,12 +25,19 @@ package sun.nio.fs; -import java.nio.file.*; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.ExecutionException; import com.sun.nio.file.ExtendedCopyOption; + +import org.classpath.icedtea.java.nio.file.AtomicMoveNotSupportedException; +import org.classpath.icedtea.java.nio.file.CopyOption; +import org.classpath.icedtea.java.nio.file.DirectoryNotEmptyException; +import org.classpath.icedtea.java.nio.file.FileAlreadyExistsException; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.LinkPermission; +import org.classpath.icedtea.java.nio.file.StandardCopyOption; import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java Mon Jan 26 23:09:32 2009 +0000 @@ -32,6 +32,7 @@ import java.io.IOException; import java.io.IOException; import static sun.nio.fs.UnixNativeDispatcher.*; +import org.classpath.icedtea.java.nio.file.ClosedDirectoryStreamException; import org.classpath.icedtea.java.nio.file.DirectoryStream; import org.classpath.icedtea.java.nio.file.Path; diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,8 +25,12 @@ package sun.nio.fs; -import java.nio.file.*; import java.io.IOException; + +import org.classpath.icedtea.java.nio.file.AccessDeniedException; +import org.classpath.icedtea.java.nio.file.FileAlreadyExistsException; +import org.classpath.icedtea.java.nio.file.FileSystemException; +import org.classpath.icedtea.java.nio.file.NoSuchFileException; /** * Internal exception thrown by native methods when error detected. diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java Mon Jan 26 23:09:32 2009 +0000 @@ -29,7 +29,16 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit; import java.io.IOException; +import org.classpath.icedtea.java.nio.file.ProviderMismatchException; + +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileOwnerAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; import static sun.nio.fs.UnixNativeDispatcher.*; @@ -199,7 +208,7 @@ class UnixFileAttributeViews { } - public Map readAttributes(String first, String[] rest) + public Map readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest); @@ -349,7 +358,7 @@ class UnixFileAttributeViews { } - public Map readAttributes(String first, String[] rest) + public Map readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest); diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java Mon Jan 26 23:09:32 2009 +0000 @@ -31,6 +31,9 @@ import java.util.HashSet; import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; /** * Unix implementation of PosixFileAttributes. diff -r 721c79ccc804 -r 050b48f42fb3 overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java From ahughes at redhat.com Tue Feb 3 04:13:59 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:13:59 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset 514ec9ce7cae in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=514ec9ce7cae description: Merge. diffstat: 76 files changed, 1371 insertions(+), 896 deletions(-) .hgtags | 2 ChangeLog | 275 ++++++++++ HACKING | 1 INSTALL | 4 Makefile.am | 211 ------- NEWS | 8 README | 14 acinclude.m4 | 76 -- configure.ac | 35 - patches/icedtea-awt-window-size.patch | 4 patches/icedtea-cc-interp-jvmti.patch | 12 patches/icedtea-visualvm.patch | 26 plugin/icedtea/sun/applet/AppletSecurityContextManager.java | 38 + plugin/icedtea/sun/applet/PluginAppletSecurityContext.java | 3 plugin/icedtea/sun/applet/PluginAppletViewer.java | 39 + plugin/icedtea/sun/applet/PluginCallRequestFactory.java | 38 + plugin/icedtea/sun/applet/PluginClassLoader.java | 38 + plugin/icedtea/sun/applet/PluginDebug.java | 38 + plugin/icedtea/sun/applet/PluginException.java | 38 + plugin/icedtea/sun/applet/PluginMain.java | 37 + plugin/icedtea/sun/applet/PluginMessageConsumer.java | 38 + plugin/icedtea/sun/applet/PluginMessageHandlerWorker.java | 38 + plugin/icedtea/sun/applet/PluginStreamHandler.java | 38 + plugin/icedtea/sun/applet/RequestQueue.java | 40 + ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 32 + ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 8 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp | 27 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.cpp | 4 ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp | 4 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 9 ports/hotspot/src/share/vm/includeDB_shark | 2 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 4 ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 25 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 24 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 98 +++ ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp | 2 ports/hotspot/src/share/vm/shark/sharkEntry.cpp | 24 ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 20 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 24 ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 2 ports/hotspot/src/share/vm/shark/shark_globals.hpp | 3 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioClip.java | 56 -- pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioMuteControl.java | 73 -- pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPlaybackLine.java | 45 + pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPort.java | 59 -- pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java | 52 - pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourcePort.java | 4 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetPort.java | 6 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioVolumeControl.java | 24 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/Stream.java | 17 pulseaudio/src/native/org_classpath_icedtea_pulseaudio_EventLoop.c | 66 -- pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c | 10 pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c | 14 pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c | 64 ++ pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java | 2 pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java | 10 pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineTest.java | 20 pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourcePortTest.java | 5 pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetPortTest.java | 5 rt/net/sourceforge/jnlp/DefaultLaunchHandler.java | 2 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 2 rt/net/sourceforge/jnlp/security/AccessWarningPane.java | 1 rt/net/sourceforge/jnlp/security/AppletWarningPane.java | 1 rt/net/sourceforge/jnlp/security/CertVerifier.java | 92 +++ rt/net/sourceforge/jnlp/security/CertWarningPane.java | 39 - rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java | 82 ++ rt/net/sourceforge/jnlp/security/MoreInfoPane.java | 1 rt/net/sourceforge/jnlp/security/SecurityDialogUI.java | 1 rt/net/sourceforge/jnlp/security/SecurityWarningDialog.java | 1 rt/net/sourceforge/jnlp/security/SingleCertInfoPane.java | 1 rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 3 rt/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 2 rt/net/sourceforge/jnlp/tools/CertVerifier.java | 92 --- rt/net/sourceforge/jnlp/tools/KeyTool.java | 1 visualvm.desktop | 9 diffs (truncated from 3618 to 500 lines): diff -r 050b48f42fb3 -r 514ec9ce7cae .hgtags --- a/.hgtags Mon Jan 26 23:09:32 2009 +0000 +++ b/.hgtags Mon Jan 26 23:12:40 2009 +0000 @@ -10,3 +10,5 @@ 871b70407a139c6bd42c200762ee1d302b31168f 871b70407a139c6bd42c200762ee1d302b31168f icedtea6-1.2 3ef9c9c4e70b8204b73fa9b88243f49f59c2a23f icedtea6-1.3 be368b1e3c7dca9b4dfe8e8f40be794ecfbef22e icedtea6-1.3.1 +6c02b699206db299c6bc96d97d31808bf84f042a icedtea6-1.4pre +2b1c03c1e9fa88e453da2ca774dc8900227a2e16 icedtea6-1.4 diff -r 050b48f42fb3 -r 514ec9ce7cae ChangeLog --- a/ChangeLog Mon Jan 26 23:09:32 2009 +0000 +++ b/ChangeLog Mon Jan 26 23:12:40 2009 +0000 @@ -29,6 +29,281 @@ 2009-01-26 Andrew John Hughes + + * configure.ac: Updated to pre-1.5 version. + +2009-01-26 Gary Benson + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::has_special_condition_for_native_trans): New method. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: + (CppInterpreter::native_entry): Correctly handle safepoints + during post-call thread state transition. + +2009-01-22 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: + (CppInterpreter::native_entry): Correctly handle asynchronous + exceptions during post-call thread state transition. + +2009-01-22 Omair Majid + Ioana Ivan + + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioClip.java + (start): Return silently if already started. + (stop): Return silently if already stopped. + +2009-01-22 Deepak Bhole + + * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Use + Hashtable to store classloaders, instead of HashMap (values cannot be + null in HashTable). + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Catch CFE in + addition to CNFE. + +2009-01-22 Andrew Haley + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp (class + ZeroFrame::FrameType): Set ENTRY_FRAME = 0xCAFEBABE. + + * ports/hotspot/src/share/vm/shark/shark_globals.hpp (SHARK_FLAGS): + Add SharkPrintAsmOf. + + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Add comment. + + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Set builder()->sharkEntry. + Use fnmatch() instead of strcmp(). + Generate debugging dumps. + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::code_start, code_limit): Rewrite. + (SharkEntry::setBounds): New. + + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::pointer_constant): New function. + * ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp + (SharkBytecodeTracer::decode_one_word): + use SharkBuilder::pointer_constant. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::sharkEntry): New. + (SharkBuilder::CreateUnimplemented): use SharkBuilder::pointer_constant. + (SharkBuilder::CreateShouldNotReachHere): Likewise. + (MyJITMemoryManager::endFunctionBody): New method. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::check_zero): use SharkBuilder::pointer_constant. + (SharkBlock::check_bounds): Likewise. + (SharkBlock::add_safepoint): Likewise. + (SharkBlock::do_new): Likewise. + (SharkBlock::do_monitorexit): Don't check for null monitor. + + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Add + llvm/ExecutionEngine/JITMemoryManager.h, + llvm/Support/CommandLine.h. + * ports/hotspot/src/share/vm/includeDB_shark (sharkBuilder.hpp): + add sharkEntry.hpp. + +2009-01-22 Lillian Angel + + * NEWS: Updated for release candidate. + +2009-01-22 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: Updated copyright year. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp: Likewise. + +2009-01-22 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp + (print_zero_threads): New debug function. + +2009-01-22 Gary Benson + + * patches/icedtea-cc-interp-jvmti.patch: Reenable thread signalling. + +2009-01-21 Omair Majid + + * patches/icedtea-awt-window-size.patch: Update patch. + +2009-01-21 Omair Majid + + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioClip.java: + Remove unused variables volume and muted. + (PulseAudioClip): Remove variable volume. + (open): Remove muteControl, volume and muted. + (native_setVolume): Rename to native_set_volume. + (native_update_volume): New function. + (isMuted): Remove. + (setMuted): Remove. + (setVolume): Rename to setCachedVolume. + (getVolume): Rename to getCachedVolume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioMuteControl.java: + Remove file. Mute relied on chaning the volume only through the api. That + assumption is invalid as the user can change volume through pulseaudio's + controls. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPlaybackLine.java + (isMuted): Remove. + (setMuted): Remove. + (native_setVolume): Rename to native_set_volume. + (native_update_volume): New function. + (getVolume): Rename to getCachedVolume. + (setVolume): Rename to setCachedVolume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPort.java: + Remove muted and muteControl. Rename volume to cachedVolume. + (PulseAudioPort): Remove muteControl. + (isMuted): Remove function. + (setMuted): Remove. + (native_setVolume): Rename to native_set_volume. + (native_updateVolumeInfo): Rename to native_update_volume. + (setVolume): Rename to setCachedVolume. + (getVolume): Rename to getCachedVolume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java: + Remove muteControl, muted and volume. + (open): Remove muteControl. + (native_setVolume): Rename to native_set_volume. + (native_update_volume): New function. + (isMuted): Remove. + (setMuted): Remove. + (getVolume): Rename to getCachedVolume. + (setVolume): Rename to setCachedVolume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourcePort.java + (native_setVolume): Rename to native_set_volume. + (native_updateVolumeInfo): Rename to native_update_volume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetPort.java + (native_setVolume): Rename to native_set_volume. + (native_updateVolumeInfo): Rename to native_update_volume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioVolumeControl.java + (setValue): Dont check for mute. + (getValue): Query pulseaudio for any change in volume. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/Stream.java: + New variable cachedVolume. + (native_setVolume): Rename to native_set_volume. + (native_update_volume): New function. + (getCachedVolume): New function. + (setCachedVolume): New function. + (update_channels_and_volume): New function. + * pulseaudio/src/native/org_classpath_icedtea_pulseaudio_EventLoop.c + (sink_input_volume_change_complete): Remove. + (sink_input_change_volume): Remove. + (Java_org_classpath_icedtea_pulseaudio_EventLoop_native_1set_1sink_1volume): + Remove. + * pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c + (Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1updateVolumeInfo): + Rename to + Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1update_1volume. + (Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1setVolume): + Rename to + Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1set_1volume. + * pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c + (Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1updateVolumeInfo): + Rename to + Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1update_1volume. + (Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1setVolume): + Rename to + Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1set_1volume. + * pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c + (Java_org_classpath_icedtea_pulseaudio_Stream_native_1setVolume): Rename + to Java_org_classpath_icedtea_pulseaudio_Stream_native_1set_1volume. + (get_sink_input_volume_callback): New function. + (Java_org_classpath_icedtea_pulseaudio_Stream_native_1update_1volume): New + function. + + * pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java + (testSupportedControls): Update to not check for MuteControl. + * pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java + (testVolumeAndMute): Rename to testVolume. Remove test for MuteControl. + * pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineTest.java + (testVolumeAndMute): Likewise. + (testSupportedControls): Update to not check for MuteControl. + * pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourcePortTest.java + (testControls): Update to not check for MuteControl. + * pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetPortTest.java + (testControls): Likewise. + +2009-01-21 Lillian Angel + + * plugin/icedtea/sun/applet/AppletSecurityContextManager.java: Added + copyright header. + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Likewise. + * plugin/icedtea/sun/applet/PluginCallRequestFactory.java: Likewise. + * plugin/icedtea/sun/applet/PluginClassLoader.java: Likewise. + * plugin/icedtea/sun/applet/PluginDebug.java: Likewise. + * plugin/icedtea/sun/applet/PluginException.java: Likewise. + * plugin/icedtea/sun/applet/PluginMain.java: Likewise. + * plugin/icedtea/sun/applet/PluginMessageConsumer.java: Likewise. + * plugin/icedtea/sun/applet/PluginMessageHandlerWorker.java: Likewise. + * plugin/icedtea/sun/applet/PluginStreamHandler.java: Likewise. + * plugin/icedtea/sun/applet/RequestQueue.java: Likewise. + +2009-01-21 Lillian Angel + + * rt/net/sourceforge/jnlp/security/CertVerifier.java: Fixed file name + in GPL header. + * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java: Likewise. + +2009-01-20 Lillian Angel + + * rt/net/sourceforge/jnlp/DefaultLaunchHandler.java: Removed debug + lines. + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Likewise. + * rt/net/sourceforge/jnlp/security/AccessWarningPane.java: Updated + imports. + * rt/net/sourceforge/jnlp/security/AppletWarningPane.java: Updated + imports. + * rt/net/sourceforge/jnlp/security/CertWarningPane.java: Updated + imports, added certVerifier global variable. + (CertWarningPane): Initialized certVerifier. + (installComponents): Added checks to determine if certificate is for + an https site, and set the name/publisher/from variables + appropriately. Also, customized warning pane label for https site. + * rt/net/sourceforge/jnlp/security/HttpsCertVerifier.java: + (getDetails): Implemented. + (addToDetails): Likewise. + (R): Likewise. + (getPublisher): Likewise. + (getRoot): Likewise. + (getRootInCacerts): Likewise. + (hasSigningIssues): Likewise. + (noSigningIssues): Likewise. + * rt/net/sourceforge/jnlp/security/MoreInfoPane.java: Fixed imports. + * rt/net/sourceforge/jnlp/security/SecurityDialogUI.java: Fixed + imports. + * rt/net/sourceforge/jnlp/security/SecurityWarningDialog.java: Fixed + imports. + * rt/net/sourceforge/jnlp/security/SingleCertInfoPane.java: Fixed + imports. + * rt/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Fixed + imports. + * rt/net/sourceforge/jnlp/tools/KeyTool.java: Removed debug lines. + * rt/net/sourceforge/jnlp/security/CertVerifier.java: Moved file + below, here. + * rt/net/sourceforge/jnlp/tools/CertVerifier.java: Removed. + * rt/net/sourceforge/jnlp/security/VariableX509TrustManager.java: + Removed debug lines. + +2009-01-20 Lillian Angel + + * HACKING: Removed visualvm patch. + * INSTALL: Updated to remove visualvm notes. + * Makefile.am: Removed building of netbeans and visualvm. + * README: Updated to remove visualvm notes. + * acinclude.m4: Removed options for netbeans and visualvm. + * configure.ac: Likewise. + * patches/icedtea-visualvm.patch: Removed. + * visualvm.desktop: Removed. + +2009-01-20 Matthias Klose + Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.[ch]pp (i486): Rename + to x86. + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp (fp): Remove PRODUCT + conditional, make the not-PRODUCT bit the default. 2009-01-19 Andrew John Hughes diff -r 050b48f42fb3 -r 514ec9ce7cae HACKING --- a/HACKING Mon Jan 26 23:09:32 2009 +0000 +++ b/HACKING Mon Jan 26 23:12:40 2009 +0000 @@ -54,7 +54,6 @@ The following patches are currently appl * icedtea-tools.patch: Remove DebugHelperHelper and add sources in make/java/awt/Makefile to fix build of jvmti. * icedtea-use-system-tzdata.patch: Use timezone data from the system (PR70/S6593486). * icedtea-version.patch: Replace name and bug URL with IcedTea versions. -* icedtea-visualvm.patch: Patches sources to build with platform8 and profiler3 instead of platform7 and profiler2. * icedtea-webservices.patch: Add applet support. * icedtea-zero-build.patch: Add support for the zero assembler build. * icedtea-shark-build.patch: Add support for building the Shark JIT. diff -r 050b48f42fb3 -r 514ec9ce7cae INSTALL --- a/INSTALL Mon Jan 26 23:09:32 2009 +0000 +++ b/INSTALL Mon Jan 26 23:12:40 2009 +0000 @@ -30,10 +30,6 @@ libjpeg-devel = 6b libjpeg-devel = 6b zlib-devel rhino (can be disabled using --without-rhino) - -For building VisualVM, you will need: -netbeans (harness, platform8, apisupport1, java2, ide9) -jakarta-commons-logging For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 diff -r 050b48f42fb3 -r 514ec9ce7cae Makefile.am --- a/Makefile.am Mon Jan 26 23:09:32 2009 +0000 +++ b/Makefile.am Mon Jan 26 23:12:40 2009 +0000 @@ -4,10 +4,6 @@ OPENJDK_VERSION = b14 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 - -NETBEANS_BASIC_CLUSTER = a7ea855f475fa3a982f094a45c155ab4 -NETBEANS_PROFILER_MD5SUM = ff8e8abc42df6c6749e6b02bcf7bb0a5 -VISUALVM_MD5SUM = 4b55bc623418818793392bb233da2927 if ENABLE_GCJWEBPLUGIN GCJWEBPLUGIN_CLEAN = clean-gcjwebplugin @@ -39,12 +35,6 @@ PULSE_JAVA_NATIVE_SRCDIR = PULSE_JAVA_NATIVE_SRCDIR = PULSE_JAVA_JAVA_SRCDIR = PULSE_JAVA_CLASS_DIR = -endif - -if WITH_VISUALVM -VISUALVM_PATCH = patches/icedtea-visualvm.patch -else -VISUALVM_PATCH = endif if WITH_ALT_HSBUILD @@ -78,8 +68,6 @@ endif endif endif rm -rf cacao - rm -rf visualvm - rm -rf netbeans rm -f jni-common.o install: @@ -93,13 +81,13 @@ install: clean-tools-jar clean-shared-objects \ clean-copy clean-hotspot-tools clean-rt $(GCJWEBPLUGIN_CLEAN) \ $(ICEDTEAPLUGIN_CLEAN) hotspot hotspot-helper clean-extra \ - clean-jtreg clean-jtreg-reports clean-visualvm clean-nbplatform + clean-jtreg clean-jtreg-reports EXTRA_DIST = rt generated \ patches/* \ gcjwebplugin.cc tools-copy contrib ports \ extra overlays \ - javaws.png javaws.desktop visualvm.desktop \ + javaws.png javaws.desktop \ jconsole.desktop policytool.desktop \ test/jtreg \ IcedTeaPlugin.cc \ @@ -316,30 +304,6 @@ else CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz endif -NETBEANS_BASIC_CLUSTER_URL = http://nbi.netbeans.org/files/documents/210/2056/ - -if USE_ALT_NETBEANS_BASIC_CLUSTER_SRC_ZIP - NETBEANS_BASIC_CLUSTER_SRC_ZIP = $(ALT_NETBEANS_BASIC_CLUSTER_SRC_ZIP) -else - NETBEANS_BASIC_CLUSTER_SRC_ZIP = netbeans-6.1-200805300101-basic_cluster-src.zip -endif - -NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ - -if USE_ALT_NETBEANS_PROFILER_SRC_ZIP - NETBEANS_PROFILER_SRC_ZIP = $(ALT_NETBEANS_PROFILER_SRC_ZIP) -else - NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_preview2.tar.gz -endif - -VISUALVM_URL = http://icedtea.classpath.org/visualvm/ - -if USE_ALT_VISUALVM_SRC_ZIP - VISUALVM_SRC_ZIP = $(ALT_VISUALVM_SRC_ZIP) -else - VISUALVM_SRC_ZIP = visualvm-20081031-src.tar.gz -endif - stamps/hgforest.stamp: if OPENJDK_SRC_DIR_FOUND else @@ -417,46 +381,6 @@ endif endif endif endif -if WITH_VISUALVM -if USE_ALT_NETBEANS_BASIC_CLUSTER_SRC_ZIP -else - if ! echo "$(NETBEANS_BASIC_CLUSTER_MD5SUM) $(NETBEANS_BASIC_CLUSTER_SRC_ZIP)" \ - | $(MD5SUM) --check ; \ - then \ - if [ $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) ] ; \ - then \ - mv $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) $(NETBEANS_BASIC_CLUSTER_SRC_ZIP).old ; \ - fi ; \ - $(WGET) $(NETBEANS_BASIC_CLUSTER_URL)$(NETBEANS_BASIC_CLUSTER_SRC_ZIP) \ - -O $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) ; \ - fi -endif -if USE_ALT_NETBEANS_PROFILER_SRC_ZIP -else - if ! echo "$(NETBEANS_PROFILER_MD5SUM) $(NETBEANS_PROFILER_SRC_ZIP)" \ - | $(MD5SUM) --check ; \ - then \ - if [ $(NETBEANS_PROFILER_SRC_ZIP) ] ; \ - then \ - mv $(NETBEANS_PROFILER_SRC_ZIP) $(NETBEANS_PROFILER_SRC_ZIP).old ; \ - fi ; \ - $(WGET) $(NETBEANS_PROFILER_URL)$(NETBEANS_PROFILER_SRC_ZIP) \ - -O $(NETBEANS_PROFILER_SRC_ZIP) ; \ - fi -endif -if USE_ALT_VISUALVM_SRC_ZIP -else - if ! echo "$(VISUALVM_MD5SUM) $(VISUALVM_SRC_ZIP)" \ - | $(MD5SUM) --check ; \ - then \ - if [ $(VISUALVM_SRC_ZIP) ] ; \ - then \ - mv $(VISUALVM_SRC_ZIP) $(VISUALVM_SRC_ZIP).old ; \ - fi ; \ - $(WGET) $(VISUALVM_URL)$(VISUALVM_SRC_ZIP) -O $(VISUALVM_SRC_ZIP) ; \ - fi -endif -endif mkdir -p stamps touch stamps/download.stamp @@ -468,11 +392,6 @@ clean-download: rm -f $(OPENJDK_SRC_ZIP) if WITH_CACAO rm -f $(CACAO_SRC_ZIP) -endif -if WITH_VISUALVM - rm -f $(VISUALVM_SRC_ZIP) - rm -f $(NETBEANS_PROFILER_SRC_ZIP) - rm -rf $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) endif # Link ports sources into tree @@ -629,7 +548,6 @@ ICEDTEA_PATCHES += \ patches/icedtea-arch.patch \ patches/icedtea-lc_ctype.patch \ patches/icedtea-messageutils.patch \ - $(VISUALVM_PATCH) \ patches/icedtea-javac-debuginfo.patch \ patches/icedtea-xjc.patch \ patches/icedtea-renderer-crossing.patch \ @@ -735,27 +653,6 @@ if !USE_SYSTEM_CACAO ln -s $$dir cacao/cacao ; \ fi endif -endif -if WITH_VISUALVM - if ! test -d visualvm ; \ - then \ - $(TAR) xf $(VISUALVM_SRC_ZIP) ; \ - fi - if ! test -d netbeans ; \ - then \ - mkdir netbeans ; \ - $(TAR) xf $(NETBEANS_PROFILER_SRC_ZIP) -C netbeans ; \ - $(UNZIP) -q $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) nbbuild/* -d netbeans/ ; \ - mv netbeans/profiler/ netbeans/profiler.cvs/ ; \ - $(UNZIP) -q $(NETBEANS_BASIC_CLUSTER_SRC_ZIP) \ - api.java/* api.progress/* apisupport.harness/* editor.mimelookup/* \ - o.jdesktop.layout/* openide.actions/* openide.awt/* \ - openide.dialogs/* openide.execution/* openide.explorer/* \ - openide.filesystems/* openide.io/* openide.loaders/* \ - openide.modules/* openide.nodes/* openide.text/* openide.util/* \ - openide.windows/* options.api/* projectapi/* queries/* java.platform/* \ - -d netbeans/ ; \ - fi endif if [ ! -e $(abs_top_builddir)/generated ]; then \ cp -a $(abs_top_srcdir)/generated $(abs_top_builddir); \ @@ -1126,7 +1023,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ From ahughes at redhat.com Tue Feb 3 04:14:00 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:14:00 +0000 Subject: changeset in /hg/icedtea6: Add a few additional fixes discovered... Message-ID: changeset 8e91de51da9e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8e91de51da9e description: Add a few additional fixes discovered when doing a full build. 2009-01-27 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: (positionSBC(long)): Renamed from position(long). (truncateSBC(long)): Likewise. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java: Same as for FileChannel, prevents conflict with versions in java.nio.channel.FileChannel. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java, * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java: Add missing imports. * patches/icedtea-nio2.patch: (FileChannelImpl.positionSBC(long)): Added, simply calls position(long). (FileChannelImpl.truncateSBC(long)): Likewise. diffstat: 6 files changed, 51 insertions(+), 8 deletions(-) ChangeLog | 14 +++++ overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java | 4 - overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java | 4 - overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java | 10 +++- overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java | 3 - patches/icedtea-nio2.patch | 24 +++++++++- diffs (140 lines): diff -r 514ec9ce7cae -r 8e91de51da9e ChangeLog --- a/ChangeLog Mon Jan 26 23:12:40 2009 +0000 +++ b/ChangeLog Tue Jan 27 11:54:08 2009 +0000 @@ -1,3 +1,17 @@ 2009-01-26 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: + (positionSBC(long)): Renamed from position(long). + (truncateSBC(long)): Likewise. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java: + Same as for FileChannel, prevents conflict with versions in java.nio.channel.FileChannel. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java: + Add missing imports. + * patches/icedtea-nio2.patch: + (FileChannelImpl.positionSBC(long)): Added, simply calls position(long). + (FileChannelImpl.truncateSBC(long)): Likewise. + 2009-01-26 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, diff -r 514ec9ce7cae -r 8e91de51da9e overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Mon Jan 26 23:12:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Tue Jan 27 11:54:08 2009 +0000 @@ -369,7 +369,7 @@ public abstract class FileChannel * @throws IOException * If some other I/O error occurs */ - public abstract FileChannel position(long newPosition) throws IOException; + public abstract FileChannel positionSBC(long newPosition) throws IOException; /** * Truncates this channel's file to the given size. @@ -398,7 +398,7 @@ public abstract class FileChannel * @throws IOException * If some other I/O error occurs */ - public abstract FileChannel truncate(long size) throws IOException; + public abstract FileChannel truncateSBC(long size) throws IOException; } diff -r 514ec9ce7cae -r 8e91de51da9e overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java Mon Jan 26 23:12:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/SeekableByteChannel.java Tue Jan 27 11:54:08 2009 +0000 @@ -124,7 +124,7 @@ public interface SeekableByteChannel * @throws IOException * If some other I/O error occurs */ - SeekableByteChannel position(long newPosition) throws IOException; + SeekableByteChannel positionSBC(long newPosition) throws IOException; /** * Returns the current size of entity to which this channel is connected. @@ -166,5 +166,5 @@ public interface SeekableByteChannel * @throws IOException * If some other I/O error occurs */ - SeekableByteChannel truncate(long size) throws IOException; + SeekableByteChannel truncateSBC(long size) throws IOException; } diff -r 514ec9ce7cae -r 8e91de51da9e overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java Mon Jan 26 23:12:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisAsynchronousChannelProvider.java Tue Jan 27 11:54:08 2009 +0000 @@ -25,10 +25,16 @@ package sun.nio.ch; -import java.nio.channels.*; import java.util.concurrent.ExecutorService; -import java.net.ProtocolFamily; import java.io.IOException; + +import org.classpath.icedtea.java.net.ProtocolFamily; + +import org.classpath.icedtea.java.nio.channels.AsynchronousChannelGroup; +import org.classpath.icedtea.java.nio.channels.AsynchronousDatagramChannel; +import org.classpath.icedtea.java.nio.channels.AsynchronousSocketChannel; +import org.classpath.icedtea.java.nio.channels.AsynchronousServerSocketChannel; +import org.classpath.icedtea.java.nio.channels.IllegalChannelGroupException; import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider; diff -r 514ec9ce7cae -r 8e91de51da9e overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java --- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java Mon Jan 26 23:12:40 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/ch/SolarisEventPort.java Tue Jan 27 11:54:08 2009 +0000 @@ -25,10 +25,11 @@ package sun.nio.ch; -import java.nio.channels.spi.AsynchronousChannelProvider; import java.util.concurrent.RejectedExecutionException; import java.io.IOException; import sun.misc.Unsafe; + +import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider; /** * AsynchronousChannelGroup implementation based on the Solaris 10 event port diff -r 514ec9ce7cae -r 8e91de51da9e patches/icedtea-nio2.patch --- a/patches/icedtea-nio2.patch Mon Jan 26 23:12:40 2009 +0000 +++ b/patches/icedtea-nio2.patch Tue Jan 27 11:54:08 2009 +0000 @@ -1372,7 +1372,7 @@ diff -Nru openjdk.orig/jdk/src/share/cla } diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java --- openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java 2009-01-20 13:37:15.000000000 +0000 -+++ openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java 2009-01-20 13:45:52.000000000 +0000 ++++ openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java 2009-01-27 02:33:08.000000000 +0000 @@ -32,8 +32,15 @@ import java.io.IOException; import java.nio.ByteBuffer; @@ -1399,6 +1399,28 @@ diff -Nru openjdk.orig/jdk/src/share/cla public class FileChannelImpl extends FileChannel +@@ -316,6 +324,10 @@ + } + } + ++ public FileChannel positionSBC(long newPosition) throws IOException { ++ return position(newPosition); ++ } ++ + public long size() throws IOException { + ensureOpen(); + synchronized (positionLock) { +@@ -386,6 +398,10 @@ + } + } + ++ public FileChannel truncateSBC(long size) throws IOException { ++ return truncate(size); ++ } ++ + public void force(boolean metaData) throws IOException { + ensureOpen(); + int rv = -1; diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java openjdk/jdk/src/share/classes/sun/nio/ch/Net.java --- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-15 17:37:33.000000000 +0000 +++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-19 23:21:37.000000000 +0000 From ahughes at redhat.com Tue Feb 3 04:14:01 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:14:01 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset 12c4111a284c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=12c4111a284c description: Merge. diffstat: 5 files changed, 78 insertions(+), 7 deletions(-) ChangeLog | 21 ++++++++++++++- HACKING | 1 Makefile.am | 3 +- NEWS | 49 +++++++++++++++++++++++++++++++---- patches/icedtea-java2d-dasher.patch | 11 +++++++ diffs (133 lines): diff -r 3cd694b8289b -r 12c4111a284c ChangeLog --- a/ChangeLog Tue Feb 03 12:02:53 2009 +0000 +++ b/ChangeLog Tue Feb 03 12:08:26 2009 +0000 @@ -1,4 +1,4 @@ 2009-01-27 Andrew John Hughes +2009-01-30 Andrew John Hughes * patches/icedtea-nio2.patch: (mapfile-linux): Add new functions in sun.nio.ch.Net. @@ -6,7 +6,26 @@ 2009-01-27 Andrew John Hughes + + * patches/icedtea-java2d-dasher.patch: New patch. Fix interpretation of + dash array elements in BasicStroke. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + * HACKING: Document the above. +2009-01-28 Lillian Angel + + * NEWS: Updated date. + +2009-01-28 Andrew Haley + + * NEWS: Updated. + +2009-01-28 Mark Wielaard + + * NEWS: Updated for 1.4. + 2009-01-27 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: diff -r 3cd694b8289b -r 12c4111a284c HACKING --- a/HACKING Tue Feb 03 12:02:53 2009 +0000 +++ b/HACKING Tue Feb 03 12:08:26 2009 +0000 @@ -82,6 +82,7 @@ The following patches are currently appl * icedtea-no-precompiled.patch: Don't use precompiled header files in hotspot. * icedtea-includedb.patch: Add missing include files. * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). +* icedtea-java2d-dasher.patch: Fix interpretation of dash array elements in BasicStroke (S6793344). The following patches are only applied to OpenJDK6 in IcedTea6: diff -r 3cd694b8289b -r 12c4111a284c Makefile.am --- a/Makefile.am Tue Feb 03 12:02:53 2009 +0000 +++ b/Makefile.am Tue Feb 03 12:08:26 2009 +0000 @@ -614,7 +614,8 @@ ICEDTEA_PATCHES += \ ICEDTEA_PATCHES += \ $(DISTRIBUTION_PATCHES) \ patches/icedtea-demo-swingapplet.patch \ - patches/icedtea-awt-window-size.patch + patches/icedtea-awt-window-size.patch \ + patches/icedtea-java2d-dasher.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r 3cd694b8289b -r 12c4111a284c NEWS --- a/NEWS Tue Feb 03 12:02:53 2009 +0000 +++ b/NEWS Tue Feb 03 12:08:26 2009 +0000 @@ -1,10 +1,49 @@ New in release 1.4 (NOT_YET_RELEASED) -New in release 1.4 (NOT_YET_RELEASED) +New in release 1.4 (2009-01-29) -- Updated to b14 build. -- Upgraded to new Hotspot 14 from 12. +- Security fixes for: + CVE-2008-5360 - Temporary files have guessable file names. + CVE-2008-5350 - Allows to list files within the user home directory. + CVE-2008-5348 - Denial-Of-Service in kerberos authentication. + CVE-2008-5359 - Buffer overflow in image processing. + CVE-2008-5351 - UTF-8 decoder accepts non-shortest form sequences. + CVE-2008-5356 - Font processing vulnerability. + CVE-2008-5353 - Calendar object deserialization allows privilege escalation. + CVE-2008-5354 - Privilege escalation in command line applications. + CVE-2008-5357 - Truetype Font processing vulnerability. + CVE-2008-5352 - Jar200 Decompression buffer overflow. + CVE-2008-5358 - Buffer Overflow in GIF image processing. +- Updated to OpenJDK b14 build. +- Upgraded to new OpenJDK7 Hotspot 14. The old OpenJDK6 Hotspot 11 can + still be configured --with-hotspot-build=original but future versions + will drop support for the old version and only support HS14. Zero + and Shark have been forward ported to HS14 (from HS12). - XRender pipeline support: Java2D are noticably faster and running over a - remote X connection now feels like it is all local. -- Plugin now supports HTTPS sites. + remote X connection feels like it is all local. Build by default + (disable with --disable-xrender). Runtime enabled by running java + -Dsun.java2d.xrender=True (default is to use the old X renderer for now). +- IcedTeaPlugin now supports HTTPS sites and adds a user prompt for + untrusted https certificates. +- Use the ALSA 'default' device. Makes Java play nicer with PulseAudio. +- VisualVM integration has been removed. +- Gervill soft synthesizer integration updated to latest CVS version. +- Integrated jtreg upgraded to 4_0-src-b02-15_oct_2008. +- make check runs much faster now. jtreg -samevm support has been + integrated into the langtools and jdk subsystems. Please package the + test/jtreg-summary.log file with your distribution package so end users + can compare the test results. +- Shark (--enable-shark) now builds on 64 bit platforms, but is a + pre-alpha technology preview and not recommended for use. +- Better support for bootstrapping with different jar programs + (supporting -J options). +- If --with-pkgversion isn't given the short mercurial rev node version + will be used. Package distributors are encouraged to build packages with + --with-pkgversion to uniquely identify their distribution version number + when java -version is run to help distribution specific bug reporting. +- Various freetype font, pisces renderer and awt X window size fixes + to fix visual anomalies. +- Build fixes for gcc 4.3 and 4.4-pre-release. +- Added support for building against a specific openjdk src dir + or hg revision (--with-openjdk-src-dir or --with-hg-revision). - Many other Plugin, Zero, Shark and PulseAudio bug fixes. - Build clean up. diff -r 3cd694b8289b -r 12c4111a284c patches/icedtea-java2d-dasher.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-java2d-dasher.patch Tue Feb 03 12:08:26 2009 +0000 @@ -0,0 +1,11 @@ +--- openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java.orig 2009-01-13 12:14:53.000000000 -0500 ++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2009-01-13 12:15:09.000000000 -0500 +@@ -120,7 +120,7 @@ + + // Normalize so 0 <= phase < dash[0] + int idx = 0; +- dashOn = false; ++ dashOn = true; + int d; + while (phase >= (d = dash[idx])) { + phase -= d; From ahughes at redhat.com Tue Feb 3 04:14:00 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:14:00 +0000 Subject: changeset in /hg/icedtea6: Final fix to get NIO2 to build. Message-ID: changeset 945a4627e256 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=945a4627e256 description: Final fix to get NIO2 to build. 2009-01-27 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: Use org.classpath.icedtea.java.nio.channels.FileChannel. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java: Likewise. * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/META-INF/services/java.nio.file.spi.FileSystemProvider, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/README.txt, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarEntryInfo.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributes.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipEntryInfo.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributes.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributes.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFilePath.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStore.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStream.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystem.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipHeaderConstants.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipPathParser.java, * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipUtils.java: Import NIO2 demo and fix imports. * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java: Use org.classpath.icedtea.java.nio.channels.FileChannel. diffstat: 22 files changed, 3725 insertions(+), 6 deletions(-) ChangeLog | 28 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java | 8 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java | 2 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/META-INF/services/java.nio.file.spi.FileSystemProvider | 1 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/README.txt | 29 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarEntryInfo.java | 44 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributeView.java | 76 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributes.java | 57 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipEntryInfo.java | 76 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributeView.java | 154 + overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributes.java | 93 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributeView.java | 187 + overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributes.java | 125 + overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFilePath.java | 1027 ++++++++++ overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStore.java | 230 ++ overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStream.java | 166 + overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystem.java | 319 +++ overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystemProvider.java | 243 ++ overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipHeaderConstants.java | 75 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipPathParser.java | 308 ++ overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipUtils.java | 481 ++++ overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java | 2 diffs (truncated from 3860 to 500 lines): diff -r d57abf1d1d65 -r 945a4627e256 ChangeLog --- a/ChangeLog Tue Jan 27 11:54:55 2009 +0000 +++ b/ChangeLog Wed Jan 28 00:27:48 2009 +0000 @@ -1,3 +1,31 @@ 2009-01-27 Andrew John Hughes + + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: + Use org.classpath.icedtea.java.nio.channels.FileChannel. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java: + Likewise. + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/META-INF/services/java.nio.file.spi.FileSystemProvider, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/README.txt, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarEntryInfo.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipEntryInfo.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileBasicAttributes.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFilePath.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStore.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileStream.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystem.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipHeaderConstants.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipPathParser.java, + * overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipUtils.java: + Import NIO2 demo and fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java: + Use org.classpath.icedtea.java.nio.channels.FileChannel. + 2009-01-27 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Tue Jan 27 11:54:55 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java Wed Jan 28 00:27:48 2009 +0000 @@ -288,9 +288,9 @@ public abstract class FileChannel * * @since 1.7 */ - public static java.nio.channels.FileChannel open(Path file, - Set options, - FileAttribute... attrs) + public static FileChannel open(Path file, + Set options, + FileAttribute... attrs) throws IOException { FileSystemProvider provider = file.getFileSystem().provider(); @@ -335,7 +335,7 @@ public abstract class FileChannel * * @since 1.7 */ - public static java.nio.channels.FileChannel open(Path file, OpenOption... options) + public static FileChannel open(Path file, OpenOption... options) throws IOException { Set set = new HashSet(options.length); diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java Tue Jan 27 11:54:55 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/spi/FileSystemProvider.java Wed Jan 28 00:27:48 2009 +0000 @@ -26,7 +26,6 @@ package org.classpath.icedtea.java.nio.file.spi; -import java.nio.channels.*; import java.net.URI; import java.util.*; import java.util.concurrent.ExecutorService; @@ -35,6 +34,7 @@ import java.io.IOException; import java.io.IOException; import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.FileChannel; import org.classpath.icedtea.java.nio.file.FileRef; import org.classpath.icedtea.java.nio.file.FileSystem; import org.classpath.icedtea.java.nio.file.FileSystems; diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/META-INF/services/java.nio.file.spi.FileSystemProvider --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/META-INF/services/java.nio.file.spi.FileSystemProvider Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,1 @@ +com.sun.nio.zipfs.ZipFileSystemProvider \ No newline at end of file diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/README.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/README.txt Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,29 @@ +ZipFileSystem is a file system provider that treats the contents of a zip or +JAR file as a read-only file system. + +To deploy the provider you must copy ZipFileSystem.jar into your extensions +directory or else add /demo/nio/ZipFileSystem/ZipFileSystem.jar +to your class path. + +The factory methods defined by the java.nio.file.FileSystems class can be +used to create a FileSystem, eg: + + // use file type detection + Map env = Collections.emptyMap(); + Path jarfile = Path.get("foo.jar"); + FileSystem fs = FileSystems.newFileSystem(jarfile, env); + +-or + + // locate file system by URI + Map env = Collections.emptyMap(); + URI uri = URI.create("zip:///mydir/foo.jar"); + FileSystem fs = FileSystems.newFileSystem(uri, env); + +Once a FileSystem is created then classes in the java.nio.file package +can be used to access files in the zip/JAR file, eg: + + Path mf = fs.getPath("/META-INF/MANIFEST.MF"); + InputStream in = mf.newInputStream(); + + diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarEntryInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarEntryInfo.java Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.sun.nio.zipfs; + +import java.util.Map; +import java.util.Set; + +public class JarEntryInfo extends ZipEntryInfo { + JarEntryInfo(ZipEntryInfo entry){ + super(entry); + } + + Set> entryAttributs; + Set> manifestMainAttrs; +} diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributeView.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributeView.java Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.sun.nio.zipfs; + +import java.io.IOException; +import java.util.*; + +import org.classpath.icedtea.java.nio.file.FileRef; + +public class JarFileAttributeView extends ZipFileAttributeView { + + /** Creates a new instance of ZipFileAttributeView */ + public JarFileAttributeView(FileRef file) { + super(file); + } + + + public String name() { + return "jar"; + } + + public Object getAttribute(String attribute) throws IOException { + JarFileAttributes jfa = readAttributes(); + if (attribute.equals("manifestAttributes")) { + return jfa.getManifestAttributes(); + } + if (attribute.equals("entryAttributes")) { + return jfa.getEntryAttributes(); + } + return super.readAttributes(attribute); + } + + + public JarFileAttributes readAttributes() + throws IOException { + return new JarFileAttributes(super.getBinding()); + } + + + public Map readAttributes(String first, String... rest) throws IOException { + Map result = new HashMap(); + result.putAll(super.readAttributes(first, rest)); + + // FIXME - add manifest and entry attributes if requested + + return Collections.unmodifiableMap(result); + } +} diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributes.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/JarFileAttributes.java Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,57 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.sun.nio.zipfs; + +import java.util.concurrent.*; +import java.io.*; +import java.util.Map; +import java.util.Set; + +import org.classpath.icedtea.java.nio.file.FileRef; + +public class JarFileAttributes extends ZipFileAttributes { + + /** Creates a new instance of ZipFileAttributes */ + public JarFileAttributes(FileRef file) + throws IOException { + super(file); + + } + + public Set> getManifestAttributes() { + return ((JarEntryInfo) ze).manifestMainAttrs; + } + + public Set> getEntryAttributes() { + return ((JarEntryInfo) ze).entryAttributs; + } +} diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipEntryInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipEntryInfo.java Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.sun.nio.zipfs; + +public class ZipEntryInfo { + + byte[] filename; + int compSize; + int size; + byte[] comment; + long crc; + byte[] extraField; + int method; + int extAttrs; + long createTime = -1; + boolean isDirectory; + boolean isOtherFile; + boolean isRegularFile; + boolean isArchiveFile; + long lastAccessTime = -1; + long lastModifiedTime; + long streamOffset; + int versionMadeBy; + ZipEntryInfo(ZipEntryInfo entry){ + this.filename = entry.filename; + this.compSize = entry.compSize; + this.size = entry.size; + this.comment = entry.comment; + this.crc = entry.crc; + this.extraField = entry.extraField; + this.method = entry.method; + this.extAttrs = entry.extAttrs; + this.createTime = entry.createTime; + this.isDirectory = entry.isDirectory; + this.isOtherFile = entry.isOtherFile; + this.isRegularFile = entry.isRegularFile; + this.isArchiveFile = entry.isArchiveFile; + this.lastAccessTime = entry.lastAccessTime; + this.lastModifiedTime = entry.lastModifiedTime; + this.streamOffset = entry.streamOffset; + this.versionMadeBy = entry.versionMadeBy; + + } + ZipEntryInfo(){ + super(); + } +} diff -r d57abf1d1d65 -r 945a4627e256 overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributeView.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/demo/nio/ZipFileSystem/com/sun/nio/zipfs/ZipFileAttributeView.java Wed Jan 28 00:27:48 2009 +0000 @@ -0,0 +1,154 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.sun.nio.zipfs; + +import java.io.IOException; +import java.util.*; + +import org.classpath.icedtea.java.nio.file.FileRef; + +public class ZipFileAttributeView extends ZipFileBasicAttributeView { + + /** Creates a new instance of ZipFileAttributeView */ + public ZipFileAttributeView(FileRef file) { + super(file); + } + + + public String name() { + return "zip"; + } + + public Object getAttribute(String attribute) throws IOException { + ZipFileAttributes zfa = readAttributes(); + if (attribute.equals("comment")) { + return zfa.comment(); + } + if (attribute.equals("compressedSize")) { + return zfa.compressedSize(); + } + if (attribute.equals("crc")) { + return zfa.crc(); + } + if (attribute.equals("extraField")) { + return zfa.extra(); + } + if (attribute.equals("method")) { + return zfa.method(); + } + if (attribute.equals("fileName")) { + return zfa.name(); + } + if (attribute.equals("isArchiveFile")) { + return zfa.isArchiveFile(); + } + if (attribute.equals("versionMadeBy")) { + return zfa.versionMadeBy(); + } + if (attribute.equals("externalAttrs")) { + return zfa.getExternalAttrs(); + } + return super.getAttribute(attribute); + } + + + public Map readAttributes(String first, String... rest) throws IOException { + int rem = rest.length; + String[] attrs = new String[1 + rem]; + attrs[0] = first; + if (rem > 0) + System.arraycopy(rest, 0, attrs, 1, rem); + Map result = new HashMap(); + result.putAll(super.readAttributes(first, rest)); + ZipFileAttributes zfa = readAttributes(); + boolean added = false; + for (String attr : attrs) { + added = addAttribute(result, attr, "comment",zfa.comment()); + if (added) { + continue; + } + added = addAttribute(result, attr, "compressedSize",zfa.compressedSize()); + if (added) { + continue; + } + added = addAttribute(result, attr, "crc",zfa.crc()); + if (added) { + continue; + } + added = addAttribute(result, attr, "extraField",zfa.extra()); + if (added) { + continue; + } From ahughes at redhat.com Tue Feb 3 04:14:01 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:14:01 +0000 Subject: changeset in /hg/icedtea6: Fix JCK issues with NIO2. Message-ID: changeset 3cd694b8289b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3cd694b8289b description: Fix JCK issues with NIO2. 2009-01-27 Andrew John Hughes * patches/icedtea-nio2.patch: (mapfile-linux): Add new functions in sun.nio.ch.Net. (Net.java:setIntOption0(FileDescriptor,boolean,int,int,int)): Renamed to... (Net.java:setIntOption1(FileDescriptor,boolean,int,int,int)): to avoid C collision. (Net.c): Add back java_net_SocketOptions.h, bind0 and connect0 and setIntOption0 and rename existing setIntOption0 to setIntOption1. diffstat: 2 files changed, 122 insertions(+), 33 deletions(-) ChangeLog | 9 ++ patches/icedtea-nio2.patch | 146 ++++++++++++++++++++++++++++++++++---------- diffs (310 lines): diff -r 945a4627e256 -r 3cd694b8289b ChangeLog --- a/ChangeLog Wed Jan 28 00:27:48 2009 +0000 +++ b/ChangeLog Tue Feb 03 12:02:53 2009 +0000 @@ -1,3 +1,12 @@ 2009-01-27 Andrew John Hughes + + * patches/icedtea-nio2.patch: + (mapfile-linux): Add new functions in sun.nio.ch.Net. + (Net.java:setIntOption0(FileDescriptor,boolean,int,int,int)): Renamed to... + (Net.java:setIntOption1(FileDescriptor,boolean,int,int,int)): to avoid C collision. + (Net.c): Add back java_net_SocketOptions.h, bind0 and connect0 and setIntOption0 + and rename existing setIntOption0 to setIntOption1. + 2009-01-27 Andrew John Hughes * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: diff -r 945a4627e256 -r 3cd694b8289b patches/icedtea-nio2.patch --- a/patches/icedtea-nio2.patch Wed Jan 28 00:27:48 2009 +0000 +++ b/patches/icedtea-nio2.patch Tue Feb 03 12:02:53 2009 +0000 @@ -601,7 +601,7 @@ diff -Nru openjdk.orig/jdk/make/java/nio .PHONY: sources diff -Nru openjdk.orig/jdk/make/java/nio/mapfile-linux openjdk/jdk/make/java/nio/mapfile-linux --- openjdk.orig/jdk/make/java/nio/mapfile-linux 2009-01-07 22:08:47.000000000 +0000 -+++ openjdk/jdk/make/java/nio/mapfile-linux 2009-01-07 22:15:04.000000000 +0000 ++++ openjdk/jdk/make/java/nio/mapfile-linux 2009-01-29 01:13:17.000000000 +0000 @@ -20,6 +20,14 @@ Java_sun_nio_ch_EPollArrayWrapper_interrupt; Java_sun_nio_ch_EPollArrayWrapper_offsetofData; @@ -617,7 +617,32 @@ diff -Nru openjdk.orig/jdk/make/java/nio Java_sun_nio_ch_FileChannelImpl_close0; Java_sun_nio_ch_FileChannelImpl_force0; Java_sun_nio_ch_FileChannelImpl_initIDs; -@@ -75,6 +83,74 @@ +@@ -63,11 +71,24 @@ + Java_sun_nio_ch_Net_socket0; + Java_sun_nio_ch_Net_bind; + Java_sun_nio_ch_Net_connect; ++ Java_sun_nio_ch_Net_bind0; ++ Java_sun_nio_ch_Net_connect0; ++ Java_sun_nio_ch_Net_listen; + Java_sun_nio_ch_Net_localPort; + Java_sun_nio_ch_Net_localInetAddress; + Java_sun_nio_ch_Net_getIntOption0; + Java_sun_nio_ch_Net_setIntOption0; + Java_sun_nio_ch_Net_initIDs; ++ Java_sun_nio_ch_Net_isIPv6Available0; ++ Java_sun_nio_ch_Net_joinOrDrop4; ++ Java_sun_nio_ch_Net_blockOrUnblock4; ++ Java_sun_nio_ch_Net_joinOrDrop6; ++ Java_sun_nio_ch_Net_blockOrUnblock6; ++ Java_sun_nio_ch_Net_setInterface4; ++ Java_sun_nio_ch_Net_getInterface4; ++ Java_sun_nio_ch_Net_setInterface6; ++ Java_sun_nio_ch_Net_getInterface6; ++ Java_sun_nio_ch_Net_shutdown; + Java_sun_nio_ch_PollArrayWrapper_interrupt; + Java_sun_nio_ch_PollArrayWrapper_poll0; + Java_sun_nio_ch_ServerSocketChannelImpl_accept0; +@@ -75,6 +96,74 @@ Java_sun_nio_ch_ServerSocketChannelImpl_listen; Java_sun_nio_ch_SocketChannelImpl_checkConnect; Java_sun_nio_ch_SocketChannelImpl_shutdown; @@ -1423,7 +1448,7 @@ diff -Nru openjdk.orig/jdk/src/share/cla int rv = -1; diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java openjdk/jdk/src/share/classes/sun/nio/ch/Net.java --- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-15 17:37:33.000000000 +0000 -+++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-19 23:21:37.000000000 +0000 ++++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java 2009-02-01 00:35:31.000000000 +0000 @@ -30,6 +30,15 @@ import java.net.*; import java.nio.channels.*; @@ -1537,7 +1562,7 @@ diff -Nru openjdk.orig/jdk/src/share/cla + } + + boolean mayNeedConversion = (family == UNSPEC); -+ setIntOption0(fd, mayNeedConversion, key.level(), key.name(), arg); ++ setIntOption1(fd, mayNeedConversion, key.level(), key.name(), arg); + } + + static Object getSocketOption(FileDescriptor fd, ProtocolFamily family, @@ -1569,7 +1594,7 @@ diff -Nru openjdk.orig/jdk/src/share/cla + int level, int opt) + throws IOException; + -+ private static native void setIntOption0(FileDescriptor fd, boolean mayNeedConversion, ++ private static native void setIntOption1(FileDescriptor fd, boolean mayNeedConversion, + int level, int opt, int arg) + throws IOException; + @@ -1920,7 +1945,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/c diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c --- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c 2009-01-26 20:51:08.000000000 +0000 -+++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c 2009-01-26 20:55:17.000000000 +0000 ++++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c 2009-02-01 01:24:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved. @@ -1928,11 +1953,8 @@ diff -Nru openjdk.orig/jdk/src/solaris/n * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it -@@ -37,61 +37,171 @@ - #include "net_util.h" - #include "net_util_md.h" - #include "nio_util.h" --#include "java_net_SocketOptions.h" +@@ -40,58 +40,169 @@ + #include "java_net_SocketOptions.h" #include "nio.h" -#ifdef __linux__ @@ -1943,12 +1965,12 @@ diff -Nru openjdk.orig/jdk/src/solaris/n + */ + +#ifdef __solaris__ ++ ++#ifndef IP_BLOCK_SOURCE -#define IPV6_MULTICAST_IF 17 -#ifndef SO_BSDCOMPAT -#define SO_BSDCOMPAT 14 -+#ifndef IP_BLOCK_SOURCE -+ +#define IP_BLOCK_SOURCE 0x15 +#define IP_UNBLOCK_SOURCE 0x16 +#define IP_ADD_SOURCE_MEMBERSHIP 0x17 @@ -2108,19 +2130,19 @@ diff -Nru openjdk.orig/jdk/src/solaris/n JNIEXPORT void JNICALL -Java_sun_nio_ch_Net_bind(JNIEnv *env, jclass clazz, /* ## Needs rest of PSI gunk */ - jobject fdo, jobject ia, int port) -+Java_sun_nio_ch_Net_bind0(JNIEnv *env, jclass clazz, jboolean preferIPv6, -+ jobject fdo, jobject iao, int port) ++Java_sun_nio_ch_Net_bind(JNIEnv *env, jclass clazz, ++ jobject fdo, jobject iao, int port) { SOCKADDR sa; int sa_len = SOCKADDR_LEN; int rv = 0; - if (NET_InetAddressToSockaddr(env, ia, port, (struct sockaddr *)&sa, &sa_len, JNI_TRUE) != 0) { -+ if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *)&sa, &sa_len, preferIPv6) != 0) { ++ if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *)&sa, &sa_len, JNI_TRUE) != 0) { return; } -@@ -101,27 +211,27 @@ +@@ -101,26 +212,53 @@ } } @@ -2135,8 +2157,9 @@ diff -Nru openjdk.orig/jdk/src/solaris/n -Java_sun_nio_ch_Net_connect(JNIEnv *env, jclass clazz, - jobject fdo, jobject iao, jint port, - jint trafficClass) -+Java_sun_nio_ch_Net_connect0(JNIEnv *env, jclass clazz, jboolean preferIPv6, -+ jobject fdo, jobject iao, jint port) ++Java_sun_nio_ch_Net_connect(JNIEnv *env, jclass clazz, ++ jobject fdo, jobject iao, jint port, ++ jint trafficClass) { SOCKADDR sa; int sa_len = SOCKADDR_LEN; @@ -2144,7 +2167,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n - if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *) &sa, &sa_len, JNI_TRUE) != 0) { + if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *) &sa, -+ &sa_len, preferIPv6) != 0) ++ &sa_len, JNI_TRUE) != 0) + { return IOS_THROWN; } @@ -2153,14 +2176,37 @@ diff -Nru openjdk.orig/jdk/src/solaris/n -#if 0 - if (trafficClass != 0 && ipv6_available()) { /* ## FIX */ - NET_SetTrafficClass((struct sockaddr *)&sa, trafficClass); -- } ++ rv = connect(fdval(env, fdo), (struct sockaddr *)&sa, sa_len); ++ if (rv != 0) { ++ if (errno == EINPROGRESS) { ++ return IOS_UNAVAILABLE; ++ } else if (errno == EINTR) { ++ return IOS_INTERRUPTED; ++ } ++ return handleSocketError(env, errno); ++ } ++ return 1; ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_connect0(JNIEnv *env, jclass clazz, jboolean preferIPv6, ++ jobject fdo, jobject iao, jint port) ++{ ++ SOCKADDR sa; ++ int sa_len = SOCKADDR_LEN; ++ int rv; ++ ++ if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *) &sa, ++ &sa_len, preferIPv6) != 0) ++ { ++ return IOS_THROWN; + } -#endif -#endif -- + rv = connect(fdval(env, fdo), (struct sockaddr *)&sa, sa_len); if (rv != 0) { - if (errno == EINPROGRESS) { -@@ -138,7 +248,7 @@ +@@ -138,7 +276,7 @@ Java_sun_nio_ch_Net_localPort(JNIEnv *env, jclass clazz, jobject fdo) { SOCKADDR sa; @@ -2169,7 +2215,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) { handleSocketError(env, errno); return -1; -@@ -150,7 +260,7 @@ +@@ -150,7 +288,7 @@ Java_sun_nio_ch_Net_localInetAddress(JNIEnv *env, jclass clazz, jobject fdo) { SOCKADDR sa; @@ -2178,7 +2224,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n int port; if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) { handleSocketError(env, errno); -@@ -159,119 +269,79 @@ +@@ -159,119 +297,115 @@ return NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port); } @@ -2308,12 +2354,46 @@ diff -Nru openjdk.orig/jdk/src/solaris/n } JNIEXPORT void JNICALL --Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, -- jobject fdo, jint opt, jint arg) -+Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, jobject fdo, -+ jboolean mayNeedConversion, jint level, jint opt, jint arg) + Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, + jobject fdo, jint opt, jint arg) { - int klevel, kopt; ++ int klevel, kopt; ++ int result; ++ struct linger linger; ++ void *parg; ++ int arglen; ++ ++ if (NET_MapSocketOption(opt, &klevel, &kopt) < 0) { ++ JNU_ThrowByNameWithLastError(env, ++ JNU_JAVANETPKG "SocketException", ++ "Unsupported socket option"); ++ return; ++ } ++ ++ if (opt == java_net_SocketOptions_SO_LINGER) { ++ parg = (void *)&linger; ++ arglen = sizeof(linger); ++ if (arg >= 0) { ++ linger.l_onoff = 0; ++ linger.l_linger = 0; ++ } ++ } else { ++ parg = (void *)&arg; ++ arglen = sizeof(arg); ++ } ++ ++ if (NET_SetSockOpt(fdval(env, fdo), klevel, kopt, parg, arglen) < 0) { ++ JNU_ThrowByNameWithLastError(env, ++ JNU_JAVANETPKG "SocketException", ++ "sun.nio.ch.Net.setIntOption"); ++ } ++} ++ ++JNIEXPORT void JNICALL ++Java_sun_nio_ch_Net_setIntOption1(JNIEnv *env, jclass clazz, jobject fdo, ++ jboolean mayNeedConversion, jint level, jint opt, jint arg) ++{ int result; struct linger linger; + u_char carg; @@ -2343,7 +2423,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n parg = (void *)&linger; arglen = sizeof(linger); if (arg >= 0) { -@@ -281,19 +351,199 @@ +@@ -281,19 +415,199 @@ linger.l_onoff = 0; linger.l_linger = 0; } @@ -2475,7 +2555,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n + } + return 0; +} - ++ +JNIEXPORT void JNICALL +Java_sun_nio_ch_Net_setInterface4(JNIEnv* env, jobject this, jobject fdo, jint interf) +{ @@ -2535,7 +2615,7 @@ diff -Nru openjdk.orig/jdk/src/solaris/n + } + return (jint)index; +} -+ + +JNIEXPORT void JNICALL +Java_sun_nio_ch_Net_shutdown(JNIEnv *env, jclass cl, jobject fdo, jint jhow) +{ From ahughes at redhat.com Tue Feb 3 04:14:00 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 12:14:00 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset d57abf1d1d65 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d57abf1d1d65 description: Merge. diffstat: 2 files changed, 69 insertions(+), 24 deletions(-) ChangeLog | 5 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 88 +++++++--- diffs (152 lines): diff -r 8e91de51da9e -r d57abf1d1d65 ChangeLog --- a/ChangeLog Tue Jan 27 11:54:08 2009 +0000 +++ b/ChangeLog Tue Jan 27 11:54:55 2009 +0000 @@ -11,6 +11,11 @@ 2009-01-27 Andrew John Hughes + + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Add memory barriers where needed for PPC. 2009-01-26 Andrew John Hughes diff -r 8e91de51da9e -r d57abf1d1d65 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Tue Jan 27 11:54:08 2009 +0000 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Tue Jan 27 11:54:55 2009 +0000 @@ -23,6 +23,24 @@ * */ +#ifdef __PPC + +#define READ_MEM_BARRIER __asm __volatile ("isync":::"memory") +#ifdef __NO_LWSYNC__ +#define WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory") +#else +#define WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory") +#endif + +#else // PPC + +#define READ_MEM_BARRIER __asm __volatile ("":::"memory") +#define WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif // PPC + + + inline void OrderAccess::loadload() { acquire(); } inline void OrderAccess::storestore() { release(); } inline void OrderAccess::loadstore() { acquire(); } @@ -30,12 +48,12 @@ inline void OrderAccess::storeload() { inline void OrderAccess::acquire() { - __sync_synchronize(); + READ_MEM_BARRIER; } inline void OrderAccess::release() { - __sync_synchronize(); + WRITE_MEM_BARRIER; } inline void OrderAccess::fence() @@ -43,49 +61,71 @@ inline void OrderAccess::fence() __sync_synchronize(); } -inline jbyte OrderAccess::load_acquire(volatile jbyte* p) { return *p; } -inline jshort OrderAccess::load_acquire(volatile jshort* p) { return *p; } -inline jint OrderAccess::load_acquire(volatile jint* p) { return *p; } +inline jbyte OrderAccess::load_acquire(volatile jbyte* p) { jbyte data = *p; acquire(); return data; } +inline jshort OrderAccess::load_acquire(volatile jshort* p) { jshort data = *p; acquire(); return data; } +inline jint OrderAccess::load_acquire(volatile jint* p) { jint data = *p; acquire(); return data; } inline jlong OrderAccess::load_acquire(volatile jlong* p) { jlong tmp; os::atomic_copy64(p, &tmp); + acquire(); return tmp; } -inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { return *p; } -inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; } -inline juint OrderAccess::load_acquire(volatile juint* p) { return *p; } +inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { jubyte data = *p; acquire(); return data; } +inline jushort OrderAccess::load_acquire(volatile jushort* p) { jushort data = *p; acquire(); return data; } +inline juint OrderAccess::load_acquire(volatile juint* p) { juint data = *p; acquire(); return data; } inline julong OrderAccess::load_acquire(volatile julong* p) { julong tmp; os::atomic_copy64(p, &tmp); + acquire(); return tmp; } -inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { return *p; } +inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { jfloat data = *p; acquire(); return data; } inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { jdouble tmp; os::atomic_copy64(p, &tmp); + acquire(); return tmp; } -inline intptr_t OrderAccess::load_ptr_acquire(volatile intptr_t* p) { return *p; } -inline void* OrderAccess::load_ptr_acquire(volatile void* p) { return *(void* volatile *)p; } -inline void* OrderAccess::load_ptr_acquire(const volatile void* p) { return *(void* const volatile *)p; } +inline intptr_t OrderAccess::load_ptr_acquire(volatile intptr_t* p) +{ + intptr_t data = *p; + acquire(); + return data; +} +inline void* OrderAccess::load_ptr_acquire(volatile void* p) +{ + void *data = *(void* volatile *)p; + acquire(); + return data; +} +inline void* OrderAccess::load_ptr_acquire(const volatile void* p) +{ + void *data = *(void* const volatile *)p; + acquire(); + return data; +} -inline void OrderAccess::release_store(volatile jbyte* p, jbyte v) { *p = v; } -inline void OrderAccess::release_store(volatile jshort* p, jshort v) { *p = v; } -inline void OrderAccess::release_store(volatile jint* p, jint v) { *p = v; } -inline void OrderAccess::release_store(volatile jlong* p, jlong v) { os::atomic_copy64(&v, p); } -inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { *p = v; } -inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; } -inline void OrderAccess::release_store(volatile juint* p, juint v) { *p = v; } -inline void OrderAccess::release_store(volatile julong* p, julong v) { os::atomic_copy64(&v, p); } -inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { *p = v; } -inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { os::atomic_copy64(&v, p); } +inline void OrderAccess::release_store(volatile jbyte* p, jbyte v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile jshort* p, jshort v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile jint* p, jint v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile jlong* p, jlong v) +{ release(); os::atomic_copy64(&v, p); } +inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile jushort* p, jushort v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile juint* p, juint v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile julong* p, julong v) +{ release(); os::atomic_copy64(&v, p); } +inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { release(); *p = v; } +inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) +{ release(); os::atomic_copy64(&v, p); } -inline void OrderAccess::release_store_ptr(volatile intptr_t* p, intptr_t v) { *p = v; } -inline void OrderAccess::release_store_ptr(volatile void* p, void* v) { *(void* volatile *)p = v; } +inline void OrderAccess::release_store_ptr(volatile intptr_t* p, intptr_t v) { release(); *p = v; } +inline void OrderAccess::release_store_ptr(volatile void* p, void* v) +{ release(); *(void* volatile *)p = v; } inline void OrderAccess::store_fence(jbyte* p, jbyte v) { *p = v; fence(); } inline void OrderAccess::store_fence(jshort* p, jshort v) { *p = v; fence(); } From gnu_andrew at member.fsf.org Tue Feb 3 07:13:19 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 3 Feb 2009 15:13:19 +0000 Subject: NIO2 support in IcedTea6 Message-ID: <17c6771e0902030713x247ae830t873fa62575e8a697@mail.gmail.com> I've just committed support for NIO2 to IcedTea6. This is enabled by default but may be disabled using --disable-nio2. The majority of support is provided in the overlays subdirectory under a new nio2 tree. In addition, patches/icedtea-nio2.patch adds the necessary support to the Makefiles and some of the native code. To retain compatibility with Java 1.6, the classes are provided under the org.classpath.icedtea package prefix (so the updated java.io.File becomes org.classpath.icedtea.java.io.File and so on). Thus, when compiling NIO2 code against IcedTea6, you will need to add this prefix. When support is ported over to IcedTea7, this extension will be dropped and support added directly to the java.* classes (effectively making it equivalent to the NIO2 tree, but with the ability to use the main OpenJDK7 tarballs and IcedTea extensions). I'll blog about this in more detail shortly with some examples, but feel free to start trying NIO2 and report any issues caused by the backport. More about NIO2 is available here: http://openjdk.java.net/projects/nio/ This work is funded by Red Hat, with the aim of providing early access to NIO2 technologies for users of IcedTea. Happy hacking, -- Andrew :-) IcedTea/OpenJDK Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Tue Feb 3 07:16:19 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 03 Feb 2009 15:16:19 +0000 Subject: [Bug 288] regressions in jdk testsuite with new hotspot Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=288 ------- Comment #1 from gnu_andrew at member.fsf.org 2009-02-03 15:16 ------- I don't recall seeing these failures with IcedTea7. Have you checked against this? It could be the IcedTea7 tests need backporting or some JDI code. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Feb 3 07:42:20 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 15:42:20 +0000 Subject: changeset in /hg/icedtea6: The outputted documentation should be... Message-ID: changeset c38d90386c71 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c38d90386c71 description: The outputted documentation should be licensed under the GPL but for some reason this only occurs when FCS is not set. This fixes the issue. 2009-02-03 Andrew John Hughes * Makefile.am: Add new patch. * patches/icedtea-doc-headers.patch: Fix licensing of documentation. diffstat: 3 files changed, 56 insertions(+), 1 deletion(-) ChangeLog | 7 +++++ Makefile.am | 3 +- patches/icedtea-doc-headers.patch | 47 +++++++++++++++++++++++++++++++++++++ diffs (78 lines): diff -r 12c4111a284c -r c38d90386c71 ChangeLog --- a/ChangeLog Tue Feb 03 12:08:26 2009 +0000 +++ b/ChangeLog Tue Feb 03 15:41:58 2009 +0000 @@ -1,3 +1,10 @@ 2009-01-30 Andrew John Hughes + + * Makefile.am: + Add new patch. + * patches/icedtea-doc-headers.patch: + Fix licensing of documentation. + 2009-01-30 Andrew John Hughes * patches/icedtea-nio2.patch: diff -r 12c4111a284c -r c38d90386c71 Makefile.am --- a/Makefile.am Tue Feb 03 12:08:26 2009 +0000 +++ b/Makefile.am Tue Feb 03 15:41:58 2009 +0000 @@ -615,7 +615,8 @@ ICEDTEA_PATCHES += \ $(DISTRIBUTION_PATCHES) \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ - patches/icedtea-java2d-dasher.patch + patches/icedtea-java2d-dasher.patch \ + patches/icedtea-doc-headers.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r 12c4111a284c -r c38d90386c71 patches/icedtea-doc-headers.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-doc-headers.patch Tue Feb 03 15:41:58 2009 +0000 @@ -0,0 +1,47 @@ +diff -Nru openjdk.orig/jdk/make/docs/Makefile openjdk/jdk/make/docs/Makefile +--- openjdk.orig/jdk/make/docs/Makefile 2009-02-03 13:34:38.000000000 +0000 ++++ openjdk/jdk/make/docs/Makefile 2009-02-03 13:37:17.000000000 +0000 +@@ -99,36 +99,20 @@ + + TAGS = $(IGNORED_TAGS:%=-tag %:X) $(TAG_JLS3) + +-ifeq ($(MILESTONE), fcs) +- DOCTITLE_SWITCH = $(JAVADOCTITLE) +- WINDOWTITLE_SWITCH = $(JAVADOCWINDOWTITLE) +- HEADER_SWITCH = $(JAVADOCHEADER) +- TOPOPTION= +- JAVADOCBOTTOM_SWITCH= $(JAVADOCBOTTOM) +- OVERVIEW_OPTION = -overview $(JAVADOCOVERVIEW) +-else +- DOCTITLE_SWITCH = $(JAVADOCTITLE_EARLYACCESS)$(DRAFT) +- WINDOWTITLE_SWITCH = $(JAVADOCWINDOWTITLE)" $(BUILD_NUMBER)" +- HEADER_SWITCH = $(JAVADOCHEADER)$(DRAFT) +- JAVADOCBOTTOM_SWITCH= $(JAVADOCBOTTOM_EARLYACCESS) +- TOPOPTION= -top $(JAVADOCTOP_EARLYACCESS) +- OVERVIEW_OPTION = +-endif ++DOCTITLE_SWITCH = $(JAVADOCTITLE) ++WINDOWTITLE_SWITCH = $(JAVADOCWINDOWTITLE)" $(BUILD_NUMBER)" ++HEADER_SWITCH = $(JAVADOCHEADER) ++TOPOPTION= ++JAVADOCBOTTOM_SWITCH= $(JAVADOCBOTTOM) ++OVERVIEW_OPTION = -overview $(JAVADOCOVERVIEW) + + JAVADOCTITLE = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)
API Specification' + JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)' + JAVADOCHEADER = 'Java$(TRADEMARK) Platform
Standard Ed. $(JDK_MINOR_VERSION)
' +-JAVADOCBOTTOM = 'Submit a bug or feature
For further API reference and developer documentation, see Java SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.' ++JAVADOCBOTTOM = 'Submit a bug or feature

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to the terms of the GNU General Public License.' + JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html + + # +-# Early access top and bottom text (for snapshots, beta and rc) +-# +-JAVADOCTOP_EARLYACCESS = '

Please note that this documentation is not final and is subject to change.
' +-JAVADOCBOTTOM_EARLYACCESS = 'Submit a bug or feature

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to the terms of the GNU General Public License.' +-JAVADOCTITLE_EARLYACCESS = $(subst Specification,Documentation,$(JAVADOCTITLE)) +- +-# + # Variables used by domapidocs target + # + From ahughes at redhat.com Tue Feb 3 12:23:43 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 20:23:43 +0000 Subject: changeset in /hg/icedtea6: Generate documentation for NIO2. Message-ID: changeset 6b1b34af152d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6b1b34af152d description: Generate documentation for NIO2. 2009-02-03 Andrew John Hughes * patches/icedtea-nio2.patch: (docs/NON_CORE_PKGS.gmk): Rename NIO to NIO2. (docs/Makefile): Add rule for generating NIO2 docs. diffstat: 2 files changed, 75 insertions(+), 6 deletions(-) ChangeLog | 6 +++ patches/icedtea-nio2.patch | 75 ++++++++++++++++++++++++++++++++++++++++---- diffs (112 lines): diff -r 0c693476e03c -r 6b1b34af152d ChangeLog --- a/ChangeLog Tue Feb 03 16:20:10 2009 +0000 +++ b/ChangeLog Tue Feb 03 20:23:22 2009 +0000 @@ -1,3 +1,9 @@ 2009-02-03 Andrew John Hughes + + * patches/icedtea-nio2.patch: + (docs/NON_CORE_PKGS.gmk): Rename NIO to NIO2. + (docs/Makefile): Add rule for generating NIO2 docs. + 2009-02-03 Andrew John Hughes * Makefile.am: diff -r 0c693476e03c -r 6b1b34af152d patches/icedtea-nio2.patch --- a/patches/icedtea-nio2.patch Tue Feb 03 16:20:10 2009 +0000 +++ b/patches/icedtea-nio2.patch Tue Feb 03 20:23:22 2009 +0000 @@ -9,26 +9,89 @@ diff -Nru openjdk.orig/jdk/make/docs/COR org.jcp.* \ org.w3c.dom.css \ org.w3c.dom.html \ +diff -Nru openjdk.orig/jdk/make/docs/Makefile openjdk/jdk/make/docs/Makefile +--- openjdk.orig/jdk/make/docs/Makefile 2009-02-03 16:20:38.000000000 +0000 ++++ openjdk/jdk/make/docs/Makefile 2009-02-03 19:40:10.000000000 +0000 +@@ -404,6 +404,29 @@ + # TREEAPI_PKGS is located in NON_CORE_PKGS.gmk + + # ++# Variables used by nio2docs target ++# ++ ++NIO2_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ ++ -encoding ascii \ ++ -d $(NIO2_DOCDIR) \ ++ -sourcepath $(NIO2_SOURCEPATH) \ ++ -splitIndex \ ++ -doctitle $(NIO2_JAVADOCTITLE) \ ++ -windowtitle $(NIO2_JAVADOCWINDOWTITLE) \ ++ -header $(NIO2_JAVADOCHEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ ++ -group $(NIO2_GROUPNAME) $(NIO2_REGEXP) ++NIO2_JAVADOCTITLE = 'NIO2 API' ++NIO2_JAVADOCWINDOWTITLE = 'NIO2 API' ++NIO2_JAVADOCHEADER = 'NIO2 API' ++NIO2_GROUPNAME = "Packages" ++NIO2_REGEXP = "org.classpath.icedtea.*" ++NIO2_DOCDIR = $(DOCSDIR)/jre/api/nio2 ++NIO2_SOURCEPATH = $(TOPDIR)/src/share/classes ++# NIO2_PKGS is located in NON_CORE_PKGS.gmk ++ ++# + # Path where javadoc should find source files for release docs + # + RELEASEDOCS_SRCPATH = "$(SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/doc/stub$(CLASSPATH_SEPARATOR)$(CLOSED_SRC)/share/classes$(CLASSPATH_SEPARATOR)$(IMPORTSRCDIR)" +@@ -429,7 +452,8 @@ + httpserverdocs \ + mgmtdocs \ + attachdocs \ +- jconsoledocs ++ jconsoledocs \ ++ nio2docs + + ifdef LANGTOOLS_DIST + ALL_OTHER_TARGETS += \ +@@ -646,6 +670,14 @@ + $(TREEAPI_LINKOPT) \ + $(TREEAPI_PKGS) + ++.PHONY: nio2docs ++nio2docs: ++ @# ######## api-nio2 ############################ ++ $(RM) -r $(NIO2_DOCDIR) ++ $(MKDIR) -p $(NIO2_DOCDIR) ++ $(JAVADOC_CMD) $(NIO2_JAVADOCFLAGS) \ ++ $(NIO2_PKGS) ++ + # DEBUG TARGET + # List the values defined in the makefile hierarchy, to make sure everything + # is set properly, and to help identify values we can use instead of making new ones. diff -Nru openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk openjdk/jdk/make/docs/NON_CORE_PKGS.gmk --- openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk 2009-01-07 21:27:46.000000000 +0000 -+++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-01-09 21:21:39.000000000 +0000 -@@ -65,6 +65,11 @@ ++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-02-03 16:28:29.000000000 +0000 +@@ -65,6 +65,16 @@ HTTPSERVER_PKGS = com.sun.net.httpserver \ com.sun.net.httpserver.spi -+NIO_PKGS = com.sun.nio.file \ ++NIO2_PKGS = org.classpath.icedtea.java.io \ ++ org.classpath.icedtea.java.net \ ++ org.classpath.icedtea.java.nio.channels \ ++ org.classpath.icedtea.java.nio.channels.spi \ + org.classpath.icedtea.java.nio.file \ + org.classpath.icedtea.java.nio.file.attribute \ -+ org.classpath.icedtea.java.nio.file.spi ++ org.classpath.icedtea.java.nio.file.spi \ ++ org.classpath.icedtea.java.util ++ + DOCLETAPI_PKGS = com.sun.javadoc TAGLETAPI_FILE = com/sun/tools/doclets/Taglet.java -@@ -89,6 +94,7 @@ +@@ -89,6 +99,7 @@ $(MGMT_PKGS) \ $(JAAS_PKGS) \ $(JGSS_PKGS) \ -+ $(NIO_PKGS) \ ++ $(NIO2_PKGS) \ $(OLD_JSSE_PKGS) \ $(HTTPSERVER_PKGS) \ $(SMARTCARDIO_PKGS) From ahughes at redhat.com Tue Feb 3 12:23:42 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 03 Feb 2009 20:23:42 +0000 Subject: changeset in /hg/icedtea6: More documentation fixes; our Bugzill... Message-ID: changeset 0c693476e03c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0c693476e03c description: More documentation fixes; our Bugzilla URL is used (as we do for HotSpot crashes) and the same licensing header is used for all docs. 2009-02-03 Andrew John Hughes * Makefile.am: Move doc headers patch above NIO2 patch, as this needs to alter the same file. * patches/icedtea-doc-headers.patch: Add IcedTea bugzilla URL and common licensing to all documentation. diffstat: 3 files changed, 148 insertions(+), 5 deletions(-) ChangeLog | 9 ++ Makefile.am | 6 - patches/icedtea-doc-headers.patch | 138 ++++++++++++++++++++++++++++++++++++- diffs (197 lines): diff -r c38d90386c71 -r 0c693476e03c ChangeLog --- a/ChangeLog Tue Feb 03 15:41:58 2009 +0000 +++ b/ChangeLog Tue Feb 03 16:20:10 2009 +0000 @@ -1,3 +1,12 @@ 2009-02-03 Andrew John Hughes + + * Makefile.am: + Move doc headers patch above NIO2 patch, + as this needs to alter the same file. + * patches/icedtea-doc-headers.patch: + Add IcedTea bugzilla URL and common licensing + to all documentation. + 2009-02-03 Andrew John Hughes * Makefile.am: diff -r c38d90386c71 -r 0c693476e03c Makefile.am --- a/Makefile.am Tue Feb 03 15:41:58 2009 +0000 +++ b/Makefile.am Tue Feb 03 16:20:10 2009 +0000 @@ -562,7 +562,8 @@ ICEDTEA_PATCHES += \ patches/icedtea-6728542-epoll.patch \ patches/icedtea-io_util-overflow.patch \ patches/icedtea-cc-interp-jvmti.patch \ - patches/icedtea-pr261.patch + patches/icedtea-pr261.patch \ + patches/icedtea-doc-headers.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -615,8 +616,7 @@ ICEDTEA_PATCHES += \ $(DISTRIBUTION_PATCHES) \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ - patches/icedtea-java2d-dasher.patch \ - patches/icedtea-doc-headers.patch + patches/icedtea-java2d-dasher.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r c38d90386c71 -r 0c693476e03c patches/icedtea-doc-headers.patch --- a/patches/icedtea-doc-headers.patch Tue Feb 03 15:41:58 2009 +0000 +++ b/patches/icedtea-doc-headers.patch Tue Feb 03 16:20:10 2009 +0000 @@ -1,6 +1,6 @@ diff -Nru openjdk.orig/jdk/make/docs/Mak diff -Nru openjdk.orig/jdk/make/docs/Makefile openjdk/jdk/make/docs/Makefile --- openjdk.orig/jdk/make/docs/Makefile 2009-02-03 13:34:38.000000000 +0000 -+++ openjdk/jdk/make/docs/Makefile 2009-02-03 13:37:17.000000000 +0000 ++++ openjdk/jdk/make/docs/Makefile 2009-02-03 16:11:08.000000000 +0000 @@ -99,36 +99,20 @@ TAGS = $(IGNORED_TAGS:%=-tag %:X) $(TAG_JLS3) @@ -31,7 +31,7 @@ diff -Nru openjdk.orig/jdk/make/docs/Mak JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)' JAVADOCHEADER = 'Java$(TRADEMARK) Platform
Standard Ed. $(JDK_MINOR_VERSION)
' -JAVADOCBOTTOM = 'Submit a bug or feature
For further API reference and developer documentation, see Java SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.' -+JAVADOCBOTTOM = 'Submit a bug or feature

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to the terms of the GNU General Public License.' ++JAVADOCBOTTOM = 'Submit a bug or feature

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All rights reserved. Use is subject to the terms of the GNU General Public License.' JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html # @@ -45,3 +45,137 @@ diff -Nru openjdk.orig/jdk/make/docs/Mak # Variables used by domapidocs target # +@@ -138,12 +122,11 @@ + -doctitle $(DOMAPI_JAVADOCTITLE) \ + -windowtitle $(DOMAPI_JAVADOCWINDOWTITLE) \ + -header $(DOMAPI_JAVADOCHEADER) \ +- -bottom $(DOMAPI_JAVADOCBOTTOM) \ ++ -bottom $(JAVADOCBOTTOM) \ + -group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP) + DOMAPI_JAVADOCTITLE = 'Common DOM API' + DOMAPI_JAVADOCWINDOWTITLE = 'Common DOM API' + DOMAPI_JAVADOCHEADER = 'Common DOM API' +-DOMAPI_JAVADOCBOTTOM = 'Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.
' + DOMAPI_GROUPNAME = "Packages" + DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*" + # DOMAPI_PKGS is located in NON_CORE_PKGS.gmk +@@ -157,13 +140,12 @@ + -doctitle $(MIRROR_JAVADOCTITLE) \ + -windowtitle $(MIRROR_JAVADOCWINDOWTITLE) \ + -header $(MIRROR_JAVADOCHEADER) \ +- -bottom $(MIRROR_JAVADOCBOTTOM) \ ++ -bottom $(JAVADOCBOTTOM) \ + -group $(MIRROR_GROUPNAME) $(MIRROR_REGEXP) \ + -overview $(MIRROR_OVERVIEW) + MIRROR_JAVADOCTITLE = 'Mirror API' + MIRROR_JAVADOCWINDOWTITLE = 'Mirror API' + MIRROR_JAVADOCHEADER = 'Mirror API' +-MIRROR_JAVADOCBOTTOM = 'Report a bug or request a feature.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.
' + MIRROR_GROUPNAME = "Packages" + MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html + MIRROR_REGEXP = "com.sun.mirror.*" +@@ -181,12 +163,11 @@ + -doctitle $(DOCLETAPI_JAVADOCTITLE) \ + -windowtitle $(DOCLETAPI_JAVADOCWINDOWTITLE) \ + -header $(DOCLETAPI_JAVADOCHEADER) \ +- -bottom $(DOCLETAPI_JAVADOCBOTTOM) \ ++ -bottom $(JAVADOCBOTTOM) \ + -group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP) + DOCLETAPI_JAVADOCTITLE = 'Doclet API' + DOCLETAPI_JAVADOCWINDOWTITLE = 'Doclet API' + DOCLETAPI_JAVADOCHEADER = 'Doclet API' +-DOCLETAPI_JAVADOCBOTTOM = 'Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.
' + DOCLETAPI_GROUPNAME = "Packages" + DOCLETAPI_REGEXP = "com.sun.javadoc" + DOCLETAPI_LINKOPT = -linkoffline ../../../../api $(DOCSDIR)/api/ +@@ -200,8 +181,7 @@ + -encoding ascii \ + -nonavbar \ + -noindex \ +- -bottom $(TAGLETAPI_JAVADOCBOTTOM) +-TAGLETAPI_JAVADOCBOTTOM = 'Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.
' ++ -bottom $(JAVADOCBOTTOM) + # TAGLETAPI_FILE is located in NON_CORE_PKGS.gmk + + # +@@ -218,6 +198,7 @@ + -windowtitle $(JDI_WINDOWTITLE) \ + -doctitle $(JDI_DOCTITLE) \ + -header $(JDI_HEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../api $(DOCSDIR)/api/ \ + -overview $(JPDA_SOURCEPATH)/jdi-overview.html + JDI_WINDOWTITLE = "Java Debug Interface" +@@ -242,6 +223,7 @@ + -windowtitle $(JAAS_WINDOWTITLE) \ + -doctitle $(JAAS_DOCTITLE) \ + -header $(JAAS_JAVADOCHEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../../api $(DOCSDIR)/api/ \ + -overview $(TOPDIR)/src/share/classes/com/sun/security/auth/jaas-overview.html + JAAS_WINDOWTITLE = "Java Authentication and Authorization Service " +@@ -264,6 +246,7 @@ + -windowtitle $(JGSS_WINDOWTITLE) \ + -doctitle $(JGSS_DOCTITLE) \ + -header $(JGSS_JAVADOCHEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../../api $(DOCSDIR)/api/ \ + -overview $(JGSS_SOURCEPATH)/com/sun/security/jgss/jgss-overview.html + +@@ -287,6 +270,7 @@ + -windowtitle $(SMARTCARDIO_WINDOWTITLE) \ + -doctitle $(SMARTCARDIO_DOCTITLE) \ + -header $(SMARTCARDIO_JAVADOCHEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../../api $(DOCSDIR)/api/ + + SMARTCARDIO_WINDOWTITLE = "Java Smart Card I/O" +@@ -309,6 +293,7 @@ + -windowtitle $(HTTPSERVER_WINDOWTITLE) \ + -doctitle $(HTTPSERVER_DOCTITLE) \ + -header $(HTTPSERVER_JAVADOCHEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../../api $(DOCSDIR)/api/ + + HTTPSERVER_WINDOWTITLE = "Java HTTP Server" +@@ -344,6 +329,7 @@ + -windowtitle $(MGMT_WINDOWTITLE) \ + -doctitle $(MGMT_DOCTITLE) \ + -header $(MGMT_HEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../api $(DOCSDIR)/api/ \ + -overview $(MGMT_SOURCEPATH)/com/sun/management/mgmt-overview.html + MGMT_WINDOWTITLE = "Monitoring and Management Interface for the Java Platform" +@@ -365,6 +351,7 @@ + -windowtitle $(ATTACH_WINDOWTITLE) \ + -doctitle $(ATTACH_DOCTITLE) \ + -header $(ATTACH_HEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../api $(DOCSDIR)/api/ + ATTACH_WINDOWTITLE = "Attach API" + ATTACH_DOCTITLE = "Attach API" +@@ -385,6 +372,7 @@ + -windowtitle $(JCONSOLE_WINDOWTITLE) \ + -doctitle $(JCONSOLE_DOCTITLE) \ + -header $(JCONSOLE_HEADER) \ ++ -bottom $(JAVADOCBOTTOM) \ + -linkoffline ../../../../api $(DOCSDIR)/api/ + JCONSOLE_WINDOWTITLE = "JConsole API" + JCONSOLE_DOCTITLE = "JConsole API" +@@ -400,7 +388,7 @@ + -doctitle $(TREEAPI_JAVADOCTITLE) \ + -windowtitle $(TREEAPI_JAVADOCWINDOWTITLE) \ + -header $(TREEAPI_JAVADOCHEADER) \ +- -bottom $(TREEAPI_JAVADOCBOTTOM) \ ++ -bottom $(JAVADOCBOTTOM) \ + -group $(TREEAPI_GROUPNAME) $(TREEAPI_REGEXP) + # + # -overview $(TREEAPI_OVERVIEW) +@@ -408,7 +396,6 @@ + TREEAPI_JAVADOCTITLE = 'Compiler Tree API' + TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API' + TREEAPI_JAVADOCHEADER = 'Compiler Tree API' +-TREEAPI_JAVADOCBOTTOM = 'Report a bug or request a feature.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.
' + TREEAPI_GROUPNAME = "Packages" + TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html + TREEAPI_REGEXP = "com.sun.source.*" From mvfranz at gmail.com Tue Feb 3 18:27:54 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 3 Feb 2009 21:27:54 -0500 Subject: IcedTea 7 Patches for with-project=bsd - A Plan Message-ID: Hi, Taking a different approach to getting IcedTea 7 to compile on OS X, I am trying to get the bsd repo to compile on Linux (Fedora 10). In investigating the patching problems closer, I wonder if this seems like a sound plan. 1. Identify the patches that break 2. move failing patches out of the main patch file into a project specific patch file 3. create equivalent patches for bsd 4. change the patch process to use base patches and then the project specific patches An example of this is icedtea-libraries.patch. There are 8 patches within this file that fail on the bsd repo. I would move these patches into icedtea-libraries-linux.patch (should this be jdk7?) and create bsd specific patches that are then put into icedtea-libraries-bsd.patch. The patch process can then apply the patches in icedtea-libraries.patch and then icedtea-libraries-.patch. On a similar note, I have found that icedtea-libraries.patch and icedtea-linker-options.patch are patching the same line in jdk/make/common/Program.gmk. first - LDFLAGS += -z origin + LDFLAGS += -lz -z origin then - LDFLAGS += -lz -z origin + LDFLAGS += -lz -Wl, -z -Wl,origin Is there a benefit to patching the same line twice (keeping logical changes together)? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090203/3754afd2/attachment.html From gbenson at redhat.com Wed Feb 4 02:51:26 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 4 Feb 2009 10:51:26 +0000 Subject: IcedTea 7 Patches for with-project=bsd - A Plan In-Reply-To: References: Message-ID: <20090204105125.GA3897@redhat.com> Michael Franz wrote: > Taking a different approach to getting IcedTea 7 to compile on OS X, > I am trying to get the bsd repo to compile on Linux (Fedora 10). In > investigating the patching problems closer, I wonder if this seems > like a sound plan. [snip] That sounds like an excellent plan. It might be better to split them into subdirectories, as Andrew Hughes did with the HotSpot-specific patches, but I'll leave that choice up to you. Cheers, Gary -- http://gbenson.net/ From ahughes at redhat.com Wed Feb 4 03:49:45 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 04 Feb 2009 11:49:45 +0000 Subject: changeset in /hg/icedtea: Bump to b45. Message-ID: changeset 5a2104fb2256 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=5a2104fb2256 description: Bump to b45. 2009-02-03 Andrew John Hughes * Makefile.am: Bump to b45. diffstat: 2 files changed, 9 insertions(+), 4 deletions(-) ChangeLog | 5 +++++ Makefile.am | 8 ++++---- diffs (34 lines): diff -r 70396cb4abf8 -r 5a2104fb2256 ChangeLog --- a/ChangeLog Wed Jan 28 22:11:07 2009 +0000 +++ b/ChangeLog Wed Feb 04 11:49:31 2009 +0000 @@ -1,3 +1,8 @@ 2009-01-28 Andrew John Hughes + + * Makefile.am: + Bump to b45. + 2009-01-28 Andrew John Hughes * Makefile.am: diff -r 70396cb4abf8 -r 5a2104fb2256 Makefile.am --- a/Makefile.am Wed Jan 28 22:11:07 2009 +0000 +++ b/Makefile.am Wed Feb 04 11:49:31 2009 +0000 @@ -1,6 +1,6 @@ OPENJDK_DATE = 22_jan_2009 -OPENJDK_DATE = 22_jan_2009 -OPENJDK_MD5SUM = 6d5ce33b6ffa65966675b769b59e3d0c -OPENJDK_VERSION = b44 +OPENJDK_DATE = 29_jan_2009 +OPENJDK_MD5SUM = 0d6ae1ed77b470c9665d069b34a1bc88 +OPENJDK_VERSION = b45 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 @@ -1899,7 +1899,7 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6766136.patch \ patches/icedtea-cc-interp-jvmti.patch \ patches/hotspot/$(HSBUILD)/icedtea-6791168.patch \ - patches/hotspot/$(HSBUILD)/icedtea-includedb.patch + patches/hotspot/$(HSBUILD)/icedtea-includedb.patch if WITH_RHINO ICEDTEA_PATCHES += \ From ahughes at redhat.com Wed Feb 4 03:51:32 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 04 Feb 2009 11:51:32 +0000 Subject: changeset in /hg/icedtea6: Fix warnings that cause build failure... Message-ID: changeset ab71ebb1e8b6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ab71ebb1e8b6 description: Fix warnings that cause build failure on gcc 4.3.3. 2009-02-04 Andrew John Hughes * Makefile.am: Add new patch. * patches/hotspot/14.0b08/icedtea-format.patch, Fix warnings that cause the build to fail with GCC 4.3.3. diffstat: 3 files changed, 58 insertions(+), 1 deletion(-) ChangeLog | 8 ++++ Makefile.am | 3 + patches/hotspot/14.0b08/icedtea-format.patch | 48 ++++++++++++++++++++++++++ diffs (80 lines): diff -r 6b1b34af152d -r ab71ebb1e8b6 ChangeLog --- a/ChangeLog Tue Feb 03 20:23:22 2009 +0000 +++ b/ChangeLog Wed Feb 04 11:51:13 2009 +0000 @@ -1,3 +1,11 @@ 2009-02-03 Andrew John Hughes + + * Makefile.am: + Add new patch. + * patches/hotspot/14.0b08/icedtea-format.patch, + Fix warnings that cause the build to fail with + GCC 4.3.3. + 2009-02-03 Andrew John Hughes * patches/icedtea-nio2.patch: diff -r 6b1b34af152d -r ab71ebb1e8b6 Makefile.am --- a/Makefile.am Tue Feb 03 20:23:22 2009 +0000 +++ b/Makefile.am Wed Feb 04 11:51:13 2009 +0000 @@ -616,7 +616,8 @@ ICEDTEA_PATCHES += \ $(DISTRIBUTION_PATCHES) \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ - patches/icedtea-java2d-dasher.patch + patches/icedtea-java2d-dasher.patch \ + patches/hotspot/$(HSBUILD)/icedtea-format.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r 6b1b34af152d -r ab71ebb1e8b6 patches/hotspot/14.0b08/icedtea-format.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/14.0b08/icedtea-format.patch Wed Feb 04 11:51:13 2009 +0000 @@ -0,0 +1,48 @@ +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:08:09.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:32:59.000000000 +0000 +@@ -1361,7 +1361,7 @@ + + // Feed the cache size setting into the JDK + char buffer[1024]; +- sprintf(buffer, "java.lang.Integer.IntegerCache.high=%d", AutoBoxCacheMax); ++ sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax); + add_property(buffer); + } + if (AggressiveOpts && FLAG_IS_DEFAULT(DoEscapeAnalysis)) { +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp 2009-01-29 15:03:07.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp 2009-02-03 18:30:55.000000000 +0000 +@@ -730,7 +730,7 @@ + if (DieOnSafepointTimeout) { + char msg[1024]; + VM_Operation *op = VMThread::vm_operation(); +- sprintf(msg, "Safepoint sync time longer than %d ms detected when executing %s.", ++ sprintf(msg, "Safepoint sync time longer than " INTX_FORMAT " ms detected when executing %s.", + SafepointTimeoutDelay, + op != NULL ? op->name() : "no vm operation"); + fatal(msg); +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-01-29 15:03:07.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-02-03 19:32:30.000000000 +0000 +@@ -424,7 +424,7 @@ + // asserts is that error message -- often something about negative array + // indices -- is opaque. + +-#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%X\n", tag); } ++#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%p\n", tag); } + + void ObjectMonitor::ctAsserts() { + CTASSERT(offset_of (ObjectMonitor, _header) == 0); +diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp +--- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:10:58.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:29:15.000000000 +0000 +@@ -307,7 +307,7 @@ + + strncpy(buf, file, buflen); + if (len + 10 < buflen) { +- sprintf(buf + len, ":" SIZE_FORMAT, _lineno); ++ sprintf(buf + len, ":%d", _lineno); + } + st->print(" (%s)", buf); + } else { From ahughes at redhat.com Wed Feb 4 04:48:50 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 04 Feb 2009 12:48:50 +0000 Subject: changeset in /hg/icedtea6: Fix JDk directory macros to drop out ... Message-ID: changeset b0be146027ad in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b0be146027ad description: Fix JDk directory macros to drop out of the default for loop when the first solution is found. At present, the loop will use the last solution found. This should be more intuitive. 2009-02-04 Andrew John Hughes * acinclude.m4: (AC_CHECK_FOR_GCJ_JDK): Drop out of loop when first solution is found. (AC_CHECK_FOR_OPENJDK): Likewise. (AC_CHECK_FOR_ICEDTEA): Likewise. diffstat: 2 files changed, 20 insertions(+), 3 deletions(-) ChangeLog | 8 ++++++++ acinclude.m4 | 15 ++++++++++++--- diffs (54 lines): diff -r ab71ebb1e8b6 -r b0be146027ad ChangeLog --- a/ChangeLog Wed Feb 04 11:51:13 2009 +0000 +++ b/ChangeLog Wed Feb 04 12:48:30 2009 +0000 @@ -1,3 +1,11 @@ 2009-02-04 Andrew John Hughes + + * acinclude.m4: + (AC_CHECK_FOR_GCJ_JDK): Drop out of loop + when first solution is found. + (AC_CHECK_FOR_OPENJDK): Likewise. + (AC_CHECK_FOR_ICEDTEA): Likewise. + 2009-02-04 Andrew John Hughes * Makefile.am: diff -r ab71ebb1e8b6 -r b0be146027ad acinclude.m4 --- a/acinclude.m4 Wed Feb 04 11:51:13 2009 +0000 +++ b/acinclude.m4 Wed Feb 04 12:48:30 2009 +0000 @@ -944,7 +944,10 @@ AC_DEFUN([AC_CHECK_FOR_GCJ_JDK], ]) if test -z "${SYSTEM_GCJ_DIR}"; then for dir in /usr/lib/jvm/java-gcj /usr/lib/jvm/gcj-jdk /usr/lib/jvm/cacao ; do - test -d $dir && SYSTEM_GCJ_DIR=$dir + if test -d $dir; then + SYSTEM_GCJ_DIR=$dir + break + fi done fi AC_MSG_RESULT(${SYSTEM_GCJ_DIR}) @@ -977,7 +980,10 @@ AC_DEFUN([AC_CHECK_FOR_OPENJDK], ]) if test -z "${SYSTEM_OPENJDK_DIR}"; then for dir in /usr/lib/jvm/java-openjdk /usr/lib/jvm/openjdk ; do - test -d $dir && SYSTEM_OPENJDK_DIR=$dir + if test -d $dir; then + SYSTEM_OPENJDK_DIR=$dir + break + fi done fi AC_MSG_RESULT(${SYSTEM_OPENJDK_DIR}) @@ -1010,7 +1016,10 @@ AC_DEFUN([AC_CHECK_FOR_ICEDTEA], ]) if test -z "${SYSTEM_ICEDTEA_DIR}"; then for dir in /usr/lib/jvm/java-icedtea /usr/lib/jvm/icedtea6 /usr/lib/jvm/java-6-openjdk ; do - test -d $dir && SYSTEM_ICEDTEA_DIR=$dir + if test -d $dir; then + SYSTEM_ICEDTEA_DIR=$dir + break + fi done fi AC_MSG_RESULT(${SYSTEM_ICEDTEA_DIR}) From ahughes at redhat.com Thu Feb 5 11:03:38 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 05 Feb 2009 19:03:38 +0000 Subject: changeset in /hg/icedtea6: Ensure NIO2 is in sync with the lates... Message-ID: changeset 9923df826001 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9923df826001 description: Ensure NIO2 is in sync with the latest build drop, b98. 2009-02-05 Andrew John Hughes Ensure the NIO2 code is in sync with the latest build drop, b98. * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java, * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java, * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java, diffstat: 16 files changed, 467 insertions(+), 328 deletions(-) ChangeLog | 20 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java | 12 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java | 55 +- overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java | 11 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java | 13 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java | 220 +++++----- overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java | 18 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java | 4 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java | 21 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java | 4 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java | 3 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java | 16 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java | 18 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java | 220 +++++----- overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java | 4 overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java | 156 +++++-- diffs (truncated from 1256 to 500 lines): diff -r b0be146027ad -r 9923df826001 ChangeLog --- a/ChangeLog Wed Feb 04 12:48:30 2009 +0000 +++ b/ChangeLog Thu Feb 05 19:03:06 2009 +0000 @@ -1,3 +1,23 @@ 2009-02-04 Andrew John Hughes + + Ensure the NIO2 code is in sync with the latest + build drop, b98. + * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsLinkSupport.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/Path/InterruptCopy.java, + * overlays/nio2/openjdk/jdk/test/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView/Basic.java, + 2009-02-04 Andrew John Hughes * acinclude.m4: diff -r b0be146027ad -r 9923df826001 overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java Wed Feb 04 12:48:30 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/file/attribute/NamedAttributeView.java Thu Feb 05 19:03:06 2009 +0000 @@ -48,9 +48,6 @@ import java.io.IOException; * intended for use where the size of an attribute value is larger than {@link * Integer#MAX_VALUE}. * - *

{@note There has been feedback that the read/write methods should use byte - * arrays instead of ByteBuffers.} - * *

Named attributes may be used in some implementations to store security * related attributes so consequently, in the case of the default provider at * least, all methods that access named attributes require the @@ -64,13 +61,10 @@ import java.io.IOException; *

Where dynamic access to file attributes is required, the {@link * #getAttribute getAttribute} or {@link #readAttributes(String,String[]) * readAttributes(String,String[])} methods may be used to read the attribute - * value as if by invoking the {@link #read read} method. Upon return, the - * buffer's {@link ByteBuffer#position position} is the index of the first - * byte of the attribute value, and its {@link ByteBuffer#limit limit} is - * the index of the first byte that should not be read. The {@link + * value. The attribute value is returned as a byte array (byte[]). The {@link * #setAttribute setAttribute} method may be used to write the value of a - * user-defined/named attribute from a buffer as if by invoking the {@link - * #write write} method. + * user-defined/named attribute from a buffer (as if by invoking the {@link + * #write write} method), or byte array (byte[]). * * @since 1.7 */ diff -r b0be146027ad -r 9923df826001 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java Wed Feb 04 12:48:30 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/AbstractNamedAttributeView.java Thu Feb 05 19:03:06 2009 +0000 @@ -62,18 +62,31 @@ abstract class AbstractNamedAttributeVie public final Object getAttribute(String attribute) throws IOException { - int size = size(attribute); - ByteBuffer buf = ByteBuffer.allocate(size); - read(attribute, buf); - buf.flip(); - return buf; + int size; + try { + size = size(attribute); + } catch (IOException e) { + // not found or some other I/O error + if (list().contains(attribute)) + throw e; + return null; + } + byte[] buf = new byte[size]; + int n = read(attribute, ByteBuffer.wrap(buf)); + return (n == size) ? buf : Arrays.copyOf(buf, n); } public final void setAttribute(String attribute, Object value) throws IOException { - write(attribute, (ByteBuffer)value); + ByteBuffer bb; + if (value instanceof byte[]) { + bb = ByteBuffer.wrap((byte[])value); + } else { + bb = (ByteBuffer)value; + } + write(attribute, bb); } @@ -88,29 +101,23 @@ abstract class AbstractNamedAttributeVie readAll = true; } else { names.add(first); - for (String name: rest) { - if (name.equals("*")) { - readAll = true; - break; - } + } + for (String name: rest) { + if (name.equals("*")) { + readAll = true; + } else { names.add(name); } } - if (readAll) { - names.clear(); - for (String name: list()) { - names.add(name); - } - } + if (readAll) + names = list(); - // allocate buffer for each value and return as map - Map result = new HashMap(); + // read each value and return in map + Map result = new HashMap(); for (String name: names) { - int size = size(name); - ByteBuffer buf = ByteBuffer.allocate(size); - read(name, buf); - result.put(name, buf); - buf.flip(); + Object value = getAttribute(name); + if (value != null) + result.put(name, value); } return result; diff -r b0be146027ad -r 9923df826001 overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java --- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java Wed Feb 04 12:48:30 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/Cancellable.java Thu Feb 05 19:03:06 2009 +0000 @@ -112,21 +112,24 @@ abstract class Cancellable implements Ru abstract void implRun() throws Throwable; /** - * Invokes the task in its own thread. If this (meaning the current) thread - * is interrupted then an attempt is make to cancel the background task by - * writting bits into the memory location that it is polling. On return, - * the interrupt status for this thread has been cleared. + * Invokes the given task in its own thread. If this (meaning the current) + * thread is interrupted then an attempt is make to cancel the background + * thread by writing into the memory location that it polls cooperatively. */ static void runInterruptibly(Cancellable task) throws ExecutionException { Thread t = new Thread(task); t.start(); + boolean cancelledByInterrupt = false; while (t.isAlive()) { try { t.join(); } catch (InterruptedException e) { + cancelledByInterrupt = true; task.cancel(); } } + if (cancelledByInterrupt) + Thread.currentThread().interrupt(); Throwable exc = task.exception(); if (exc != null) throw new ExecutionException(exc); diff -r b0be146027ad -r 9923df826001 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java --- a/overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java Wed Feb 04 12:48:30 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsAclFileAttributeView.java Thu Feb 05 19:03:06 2009 +0000 @@ -117,8 +117,7 @@ class WindowsAclFileAttributeView // GetFileSecurity does not follow links so when following links we // need the final target - String path = followLinks ? WindowsLinkSupport.getFinalPath(file) : - file.getPathForWin32Calls(); + String path = WindowsLinkSupport.getFinalPath(file, followLinks); NativeBuffer buffer = getFileSecurity(path, OWNER_SECURITY_INFORMATION); try { // get the address of the SID @@ -142,8 +141,7 @@ class WindowsAclFileAttributeView // GetFileSecurity does not follow links so when following links we // need the final target - String path = followLinks ? WindowsLinkSupport.getFinalPath(file) : - file.getPathForWin32Calls(); + String path = WindowsLinkSupport.getFinalPath(file, followLinks); // ALLOW and DENY entries in DACL; // AUDIT entries in SACL (ignore for now as it requires privileges) @@ -170,8 +168,7 @@ class WindowsAclFileAttributeView // SetFileSecurity does not follow links so when following links we // need the final target - String path = followLinks ? WindowsLinkSupport.getFinalPath(file) : - file.getPathForWin32Calls(); + String path = WindowsLinkSupport.getFinalPath(file, followLinks); // ConvertStringSidToSid allocates memory for SID so must invoke // LocalFree to free it when we are done @@ -216,9 +213,7 @@ class WindowsAclFileAttributeView // SetFileSecurity does not follow links so when following links we // need the final target - String path = followLinks ? WindowsLinkSupport.getFinalPath(file) : - file.getPathForWin32Calls(); - + String path = WindowsLinkSupport.getFinalPath(file, followLinks); WindowsSecurityDescriptor sd = WindowsSecurityDescriptor.create(acl); try { SetFileSecurity(path, DACL_SECURITY_INFORMATION, sd.address()); diff -r b0be146027ad -r 9923df826001 overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java --- a/overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java Wed Feb 04 12:48:30 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/windows/classes/sun/nio/fs/WindowsChannelFactory.java Thu Feb 05 19:03:06 2009 +0000 @@ -56,7 +56,76 @@ class WindowsChannelFactory { * Do not follow reparse points when opening an existing file. Do not fail * if the file is a reparse point. */ - static final OpenOption NOFOLLOW_REPARSEPOINT = new OpenOption() { }; + static final OpenOption OPEN_REPARSE_POINT = new OpenOption() { }; + + /** + * Represents the flags from a user-supplied set of open options. + */ + private static class Flags { + boolean read; + boolean write; + boolean append; + boolean truncateExisting; + boolean create; + boolean createNew; + boolean deleteOnClose; + boolean sparse; + boolean overlapped; + boolean sync; + boolean dsync; + + // non-standard + boolean shareRead = true; + boolean shareWrite = true; + boolean shareDelete = true; + boolean noFollowLinks; + boolean openReparsePoint; + + static Flags toFlags(Set options) { + Flags flags = new Flags(); + for (OpenOption option: options) { + if (!(option instanceof StandardOpenOption)) { + if (option == ExtendedOpenOption.NOSHARE_READ) { + flags.shareRead = false; + continue; + } + if (option == ExtendedOpenOption.NOSHARE_WRITE) { + flags.shareWrite = false; + continue; + } + if (option == ExtendedOpenOption.NOSHARE_DELETE) { + flags.shareDelete = false; + continue; + } + if (option == LinkOption.NOFOLLOW_LINKS) { + flags.noFollowLinks = true; + continue; + } + if (option == OPEN_REPARSE_POINT) { + flags.openReparsePoint = true; + continue; + } + if (option == null) + throw new NullPointerException(); + throw new UnsupportedOperationException("Unsupported open option"); + } + switch ((StandardOpenOption)option) { + case READ : flags.read = true; break; + case WRITE : flags.write = true; break; + case APPEND : flags.append = true; break; + case TRUNCATE_EXISTING : flags.truncateExisting = true; break; + case CREATE : flags.create = true; break; + case CREATE_NEW : flags.createNew = true; break; + case DELETE_ON_CLOSE : flags.deleteOnClose = true; break; + case SPARSE : flags.sparse = true; break; + case SYNC : flags.sync = true; break; + case DSYNC : flags.dsync = true; break; + default: throw new AssertionError("Should not get here"); + } + } + return flags; + } + } /** * Open/creates file, returning FileChannel to access the file @@ -72,50 +141,25 @@ class WindowsChannelFactory { long pSecurityDescriptor) throws WindowsException { - boolean reading = false; - boolean writing = false; - boolean append = false; - boolean trunc = false; - - // check for invalid flags - for (OpenOption flag: options) { - if (flag == StandardOpenOption.READ) { - reading = true; continue; - } - if (flag == StandardOpenOption.WRITE) { - writing = true; continue; - } - if (flag == StandardOpenOption.APPEND) { - append = true; - writing = true; - continue; - } - if (flag == StandardOpenOption.TRUNCATE_EXISTING) { - trunc = true; continue; - } - if (flag == null) - throw new NullPointerException(); - if (!(flag instanceof StandardOpenOption) && - !(flag instanceof ExtendedOpenOption)) - { - throw new UnsupportedOperationException("Unsupported open option"); - } - } - - // default is reading - if (!reading && !writing) { - reading = true; - } - - // check for invalid combinations - if (reading && append) + Flags flags = Flags.toFlags(options); + + // default is reading; append => writing + if (!flags.read && !flags.write) { + if (flags.append) { + flags.write = true; + } else { + flags.read = true; + } + } + + // validation + if (flags.read && flags.append) throw new IllegalArgumentException("READ + APPEND not allowed"); - if (append && trunc) + if (flags.append && flags.truncateExisting) throw new IllegalArgumentException("APPEND + TRUNCATE_EXISTING not allowed"); - FileDescriptor fdObj = open(pathForWindows, pathToCheck, reading, writing, - append, false, options, pSecurityDescriptor); - return FileChannelImpl.open(fdObj, reading, writing, null); + FileDescriptor fdObj = open(pathForWindows, pathToCheck, flags, pSecurityDescriptor); + return FileChannelImpl.open(fdObj, flags.read, flags.write, null); } /** @@ -135,38 +179,24 @@ class WindowsChannelFactory { ThreadPool pool) throws IOException { - boolean reading = false; - boolean writing = false; - - // check for invalid flags - for (OpenOption flag: options) { - if (flag == StandardOpenOption.READ) { - reading = true; continue; - } - if (flag == StandardOpenOption.WRITE) { - writing = true; continue; - } - if (flag == null) - throw new NullPointerException(); - if (!(flag instanceof StandardOpenOption) && - !(flag instanceof ExtendedOpenOption)) - { - throw new UnsupportedOperationException("Unsupported open option"); - } - if (flag == StandardOpenOption.APPEND) - throw new UnsupportedOperationException("'APPEND' not supported"); - } + Flags flags = Flags.toFlags(options); + + // Overlapped I/O required + flags.overlapped = true; // default is reading - if (!reading && !writing) { - reading = true; - } + if (!flags.read && !flags.write) { + flags.read = true; + } + + // validation + if (flags.append) + throw new UnsupportedOperationException("APPEND not allowed"); // open file for overlapped I/O FileDescriptor fdObj; try { - fdObj = open(pathForWindows, pathToCheck, reading, writing, false, - true, options, pSecurityDescriptor); + fdObj = open(pathForWindows, pathToCheck, flags, pSecurityDescriptor); } catch (WindowsException x) { x.rethrowAsIOException(pathForWindows); return null; @@ -174,7 +204,7 @@ class WindowsChannelFactory { // create the AsynchronousFileChannel try { - return WindowsAsynchronousFileChannelImpl.open(fdObj, reading, writing, pool); + return WindowsAsynchronousFileChannelImpl.open(fdObj, flags.read, flags.write, pool); } catch (IOException x) { // IOException is thrown if the file handle cannot be associated // with the completion port. All we can do is close the file. @@ -190,11 +220,7 @@ class WindowsChannelFactory { */ private static FileDescriptor open(String pathForWindows, String pathToCheck, - boolean reading, - boolean writing, - boolean append, - boolean overlapped, - Set options, + Flags flags, long pSecurityDescriptor) throws WindowsException { @@ -203,30 +229,30 @@ class WindowsChannelFactory { // map options int dwDesiredAccess = 0; - if (reading) + if (flags.read) dwDesiredAccess |= GENERIC_READ; - if (writing) - dwDesiredAccess |= (append) ? FILE_APPEND_DATA : GENERIC_WRITE; + if (flags.write) + dwDesiredAccess |= (flags.append) ? FILE_APPEND_DATA : GENERIC_WRITE; int dwShareMode = 0; - if (!options.contains(ExtendedOpenOption.NOSHARE_READ)) + if (flags.shareRead) dwShareMode |= FILE_SHARE_READ; - if (!options.contains(ExtendedOpenOption.NOSHARE_WRITE)) + if (flags.shareWrite) dwShareMode |= FILE_SHARE_WRITE; - if (!options.contains(ExtendedOpenOption.NOSHARE_DELETE)) + if (flags.shareDelete) dwShareMode |= FILE_SHARE_DELETE; int dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; int dwCreationDisposition = OPEN_EXISTING; - if (writing) { - if (options.contains(StandardOpenOption.CREATE_NEW)) { + if (flags.write) { + if (flags.createNew) { dwCreationDisposition = CREATE_NEW; // force create to fail if file is orphaned reparse point dwFlagsAndAttributes |= FILE_FLAG_OPEN_REPARSE_POINT; } else { - if (options.contains(StandardOpenOption.CREATE)) + if (flags.create) dwCreationDisposition = OPEN_ALWAYS; - if (options.contains(StandardOpenOption.TRUNCATE_EXISTING)) { + if (flags.truncateExisting) { // Windows doesn't have a creation disposition that exactly // corresponds to CREATE + TRUNCATE_EXISTING so we use // the OPEN_ALWAYS mode and then truncate the file. @@ -239,23 +265,21 @@ class WindowsChannelFactory { } } - if (options.contains(StandardOpenOption.DSYNC) || options.contains(StandardOpenOption.SYNC)) + if (flags.dsync || flags.sync) dwFlagsAndAttributes |= FILE_FLAG_WRITE_THROUGH; - if (overlapped) + if (flags.overlapped) dwFlagsAndAttributes |= FILE_FLAG_OVERLAPPED; - - boolean deleteOnClose = options.contains(StandardOpenOption.DELETE_ON_CLOSE); - if (deleteOnClose) + if (flags.deleteOnClose) dwFlagsAndAttributes |= FILE_FLAG_DELETE_ON_CLOSE; // NOFOLLOW_LINKS and NOFOLLOW_REPARSEPOINT mean open reparse point boolean okayToFollowLinks = true; if (dwCreationDisposition != CREATE_NEW && - (options.contains(LinkOption.NOFOLLOW_LINKS) || - options.contains(NOFOLLOW_REPARSEPOINT) || - deleteOnClose)) From ahughes at redhat.com Thu Feb 5 18:04:39 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 06 Feb 2009 02:04:39 +0000 Subject: changeset in /hg/icedtea6: Depend on overlay.stamp rather than p... Message-ID: changeset d31f7236fd89 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d31f7236fd89 description: Depend on overlay.stamp rather than patch.stamp. Some targets would not apply overlay.stamp early enough (notably when using --with-icedtea/openjdk). As overlay.stamp depends on patch.stamp, later targets should now depend on overlay.stamp so that they work against the complete IcedTea source tree. ChangeLog: 2009-02-05 Andrew John Hughes * Makefile.am: Depend on overlay.stamp rather than patch.stamp. diffstat: 2 files changed, 8 insertions(+), 4 deletions(-) ChangeLog | 5 +++++ Makefile.am | 7 +++---- diffs (43 lines): diff -r 9923df826001 -r d31f7236fd89 ChangeLog --- a/ChangeLog Thu Feb 05 19:03:06 2009 +0000 +++ b/ChangeLog Fri Feb 06 02:04:22 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-05 Andrew John Hughes + + * Makefile.am: + Depend on overlay.stamp rather than patch.stamp. + 2009-02-05 Andrew John Hughes Ensure the NIO2 code is in sync with the latest diff -r 9923df826001 -r d31f7236fd89 Makefile.am --- a/Makefile.am Thu Feb 05 19:03:06 2009 +0000 +++ b/Makefile.am Fri Feb 06 02:04:22 2009 +0000 @@ -797,7 +797,7 @@ endif # ====================================== # Copy over OpenJDK sources for ecj. -stamps/extract-ecj.stamp: stamps/patch.stamp stamps/overlay.stamp +stamps/extract-ecj.stamp: stamps/overlay.stamp if ! test -d openjdk-ecj ; then \ cp -pPRl openjdk openjdk-ecj ; \ fi @@ -1216,7 +1216,7 @@ ICEDTEA_COPY_DIRS += \ javax/script endif -stamps/copy-source-files.stamp: stamps/patch.stamp +stamps/copy-source-files.stamp: stamps/overlay.stamp for copy_dir in $(ICEDTEA_COPY_DIRS) ; \ do \ mkdir -p rt/$$copy_dir ; \ @@ -1244,8 +1244,7 @@ OPENJDK_SOURCEPATH_DIRS = \ $(SHARE):$(SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) # tools.jar class files. -stamps/hotspot-tools-copy-source-files.stamp: stamps/patch.stamp \ - stamps/overlay.stamp +stamps/hotspot-tools-copy-source-files.stamp: stamps/overlay.stamp for copy_dir in \ `cat $(abs_top_srcdir)/tools-copy/tools-jdk-copy-files.txt` ; \ do \ From langel at redhat.com Sun Feb 8 04:39:52 2009 From: langel at redhat.com (Lillian Angel) Date: Sun, 08 Feb 2009 12:39:52 +0000 Subject: changeset in /hg/icedtea6: 2009-02-08 Lillian Angel changeset 0a04da4b4d6d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0a04da4b4d6d description: 2009-02-08 Lillian Angel * Makefile.am: Updated sed to search for OpenJDK instead of IcedTea6. * patches/icedtea-version.patch: Changed PRODUCT_NAME from IcedTea6 to OpenJDK. diffstat: 3 files changed, 8 insertions(+), 3 deletions(-) ChangeLog | 6 ++++++ Makefile.am | 2 +- patches/icedtea-version.patch | 3 +-- diffs (39 lines): diff -r d31f7236fd89 -r 0a04da4b4d6d ChangeLog --- a/ChangeLog Fri Feb 06 02:04:22 2009 +0000 +++ b/ChangeLog Sun Feb 08 07:39:47 2009 -0500 @@ -1,3 +1,9 @@ 2009-02-05 Andrew John Hughes + + * Makefile.am: Updated sed to search for OpenJDK instead of IcedTea6. + * patches/icedtea-version.patch: Changed PRODUCT_NAME from IcedTea6 to + OpenJDK. + 2009-02-05 Andrew John Hughes * Makefile.am: diff -r d31f7236fd89 -r 0a04da4b4d6d Makefile.am --- a/Makefile.am Fri Feb 06 02:04:22 2009 +0000 +++ b/Makefile.am Sun Feb 08 07:39:47 2009 -0500 @@ -706,7 +706,7 @@ stamps/patch.stamp: stamps/patch-fsg.sta if [ -n "$(PKGVERSION)" ]; then \ icedtea_version="$${icedtea_version} ($(PKGVERSION))" ; \ fi; \ - sed -i "s#IcedTea6#IcedTea6 $${icedtea_version}#" openjdk/jdk/make/common/shared/Defs.gmk + sed -i "s#OpenJDK#OpenJDK $${icedtea_version}#" openjdk/jdk/make/common/shared/Defs.gmk if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ diff -r d31f7236fd89 -r 0a04da4b4d6d patches/icedtea-version.patch --- a/patches/icedtea-version.patch Fri Feb 06 02:04:22 2009 +0000 +++ b/patches/icedtea-version.patch Sun Feb 08 07:39:47 2009 -0500 @@ -6,9 +6,8 @@ diff -Nru openjdk.orig/jdk/make/common/s # Default names ifdef OPENJDK - LAUNCHER_NAME = openjdk -- PRODUCT_NAME = OpenJDK + LAUNCHER_NAME = java -+ PRODUCT_NAME = IcedTea6 + PRODUCT_NAME = OpenJDK PRODUCT_SUFFIX = Runtime Environment JDK_RC_PLATFORM_NAME = Platform COMPANY_NAME = N/A From langel at redhat.com Sun Feb 8 05:33:09 2009 From: langel at redhat.com (Lillian Angel) Date: Sun, 08 Feb 2009 13:33:09 +0000 Subject: changeset in /hg/icedtea6: Fixed typo Message-ID: changeset c402774cf211 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c402774cf211 description: Fixed typo diffstat: 1 file changed, 11 insertions(+), 13 deletions(-) patches/icedtea-version.patch | 24 +++++++++++------------- diffs (35 lines): diff -r 0a04da4b4d6d -r c402774cf211 patches/icedtea-version.patch --- a/patches/icedtea-version.patch Sun Feb 08 07:39:47 2009 -0500 +++ b/patches/icedtea-version.patch Sun Feb 08 08:33:04 2009 -0500 @@ -1,16 +1,3 @@ diff -Nru openjdk.orig/jdk/make/common/s -diff -Nru openjdk.orig/jdk/make/common/shared/Defs.gmk openjdk/jdk/make/common/shared/Defs.gmk ---- openjdk.orig/jdk/make/common/shared/Defs.gmk 2008-10-15 15:36:07.000000000 +0100 -+++ openjdk/jdk/make/common/shared/Defs.gmk 2008-10-15 15:36:53.000000000 +0100 -@@ -194,8 +194,8 @@ - - # Default names - ifdef OPENJDK -- LAUNCHER_NAME = openjdk -+ LAUNCHER_NAME = java - PRODUCT_NAME = OpenJDK - PRODUCT_SUFFIX = Runtime Environment - JDK_RC_PLATFORM_NAME = Platform - COMPANY_NAME = N/A --- openjdk/langtools/make/Makefile.orig +++ openjdk/langtools/make/Makefile @@ -82,7 +82,11 @@ @@ -25,3 +12,14 @@ diff -Nru openjdk.orig/jdk/make/common/s endif ifdef BUILD_NUMBER +--- ../openjdk6/jdk/make/common/shared/Defs.gmk 2008-08-28 04:10:47.000000000 -0400 ++++ openjdk/jdk/make/common/shared/Defs.gmk 2009-02-08 08:30:21.000000000 -0500 +@@ -194,7 +194,7 @@ + + # Default names + ifdef OPENJDK +- LAUNCHER_NAME = openjdk ++ LAUNCHER_NAME = java + PRODUCT_NAME = OpenJDK + PRODUCT_SUFFIX = Runtime Environment + JDK_RC_PLATFORM_NAME = Platform From gbenson at redhat.com Sun Feb 8 06:49:10 2009 From: gbenson at redhat.com (Gary Benson) Date: Sun, 8 Feb 2009 06:49:10 -0800 (PST) Subject: Zero build passes TCK Message-ID: <20090208144910.20AED2C434@rexford.dreamhost.com> For the past three months the OpenJDK team at Red Hat has been working on a project to bring the Zero-assembler port of HotSpot to the point where IcedTea builds using Zero are capable of passing the Java SE 6 TCK. As a result of this work I am pleased to announce that the latest OpenJDK packages included in Fedora 10 for 32- and 64-bit PowerPC have passed the Java SE 6 TCK and are compatible with the Java SE 6 platform. This work was funded by Red Hat. From mvfranz at gmail.com Mon Feb 9 16:56:55 2009 From: mvfranz at gmail.com (Michael Franz) Date: Mon, 9 Feb 2009 19:56:55 -0500 Subject: BSD Port and Linux Differences Message-ID: Hi, I am still working through the issues to get the bsd-port repo to compile on Linux and have run into these issues. BSD is using statfs instead of statvfs. Both are available on Linux and OS X. The difference is how they are included. Linux uses either sys/statfs.h or sys/statfs.h while OS X (and I assume other BSDs) are use sys/param.h,sys/mount.h or sys/statvfs.h. See jdk/src/solaris/native/java/io/UnixFileSystem_md.c for more details. Is it better to use one over the other? Do we really want to use statfs on bsd and statvfs on linux? I have run into a similar issue with strncpy vs strlcpy. The bsd port is using strlcpy, as far as I can tell, strlcpy does not exist on linux. Both have strncpy, should this be used instead? This issue exists in jdk/src/solaris/native/java/util/TimeZone_md.c A previous difference that I have found was in the use of machine/endian.h in the BSD port. Thoughts? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090209/0d5f61d6/attachment.html From aph at redhat.com Tue Feb 10 02:17:12 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 10 Feb 2009 10:17:12 +0000 Subject: BSD Port and Linux Differences In-Reply-To: References: Message-ID: <49915428.7090407@redhat.com> Michael Franz wrote: > I am still working through the issues to get the bsd-port repo to > compile on Linux and have run into these issues. > > BSD is using statfs instead of statvfs. Both are available on Linux and > OS X. The difference is how they are included. Linux uses either > sys/statfs.h or sys/statfs.h while OS X (and I assume other BSDs) are > use sys/param.h,sys/mount.h or sys/statvfs.h. See > jdk/src/solaris/native/java/io/UnixFileSystem_md.c for more details. > > Is it better to use one over the other? Do we really want to use statfs > on bsd and statvfs on linux? statvfs is standard POSIX, whereas statfs isn't. The Linux statfs is based on BSD's but it's not the same. We surely should use standard interfaces. > I have run into a similar issue with strncpy vs strlcpy. The bsd port > is using strlcpy, as far as I can tell, strlcpy does not exist on > linux. Both have strncpy, should this be used instead? If it's safe, yes. Assuming the strncpy version is correct, we should use that. > This issue exists in jdk/src/solaris/native/java/util/TimeZone_md.c > > A previous difference that I have found was in the use of > machine/endian.h in the BSD port. Is it really needed? Andrew. From christos at zoulas.com Tue Feb 10 08:00:35 2009 From: christos at zoulas.com (Christos Zoulas) Date: Tue, 10 Feb 2009 11:00:35 -0500 Subject: BSD Port and Linux Differences In-Reply-To: from Michael Franz (Feb 9, 7:56pm) Message-ID: <20090210160035.DCC5D5654E@rebar.astron.com> On Feb 9, 7:56pm, mvfranz at gmail.com (Michael Franz) wrote: -- Subject: BSD Port and Linux Differences | Hi, | | I am still working through the issues to get the bsd-port repo to compile on | Linux and have run into these issues. | | BSD is using statfs instead of statvfs. Both are available on Linux and OS | X. The difference is how they are included. Linux uses either sys/statfs.h | or sys/statfs.h while OS X (and I assume other BSDs) are use | sys/param.h,sys/mount.h or sys/statvfs.h. See | jdk/src/solaris/native/java/io/UnixFileSystem_md.c for more details. NetBSD uses statvfs too. | Is it better to use one over the other? Do we really want to use statfs on | bsd and statvfs on linux? statvfs should be preferred over statfs because: 1. it is part of POSIX: http://www.opengroup.org/onlinepubs/009695399/functions/statvfs.html 2. it is newer and has 64 bit fields where appropriate (in most implementations) I think we need some #ifdef's there to handle which include is appropriate for which OS. | I have run into a similar issue with strncpy vs strlcpy. The bsd port is | using strlcpy, as far as I can tell, strlcpy does not exist on linux. Both | have strncpy, should this be used instead? | | This issue exists in jdk/src/solaris/native/java/util/TimeZone_md.c strl{cpy,cat} should be preferred over strn{cpy,cat}. If that is the only use though, I say put it back to use strncpy() correctly, since java probably uses strn{cpy,cat} all over the place and providing portability just for one use is overkill. | A previous difference that I have found was in the use of machine/endian.h | in the BSD port. This is a more complicated :-) and I will let someone else answer it. christos From gnu_andrew at member.fsf.org Tue Feb 10 11:07:26 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 10 Feb 2009 19:07:26 +0000 Subject: RFC: Only enable NIO2 by default when building with IcedTea Message-ID: <20090210190726.GA13625@rivendell.middle-earth.co.uk> It appears that some older versions of ecj fail when building the NIO2 code: 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) throws IOException ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it ---------- It looks like this bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=243820 The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, and to be consistent with the rest of the autotools macro, it switches the values used from true/false to yes/no. Okay to commit? ChangeLog: 2009-02-10 Andrew John Hughes * Makefile.am: Only build NIO2 by default if building with IcedTea. Fix with_icedtea/with_openjdk to use yes/no rather than true/false. -- Andrew :) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r c402774cf211 configure.ac --- a/configure.ac Sun Feb 08 08:33:04 2009 -0500 +++ b/configure.ac Tue Feb 10 18:59:30 2009 +0000 @@ -44,15 +44,15 @@ [ if test "x${withval}" != xno then - with_icedtea=true + with_icedtea=yes else - with_icedtea=false + with_icedtea=no fi ], [ - with_icedtea=false + with_icedtea=no ]) -AM_CONDITIONAL(WITH_ICEDTEA, test "${with_icedtea}" = true) +AM_CONDITIONAL(WITH_ICEDTEA, test "${with_icedtea}" = yes) AC_MSG_RESULT(${with_icedtea}) AC_MSG_CHECKING([whether to build using an existing installation of OpenJDK]) @@ -62,15 +62,15 @@ [ if test "x${withval}" != xno then - with_openjdk=true + with_openjdk=yes else - with_openjdk=false + with_openjdk=no fi ], [ - with_openjdk=false + with_openjdk=no ]) -AM_CONDITIONAL(WITH_OPENJDK, test "${with_openjdk}" = true) +AM_CONDITIONAL(WITH_OPENJDK, test "${with_openjdk}" = yes) AC_MSG_RESULT(${with_openjdk}) AC_MSG_CHECKING(for Ant home directory) @@ -135,7 +135,7 @@ AC_ARG_ENABLE([nio2], [AS_HELP_STRING([--disable-nio2], [Disable inclusion of backported NIO2])], - [ENABLE_XRENDER="${enableval}"], [ENABLE_NIO2='yes']) + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2="${with_icedtea}"]) AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) AC_MSG_RESULT(${ENABLE_NIO2}) @@ -183,7 +183,7 @@ SET_ARCH_DIRS SET_OS_DIRS -if test "${with_openjdk}" = true +if test "${with_openjdk}" = yes then AC_CHECK_FOR_OPENJDK JAVA=$SYSTEM_OPENJDK_DIR/bin/java @@ -197,7 +197,7 @@ RMIC=${SYSTEM_OPENJDK_DIR}/bin/rmic AC_SUBST(RMIC) else -if test "${with_icedtea}" = true +if test "${with_icedtea}" = yes then AC_CHECK_FOR_ICEDTEA JAVA=$SYSTEM_ICEDTEA_DIR/bin/java From mark at klomp.org Tue Feb 10 11:47:33 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 10 Feb 2009 20:47:33 +0100 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <20090210190726.GA13625@rivendell.middle-earth.co.uk> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> Message-ID: <1234295253.2406.6.camel@fedora.wildebeest.org> Hi Andrew, On Tue, 2009-02-10 at 19:07 +0000, Andrew John Hughes wrote: > It appears that some older versions of ecj fail when building the > NIO2 code: > > 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) > public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) > throws IOException > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it > ---------- I can confirm this bug against Eclipse Java Compiler 0.793_R33x, 3.3.2. > The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, > and to be consistent with the rest of the autotools macro, it switches the values used from true/false > to yes/no. > > Okay to commit? > > ChangeLog: > > 2009-02-10 Andrew John Hughes > > * Makefile.am: > Only build NIO2 by default if building with > IcedTea. Fix with_icedtea/with_openjdk to use > yes/no rather than true/false. The attached patch is for configure.ac, not for Makefile.am. I am slightly confused by why this works. Are you counting on the fact that if --with-icedtea is given the provided javac will not be based on ecj and so not have the bug? Wouldn't it be more correct to disable nio2 by default and/or add a compiler configure check to see if these kind of constructs can be compiled? Cheers, Mark From gnu_andrew at member.fsf.org Tue Feb 10 11:50:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 10 Feb 2009 19:50:35 +0000 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <1234295253.2406.6.camel@fedora.wildebeest.org> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> <1234295253.2406.6.camel@fedora.wildebeest.org> Message-ID: <17c6771e0902101150wa88daa8kbe034f2af929f6bf@mail.gmail.com> 2009/2/10 Mark Wielaard : > Hi Andrew, > > On Tue, 2009-02-10 at 19:07 +0000, Andrew John Hughes wrote: >> It appears that some older versions of ecj fail when building the >> NIO2 code: >> >> 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) >> public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) >> throws IOException >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it >> ---------- > > I can confirm this bug against Eclipse Java Compiler 0.793_R33x, 3.3.2. > >> The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, >> and to be consistent with the rest of the autotools macro, it switches the values used from true/false >> to yes/no. >> >> Okay to commit? >> >> ChangeLog: >> >> 2009-02-10 Andrew John Hughes >> >> * Makefile.am: >> Only build NIO2 by default if building with >> IcedTea. Fix with_icedtea/with_openjdk to use >> yes/no rather than true/false. > > The attached patch is for configure.ac, not for Makefile.am. > I am slightly confused by why this works. > Are you counting on the fact that if --with-icedtea is given the > provided javac will not be based on ecj and so not have the bug? --with-icedtea uses ICEDTEA_HOME/bin/javac so yeah but... > Wouldn't it be more correct to disable nio2 by default and/or add a > compiler configure check to see if these kind of constructs can be > compiled? ...I'd prefer this. But given I can't duplicate this myself, someone else needs to write the test... ;) > > Cheers, > > Mark > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Tue Feb 10 12:53:30 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 10 Feb 2009 20:53:30 +0000 Subject: [IcedTea7] FYI: Bump to b46 Message-ID: <20090210205330.GA10325@rivendell.middle-earth.co.uk> This adds support to IcedTea7 for the new build drop, b46. A number of patches were dropped: directaudio-close-trick: Is applied but unlisted in http://download.java.net/jdk7/changes/jdk7-b46.html enum-bug-181: Fixed by S6736248 jsoundhs, sound: Fixed by S6702956 and related patches (replacement of jsoundhs with Gervill) There is still no support for IMPORT_BINARY_PLUGS=false however; SNMP still seems to be required. 2009-02-10 Andrew John Hughes Bump to b46. * patches/icedtea-directaudio-close-trick.patch, * patches/icedtea-enum-bug-181.patch, * patches/icedtea-jsoundhs.patch, * patches/icedtea-sound.patch: Applied upstream. * HACKING, * Makefile.am: Updated. * patches/ecj/icedtea.patch: Recreated due to S6795030. * patches/icedtea-copy-plugs.patch: Recreated due to S6702956. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 5a2104fb2256 HACKING --- a/HACKING Wed Feb 04 11:49:31 2009 +0000 +++ b/HACKING Tue Feb 10 20:30:15 2009 +0000 @@ -24,7 +24,6 @@ * icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. -* icedtea-enum-bug-181.patch: Fixes class type check (PR181/S6736248) * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) * icedtea-fonts.patch: Add Fedora fontconfig. * icedtea-gcc-suffix.patch: Append $(GCC_SUFFIX) to end of 'gcc' binary name. @@ -86,6 +85,7 @@ * icedtea-corba.patch: Adds additional files to org.omg.CORBA Makefile. * icedtea-display-mode-changer.patch: Add extra test class. (applied in OpenJDK7 b43) +* icedtea-enum-bug-181.patch: Fixes class type check (PR181/S6736248) * icedtea-gcc-4.3.patch: Fix code to compile with GCC 4.3 and turn off -Werror. * icedtea-generated.patch: Force use of /bin/bash. * icedtea-nomotif.patch: Remove sanity and GrabShell.h dependency on Motif/Lesstif library. @@ -105,15 +105,12 @@ * icedtea-constructor-properties.patch: Explicitly cast to ConstructorProperties as getAnnotation is broken in libgcj 4.3. -* icedtea-jsoundhs.patch: Remove attempted build of proprietary jsoundhs library. * icedtea-mbeanintrospector.patch: Explicitly cast to Description as getAnnotation is broken in libgcj 4.3. * icedtea-override.patch: Remove @Override annotation in javax.management.AttributeValueExp (unsupported by ecj < 3.4). * icedtea-snmp.patch: Remove proprietary SNMP support hooks. * icedtea-sound.patch: Remove proprietary MIDI support hooks. -* icedtea-fortify-source.patch: Fix build failures with -D_FORTIFY_SOURCE=2. -* icedtea-format-warnings.patch: Fix build failures with -Wformat=1. The following patches are only applied to the icedtea-ecj bootstrap tree: diff -r 5a2104fb2256 Makefile.am --- a/Makefile.am Wed Feb 04 11:49:31 2009 +0000 +++ b/Makefile.am Tue Feb 10 20:30:15 2009 +0000 @@ -1,6 +1,6 @@ -OPENJDK_DATE = 29_jan_2009 -OPENJDK_MD5SUM = 0d6ae1ed77b470c9665d069b34a1bc88 -OPENJDK_VERSION = b45 +OPENJDK_DATE = 05_feb_2009 +OPENJDK_MD5SUM = d5f92fec2f645d44437ab90e1dd2dbaf +OPENJDK_VERSION = b46 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 @@ -1845,7 +1845,6 @@ patches/icedtea-uname.patch \ patches/icedtea-ia64-fdlibm.patch \ patches/icedtea-fonts.patch \ - patches/icedtea-directaudio-close-trick.patch \ patches/hotspot/$(HSBUILD)/icedtea-sparc-ptracefix.patch \ patches/hotspot/$(HSBUILD)/icedtea-sparc-trapsfix.patch \ patches/icedtea-override-redirect-metacity.patch \ @@ -1854,13 +1853,11 @@ patches/hotspot/$(HSBUILD)/icedtea-shark-build.patch \ patches/icedtea-toolkit.patch \ patches/icedtea-security-updates.patch \ - patches/icedtea-jsoundhs.patch \ patches/icedtea-jdk-docs-target.patch \ patches/icedtea-mbeanintrospector.patch \ patches/icedtea-hotspot-gcc-pr36917.patch \ patches/icedtea-alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ - patches/icedtea-enum-bug-181.patch \ patches/icedtea-jdk-use-ssize_t.patch \ patches/hotspot/$(HSBUILD)/icedtea-use-idx_t.patch \ patches/hotspot/$(HSBUILD)/icedtea-params-cast-size_t.patch \ @@ -1876,7 +1873,6 @@ patches/icedtea-xjc.patch \ patches/icedtea-renderer-crossing.patch \ patches/icedtea-snmp.patch \ - patches/icedtea-sound.patch \ patches/icedtea-tests-jdk.patch \ patches/icedtea-stroker-finish.patch \ patches/icedtea-alsa-default-device.patch \ diff -r 5a2104fb2256 patches/ecj/icedtea.patch --- a/patches/ecj/icedtea.patch Wed Feb 04 11:49:31 2009 +0000 +++ b/patches/ecj/icedtea.patch Tue Feb 10 20:30:15 2009 +0000 @@ -1,6 +1,6 @@ diff -Nru openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile openjdk-ecj/corba/make/com/sun/corba/se/Makefile ---- openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/com/sun/corba/se/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/com/sun/corba/se/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -42,7 +42,7 @@ # the rmic iiop backend needs some classes that are part of the impl/util # package. These classes use log wrappers, so they must be built after @@ -12,7 +12,7 @@ diff -Nru openjdk-ecj.orig/corba/make/com/sun/corba/se/org/Makefile openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile --- openjdk-ecj.orig/corba/make/com/sun/corba/se/org/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile 2008-10-24 13:32:48.000000000 +0100 ++++ openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -0,0 +1,38 @@ +# +# Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. @@ -53,8 +53,8 @@ +# +include $(BUILDDIR)/common/Classes.gmk diff -Nru openjdk-ecj.orig/corba/make/common/Defs.gmk openjdk-ecj/corba/make/common/Defs.gmk ---- openjdk-ecj.orig/corba/make/common/Defs.gmk 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Defs.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Defs.gmk 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Defs.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -53,6 +53,13 @@ _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH) @@ -88,8 +88,8 @@ vpath %.java $(VPATH.java) vpath %.class $(CLASSBINDIR) diff -Nru openjdk-ecj.orig/corba/make/common/Defs-linux.gmk openjdk-ecj/corba/make/common/Defs-linux.gmk ---- openjdk-ecj.orig/corba/make/common/Defs-linux.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Defs-linux.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Defs-linux.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Defs-linux.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -276,7 +276,7 @@ fi; \ done) @@ -100,8 +100,8 @@ # # We want to privatize JVM symbols on Solaris. This is so the user can diff -Nru openjdk-ecj.orig/corba/make/common/Rules.gmk openjdk-ecj/corba/make/common/Rules.gmk ---- openjdk-ecj.orig/corba/make/common/Rules.gmk 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Rules.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Rules.gmk 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Rules.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -197,8 +197,10 @@ $(ECHO) "# Java sources to be compiled: (listed in file $(JAVA_SOURCE_LIST))"; \ $(CAT) $(JAVA_SOURCE_LIST); \ @@ -116,8 +116,8 @@ @$(java-vm-cleanup) diff -Nru openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk openjdk-ecj/corba/make/common/shared/Defs-java.gmk ---- openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/corba/make/common/shared/Defs-java.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/corba/make/common/shared/Defs-java.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -110,31 +110,13 @@ JAVACFLAGS += $(OTHER_JAVACFLAGS) @@ -155,8 +155,8 @@ # Override of what javac to use (see deploy workspace) ifdef JAVAC diff -Nru openjdk-ecj.orig/corba/make/org/omg/sources/Makefile openjdk-ecj/corba/make/org/omg/sources/Makefile ---- openjdk-ecj.orig/corba/make/org/omg/sources/Makefile 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/org/omg/sources/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/org/omg/sources/Makefile 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/org/omg/sources/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -93,8 +93,6 @@ POAHELHOLFILES = $(POA_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%) @@ -234,8 +234,8 @@ pi.compile: $(PIGENERATEDFILES) diff -Nru openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile ---- openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile 2008-10-24 10:16:05.000000000 +0100 -+++ openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile 2009-02-10 18:11:57.000000000 +0000 ++++ openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -172,7 +172,6 @@ ACTIVATIONFILES = $(com_sun_corba_se_spi_activation_java:%=$(GENSRCDIR)/%) @@ -253,8 +253,8 @@ portableactivation.idl.compile: $(PORTABLEACTIVATIONFILES) diff -Nru openjdk-ecj.orig/jaxp/make/build.xml openjdk-ecj/jaxp/make/build.xml ---- openjdk-ecj.orig/jaxp/make/build.xml 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxp/make/build.xml 2008-10-24 13:33:43.000000000 +0100 +--- openjdk-ecj.orig/jaxp/make/build.xml 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxp/make/build.xml 2009-02-10 19:24:54.000000000 +0000 @@ -71,7 +71,10 @@ diff -Nru openjdk-ecj.orig/jaxp/make/Makefile openjdk-ecj/jaxp/make/Makefile ---- openjdk-ecj.orig/jaxp/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxp/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxp/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxp/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -75,7 +75,7 @@ endif @@ -289,8 +289,8 @@ ifdef ALT_OUTPUTDIR diff -Nru openjdk-ecj.orig/jaxws/make/build.properties openjdk-ecj/jaxws/make/build.properties ---- openjdk-ecj.orig/jaxws/make/build.properties 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/build.properties 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/build.properties 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/build.properties 2009-02-10 19:24:54.000000000 +0000 @@ -37,7 +37,7 @@ # set the following to -version to verify the versions of javac being used javac.version.opt = @@ -301,8 +301,8 @@ # JVM memory size javac.memoryInitialSize = 128m diff -Nru openjdk-ecj.orig/jaxws/make/build.xml openjdk-ecj/jaxws/make/build.xml ---- openjdk-ecj.orig/jaxws/make/build.xml 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/build.xml 2008-10-24 13:34:37.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/build.xml 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/build.xml 2009-02-10 19:24:54.000000000 +0000 @@ -84,7 +84,10 @@ diff -Nru openjdk-ecj.orig/jaxws/make/Makefile openjdk-ecj/jaxws/make/Makefile ---- openjdk-ecj.orig/jaxws/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -75,8 +75,8 @@ endif @@ -347,8 +347,8 @@ ifdef ALT_OUTPUTDIR diff -Nru openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk openjdk-ecj/jdk/make/common/BuildToolJar.gmk ---- openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/BuildToolJar.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/BuildToolJar.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -43,7 +43,8 @@ @$(prep-target) @$(MKDIR) -p $(BUILDTOOLCLASSDIR) @@ -360,8 +360,8 @@ -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \ $(BOOT_JAR_JFLAGS) || $(RM) $@ diff -Nru openjdk-ecj.orig/jdk/make/common/Release.gmk openjdk-ecj/jdk/make/common/Release.gmk ---- openjdk-ecj.orig/jdk/make/common/Release.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/Release.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/Release.gmk 2009-02-10 18:12:01.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/Release.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -651,10 +651,23 @@ $(RES_JAR_ARGLIST): $(RES_JAR_FILELIST) $(prep-target) @@ -409,7 +409,7 @@ @$(java-vm-cleanup) # Meta-index construction to make core class loaders lazier -@@ -951,19 +972,6 @@ +@@ -944,19 +965,6 @@ @$(java-vm-cleanup) $(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar @# @@ -429,7 +429,7 @@ @# CORBA supported orb.idl and ir.idl should be copied to lib @# $(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl -@@ -1040,16 +1048,6 @@ +@@ -1033,16 +1041,6 @@ $(CP) $(PLATFORM_SRC)/bin/java_md.h $(JDK_IMAGE_DIR)/src/launcher $(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip * $(RM) -r $(JDK_IMAGE_DIR)/src @@ -447,8 +447,8 @@ $(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES)) endif # !windows diff -Nru openjdk-ecj.orig/jdk/make/common/Rules.gmk openjdk-ecj/jdk/make/common/Rules.gmk ---- openjdk-ecj.orig/jdk/make/common/Rules.gmk 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/Rules.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/Rules.gmk 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/Rules.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -237,8 +237,9 @@ $(ECHO) "# Java sources to be compiled: (listed in file $<)"; \ $(CAT) $<.filtered; \ @@ -475,8 +475,8 @@ @$(TOUCH) $@ diff -Nru openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk openjdk-ecj/jdk/make/common/shared/Defs-java.gmk ---- openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/shared/Defs-java.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/shared/Defs-java.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -121,30 +121,19 @@ JAVACFLAGS += $(OTHER_JAVACFLAGS) @@ -510,8 +510,8 @@ # Override of what javac to use (see deploy workspace) diff -Nru openjdk-ecj.orig/jdk/make/java/nio/Makefile openjdk-ecj/jdk/make/java/nio/Makefile ---- openjdk-ecj.orig/jdk/make/java/nio/Makefile 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/java/nio/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/java/nio/Makefile 2009-02-05 08:44:13.000000000 +0000 ++++ openjdk-ecj/jdk/make/java/nio/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -31,7 +31,7 @@ PACKAGE = java.nio LIBRARY = nio @@ -522,8 +522,8 @@ NIO_SRC = $(SHARE_SRC)/classes/java/nio diff -Nru openjdk-ecj.orig/jdk/make/java/text/Makefile openjdk-ecj/jdk/make/java/text/Makefile ---- openjdk-ecj.orig/jdk/make/java/text/Makefile 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/java/text/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/java/text/Makefile 2009-02-05 08:44:13.000000000 +0000 ++++ openjdk-ecj/jdk/make/java/text/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -80,8 +80,8 @@ -sourcepath $(TEXT_SRCDIR) \ $(TEXT_SOURCES) @@ -536,8 +536,8 @@ -spec $(UNICODEDATA)/UnicodeData.txt @$(java-vm-cleanup) diff -Nru openjdk-ecj.orig/jdk/make/Makefile openjdk-ecj/jdk/make/Makefile ---- openjdk-ecj.orig/jdk/make/Makefile 2008-10-09 08:45:41.000000000 +0100 -+++ openjdk-ecj/jdk/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/Makefile 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -239,7 +239,7 @@ all build:: sanity-all post-sanity-all @@ -548,8 +548,8 @@ $(SUBDIRS-loop) diff -Nru openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk ---- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -188,3 +188,5 @@ java/awt/dnd/DnDConstants.java \ sun/awt/CausedFocusEvent.java @@ -557,8 +557,8 @@ +EXPORTED_inner = \ + sun.java2d.opengl.OGLContext$$OGLContextCaps diff -Nru openjdk-ecj.orig/jdk/make/sun/awt/Makefile openjdk-ecj/jdk/make/sun/awt/Makefile ---- openjdk-ecj.orig/jdk/make/sun/awt/Makefile 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/awt/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/awt/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/awt/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -395,10 +395,9 @@ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar @@ -574,8 +574,8 @@ fontconfigs.clean : diff -Nru openjdk-ecj.orig/jdk/make/sun/javazic/Makefile openjdk-ecj/jdk/make/sun/javazic/Makefile ---- openjdk-ecj.orig/jdk/make/sun/javazic/Makefile 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/javazic/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/javazic/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/javazic/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -62,7 +62,8 @@ $(WORKDIR)/$(MAPFILE): $(BUILDTOOLJARDIR)/javazic.jar $(TZFILES) $(RM) -r $(@D) @@ -587,8 +587,8 @@ $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE) diff -Nru openjdk-ecj.orig/jdk/make/sun/text/Makefile openjdk-ecj/jdk/make/sun/text/Makefile ---- openjdk-ecj.orig/jdk/make/sun/text/Makefile 2008-10-09 08:45:44.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/text/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/text/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/text/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -85,8 +85,9 @@ $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \ -sourcepath $(TEXT_SRCDIR) \ @@ -602,8 +602,8 @@ -spec $(UNICODEDATA)/UnicodeData.txt \ -language th diff -Nru openjdk-ecj.orig/jdk/make/sun/xawt/Makefile openjdk-ecj/jdk/make/sun/xawt/Makefile ---- openjdk-ecj.orig/jdk/make/sun/xawt/Makefile 2008-10-09 08:45:44.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/xawt/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/xawt/Makefile 2009-02-10 18:12:01.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/xawt/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -276,11 +276,7 @@ TEMPDIR_CLASSES = $(TEMPDIR)/classes @@ -641,8 +641,8 @@ done $(TOUCH) $@ diff -Nru openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java ---- openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2008-10-24 10:16:45.000000000 +0100 -+++ openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-02-10 18:11:22.000000000 +0000 ++++ openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-02-10 19:24:54.000000000 +0000 @@ -647,9 +647,6 @@ throws FileNotFoundException, IOException { BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName)); @@ -662,8 +662,8 @@ if (plane == 0 && bLatin1 == false) { genCaseMapTableDeclaration(result); diff -Nru openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java openjdk-ecj/jdk/src/share/classes/java/lang/Double.java ---- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java 2008-10-24 10:16:33.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/classes/java/lang/Double.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java 2009-02-10 18:11:12.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/classes/java/lang/Double.java 2009-02-10 19:24:54.000000000 +0000 @@ -76,7 +76,7 @@ * {@code 0x1.fffffffffffffP+1023} and also equal to * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}. @@ -692,8 +692,8 @@ /** * Maximum exponent a finite {@code double} variable may have. diff -Nru openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java openjdk-ecj/jdk/src/share/classes/java/lang/Float.java ---- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java 2008-10-24 10:16:33.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/classes/java/lang/Float.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java 2009-02-10 18:11:12.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/classes/java/lang/Float.java 2009-02-10 19:24:54.000000000 +0000 @@ -76,7 +76,7 @@ * {@code 0x1.fffffeP+127f} and also equal to * {@code Float.intBitsToFloat(0x7f7fffff)}. @@ -722,8 +722,8 @@ /** * Maximum exponent a finite {@code float} variable may have. It diff -Nru openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h ---- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2008-10-09 08:46:24.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-02-05 08:44:52.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-02-10 19:24:54.000000000 +0000 @@ -27,6 +27,7 @@ #define OGLContext_h_Included @@ -789,49 +789,44 @@ /** * Evaluates to true if the given capability bitmask is present for the diff -Nru openjdk-ecj.orig/langtools/make/build.xml openjdk-ecj/langtools/make/build.xml ---- openjdk-ecj.orig/langtools/make/build.xml 2008-10-09 08:47:11.000000000 +0100 -+++ openjdk-ecj/langtools/make/build.xml 2008-10-24 13:32:48.000000000 +0100 -@@ -498,7 +498,10 @@ +--- openjdk-ecj.orig/langtools/make/build.xml 2009-02-05 08:45:36.000000000 +0000 ++++ openjdk-ecj/langtools/make/build.xml 2009-02-10 19:56:00.000000000 +0000 +@@ -502,7 +502,9 @@ includes="@{includes}" sourcepath="" includeAntRuntime="no" - target="@{javac.target}"> + target="@{javac.target}" -+ executable="${javac.executable}" + source="1.5"> + -@@ -512,7 +515,10 @@ +@@ -517,7 +519,9 @@ includeAntRuntime="no" target="@{javac.target}" debug="${javac.debug}" - debuglevel="${javac.debuglevel}"> -+ executable="${javac.executable}" + debuglevel="${javac.debuglevel}" + source="1.5"> + -@@ -563,8 +569,11 @@ - - - + classpath="${ant.home}/lib/ant.jar" -+ executable="${javac.executable}" -+ source="1.5"/> ++ source="1.5" /> diff -Nru openjdk-ecj.orig/langtools/make/Makefile openjdk-ecj/langtools/make/Makefile ---- openjdk-ecj.orig/langtools/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/langtools/make/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -108,7 +108,7 @@ +--- openjdk-ecj.orig/langtools/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/langtools/make/Makefile 2009-02-10 19:24:54.000000000 +0000 +@@ -112,7 +112,7 @@ ifdef ALT_BOOTDIR ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR) @@ -841,8 +836,8 @@ ifdef ALT_OUTPUTDIR diff -Nru openjdk-ecj.orig/make/jdk-rules.gmk openjdk-ecj/make/jdk-rules.gmk ---- openjdk-ecj.orig/make/jdk-rules.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/make/jdk-rules.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/make/jdk-rules.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/make/jdk-rules.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -58,7 +58,7 @@ endif diff -r 5a2104fb2256 patches/icedtea-copy-plugs.patch --- a/patches/icedtea-copy-plugs.patch Wed Feb 04 11:49:31 2009 +0000 +++ b/patches/icedtea-copy-plugs.patch Tue Feb 10 20:30:15 2009 +0000 @@ -1,7 +1,7 @@ diff -Nru openjdk.orig/jdk/make/common/internal/BinaryPlugs.gmk openjdk/jdk/make/common/internal/BinaryPlugs.gmk ---- openjdk.orig/jdk/make/common/internal/BinaryPlugs.gmk 2008-08-14 08:42:49.000000000 +0100 -+++ openjdk/jdk/make/common/internal/BinaryPlugs.gmk 2008-08-20 22:56:55.000000000 +0100 -@@ -147,6 +147,21 @@ +--- openjdk.orig/jdk/make/common/internal/BinaryPlugs.gmk 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk/jdk/make/common/internal/BinaryPlugs.gmk 2009-02-10 15:49:40.000000000 +0000 +@@ -93,11 +93,32 @@ @for i in $(PLUG_JMF_CLASS_NAMES) ; do \ $(ECHO) "$$i" >> $@; \ done @@ -20,12 +20,10 @@ + @for i in $(PLUG_NETX_CLASS_NAMES) ; do \ + $(ECHO) "$$i" >> $@ ; \ + done - $(PLUG_TEMPDIR)/sound.clist: + $(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS) @$(prep-target) - @for i in $(PLUG_SOUND_CLASS_NAMES) ; do \ -@@ -159,6 +174,12 @@ - $(plug-create-jargs) - $(PLUG_TEMPDIR)/sound.jargs: $(PLUG_TEMPDIR)/sound.clist + $(CAT) $(PLUG_CLISTS) > $@ + $(PLUG_TEMPDIR)/jmf.jargs: $(PLUG_TEMPDIR)/jmf.clist $(plug-create-jargs) +$(PLUG_TEMPDIR)/gnu.jargs: $(PLUG_TEMPDIR)/gnu.clist + $(plug-create-jargs) @@ -36,7 +34,7 @@ $(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist $(plug-create-jargs) -@@ -183,9 +204,9 @@ +@@ -122,9 +143,9 @@ # Import classes command define import-binary-plug-classes @@ -49,9 +47,9 @@ endef # import-binary-plug-classes diff -Nru openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-14 08:43:00.000000000 +0100 -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-08-20 22:55:35.000000000 +0100 -@@ -1463,7 +1463,7 @@ +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2009-02-10 02:25:40.000000000 +0000 ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2009-02-10 15:45:15.000000000 +0000 +@@ -1475,7 +1475,7 @@ } private static String[] getAnnotationValue(Constructor constructor) { diff -r 5a2104fb2256 patches/icedtea-directaudio-close-trick.patch --- a/patches/icedtea-directaudio-close-trick.patch Wed Feb 04 11:49:31 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ ---- /home/mark/src/openjdk/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java 2008-04-13 01:05:30.000000000 +0200 -+++ openjdk/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java 2008-05-09 02:18:21.000000000 +0200 -@@ -394,7 +394,12 @@ - private float leftGain, rightGain; - protected volatile boolean noService = false; // do not run the nService method - -+ // Guards all native calls. - protected Object lockNative = new Object(); -+ // Guards the lastOpened static variable in implOpen and implClose. -+ protected static Object lockLast = new Object(); -+ // Keeps track of last opened line, see implOpen "trick". -+ protected static DirectDL lastOpened; - - // CONSTRUCTOR - protected DirectDL(DataLine.Info info, -@@ -496,20 +501,47 @@ - // align buffer to full frames - bufferSize = ((int) bufferSize / format.getFrameSize()) * format.getFrameSize(); - -- id = nOpen(mixerIndex, deviceID, isSource, -- encoding, -- hardwareFormat.getSampleRate(), -- hardwareFormat.getSampleSizeInBits(), -- hardwareFormat.getFrameSize(), -- hardwareFormat.getChannels(), -- hardwareFormat.getEncoding().equals(AudioFormat.Encoding.PCM_SIGNED), -- hardwareFormat.isBigEndian(), -- bufferSize); -+ synchronized(lockLast) { -+ id = nOpen(mixerIndex, deviceID, isSource, -+ encoding, -+ hardwareFormat.getSampleRate(), -+ hardwareFormat.getSampleSizeInBits(), -+ hardwareFormat.getFrameSize(), -+ hardwareFormat.getChannels(), -+ hardwareFormat.getEncoding().equals(AudioFormat.Encoding.PCM_SIGNED), -+ hardwareFormat.isBigEndian(), -+ bufferSize); -+ -+ if (id == 0) { -+ // Bah... Dirty trick. The most likely cause is an application -+ // already having a line open for this particular hardware -+ // format and forgetting about it. If so, silently close that -+ // implementation and try again. Unfortuantely we can only -+ // open one line per hardware format currently. -+ if (lastOpened != null -+ && hardwareFormat.matches(lastOpened.hardwareFormat)) { -+ lastOpened.implClose(); -+ lastOpened = null; -+ -+ id = nOpen(mixerIndex, deviceID, isSource, -+ encoding, -+ hardwareFormat.getSampleRate(), -+ hardwareFormat.getSampleSizeInBits(), -+ hardwareFormat.getFrameSize(), -+ hardwareFormat.getChannels(), -+ hardwareFormat.getEncoding().equals(AudioFormat.Encoding.PCM_SIGNED), -+ hardwareFormat.isBigEndian(), -+ bufferSize); -+ } -+ -+ if (id == 0) { -+ // TODO: nicer error messages... -+ throw new LineUnavailableException("line with format "+format+" not supported."); -+ } -+ } -+ lastOpened = this; -+ } - -- if (id == 0) { -- // TODO: nicer error messages... -- throw new LineUnavailableException("line with format "+format+" not supported."); -- } - this.bufferSize = nGetBufferSize(id, isSource); - if (this.bufferSize < 1) { - // this is an error! -@@ -580,12 +612,12 @@ - } - synchronized (lockNative) { - nStop(id, isSource); -- } - -- // need to set doIO to false before notifying the -- // read/write thread, that's why isStartedRunning() -- // cannot be used -- doIO = false; -+ // need to set doIO to false before notifying the -+ // read/write thread, that's why isStartedRunning() -+ // cannot be used -+ doIO = false; -+ } - // wake up any waiting threads - synchronized(lock) { - lock.notifyAll(); -@@ -614,8 +646,12 @@ - doIO = false; - long oldID = id; - id = 0; -- synchronized (lockNative) { -- nClose(oldID, isSource); -+ synchronized (lockLast) { -+ synchronized (lockNative) { -+ nClose(oldID, isSource); -+ if (lastOpened == this) -+ lastOpened = null; -+ } - } - bytePosition = 0; - softwareConversionSize = 0; -@@ -630,7 +666,8 @@ - } - int a = 0; - synchronized (lockNative) { -- a = nAvailable(id, isSource); -+ if (doIO) -+ a = nAvailable(id, isSource); - } - return a; - } -@@ -644,9 +681,9 @@ - int counter = 0; - long startPos = getLongFramePosition(); - boolean posChanged = false; -- while (!drained && doIO) { -+ while (!drained) { - synchronized (lockNative) { -- if ((id == 0) || !nIsStillDraining(id, isSource)) -+ if ((id == 0) || (!doIO) || !nIsStillDraining(id, isSource)) - break; - } - // check every now and then for a new position -@@ -686,7 +723,7 @@ - lock.notifyAll(); - } - synchronized (lockNative) { -- if (id != 0) { -+ if (id != 0 && doIO) { - // then flush native buffers - nFlush(id, isSource); - } -@@ -697,9 +734,10 @@ - - // replacement for getFramePosition (see AbstractDataLine) - public long getLongFramePosition() { -- long pos; -+ long pos = 0; - synchronized (lockNative) { -- pos = nGetBytePosition(id, isSource, bytePosition); -+ if (doIO) -+ pos = nGetBytePosition(id, isSource, bytePosition); - } - // hack because ALSA sometimes reports wrong framepos - if (pos < 0) { -@@ -745,11 +783,12 @@ - } - int written = 0; - while (!flushing) { -- int thisWritten; -+ int thisWritten = 0; - synchronized (lockNative) { -- thisWritten = nWrite(id, b, off, len, -- softwareConversionSize, -- leftGain, rightGain); -+ if (doIO) -+ thisWritten = nWrite(id, b, off, len, -+ softwareConversionSize, -+ leftGain, rightGain); - if (thisWritten < 0) { - // error in native layer - break; -@@ -972,9 +1011,10 @@ - } - int read = 0; - while (doIO && !flushing) { -- int thisRead; -+ int thisRead = 0; - synchronized (lockNative) { -- thisRead = nRead(id, b, off, len, softwareConversionSize); -+ if (doIO) -+ thisRead = nRead(id, b, off, len, softwareConversionSize); - if (thisRead < 0) { - // error in native layer - break; -@@ -1209,7 +1249,8 @@ - // set new native position (if necessary) - // this must come after the flush! - synchronized (lockNative) { -- nSetBytePosition(id, isSource, frames * frameSize); -+ if (doIO) -+ nSetBytePosition(id, isSource, frames * frameSize); - } - - if (Printer.debug) Printer.debug(" DirectClip.setFramePosition: " diff -r 5a2104fb2256 patches/icedtea-enum-bug-181.patch --- a/patches/icedtea-enum-bug-181.patch Wed Feb 04 11:49:31 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- openjdkold/jdk/src/share/classes/sun/beans/editors/EnumEditor.java 2008-07-10 15:57:13.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/beans/editors/EnumEditor.java 2008-08-11 15:07:05.000000000 -0400 -@@ -67,7 +67,7 @@ - } - - public void setValue( Object value ) { -- if ( ( value != null ) && ( this.type != value.getClass() ) ) { -+ if ( ( value != null ) && ! ( this.type.isInstance( value ) ) ) { - throw new IllegalArgumentException( "Unsupported value: " + value ); - } - Object oldValue; diff -r 5a2104fb2256 patches/icedtea-jsoundhs.patch --- a/patches/icedtea-jsoundhs.patch Wed Feb 04 11:49:31 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -diff -Nru openjdk.orig/jdk/make/common/internal/BinaryPlugs.gmk openjdk/jdk/make/common/internal/BinaryPlugs.gmk ---- openjdk.orig/jdk/make/common/internal/BinaryPlugs.gmk 2008-07-13 03:42:22.000000000 +0100 -+++ openjdk/jdk/make/common/internal/BinaryPlugs.gmk 2008-07-13 03:41:56.000000000 +0100 -@@ -27,16 +27,6 @@ - - # Definitions for openjdk plugs (used by both import and export) - --# Names of native shared libraries -- --PLUG_JSOUND_LIBRARY=$(LIB_PREFIX)jsoundhs.$(LIBRARY_SUFFIX) --PLUG_LIBRARY_NAMES = \ -- $(PLUG_JSOUND_LIBRARY) -- --# Sub-directory where native shared libraries are located (e.g. jre/bin or...) -- --PLUG_LOCATION_SUBDIR=$(ARCH_VM_SUBDIR) -- - # Explicit classfile lists - - # WARNING: These classlists will not work with pattern rules, only used in -@@ -222,17 +212,6 @@ - import-binary-plug-jmf-classes \ - import-binary-plug-sound-classes - --# Import native libraries -- --$(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY): \ -- $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY) -- $(import-binary-plug-file) -- --# Rules only used by lower level makefiles -- --import-binary-plug-jsound-library: \ -- $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY) -- - # Binary plug start/complete messages - - import-binary-plugs-started: -diff -Nru openjdk.orig/jdk/make/javax/sound/Makefile openjdk/jdk/make/javax/sound/Makefile ---- openjdk.orig/jdk/make/javax/sound/Makefile 2008-07-13 03:42:40.000000000 +0100 -+++ openjdk/jdk/make/javax/sound/Makefile 2008-07-13 03:41:22.000000000 +0100 -@@ -96,11 +96,6 @@ - - - # --# add "closed" library --# --SUBDIRS += jsoundhs -- --# - # system dependent flags - # - ifeq ($(PLATFORM), windows) -diff -uNr openjdk-orig/jdk/src/share/classes/com/sun/media/sound/Platform.java openjdk/jdk/src/share/classes/com/sun/media/sound/Platform.java ---- openjdk-orig/jdk/src/share/classes/com/sun/media/sound/Platform.java 2008-11-07 10:38:15.000000000 -0500 -+++ openjdk/jdk/src/share/classes/com/sun/media/sound/Platform.java 2008-11-07 10:43:21.000000000 -0500 -@@ -42,7 +42,6 @@ - - // native library we need to load - private static final String libNameMain = "jsound"; -- private static final String libNameMain2 = "jsoundhs"; - - private static final String libNameALSA = "jsoundalsa"; - private static final String libNameDSound = "jsoundds"; -@@ -160,7 +159,6 @@ - try { - // load the main libraries - JSSecurityManager.loadLibrary(libNameMain); -- JSSecurityManager.loadLibrary(libNameMain2); - // just for the heck of it... - loadedLibs |= LIB_MAIN; - } catch (SecurityException e) { - diff -r 5a2104fb2256 patches/icedtea-sound.patch --- a/patches/icedtea-sound.patch Wed Feb 04 11:49:31 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,693 +0,0 @@ -diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java openjdk/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java ---- openjdk.orig/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java 2008-11-13 18:27:19.000000000 +0000 -+++ openjdk/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java 2008-11-13 18:27:03.000000000 +0000 -@@ -586,7 +586,6 @@ - - private ArrayList transmitters = new ArrayList(); - private MidiOutDevice.MidiOutReceiver midiOutReceiver; -- private MixerSynth.SynthReceiver mixerSynthReceiver; - - // how many transmitters must be present for optimized - // handling -@@ -621,22 +620,14 @@ - if (midiOutReceiver == oldR) { - midiOutReceiver = null; - } -- if (mixerSynthReceiver == oldR) { -- mixerSynthReceiver = null; -- } - if (newR != null) { - if ((newR instanceof MidiOutDevice.MidiOutReceiver) - && (midiOutReceiver == null)) { - midiOutReceiver = ((MidiOutDevice.MidiOutReceiver) newR); - } -- if ((newR instanceof MixerSynth.SynthReceiver) -- && (mixerSynthReceiver == null)) { -- mixerSynthReceiver = ((MixerSynth.SynthReceiver) newR); -- } - } - optimizedReceiverCount = -- ((midiOutReceiver!=null)?1:0) -- + ((mixerSynthReceiver!=null)?1:0); -+ ((midiOutReceiver!=null)?1:0); - } - // more potential for optimization here - } -@@ -670,10 +661,6 @@ - if (TRACE_TRANSMITTER) Printer.println("Sending packed message to MidiOutReceiver"); - midiOutReceiver.sendPackedMidiMessage(packedMessage, timeStamp); - } -- if (mixerSynthReceiver != null) { -- if (TRACE_TRANSMITTER) Printer.println("Sending packed message to MixerSynthReceiver"); -- mixerSynthReceiver.sendPackedMidiMessage(packedMessage, timeStamp); -- } - } else { - if (TRACE_TRANSMITTER) Printer.println("Sending packed message to "+size+" transmitter's receivers"); - for (int i = 0; i < size; i++) { -@@ -682,9 +669,6 @@ - if (optimizedReceiverCount > 0) { - if (receiver instanceof MidiOutDevice.MidiOutReceiver) { - ((MidiOutDevice.MidiOutReceiver) receiver).sendPackedMidiMessage(packedMessage, timeStamp); -- } -- else if (receiver instanceof MixerSynth.SynthReceiver) { -- ((MixerSynth.SynthReceiver) receiver).sendPackedMidiMessage(packedMessage, timeStamp); - } else { - receiver.send(new FastShortMessage(packedMessage), timeStamp); - } -@@ -739,10 +723,6 @@ - if (TRACE_TRANSMITTER) Printer.println("Sending MIDI message to MidiOutReceiver"); - midiOutReceiver.send(message, timeStamp); - } -- if (mixerSynthReceiver != null) { -- if (TRACE_TRANSMITTER) Printer.println("Sending MIDI message to MixerSynthReceiver"); -- mixerSynthReceiver.send(message, timeStamp); -- } - } else { - if (TRACE_TRANSMITTER) Printer.println("Sending MIDI message to "+size+" transmitter's receivers"); - for (int i = 0; i < size; i++) { -diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java openjdk/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java ---- openjdk.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java 2008-11-13 18:27:30.000000000 +0000 -+++ openjdk/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java 2008-11-13 18:26:52.000000000 +0000 -@@ -56,7 +56,7 @@ - - - /** if true, we bridge RMF files over to the old MixerSequencer */ -- private final static boolean RMF = true; -+ private final static boolean RMF = false; - - /** - * Event Dispatcher thread. Should be using a shared event -@@ -145,9 +145,6 @@ - private ArrayList controllerEventListeners = new ArrayList(); - - -- /** for RMF media we need the RMF sequencer */ -- private MixerSequencer seqBridge = null; -- - /** automatic connection support */ - private boolean autoConnect = false; - -@@ -221,10 +218,6 @@ - } - } - if (RMF) { -- if (seqBridge != null) { -- seqBridge.close(); -- seqBridge = null; -- } - // if previous file was an RMF, but this file is not RMF, - // then need to call implOpen again! - if (isOpen() && sequence != null && playThread == null) { -@@ -255,44 +248,6 @@ - int type = fileFormat.getType(); - int resolution = fileFormat.getResolution(); - if (Printer.debug) Printer.debug("Got file with type="+type+" and resolution="+resolution); -- if (resolution == MidiFileFormat.UNKNOWN_LENGTH) { -- // seems to be RMF -- if (seqBridge == null) { -- try { -- seqBridge = new MixerSequencer(); -- if (isOpen()) { -- seqBridge.open(); -- } -- } catch (MidiUnavailableException mue) { -- // uhum, strange situation. Need to cast to InvalidMidiDataException -- throw new InvalidMidiDataException(mue.getMessage()); -- } -- } -- seqBridge.setSequence(stream); -- // propagate state -- seqBridge.setTempoFactor(getTempoFactor()); -- -- // propagate listeners -- synchronized(metaEventListeners) { -- for (int i = 0 ; i < metaEventListeners.size(); i++) { -- seqBridge.addMetaEventListener((MetaEventListener) (metaEventListeners.get(i))); -- } -- } -- synchronized(controllerEventListeners) { -- for (int i = 0 ; i < controllerEventListeners.size(); i++) { -- ControllerListElement cve = (ControllerListElement) (controllerEventListeners.get(i)); -- seqBridge.addControllerEventListener(cve.listener, cve.controllers); -- } -- } -- // disable the current sequence of RealTimeSequencer -- //setSequence((Sequence) null); -> will remove bridge again! -- this.sequence = null; -- return; -- } -- if (seqBridge != null) { -- seqBridge.close(); -- seqBridge = null; -- } - } - - Sequence seq = MidiSystem.getSequence(stream); // can throw IOException, InvalidMidiDataException -@@ -305,22 +260,11 @@ - - - public Sequence getSequence() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getSequence(); -- } -- } - return sequence; - } - - - public synchronized void start() { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.start(); -- return; -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: start()"); - - // sequencer not open: throw an exception -@@ -346,12 +290,6 @@ - - - public synchronized void stop() { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.stop(); -- return; -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: stop()"); - - if (!isOpen()) { -@@ -373,22 +311,11 @@ - - - public boolean isRunning() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.isRunning(); -- } -- } - return running; - } - - - public void startRecording() { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.startRecording(); -- return; -- } -- } - - if (!isOpen()) { - throw new IllegalStateException("Sequencer not open"); -@@ -400,12 +327,6 @@ - - - public void stopRecording() { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.stopRecording(); -- return; -- } -- } - - if (!isOpen()) { - throw new IllegalStateException("Sequencer not open"); -@@ -415,22 +336,11 @@ - - - public boolean isRecording() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.isRecording(); -- } -- } - return recording; - } - - - public void recordEnable(Track track, int channel) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.recordEnable(track, channel); -- return; -- } -- } - - if (!findTrack(track)) { - throw new IllegalArgumentException("Track does not exist in the current sequence"); -@@ -449,12 +359,6 @@ - - - public void recordDisable(Track track) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.recordDisable(track); -- return; -- } -- } - - synchronized(recordingTracks) { - RecordingTrack rc = RecordingTrack.get(recordingTracks, track); -@@ -482,11 +386,6 @@ - - - public float getTempoInBPM() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTempoInBPM(); -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getTempoInBPM() "); - - return (float) MidiUtils.convertTempo(getTempoInMPQ()); -@@ -494,12 +393,6 @@ - - - public void setTempoInBPM(float bpm) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTempoInBPM(bpm); -- return; -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: setTempoInBPM() "); - if (bpm <= 0) { - // should throw IllegalArgumentException -@@ -511,11 +404,6 @@ - - - public float getTempoInMPQ() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTempoInMPQ(); -- } -- } - - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getTempoInMPQ() "); - -@@ -537,12 +425,6 @@ - - - public void setTempoInMPQ(float mpq) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTempoInMPQ(mpq); -- return; -- } -- } - if (mpq <= 0) { - // should throw IllegalArgumentException - mpq = 1.0f; -@@ -564,12 +446,6 @@ - - - public void setTempoFactor(float factor) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTempoFactor(factor); -- return; -- } -- } - if (factor <= 0) { - // should throw IllegalArgumentException - return; -@@ -588,11 +464,6 @@ - - - public float getTempoFactor() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTempoFactor(); -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getTempoFactor() "); - - if (needCaching()) { -@@ -606,11 +477,6 @@ - - - public long getTickLength() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTickLength(); -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getTickLength() "); - - if (sequence == null) { -@@ -622,11 +488,6 @@ - - - public synchronized long getTickPosition() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTickPosition(); -- } -- } - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getTickPosition() "); - - if (getDataPump() == null || sequence == null) { -@@ -638,12 +499,6 @@ - - - public synchronized void setTickPosition(long tick) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTickPosition(tick); -- return; -- } -- } - if (tick < 0) { - // should throw IllegalArgumentException - return; -@@ -667,11 +522,6 @@ - - - public long getMicrosecondLength() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getMicrosecondLength(); -- } -- } - - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getMicrosecondLength() "); - -@@ -684,11 +534,6 @@ - - - public long getMicrosecondPosition() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getMicrosecondPosition(); -- } -- } - - if (Printer.trace) Printer.trace(">> RealTimeSequencer: getMicrosecondPosition() "); - -@@ -702,12 +547,6 @@ - - - public void setMicrosecondPosition(long microseconds) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setMicrosecondPosition(microseconds); -- return; -- } -- } - - if (microseconds < 0) { - // should throw IllegalArgumentException -@@ -734,32 +573,16 @@ - - - public void setMasterSyncMode(Sequencer.SyncMode sync) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setMasterSyncMode(sync); -- return; -- } -- } - // not supported - } - - - public Sequencer.SyncMode getMasterSyncMode() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getMasterSyncMode(); -- } -- } - return masterSyncMode; - } - - - public Sequencer.SyncMode[] getMasterSyncModes() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getMasterSyncModes(); -- } -- } - - Sequencer.SyncMode[] returnedModes = new Sequencer.SyncMode[masterSyncModes.length]; - System.arraycopy(masterSyncModes, 0, returnedModes, 0, masterSyncModes.length); -@@ -768,32 +591,16 @@ - - - public void setSlaveSyncMode(Sequencer.SyncMode sync) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setSlaveSyncMode(sync); -- return; -- } -- } - // not supported - } - - - public Sequencer.SyncMode getSlaveSyncMode() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getSlaveSyncMode(); -- } -- } - return slaveSyncMode; - } - - - public Sequencer.SyncMode[] getSlaveSyncModes() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getSlaveSyncModes(); -- } -- } - - Sequencer.SyncMode[] returnedModes = new Sequencer.SyncMode[slaveSyncModes.length]; - System.arraycopy(slaveSyncModes, 0, returnedModes, 0, slaveSyncModes.length); -@@ -812,12 +619,6 @@ - - - public synchronized void setTrackMute(int track, boolean mute) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTrackMute(track, mute); -- return; -- } -- } - int trackCount = getTrackCount(); - if (track < 0 || track >= getTrackCount()) return; - trackMuted = ensureBoolArraySize(trackMuted, trackCount); -@@ -829,11 +630,6 @@ - - - public synchronized boolean getTrackMute(int track) { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTrackMute(track); -- } -- } - if (track < 0 || track >= getTrackCount()) return false; - if (trackMuted == null || trackMuted.length <= track) return false; - return trackMuted[track]; -@@ -841,12 +637,6 @@ - - - public synchronized void setTrackSolo(int track, boolean solo) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setTrackSolo(track, solo); -- return; -- } -- } - int trackCount = getTrackCount(); - if (track < 0 || track >= getTrackCount()) return; - trackSolo = ensureBoolArraySize(trackSolo, trackCount); -@@ -858,11 +648,6 @@ - - - public synchronized boolean getTrackSolo(int track) { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getTrackSolo(track); -- } -- } - if (track < 0 || track >= getTrackCount()) return false; - if (trackSolo == null || trackSolo.length <= track) return false; - return trackSolo[track]; -@@ -870,12 +655,6 @@ - - - public boolean addMetaEventListener(MetaEventListener listener) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.addMetaEventListener(listener); -- // do not return here! -- } -- } - synchronized(metaEventListeners) { - if (! metaEventListeners.contains(listener)) { - -@@ -887,12 +666,6 @@ - - - public void removeMetaEventListener(MetaEventListener listener) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.removeMetaEventListener(listener); -- // do not return here! -- } -- } - synchronized(metaEventListeners) { - int index = metaEventListeners.indexOf(listener); - if (index >= 0) { -@@ -903,12 +676,6 @@ - - - public int[] addControllerEventListener(ControllerEventListener listener, int[] controllers) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.addControllerEventListener(listener, controllers); -- // do not return here! -- } -- } - - synchronized(controllerEventListeners) { - -@@ -938,12 +705,6 @@ - - - public int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.removeControllerEventListener(listener, controllers); -- // do not return here! -- } -- } - synchronized(controllerEventListeners) { - ControllerListElement cve = null; - boolean flag = false; -@@ -973,12 +734,6 @@ - ////////////////// LOOPING (added in 1.5) /////////////////////// - - public void setLoopStartPoint(long tick) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setLoopStartPoint(tick); -- return; -- } -- } - if ((tick > getTickLength()) - || ((loopEnd != -1) && (tick > loopEnd)) - || (tick < 0)) { -@@ -988,21 +743,10 @@ - } - - public long getLoopStartPoint() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getLoopStartPoint(); -- } -- } - return loopStart; - } - - public void setLoopEndPoint(long tick) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setLoopEndPoint(tick); -- return; -- } -- } - if ((tick > getTickLength()) - || ((loopStart > tick) && (tick != -1)) - || (tick < -1)) { -@@ -1012,21 +756,10 @@ - } - - public long getLoopEndPoint() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getLoopEndPoint(); -- } -- } - return loopEnd; - } - - public void setLoopCount(int count) { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.setLoopCount(count); -- return; -- } -- } - if (count != LOOP_CONTINUOUSLY - && count < 0) { - throw new IllegalArgumentException("illegal value for loop count: "+count); -@@ -1038,11 +771,6 @@ - } - - public int getLoopCount() { -- if (RMF) { -- if (seqBridge != null) { -- return seqBridge.getLoopCount(); -- } -- } - return loopCount; - } - -@@ -1053,13 +781,6 @@ - */ - protected void implOpen() throws MidiUnavailableException { - if (Printer.trace) Printer.trace(">> RealTimeSequencer: implOpen()"); -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.open(); -- if (Printer.trace) Printer.trace("<< RealTimeSequencer: -> called seqBridge.open"); -- return; -- } -- } - - //openInternalSynth(); - -@@ -1147,12 +868,7 @@ - - - protected synchronized void implClose() { -- if (RMF) { -- if (seqBridge != null) { -- seqBridge.close(); -- // don't return here! -- } -- } -+ - if (Printer.trace) Printer.trace(">> RealTimeSequencer: implClose() "); - - if (playThread == null) { -@@ -1302,12 +1018,6 @@ - // OVERRIDES OF ABSTRACT MIDI DEVICE METHODS - - protected boolean hasReceivers() { -- if (RMF) { -- if (seqBridge != null) { -- //RMF does not allow recording -- return false; -- } -- } - return true; - } - -@@ -1318,12 +1028,6 @@ - - - protected boolean hasTransmitters() { -- if (RMF) { -- if (seqBridge != null) { -- //RMF does never allow setting own receivers -- return false; -- } -- } - return true; - } - From ahughes at redhat.com Tue Feb 10 13:09:44 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Tue, 10 Feb 2009 21:09:44 +0000 Subject: changeset in /hg/icedtea: Bump to b46. Message-ID: changeset fd8112e82992 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=fd8112e82992 description: Bump to b46. 2009-02-10 Andrew John Hughes Bump to b46. * patches/icedtea-directaudio-close-trick.patch, * patches/icedtea-enum-bug-181.patch, * patches/icedtea-jsoundhs.patch, * patches/icedtea-sound.patch: Applied upstream. * HACKING, * Makefile.am: Updated. * patches/ecj/icedtea.patch: Recreated due to S6795030. * patches/icedtea-copy-plugs.patch: Recreated due to S6702956. diffstat: 9 files changed, 101 insertions(+), 1070 deletions(-) ChangeLog | 15 HACKING | 5 Makefile.am | 10 patches/ecj/icedtea.patch | 149 ++--- patches/icedtea-copy-plugs.patch | 22 patches/icedtea-directaudio-close-trick.patch | 193 ------ patches/icedtea-enum-bug-181.patch | 11 patches/icedtea-jsoundhs.patch | 73 -- patches/icedtea-sound.patch | 693 ------------------------- diffs (truncated from 1546 to 500 lines): diff -r 5a2104fb2256 -r fd8112e82992 ChangeLog --- a/ChangeLog Wed Feb 04 11:49:31 2009 +0000 +++ b/ChangeLog Tue Feb 10 21:09:31 2009 +0000 @@ -1,3 +1,18 @@ 2009-02-03 Andrew John Hughes + + Bump to b46. + * patches/icedtea-directaudio-close-trick.patch, + * patches/icedtea-enum-bug-181.patch, + * patches/icedtea-jsoundhs.patch, + * patches/icedtea-sound.patch: + Applied upstream. + * HACKING, + * Makefile.am: Updated. + * patches/ecj/icedtea.patch: Recreated due to + S6795030. + * patches/icedtea-copy-plugs.patch: Recreated + due to S6702956. + 2009-02-03 Andrew John Hughes * Makefile.am: diff -r 5a2104fb2256 -r fd8112e82992 HACKING --- a/HACKING Wed Feb 04 11:49:31 2009 +0000 +++ b/HACKING Tue Feb 10 21:09:31 2009 +0000 @@ -24,7 +24,6 @@ The following patches are currently appl * icedtea-core-build.patch: Add support for building IcedTea core VM. * icedtea-debuginfo.patch: Add -g option to build to generate debugging information. * icedtea-demos.patch: Fix building of JVMTI demo. -* icedtea-enum-bug-181.patch: Fixes class type check (PR181/S6736248) * icedtea-float-double-trailing-zeros.patch: Remove trailing zeros from Double/Float (PR29/30) * icedtea-fonts.patch: Add Fedora fontconfig. * icedtea-gcc-suffix.patch: Append $(GCC_SUFFIX) to end of 'gcc' binary name. @@ -86,6 +85,7 @@ The following patches are only applied t * icedtea-corba.patch: Adds additional files to org.omg.CORBA Makefile. * icedtea-display-mode-changer.patch: Add extra test class. (applied in OpenJDK7 b43) +* icedtea-enum-bug-181.patch: Fixes class type check (PR181/S6736248) * icedtea-gcc-4.3.patch: Fix code to compile with GCC 4.3 and turn off -Werror. * icedtea-generated.patch: Force use of /bin/bash. * icedtea-nomotif.patch: Remove sanity and GrabShell.h dependency on Motif/Lesstif library. @@ -105,15 +105,12 @@ The following patches are only applied t * icedtea-constructor-properties.patch: Explicitly cast to ConstructorProperties as getAnnotation is broken in libgcj 4.3. -* icedtea-jsoundhs.patch: Remove attempted build of proprietary jsoundhs library. * icedtea-mbeanintrospector.patch: Explicitly cast to Description as getAnnotation is broken in libgcj 4.3. * icedtea-override.patch: Remove @Override annotation in javax.management.AttributeValueExp (unsupported by ecj < 3.4). * icedtea-snmp.patch: Remove proprietary SNMP support hooks. * icedtea-sound.patch: Remove proprietary MIDI support hooks. -* icedtea-fortify-source.patch: Fix build failures with -D_FORTIFY_SOURCE=2. -* icedtea-format-warnings.patch: Fix build failures with -Wformat=1. The following patches are only applied to the icedtea-ecj bootstrap tree: diff -r 5a2104fb2256 -r fd8112e82992 Makefile.am --- a/Makefile.am Wed Feb 04 11:49:31 2009 +0000 +++ b/Makefile.am Tue Feb 10 21:09:31 2009 +0000 @@ -1,6 +1,6 @@ OPENJDK_DATE = 29_jan_2009 -OPENJDK_DATE = 29_jan_2009 -OPENJDK_MD5SUM = 0d6ae1ed77b470c9665d069b34a1bc88 -OPENJDK_VERSION = b45 +OPENJDK_DATE = 05_feb_2009 +OPENJDK_MD5SUM = d5f92fec2f645d44437ab90e1dd2dbaf +OPENJDK_VERSION = b46 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 @@ -1845,7 +1845,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-uname.patch \ patches/icedtea-ia64-fdlibm.patch \ patches/icedtea-fonts.patch \ - patches/icedtea-directaudio-close-trick.patch \ patches/hotspot/$(HSBUILD)/icedtea-sparc-ptracefix.patch \ patches/hotspot/$(HSBUILD)/icedtea-sparc-trapsfix.patch \ patches/icedtea-override-redirect-metacity.patch \ @@ -1854,13 +1853,11 @@ ICEDTEA_PATCHES = \ patches/hotspot/$(HSBUILD)/icedtea-shark-build.patch \ patches/icedtea-toolkit.patch \ patches/icedtea-security-updates.patch \ - patches/icedtea-jsoundhs.patch \ patches/icedtea-jdk-docs-target.patch \ patches/icedtea-mbeanintrospector.patch \ patches/icedtea-hotspot-gcc-pr36917.patch \ patches/icedtea-alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ - patches/icedtea-enum-bug-181.patch \ patches/icedtea-jdk-use-ssize_t.patch \ patches/hotspot/$(HSBUILD)/icedtea-use-idx_t.patch \ patches/hotspot/$(HSBUILD)/icedtea-params-cast-size_t.patch \ @@ -1876,7 +1873,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-xjc.patch \ patches/icedtea-renderer-crossing.patch \ patches/icedtea-snmp.patch \ - patches/icedtea-sound.patch \ patches/icedtea-tests-jdk.patch \ patches/icedtea-stroker-finish.patch \ patches/icedtea-alsa-default-device.patch \ diff -r 5a2104fb2256 -r fd8112e82992 patches/ecj/icedtea.patch --- a/patches/ecj/icedtea.patch Wed Feb 04 11:49:31 2009 +0000 +++ b/patches/ecj/icedtea.patch Tue Feb 10 21:09:31 2009 +0000 @@ -1,6 +1,6 @@ diff -Nru openjdk-ecj.orig/corba/make/co diff -Nru openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile openjdk-ecj/corba/make/com/sun/corba/se/Makefile ---- openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/com/sun/corba/se/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/com/sun/corba/se/Makefile 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/com/sun/corba/se/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -42,7 +42,7 @@ # the rmic iiop backend needs some classes that are part of the impl/util # package. These classes use log wrappers, so they must be built after @@ -12,7 +12,7 @@ diff -Nru openjdk-ecj.orig/corba/make/co diff -Nru openjdk-ecj.orig/corba/make/com/sun/corba/se/org/Makefile openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile --- openjdk-ecj.orig/corba/make/com/sun/corba/se/org/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile 2008-10-24 13:32:48.000000000 +0100 ++++ openjdk-ecj/corba/make/com/sun/corba/se/org/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -0,0 +1,38 @@ +# +# Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. @@ -53,8 +53,8 @@ diff -Nru openjdk-ecj.orig/corba/make/co +# +include $(BUILDDIR)/common/Classes.gmk diff -Nru openjdk-ecj.orig/corba/make/common/Defs.gmk openjdk-ecj/corba/make/common/Defs.gmk ---- openjdk-ecj.orig/corba/make/common/Defs.gmk 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Defs.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Defs.gmk 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Defs.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -53,6 +53,13 @@ _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH) @@ -88,8 +88,8 @@ diff -Nru openjdk-ecj.orig/corba/make/co vpath %.java $(VPATH.java) vpath %.class $(CLASSBINDIR) diff -Nru openjdk-ecj.orig/corba/make/common/Defs-linux.gmk openjdk-ecj/corba/make/common/Defs-linux.gmk ---- openjdk-ecj.orig/corba/make/common/Defs-linux.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Defs-linux.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Defs-linux.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Defs-linux.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -276,7 +276,7 @@ fi; \ done) @@ -100,8 +100,8 @@ diff -Nru openjdk-ecj.orig/corba/make/co # # We want to privatize JVM symbols on Solaris. This is so the user can diff -Nru openjdk-ecj.orig/corba/make/common/Rules.gmk openjdk-ecj/corba/make/common/Rules.gmk ---- openjdk-ecj.orig/corba/make/common/Rules.gmk 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/common/Rules.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/Rules.gmk 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/common/Rules.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -197,8 +197,10 @@ $(ECHO) "# Java sources to be compiled: (listed in file $(JAVA_SOURCE_LIST))"; \ $(CAT) $(JAVA_SOURCE_LIST); \ @@ -116,8 +116,8 @@ diff -Nru openjdk-ecj.orig/corba/make/co @$(java-vm-cleanup) diff -Nru openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk openjdk-ecj/corba/make/common/shared/Defs-java.gmk ---- openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/corba/make/common/shared/Defs-java.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/common/shared/Defs-java.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/corba/make/common/shared/Defs-java.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -110,31 +110,13 @@ JAVACFLAGS += $(OTHER_JAVACFLAGS) @@ -155,8 +155,8 @@ diff -Nru openjdk-ecj.orig/corba/make/co # Override of what javac to use (see deploy workspace) ifdef JAVAC diff -Nru openjdk-ecj.orig/corba/make/org/omg/sources/Makefile openjdk-ecj/corba/make/org/omg/sources/Makefile ---- openjdk-ecj.orig/corba/make/org/omg/sources/Makefile 2008-10-09 08:41:14.000000000 +0100 -+++ openjdk-ecj/corba/make/org/omg/sources/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/org/omg/sources/Makefile 2009-02-05 08:40:51.000000000 +0000 ++++ openjdk-ecj/corba/make/org/omg/sources/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -93,8 +93,6 @@ POAHELHOLFILES = $(POA_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%) @@ -234,8 +234,8 @@ diff -Nru openjdk-ecj.orig/corba/make/or pi.compile: $(PIGENERATEDFILES) diff -Nru openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile ---- openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile 2008-10-24 10:16:05.000000000 +0100 -+++ openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/corba/make/sun/rmi/corbalogsources/Makefile 2009-02-10 18:11:57.000000000 +0000 ++++ openjdk-ecj/corba/make/sun/rmi/corbalogsources/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -172,7 +172,6 @@ ACTIVATIONFILES = $(com_sun_corba_se_spi_activation_java:%=$(GENSRCDIR)/%) @@ -253,8 +253,8 @@ diff -Nru openjdk-ecj.orig/corba/make/su portableactivation.idl.compile: $(PORTABLEACTIVATIONFILES) diff -Nru openjdk-ecj.orig/jaxp/make/build.xml openjdk-ecj/jaxp/make/build.xml ---- openjdk-ecj.orig/jaxp/make/build.xml 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxp/make/build.xml 2008-10-24 13:33:43.000000000 +0100 +--- openjdk-ecj.orig/jaxp/make/build.xml 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxp/make/build.xml 2009-02-10 19:24:54.000000000 +0000 @@ -71,7 +71,10 @@ diff -Nru openjdk-ecj.orig/jaxp/make/Makefile openjdk-ecj/jaxp/make/Makefile ---- openjdk-ecj.orig/jaxp/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxp/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxp/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxp/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -75,7 +75,7 @@ endif @@ -289,8 +289,8 @@ diff -Nru openjdk-ecj.orig/jaxp/make/Mak ifdef ALT_OUTPUTDIR diff -Nru openjdk-ecj.orig/jaxws/make/build.properties openjdk-ecj/jaxws/make/build.properties ---- openjdk-ecj.orig/jaxws/make/build.properties 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/build.properties 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/build.properties 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/build.properties 2009-02-10 19:24:54.000000000 +0000 @@ -37,7 +37,7 @@ # set the following to -version to verify the versions of javac being used javac.version.opt = @@ -301,8 +301,8 @@ diff -Nru openjdk-ecj.orig/jaxws/make/bu # JVM memory size javac.memoryInitialSize = 128m diff -Nru openjdk-ecj.orig/jaxws/make/build.xml openjdk-ecj/jaxws/make/build.xml ---- openjdk-ecj.orig/jaxws/make/build.xml 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/build.xml 2008-10-24 13:34:37.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/build.xml 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/build.xml 2009-02-10 19:24:54.000000000 +0000 @@ -84,7 +84,10 @@ diff -Nru openjdk-ecj.orig/jaxws/make/Makefile openjdk-ecj/jaxws/make/Makefile ---- openjdk-ecj.orig/jaxws/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jaxws/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jaxws/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jaxws/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -75,8 +75,8 @@ endif @@ -347,8 +347,8 @@ diff -Nru openjdk-ecj.orig/jaxws/make/Ma ifdef ALT_OUTPUTDIR diff -Nru openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk openjdk-ecj/jdk/make/common/BuildToolJar.gmk ---- openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/BuildToolJar.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/BuildToolJar.gmk 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/BuildToolJar.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -43,7 +43,8 @@ @$(prep-target) @$(MKDIR) -p $(BUILDTOOLCLASSDIR) @@ -360,8 +360,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \ $(BOOT_JAR_JFLAGS) || $(RM) $@ diff -Nru openjdk-ecj.orig/jdk/make/common/Release.gmk openjdk-ecj/jdk/make/common/Release.gmk ---- openjdk-ecj.orig/jdk/make/common/Release.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/Release.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/Release.gmk 2009-02-10 18:12:01.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/Release.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -651,10 +651,23 @@ $(RES_JAR_ARGLIST): $(RES_JAR_FILELIST) $(prep-target) @@ -409,7 +409,7 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm @$(java-vm-cleanup) # Meta-index construction to make core class loaders lazier -@@ -951,19 +972,6 @@ +@@ -944,19 +965,6 @@ @$(java-vm-cleanup) $(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar @# @@ -429,7 +429,7 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm @# CORBA supported orb.idl and ir.idl should be copied to lib @# $(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl -@@ -1040,16 +1048,6 @@ +@@ -1033,16 +1041,6 @@ $(CP) $(PLATFORM_SRC)/bin/java_md.h $(JDK_IMAGE_DIR)/src/launcher $(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip * $(RM) -r $(JDK_IMAGE_DIR)/src @@ -447,8 +447,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm $(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES)) endif # !windows diff -Nru openjdk-ecj.orig/jdk/make/common/Rules.gmk openjdk-ecj/jdk/make/common/Rules.gmk ---- openjdk-ecj.orig/jdk/make/common/Rules.gmk 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/Rules.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/Rules.gmk 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/Rules.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -237,8 +237,9 @@ $(ECHO) "# Java sources to be compiled: (listed in file $<)"; \ $(CAT) $<.filtered; \ @@ -475,8 +475,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm @$(TOUCH) $@ diff -Nru openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk openjdk-ecj/jdk/make/common/shared/Defs-java.gmk ---- openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/jdk/make/common/shared/Defs-java.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/common/shared/Defs-java.gmk 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/jdk/make/common/shared/Defs-java.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -121,30 +121,19 @@ JAVACFLAGS += $(OTHER_JAVACFLAGS) @@ -510,8 +510,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/comm # Override of what javac to use (see deploy workspace) diff -Nru openjdk-ecj.orig/jdk/make/java/nio/Makefile openjdk-ecj/jdk/make/java/nio/Makefile ---- openjdk-ecj.orig/jdk/make/java/nio/Makefile 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/java/nio/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/java/nio/Makefile 2009-02-05 08:44:13.000000000 +0000 ++++ openjdk-ecj/jdk/make/java/nio/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -31,7 +31,7 @@ PACKAGE = java.nio LIBRARY = nio @@ -522,8 +522,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/java NIO_SRC = $(SHARE_SRC)/classes/java/nio diff -Nru openjdk-ecj.orig/jdk/make/java/text/Makefile openjdk-ecj/jdk/make/java/text/Makefile ---- openjdk-ecj.orig/jdk/make/java/text/Makefile 2008-10-09 08:45:42.000000000 +0100 -+++ openjdk-ecj/jdk/make/java/text/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/java/text/Makefile 2009-02-05 08:44:13.000000000 +0000 ++++ openjdk-ecj/jdk/make/java/text/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -80,8 +80,8 @@ -sourcepath $(TEXT_SRCDIR) \ $(TEXT_SOURCES) @@ -536,8 +536,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/java -spec $(UNICODEDATA)/UnicodeData.txt @$(java-vm-cleanup) diff -Nru openjdk-ecj.orig/jdk/make/Makefile openjdk-ecj/jdk/make/Makefile ---- openjdk-ecj.orig/jdk/make/Makefile 2008-10-09 08:45:41.000000000 +0100 -+++ openjdk-ecj/jdk/make/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/Makefile 2009-02-05 08:44:12.000000000 +0000 ++++ openjdk-ecj/jdk/make/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -239,7 +239,7 @@ all build:: sanity-all post-sanity-all @@ -548,8 +548,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/Make $(SUBDIRS-loop) diff -Nru openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk ---- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/awt/FILES_export_unix.gmk 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/awt/FILES_export_unix.gmk 2009-02-10 19:24:54.000000000 +0000 @@ -188,3 +188,5 @@ java/awt/dnd/DnDConstants.java \ sun/awt/CausedFocusEvent.java @@ -557,8 +557,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/sun/ +EXPORTED_inner = \ + sun.java2d.opengl.OGLContext$$OGLContextCaps diff -Nru openjdk-ecj.orig/jdk/make/sun/awt/Makefile openjdk-ecj/jdk/make/sun/awt/Makefile ---- openjdk-ecj.orig/jdk/make/sun/awt/Makefile 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/awt/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/awt/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/awt/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -395,10 +395,9 @@ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar @@ -574,8 +574,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/sun/ fontconfigs.clean : diff -Nru openjdk-ecj.orig/jdk/make/sun/javazic/Makefile openjdk-ecj/jdk/make/sun/javazic/Makefile ---- openjdk-ecj.orig/jdk/make/sun/javazic/Makefile 2008-10-09 08:45:43.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/javazic/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/javazic/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/javazic/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -62,7 +62,8 @@ $(WORKDIR)/$(MAPFILE): $(BUILDTOOLJARDIR)/javazic.jar $(TZFILES) $(RM) -r $(@D) @@ -587,8 +587,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/sun/ $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE) diff -Nru openjdk-ecj.orig/jdk/make/sun/text/Makefile openjdk-ecj/jdk/make/sun/text/Makefile ---- openjdk-ecj.orig/jdk/make/sun/text/Makefile 2008-10-09 08:45:44.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/text/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/text/Makefile 2009-02-05 08:44:14.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/text/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -85,8 +85,9 @@ $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \ -sourcepath $(TEXT_SRCDIR) \ @@ -602,8 +602,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/sun/ -spec $(UNICODEDATA)/UnicodeData.txt \ -language th diff -Nru openjdk-ecj.orig/jdk/make/sun/xawt/Makefile openjdk-ecj/jdk/make/sun/xawt/Makefile ---- openjdk-ecj.orig/jdk/make/sun/xawt/Makefile 2008-10-09 08:45:44.000000000 +0100 -+++ openjdk-ecj/jdk/make/sun/xawt/Makefile 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/sun/xawt/Makefile 2009-02-10 18:12:01.000000000 +0000 ++++ openjdk-ecj/jdk/make/sun/xawt/Makefile 2009-02-10 19:24:54.000000000 +0000 @@ -276,11 +276,7 @@ TEMPDIR_CLASSES = $(TEMPDIR)/classes @@ -641,8 +641,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/sun/ done $(TOUCH) $@ diff -Nru openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java ---- openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2008-10-24 10:16:45.000000000 +0100 -+++ openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-02-10 18:11:22.000000000 +0000 ++++ openjdk-ecj/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-02-10 19:24:54.000000000 +0000 @@ -647,9 +647,6 @@ throws FileNotFoundException, IOException { BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName)); @@ -662,8 +662,8 @@ diff -Nru openjdk-ecj.orig/jdk/make/tool if (plane == 0 && bLatin1 == false) { genCaseMapTableDeclaration(result); diff -Nru openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java openjdk-ecj/jdk/src/share/classes/java/lang/Double.java ---- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java 2008-10-24 10:16:33.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/classes/java/lang/Double.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Double.java 2009-02-10 18:11:12.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/classes/java/lang/Double.java 2009-02-10 19:24:54.000000000 +0000 @@ -76,7 +76,7 @@ * {@code 0x1.fffffffffffffP+1023} and also equal to * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}. @@ -692,8 +692,8 @@ diff -Nru openjdk-ecj.orig/jdk/src/share /** * Maximum exponent a finite {@code double} variable may have. diff -Nru openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java openjdk-ecj/jdk/src/share/classes/java/lang/Float.java ---- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java 2008-10-24 10:16:33.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/classes/java/lang/Float.java 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/classes/java/lang/Float.java 2009-02-10 18:11:12.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/classes/java/lang/Float.java 2009-02-10 19:24:54.000000000 +0000 @@ -76,7 +76,7 @@ * {@code 0x1.fffffeP+127f} and also equal to * {@code Float.intBitsToFloat(0x7f7fffff)}. @@ -722,8 +722,8 @@ diff -Nru openjdk-ecj.orig/jdk/src/share /** * Maximum exponent a finite {@code float} variable may have. It diff -Nru openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h ---- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2008-10-09 08:46:24.000000000 +0100 -+++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2008-10-24 13:32:48.000000000 +0100 +--- openjdk-ecj.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-02-05 08:44:52.000000000 +0000 ++++ openjdk-ecj/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-02-10 19:24:54.000000000 +0000 @@ -27,6 +27,7 @@ #define OGLContext_h_Included @@ -789,49 +789,44 @@ diff -Nru openjdk-ecj.orig/jdk/src/share /** * Evaluates to true if the given capability bitmask is present for the diff -Nru openjdk-ecj.orig/langtools/make/build.xml openjdk-ecj/langtools/make/build.xml ---- openjdk-ecj.orig/langtools/make/build.xml 2008-10-09 08:47:11.000000000 +0100 -+++ openjdk-ecj/langtools/make/build.xml 2008-10-24 13:32:48.000000000 +0100 -@@ -498,7 +498,10 @@ +--- openjdk-ecj.orig/langtools/make/build.xml 2009-02-05 08:45:36.000000000 +0000 ++++ openjdk-ecj/langtools/make/build.xml 2009-02-10 19:56:00.000000000 +0000 +@@ -502,7 +502,9 @@ includes="@{includes}" sourcepath="" includeAntRuntime="no" - target="@{javac.target}"> + target="@{javac.target}" -+ executable="${javac.executable}" + source="1.5"> + -@@ -512,7 +515,10 @@ +@@ -517,7 +519,9 @@ includeAntRuntime="no" target="@{javac.target}" debug="${javac.debug}" - debuglevel="${javac.debuglevel}"> -+ executable="${javac.executable}" + debuglevel="${javac.debuglevel}" + source="1.5"> + -@@ -563,8 +569,11 @@ - - - + classpath="${ant.home}/lib/ant.jar" -+ executable="${javac.executable}" -+ source="1.5"/> ++ source="1.5" /> diff -Nru openjdk-ecj.orig/langtools/make/Makefile openjdk-ecj/langtools/make/Makefile ---- openjdk-ecj.orig/langtools/make/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/langtools/make/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -108,7 +108,7 @@ +--- openjdk-ecj.orig/langtools/make/Makefile 2009-02-10 18:12:00.000000000 +0000 ++++ openjdk-ecj/langtools/make/Makefile 2009-02-10 19:24:54.000000000 +0000 +@@ -112,7 +112,7 @@ ifdef ALT_BOOTDIR ANT_OPTIONS += -Dboot.java.home=$(ALT_BOOTDIR) @@ -841,8 +836,8 @@ diff -Nru openjdk-ecj.orig/langtools/mak ifdef ALT_OUTPUTDIR From dbhole at redhat.com Tue Feb 10 13:20:07 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 10 Feb 2009 21:20:07 +0000 Subject: changeset in /hg/icedtea6: Fix harmless, but annoying OOB except... Message-ID: changeset 3b8dcbd3d44d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3b8dcbd3d44d description: Fix harmless, but annoying OOB exception on browser exit. Fix exit permission checks. diffstat: 5 files changed, 44 insertions(+), 5 deletions(-) ChangeLog | 10 +++++ plugin/icedtea/sun/applet/PluginAppletSecurityContext.java | 3 + plugin/icedtea/sun/applet/PluginStreamHandler.java | 5 ++ rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 9 ++++ rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 22 ++++++++++-- diffs (132 lines): diff -r c402774cf211 -r 3b8dcbd3d44d ChangeLog --- a/ChangeLog Sun Feb 08 08:33:04 2009 -0500 +++ b/ChangeLog Tue Feb 10 16:19:54 2009 -0500 @@ -1,3 +1,13 @@ 2009-02-08 Lillian Angel + * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Fix + exit permissions for applets. + * plugin/icedtea/sun/applet/PluginStreamHandler.java: Fix harmless, but + annoying OOB exception on browser exit. + * rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add function to + 'always' disable exit. + * rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java: Same, and + update support in checkPermission() for exit permissions. + 2009-02-08 Lillian Angel * Makefile.am: Updated sed to search for OpenJDK instead of IcedTea6. diff -r c402774cf211 -r 3b8dcbd3d44d plugin/icedtea/sun/applet/PluginAppletSecurityContext.java --- a/plugin/icedtea/sun/applet/PluginAppletSecurityContext.java Sun Feb 08 08:33:04 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginAppletSecurityContext.java Tue Feb 10 16:19:54 2009 -0500 @@ -54,7 +54,6 @@ import java.security.PrivilegedAction; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.util.ArrayList; -import java.util.HashMap; import java.util.Hashtable; import java.util.List; @@ -251,6 +250,8 @@ public class PluginAppletSecurityContext if (System.getSecurityManager() == null) { JNLPRuntime.initialize(); } + + JNLPRuntime.disableExit(); this.classLoaders.put(liveconnectLoader, "file://"); } diff -r c402774cf211 -r 3b8dcbd3d44d plugin/icedtea/sun/applet/PluginStreamHandler.java --- a/plugin/icedtea/sun/applet/PluginStreamHandler.java Sun Feb 08 08:33:04 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginStreamHandler.java Tue Feb 10 16:19:54 2009 -0500 @@ -221,7 +221,10 @@ public class PluginStreamHandler { String rest = ""; String[] msgComponents = message.split(" "); - + + if (msgComponents.length < 2) + return; + // type and identifier are guaranteed to be there String type = msgComponents[0]; final int identifier = Integer.parseInt(msgComponents[1]); diff -r c402774cf211 -r 3b8dcbd3d44d rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java Sun Feb 08 08:33:04 2009 -0500 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Feb 10 16:19:54 2009 -0500 @@ -285,6 +285,15 @@ public class JNLPRuntime { checkExitClass(); security.setExitClass(exitClass); } + + /** + * Disables applets from calling exit. + * + * Once disabled, exit cannot be re-enabled for the duration of the JVM instance + */ + public static void disableExit() { + security.disableExit(); + } /** * Return the current Application, or null if none can be diff -r c402774cf211 -r 3b8dcbd3d44d rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Sun Feb 08 08:33:04 2009 -0500 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Tue Feb 10 16:19:54 2009 -0500 @@ -23,6 +23,7 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowEvent; import java.lang.ref.WeakReference; import java.net.SocketPermission; +import java.security.AccessControlException; import java.security.AccessController; import java.security.Permission; import java.security.PrivilegedAction; @@ -102,6 +103,9 @@ class JNLPSecurityManager extends Securi /** listener installs the app's classloader on the event dispatch thread */ private ContextUpdater contextListener = new ContextUpdater(); + + /** Sets whether or not exit is allowed (in the context of the plugin, this is always false) */ + private boolean exitAllowed = true; private class ContextUpdater extends WindowAdapter implements PrivilegedAction { private ApplicationInstance app = null; @@ -275,7 +279,7 @@ class JNLPSecurityManager extends Securi try { super.checkPermission(perm); } catch (SecurityException se) { - + //This section is a special case for dealing with SocketPermissions. if (JNLPRuntime.isDebug()) System.err.println("Requesting permission: " + perm.toString()); @@ -436,9 +440,17 @@ class JNLPSecurityManager extends Securi * behave normally, and the exit class can always exit the JVM. */ public void checkExit(int status) { - super.checkExit(status); - + + // applets are not allowed to exit, but the plugin main class (primordial loader) is Class stack[] = getClassContext(); + if (!exitAllowed) { + for (int i=0; i < stack.length; i++) + if (stack[i].getClassLoader() != null) + throw new AccessControlException("Applets may not call System.exit()"); + } + + super.checkExit(status); + boolean realCall = (stack[1] == Runtime.class); if (isExitClass(stack)) // either exitClass called or no exitClass set @@ -468,6 +480,10 @@ class JNLPSecurityManager extends Securi throw closeAppEx; } + protected void disableExit() { + exitAllowed = false; + } + } From ahughes at redhat.com Tue Feb 10 18:18:55 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Wed, 11 Feb 2009 02:18:55 +0000 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. Message-ID: changeset 5d4d8012aa03 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5d4d8012aa03 description: Backport newly Freed tests. 2009-02-11 Andrew John Hughes * Makefile.am: Add new patches. * patches/openjdk/bidi-tests.patch, * patches/openjdk/annotation-tests.patch: New. diffstat: 4 files changed, 6174 insertions(+), 1 deletion(-) ChangeLog | 9 Makefile.am | 4 patches/openjdk/annotation-tests.patch | 5867 ++++++++++++++++++++++++++++++++ patches/openjdk/bidi-tests.patch | 295 + diffs (truncated from 6201 to 500 lines): diff -r 3b8dcbd3d44d -r 5d4d8012aa03 ChangeLog --- a/ChangeLog Tue Feb 10 16:19:54 2009 -0500 +++ b/ChangeLog Wed Feb 11 02:18:27 2009 +0000 @@ -1,4 +1,13 @@ 2009-02-10 Deepak Bhole + + * Makefile.am: + Add new patches. + * patches/openjdk/bidi-tests.patch, + * patches/openjdk/annotation-tests.patch: + New. + 2009-02-10 Deepak Bhole + * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Fix exit permissions for applets. * plugin/icedtea/sun/applet/PluginStreamHandler.java: Fix harmless, but diff -r 3b8dcbd3d44d -r 5d4d8012aa03 Makefile.am --- a/Makefile.am Tue Feb 10 16:19:54 2009 -0500 +++ b/Makefile.am Wed Feb 11 02:18:27 2009 +0000 @@ -563,7 +563,9 @@ ICEDTEA_PATCHES += \ patches/icedtea-io_util-overflow.patch \ patches/icedtea-cc-interp-jvmti.patch \ patches/icedtea-pr261.patch \ - patches/icedtea-doc-headers.patch + patches/icedtea-doc-headers.patch \ + patches/openjdk/bidi-tests.patch \ + patches/openjdk/annotation-tests.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 3b8dcbd3d44d -r 5d4d8012aa03 patches/openjdk/annotation-tests.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/annotation-tests.patch Wed Feb 11 02:18:27 2009 +0000 @@ -0,0 +1,5867 @@ +# HG changeset patch +# User darcy +# Date 1233028166 28800 +# Node ID f3ad2ee4600b102d50a18d83aa797e187819e072 +# Parent 175b6adf65b31782480878f5a65044b4c97fd7cf +6740185: Move java/lang/annotations tests to open +Reviewed-by: jjg + +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java +--- openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6179014 ++ * @summary AnnotationTypeMismatchException.foundType method shouldn't loop. ++ * @author Scott Seligman ++ * @run main/timeout=30 FoundType ++ */ ++ ++import java.lang.annotation.*; ++ ++public class FoundType { ++ ++ private static final String TYPE = "a.halting.Problem"; ++ ++ public static void main(String[] args) { ++ AnnotationTypeMismatchException ex = ++ new AnnotationTypeMismatchException(null, TYPE); ++ if (!TYPE.equals(ex.foundType())) ++ throw new Error(); ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,28 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public ++ at java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) ++ at interface A { ++ B b(); ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,24 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public @interface B {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,24 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public @A(b=@B()) class C {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2009-02-05 08:45:04.000000000 +0000 +@@ -0,0 +1,84 @@ ++#!/bin/sh ++ ++# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++# ++# This code is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License version 2 only, as ++# published by the Free Software Foundation. ++# ++# This code is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++# version 2 for more details (a copy is included in the LICENSE file that ++# accompanied this code). ++# ++# You should have received a copy of the GNU General Public License version ++# 2 along with this work; if not, write to the Free Software Foundation, ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++# CA 95054 USA or visit www.sun.com if you need additional information or ++# have any questions. ++ ++if [ "${TESTSRC}" = "" ] ++then ++ echo "TESTSRC not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTSRC=${TESTSRC}" ++if [ "${TESTJAVA}" = "" ] ++then ++ echo "TESTJAVA not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTJAVA=${TESTJAVA}" ++if [ "${TESTCLASSES}" = "" ] ++then ++ echo "TESTCLASSES not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTCLASSES=${TESTCLASSES}" ++echo "CLASSPATH=${CLASSPATH}" ++ ++# set platform-dependent variables ++OS=`uname -s` ++case "$OS" in ++ SunOS | Linux ) ++ NULL=/dev/null ++ PS=":" ++ FS="/" ++ ;; ++ Windows* ) ++ NULL=NUL ++ PS=";" ++ FS="\\" ++ ;; ++ * ) ++ echo "Unrecognized system!" ++ exit 1; ++ ;; ++esac ++ ++mkdir -p classes ++cp ${TESTSRC}${FS}*.java . ++${TESTJAVA}${FS}bin${FS}javac -d classes A.java B.java C.java ++${TESTJAVA}${FS}bin${FS}javac Main.java ++${TESTJAVA}${FS}bin${FS}java Main ++result=$? ++if [ $result -eq 0 ] ++then ++ echo "Passed 1 of 2" ++else ++ echo "Failed 1 of 2" ++ exit $result ++fi ++${TESTJAVA}${FS}bin${FS}java Main foo ++result=$? ++if [ $result -eq 0 ] ++then ++ echo "Passed 2 of 2" ++else ++ echo "Failed 2 of 2" ++fi ++exit $result +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,127 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 5040740 ++ * @summary annotations cause memory leak ++ * @author gafter ++ * ++ * @run shell LoaderLeak.sh ++ */ ++ ++import java.net.*; ++import java.lang.ref.*; ++import java.util.*; ++import java.io.*; ++ ++public class Main { ++ public static void main(String[] args) throws Exception { ++ for (int i=0; i<100; i++) ++ doTest(args.length != 0); ++ } ++ ++ static void doTest(boolean readAnn) throws Exception { ++ // URL classes = new URL("file://" + System.getProperty("user.dir") + "/classes"); ++ // URL[] path = { classes }; ++ // URLClassLoader loader = new URLClassLoader(path); ++ ClassLoader loader = new SimpleClassLoader(); ++ WeakReference> c = new WeakReference(loader.loadClass("C")); ++ if (c.get() == null) throw new AssertionError(); ++ if (c.get().getClassLoader() != loader) throw new AssertionError(); ++ if (readAnn) System.out.println(c.get().getAnnotations()[0]); ++ if (c.get() == null) throw new AssertionError(); ++ System.gc(); ++ System.gc(); ++ if (c.get() == null) throw new AssertionError(); ++ System.gc(); ++ System.gc(); ++ loader = null; ++ System.gc(); ++ System.gc(); ++ if (c.get() != null) throw new AssertionError(); ++ } ++} ++ ++class SimpleClassLoader extends ClassLoader { ++ private Hashtable classes = new Hashtable(); ++ ++ public SimpleClassLoader() { ++ } ++ private byte getClassImplFromDataBase(String className)[] { ++ byte result[]; ++ try { ++ FileInputStream fi = new FileInputStream("classes/"+className+".class"); ++ result = new byte[fi.available()]; ++ fi.read(result); ++ return result; ++ } catch (Exception e) { ++ ++ /* ++ * If we caught an exception, either the class wasnt found or it ++ * was unreadable by our process. ++ */ ++ return null; ++ } ++ } ++ public Class loadClass(String className) throws ClassNotFoundException { ++ return (loadClass(className, true)); ++ } ++ public synchronized Class loadClass(String className, boolean resolveIt) ++ throws ClassNotFoundException { ++ Class result; ++ byte classData[]; ++ ++ /* Check our local cache of classes */ ++ result = (Class)classes.get(className); ++ if (result != null) { ++ return result; ++ } ++ ++ /* Check with the primordial class loader */ ++ try { ++ result = super.findSystemClass(className); ++ return result; ++ } catch (ClassNotFoundException e) { ++ } ++ ++ /* Try to load it from our repository */ ++ classData = getClassImplFromDataBase(className); ++ if (classData == null) { ++ throw new ClassNotFoundException(); ++ } ++ ++ /* Define it (parse the class file) */ ++ result = defineClass(classData, 0, classData.length); ++ if (result == null) { ++ throw new ClassFormatError(); ++ } ++ ++ if (resolveIt) { ++ resolveClass(result); ++ } ++ ++ classes.put(className, result); ++ return result; ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java openjdk/jdk/test/java/lang/annotation/Missing/A.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/A.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,30 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have a missing annotation applied for running MissingTest. ++ */ ++ at Missing ++ at Marker ++public class A { ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java openjdk/jdk/test/java/lang/annotation/Missing/B.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/B.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,31 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have an indirectly missing annotation applied for for ++ * running MisssingTest. ++ */ ++ at MissingWrapper(@Missing) ++ at Marker ++public class B { ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java openjdk/jdk/test/java/lang/annotation/Missing/C.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/C.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,31 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have a missing annotation applied for running MissingTest. ++ */ ++public class C { ++ public void method1(@Missing @Marker Object param1) { ++ return; From gnu_andrew at member.fsf.org Tue Feb 10 18:17:33 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 11 Feb 2009 02:17:33 +0000 Subject: FYI: Backport newly Freed tests from OpenJDK7 Message-ID: <20090211021733.GA6617@rivendell.middle-earth.co.uk> A number of additional JTReg tests were Freed for OpenJDK7 b46. This patch backports them to IcedTea6. ChangeLog: 2009-02-11 Andrew John Hughes * Makefile.am: Add new patches. * patches/openjdk/bidi-tests.patch, * patches/openjdk/annotation-tests.patch: New. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 3b8dcbd3d44d Makefile.am --- a/Makefile.am Tue Feb 10 16:19:54 2009 -0500 +++ b/Makefile.am Wed Feb 11 02:15:37 2009 +0000 @@ -563,7 +563,9 @@ patches/icedtea-io_util-overflow.patch \ patches/icedtea-cc-interp-jvmti.patch \ patches/icedtea-pr261.patch \ - patches/icedtea-doc-headers.patch + patches/icedtea-doc-headers.patch \ + patches/openjdk/bidi-tests.patch \ + patches/openjdk/annotation-tests.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 3b8dcbd3d44d patches/openjdk/annotation-tests.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/annotation-tests.patch Wed Feb 11 02:15:37 2009 +0000 @@ -0,0 +1,5867 @@ +# HG changeset patch +# User darcy +# Date 1233028166 28800 +# Node ID f3ad2ee4600b102d50a18d83aa797e187819e072 +# Parent 175b6adf65b31782480878f5a65044b4c97fd7cf +6740185: Move java/lang/annotations tests to open +Reviewed-by: jjg + +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java +--- openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6179014 ++ * @summary AnnotationTypeMismatchException.foundType method shouldn't loop. ++ * @author Scott Seligman ++ * @run main/timeout=30 FoundType ++ */ ++ ++import java.lang.annotation.*; ++ ++public class FoundType { ++ ++ private static final String TYPE = "a.halting.Problem"; ++ ++ public static void main(String[] args) { ++ AnnotationTypeMismatchException ex = ++ new AnnotationTypeMismatchException(null, TYPE); ++ if (!TYPE.equals(ex.foundType())) ++ throw new Error(); ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,28 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public ++ at java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) ++ at interface A { ++ B b(); ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,24 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public @interface B {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,24 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++public @A(b=@B()) class C {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2009-02-05 08:45:04.000000000 +0000 +@@ -0,0 +1,84 @@ ++#!/bin/sh ++ ++# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++# ++# This code is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License version 2 only, as ++# published by the Free Software Foundation. ++# ++# This code is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++# version 2 for more details (a copy is included in the LICENSE file that ++# accompanied this code). ++# ++# You should have received a copy of the GNU General Public License version ++# 2 along with this work; if not, write to the Free Software Foundation, ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++# ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++# CA 95054 USA or visit www.sun.com if you need additional information or ++# have any questions. ++ ++if [ "${TESTSRC}" = "" ] ++then ++ echo "TESTSRC not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTSRC=${TESTSRC}" ++if [ "${TESTJAVA}" = "" ] ++then ++ echo "TESTJAVA not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTJAVA=${TESTJAVA}" ++if [ "${TESTCLASSES}" = "" ] ++then ++ echo "TESTCLASSES not set. Test cannot execute. Failed." ++ exit 1 ++fi ++echo "TESTCLASSES=${TESTCLASSES}" ++echo "CLASSPATH=${CLASSPATH}" ++ ++# set platform-dependent variables ++OS=`uname -s` ++case "$OS" in ++ SunOS | Linux ) ++ NULL=/dev/null ++ PS=":" ++ FS="/" ++ ;; ++ Windows* ) ++ NULL=NUL ++ PS=";" ++ FS="\\" ++ ;; ++ * ) ++ echo "Unrecognized system!" ++ exit 1; ++ ;; ++esac ++ ++mkdir -p classes ++cp ${TESTSRC}${FS}*.java . ++${TESTJAVA}${FS}bin${FS}javac -d classes A.java B.java C.java ++${TESTJAVA}${FS}bin${FS}javac Main.java ++${TESTJAVA}${FS}bin${FS}java Main ++result=$? ++if [ $result -eq 0 ] ++then ++ echo "Passed 1 of 2" ++else ++ echo "Failed 1 of 2" ++ exit $result ++fi ++${TESTJAVA}${FS}bin${FS}java Main foo ++result=$? ++if [ $result -eq 0 ] ++then ++ echo "Passed 2 of 2" ++else ++ echo "Failed 2 of 2" ++fi ++exit $result +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,127 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 5040740 ++ * @summary annotations cause memory leak ++ * @author gafter ++ * ++ * @run shell LoaderLeak.sh ++ */ ++ ++import java.net.*; ++import java.lang.ref.*; ++import java.util.*; ++import java.io.*; ++ ++public class Main { ++ public static void main(String[] args) throws Exception { ++ for (int i=0; i<100; i++) ++ doTest(args.length != 0); ++ } ++ ++ static void doTest(boolean readAnn) throws Exception { ++ // URL classes = new URL("file://" + System.getProperty("user.dir") + "/classes"); ++ // URL[] path = { classes }; ++ // URLClassLoader loader = new URLClassLoader(path); ++ ClassLoader loader = new SimpleClassLoader(); ++ WeakReference> c = new WeakReference(loader.loadClass("C")); ++ if (c.get() == null) throw new AssertionError(); ++ if (c.get().getClassLoader() != loader) throw new AssertionError(); ++ if (readAnn) System.out.println(c.get().getAnnotations()[0]); ++ if (c.get() == null) throw new AssertionError(); ++ System.gc(); ++ System.gc(); ++ if (c.get() == null) throw new AssertionError(); ++ System.gc(); ++ System.gc(); ++ loader = null; ++ System.gc(); ++ System.gc(); ++ if (c.get() != null) throw new AssertionError(); ++ } ++} ++ ++class SimpleClassLoader extends ClassLoader { ++ private Hashtable classes = new Hashtable(); ++ ++ public SimpleClassLoader() { ++ } ++ private byte getClassImplFromDataBase(String className)[] { ++ byte result[]; ++ try { ++ FileInputStream fi = new FileInputStream("classes/"+className+".class"); ++ result = new byte[fi.available()]; ++ fi.read(result); ++ return result; ++ } catch (Exception e) { ++ ++ /* ++ * If we caught an exception, either the class wasnt found or it ++ * was unreadable by our process. ++ */ ++ return null; ++ } ++ } ++ public Class loadClass(String className) throws ClassNotFoundException { ++ return (loadClass(className, true)); ++ } ++ public synchronized Class loadClass(String className, boolean resolveIt) ++ throws ClassNotFoundException { ++ Class result; ++ byte classData[]; ++ ++ /* Check our local cache of classes */ ++ result = (Class)classes.get(className); ++ if (result != null) { ++ return result; ++ } ++ ++ /* Check with the primordial class loader */ ++ try { ++ result = super.findSystemClass(className); ++ return result; ++ } catch (ClassNotFoundException e) { ++ } ++ ++ /* Try to load it from our repository */ ++ classData = getClassImplFromDataBase(className); ++ if (classData == null) { ++ throw new ClassNotFoundException(); ++ } ++ ++ /* Define it (parse the class file) */ ++ result = defineClass(classData, 0, classData.length); ++ if (result == null) { ++ throw new ClassFormatError(); ++ } ++ ++ if (resolveIt) { ++ resolveClass(result); ++ } ++ ++ classes.put(className, result); ++ return result; ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java openjdk/jdk/test/java/lang/annotation/Missing/A.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/A.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,30 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have a missing annotation applied for running MissingTest. ++ */ ++ at Missing ++ at Marker ++public class A { ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java openjdk/jdk/test/java/lang/annotation/Missing/B.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/B.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,31 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have an indirectly missing annotation applied for for ++ * running MisssingTest. ++ */ ++ at MissingWrapper(@Missing) ++ at Marker ++public class B { ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java openjdk/jdk/test/java/lang/annotation/Missing/C.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/C.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,31 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have a missing annotation applied for running MissingTest. ++ */ ++public class C { ++ public void method1(@Missing @Marker Object param1) { ++ return; ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/D.java openjdk/jdk/test/java/lang/annotation/Missing/D.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/D.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/D.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,31 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/** ++ * Class to have a missing annotation applied for running MissingTest. ++ */ ++public class D { ++ public void method1(@MissingWrapper(@Missing) @Marker Object param1) { ++ return; ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/Marker.java openjdk/jdk/test/java/lang/annotation/Missing/Marker.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/Marker.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/Marker.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,32 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++import java.lang.annotation.Retention; ++import static java.lang.annotation.RetentionPolicy.*; ++ ++/** ++ * A marker annotation. Used so that at least one annotation will be ++ * present on the classes tested by MissingTest. ++ */ ++ at Retention(RUNTIME) ++public @interface Marker {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/Missing.java openjdk/jdk/test/java/lang/annotation/Missing/Missing.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/Missing.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/Missing.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,32 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++import java.lang.annotation.Retention; ++import static java.lang.annotation.RetentionPolicy.*; ++ ++/** ++ * The class file for this annotation type is missing when MissingTest ++ * is run. ++ */ ++ at Retention(RUNTIME) ++public @interface Missing {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingTest.java openjdk/jdk/test/java/lang/annotation/Missing/MissingTest.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingTest.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/MissingTest.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,135 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 6322301 ++ * @summary Verify when missing annotation classes cause exceptions ++ * @author Joseph D. Darcy ++ * @compile MissingTest.java A.java B.java C.java D.java Marker.java Missing.java MissingWrapper.java ++ * @clean Missing ++ * @run main MissingTest ++ */ ++ ++import java.lang.reflect.*; ++ ++/** ++ * This test verifies that a missing annotation class leads to the ++ * expected exceptional behavior; a missing directly applied ++ * annotation is currently ignored but a missing annotation value ++ * inside another annotation throws an exception. ++ * ++ * To be run as intended, the annotation type Missing should *not* be ++ * on the classpath when the test is run; with jtreg, it is deleted by ++ * the @clean directive. ++ */ ++public class MissingTest { ++ /** ++ * For the annotated element argument, get all its annotations and ++ * see whether or not an exception is throw upon reading the ++ * annotations. Additionally, verify at least one annotation is ++ * present. ++ */ ++ private static void testAnnotation(AnnotatedElement element, ++ boolean exceptionExpected) { ++ java.lang.annotation.Annotation[] annotations; ++ try { ++ annotations = element.getAnnotations(); ++ if (exceptionExpected) { ++ System.err.println("Error: Did not get an exception reading annotations on " ++ + element); ++ System.err.println("Annotations found: " ++ + java.util.Arrays.toString(annotations)); ++ throw new RuntimeException(); ++ } ++ if (annotations.length == 0) { ++ System.err.println("Error: no annotations found on " + element); ++ throw new RuntimeException(); ++ } ++ } catch (Throwable t) { ++ if (!exceptionExpected) { ++ System.err.println("Error: Got an unexpected exception reading annotations on " ++ + element); ++ throw new RuntimeException(t); ++ } ++ } ++ } ++ ++ /** ++ * For the annotated element argument, get all its annotations and ++ * see whether or not an exception is throw upon reading the ++ * annotations. Additionally, verify at least one annotation is ++ * present. ++ */ ++ private static void testParameterAnnotation(Method m, ++ boolean exceptionExpected) { ++ java.lang.annotation.Annotation[][] annotationsArray; ++ try { ++ annotationsArray = m.getParameterAnnotations(); ++ if (exceptionExpected) { ++ System.err.println("Error: Did not get an exception reading annotations on method" ++ + m); ++ System.err.println("Annotations found: " ++ + java.util.Arrays.toString(annotationsArray)); ++ throw new RuntimeException(); ++ } ++ if (annotationsArray.length == 0 ) { ++ System.err.println("Error: no parameters for " + m); ++ throw new RuntimeException(); ++ } else { ++ java.lang.annotation.Annotation[] annotations = annotationsArray[0]; ++ if (annotations.length == 0) { ++ System.err.println("Error: no annotations on " + m); ++ throw new RuntimeException(); ++ } ++ } ++ } catch (Throwable t) { ++ if (!exceptionExpected) { ++ System.err.println("Error: Got an unexpected exception reading annotations on " ++ + m); ++ throw new RuntimeException(t); ++ } ++ } ++ } ++ ++ public static void main(String argv[]) throws Exception { ++ // Class A has a directly applied annotation whose class is ++ // missing. ++ testAnnotation(A.class, false); ++ ++ // Class B has a directly applied annotation whose value ++ // includes to an annotation class that is missing. ++ testAnnotation(B.class, true); ++ ++ ++ // Class C has a directly applied parameter annotation whose ++ // class is missing. ++ testParameterAnnotation(C.class.getDeclaredMethod("method1", Object.class), ++ false); ++ ++ // Class D has a directly applied parameter annotation whose value ++ // includes to an annotation class that is missing. ++ testParameterAnnotation(D.class.getDeclaredMethod("method1", Object.class), ++ true); ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingWrapper.java openjdk/jdk/test/java/lang/annotation/Missing/MissingWrapper.java +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingWrapper.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/Missing/MissingWrapper.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,34 @@ ++/* ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++import java.lang.annotation.Retention; ++import static java.lang.annotation.RetentionPolicy.*; ++ ++/** ++ * Annotation wrapper around an annotation whose class will be missing ++ * when MissingTest is run. ++ */ ++ at Retention(RUNTIME) ++public @interface MissingWrapper { ++ Missing value(); ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/package-info.java openjdk/jdk/test/java/lang/annotation/package-info.java +--- openjdk.orig/jdk/test/java/lang/annotation/package-info.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/package-info.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,37 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 4901290 5037531 ++ * @summary Package annotations ++ * @author gafter ++ * ++ * @compile -source 1.5 package-info.java PackageMain.java ++ * @run main PackageMain ++ */ ++ ++ at java.lang.annotation.Documented ++package foo.bar; ++ ++class Baz {} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/PackageMain.java openjdk/jdk/test/java/lang/annotation/PackageMain.java +--- openjdk.orig/jdk/test/java/lang/annotation/PackageMain.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/PackageMain.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,36 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++import java.lang.annotation.Documented; ++ ++public class PackageMain { ++ public static void main(String[] args) throws Exception { ++ Class c = Class.forName("foo.bar.Baz"); ++ System.out.println("c=" + c); ++ System.out.println("cl=" + c.getClassLoader()); ++ Package p = c.getPackage(); ++ System.out.println("p=" + p); ++ Documented d = p.getAnnotation(Documented.class); ++ if (d == null) throw new Error(); ++ } ++} +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/RecursiveAnnotation.java openjdk/jdk/test/java/lang/annotation/RecursiveAnnotation.java +--- openjdk.orig/jdk/test/java/lang/annotation/RecursiveAnnotation.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/RecursiveAnnotation.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 5037685 ++ * @summary Under certain circumstances, recursive annotations disappeared ++ * @author Josh Bloch ++ */ ++ ++import java.lang.annotation.*; ++import static java.lang.annotation.RetentionPolicy.*; ++ ++ at Rat public class RecursiveAnnotation { ++ public static void main(String[] args) { ++ if (!RecursiveAnnotation.class.isAnnotationPresent(Rat.class)) ++ throw new RuntimeException("RecursiveAnnotation"); ++ ++ if (!Rat.class.isAnnotationPresent(Rat.class)) ++ throw new RuntimeException("Rat"); ++ } ++} ++ ++ at Retention(RUNTIME) @Rat @interface Rat { } +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/UnitTest.java openjdk/jdk/test/java/lang/annotation/UnitTest.java +--- openjdk.orig/jdk/test/java/lang/annotation/UnitTest.java 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/lang/annotation/UnitTest.java 2009-02-11 00:58:01.000000000 +0000 +@@ -0,0 +1,4983 @@ ++/* ++ * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 4906359 4963461 4965058 4965039 4986770 ++ * @summary Unit test for annotation reading ++ * @author Josh Bloch ++ * @compile -source 1.5 UnitTest.java ++ * @run main UnitTest ++ */ ++ ++import static java.lang.annotation.RetentionPolicy.RUNTIME; ++ ++import java.lang.annotation.*; ++import java.util.*; ++import java.lang.reflect.*; ++import java.io.*; ++ ++public class UnitTest { ++ private static final Class[] X = new Class[0]; ++ private static final Class[] Y = { int.class }; ++ ++ static int numTests = 0; ++ ++ public static void main(String[] args) throws Exception { ++ ++ // *** TESTS ON ANNOTATED METHODS *** ++ ++ // MULTIMEMBER SCALAR TYPES ON METHOD ++ checkScalarTypes(UnitTest.class.getMethod("scalarTypesMethod", X)); ++ checkScalarTypesOverrideDefault(UnitTest.class.getMethod("scalarTypesOverrideDefaultMethod", X)); ++ checkScalarTypesAcceptDefault(UnitTest.class.getMethod("scalarTypesAcceptDefaultMethod", X)); ++ ++ // MULTIMEMBER ARRAY TYPES ON METHOD ++ checkArrayTypes0(UnitTest.class.getMethod("emptyArrayTypesMethod", X)); ++ checkArrayTypes1(UnitTest.class.getMethod("singleElementArrayTypesMethod", X)); ++ checkArrayTypes2(UnitTest.class.getMethod("twoElementArrayTypesMethod", X)); ++ checkArrayTypesAcceptDefault(UnitTest.class.getMethod("arrayTypesAcceptDefaultMethod", X)); ++ checkArrayTypesOverrideDefault(UnitTest.class.getMethod("arrayTypesOverrideDefaultMethod", X)); ++ ++ // MARKER TYPE ON METHOD ++ checkMarker(UnitTest.class.getMethod("markerMethod", X)); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON METHOD ++ checkSingleMemberByte(UnitTest.class.getMethod("SingleMemberByte", X)); ++ checkSingleMemberShort(UnitTest.class.getMethod("SingleMemberShort", X)); ++ checkSingleMemberInt(UnitTest.class.getMethod("SingleMemberInt", X)); ++ checkSingleMemberLong(UnitTest.class.getMethod("SingleMemberLong", X)); ++ checkSingleMemberChar(UnitTest.class.getMethod("SingleMemberChar", X)); ++ checkSingleMemberFloat(UnitTest.class.getMethod("SingleMemberFloat", X)); ++ checkSingleMemberDouble(UnitTest.class.getMethod("SingleMemberDouble", X)); ++ checkSingleMemberBoolean(UnitTest.class.getMethod("SingleMemberBoolean", X)); ++ checkSingleMemberString(UnitTest.class.getMethod("SingleMemberString", X)); ++ checkSingleMemberClass(UnitTest.class.getMethod("SingleMemberClass", X)); ++ checkSingleMemberEnum(UnitTest.class.getMethod("SingleMemberEnum", X)); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON METHOD ++ checkSingleMemberByteOvrdDef(UnitTest.class.getMethod("SingleMemberByteOvrdDef", X)); ++ checkSingleMemberShortOvrdDef(UnitTest.class.getMethod("SingleMemberShortOvrdDef", X)); ++ checkSingleMemberIntOvrdDef(UnitTest.class.getMethod("SingleMemberIntOvrdDef", X)); ++ checkSingleMemberLongOvrdDef(UnitTest.class.getMethod("SingleMemberLongOvrdDef", X)); ++ checkSingleMemberCharOvrdDef(UnitTest.class.getMethod("SingleMemberCharOvrdDef", X)); ++ checkSingleMemberFloatOvrdDef(UnitTest.class.getMethod("SingleMemberFloatOvrdDef", X)); ++ checkSingleMemberDoubleOvrdDef(UnitTest.class.getMethod("SingleMemberDoubleOvrdDef", X)); ++ checkSingleMemberBooleanOvrdDef(UnitTest.class.getMethod("SingleMemberBooleanOvrdDef", X)); ++ checkSingleMemberStringOvrdDef(UnitTest.class.getMethod("SingleMemberStringOvrdDef", X)); ++ checkSingleMemberClassOvrdDef(UnitTest.class.getMethod("SingleMemberClassOvrdDef", X)); ++ checkSingleMemberEnumOvrdDef(UnitTest.class.getMethod("SingleMemberEnumOvrdDef", X)); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON METHOD ++ checkSingleMemberByteAcceptDef(UnitTest.class.getMethod("SingleMemberByteAcceptDef", X)); ++ checkSingleMemberShortAcceptDef(UnitTest.class.getMethod("SingleMemberShortAcceptDef", X)); ++ checkSingleMemberIntAcceptDef(UnitTest.class.getMethod("SingleMemberIntAcceptDef", X)); ++ checkSingleMemberLongAcceptDef(UnitTest.class.getMethod("SingleMemberLongAcceptDef", X)); ++ checkSingleMemberCharAcceptDef(UnitTest.class.getMethod("SingleMemberCharAcceptDef", X)); ++ checkSingleMemberFloatAcceptDef(UnitTest.class.getMethod("SingleMemberFloatAcceptDef", X)); ++ checkSingleMemberDoubleAcceptDef(UnitTest.class.getMethod("SingleMemberDoubleAcceptDef", X)); ++ checkSingleMemberBooleanAcceptDef(UnitTest.class.getMethod("SingleMemberBooleanAcceptDef", X)); ++ checkSingleMemberStringAcceptDef(UnitTest.class.getMethod("SingleMemberStringAcceptDef", X)); ++ checkSingleMemberClassAcceptDef(UnitTest.class.getMethod("SingleMemberClassAcceptDef", X)); ++ checkSingleMemberEnumAcceptDef(UnitTest.class.getMethod("SingleMemberEnumAcceptDef", X)); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON METHOD ++ checkSingleMemberByteArrEmpty(UnitTest.class.getMethod("SingleMemberByteArrEmpty", X)); ++ checkSingleMemberShortArrEmpty(UnitTest.class.getMethod("SingleMemberShortArrEmpty", X)); ++ checkSingleMemberIntArrEmpty(UnitTest.class.getMethod("SingleMemberIntArrEmpty", X)); ++ checkSingleMemberLongArrEmpty(UnitTest.class.getMethod("SingleMemberLongArrEmpty", X)); ++ checkSingleMemberCharArrEmpty(UnitTest.class.getMethod("SingleMemberCharArrEmpty", X)); ++ checkSingleMemberFloatArrEmpty(UnitTest.class.getMethod("SingleMemberFloatArrEmpty", X)); ++ checkSingleMemberDoubleArrEmpty(UnitTest.class.getMethod("SingleMemberDoubleArrEmpty", X)); ++ checkSingleMemberBooleanArrEmpty(UnitTest.class.getMethod("SingleMemberBooleanArrEmpty", X)); ++ checkSingleMemberStringArrEmpty(UnitTest.class.getMethod("SingleMemberStringArrEmpty", X)); ++ checkSingleMemberClassArrEmpty(UnitTest.class.getMethod("SingleMemberClassArrEmpty", X)); ++ checkSingleMemberEnumArrEmpty(UnitTest.class.getMethod("SingleMemberEnumArrEmpty", X)); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON METHOD ++ checkSingleMemberByteArrOne(UnitTest.class.getMethod("SingleMemberByteArrOne", X)); ++ checkSingleMemberShortArrOne(UnitTest.class.getMethod("SingleMemberShortArrOne", X)); ++ checkSingleMemberIntArrOne(UnitTest.class.getMethod("SingleMemberIntArrOne", X)); ++ checkSingleMemberLongArrOne(UnitTest.class.getMethod("SingleMemberLongArrOne", X)); ++ checkSingleMemberCharArrOne(UnitTest.class.getMethod("SingleMemberCharArrOne", X)); ++ checkSingleMemberFloatArrOne(UnitTest.class.getMethod("SingleMemberFloatArrOne", X)); ++ checkSingleMemberDoubleArrOne(UnitTest.class.getMethod("SingleMemberDoubleArrOne", X)); ++ checkSingleMemberBooleanArrOne(UnitTest.class.getMethod("SingleMemberBooleanArrOne", X)); ++ checkSingleMemberStringArrOne(UnitTest.class.getMethod("SingleMemberStringArrOne", X)); ++ checkSingleMemberClassArrOne(UnitTest.class.getMethod("SingleMemberClassArrOne", X)); ++ checkSingleMemberEnumArrOne(UnitTest.class.getMethod("SingleMemberEnumArrOne", X)); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON METHOD ++ checkSingleMemberByteArrTwo(UnitTest.class.getMethod("SingleMemberByteArrTwo", X)); ++ checkSingleMemberShortArrTwo(UnitTest.class.getMethod("SingleMemberShortArrTwo", X)); ++ checkSingleMemberIntArrTwo(UnitTest.class.getMethod("SingleMemberIntArrTwo", X)); ++ checkSingleMemberLongArrTwo(UnitTest.class.getMethod("SingleMemberLongArrTwo", X)); ++ checkSingleMemberCharArrTwo(UnitTest.class.getMethod("SingleMemberCharArrTwo", X)); ++ checkSingleMemberFloatArrTwo(UnitTest.class.getMethod("SingleMemberFloatArrTwo", X)); ++ checkSingleMemberDoubleArrTwo(UnitTest.class.getMethod("SingleMemberDoubleArrTwo", X)); ++ checkSingleMemberBooleanArrTwo(UnitTest.class.getMethod("SingleMemberBooleanArrTwo", X)); ++ checkSingleMemberStringArrTwo(UnitTest.class.getMethod("SingleMemberStringArrTwo", X)); ++ checkSingleMemberClassArrTwo(UnitTest.class.getMethod("SingleMemberClassArrTwo", X)); ++ checkSingleMemberEnumArrTwo(UnitTest.class.getMethod("SingleMemberEnumArrTwo", X)); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON METHOD ++ checkSingleMemberByteArrOvrdDef(UnitTest.class.getMethod("SingleMemberByteArrOvrdDef", X)); ++ checkSingleMemberShortArrOvrdDef(UnitTest.class.getMethod("SingleMemberShortArrOvrdDef", X)); ++ checkSingleMemberIntArrOvrdDef(UnitTest.class.getMethod("SingleMemberIntArrOvrdDef", X)); ++ checkSingleMemberLongArrOvrdDef(UnitTest.class.getMethod("SingleMemberLongArrOvrdDef", X)); ++ checkSingleMemberCharArrOvrdDef(UnitTest.class.getMethod("SingleMemberCharArrOvrdDef", X)); ++ checkSingleMemberFloatArrOvrdDef(UnitTest.class.getMethod("SingleMemberFloatArrOvrdDef", X)); ++ checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getMethod("SingleMemberDoubleArrOvrdDef", X)); ++ checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getMethod("SingleMemberBooleanArrOvrdDef", X)); ++ checkSingleMemberStringArrOvrdDef(UnitTest.class.getMethod("SingleMemberStringArrOvrdDef", X)); ++ checkSingleMemberClassArrOvrdDef(UnitTest.class.getMethod("SingleMemberClassArrOvrdDef", X)); ++ checkSingleMemberEnumArrOvrdDef(UnitTest.class.getMethod("SingleMemberEnumArrOvrdDef", X)); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON METHOD ++ checkSingleMemberByteArrAcceptDef(UnitTest.class.getMethod("SingleMemberByteArrAcceptDef", X)); ++ checkSingleMemberShortArrAcceptDef(UnitTest.class.getMethod("SingleMemberShortArrAcceptDef", X)); ++ checkSingleMemberIntArrAcceptDef(UnitTest.class.getMethod("SingleMemberIntArrAcceptDef", X)); ++ checkSingleMemberLongArrAcceptDef(UnitTest.class.getMethod("SingleMemberLongArrAcceptDef", X)); ++ checkSingleMemberCharArrAcceptDef(UnitTest.class.getMethod("SingleMemberCharArrAcceptDef", X)); ++ checkSingleMemberFloatArrAcceptDef(UnitTest.class.getMethod("SingleMemberFloatArrAcceptDef", X)); ++ checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getMethod("SingleMemberDoubleArrAcceptDef", X)); ++ checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getMethod("SingleMemberBooleanArrAcceptDef", X)); ++ checkSingleMemberStringArrAcceptDef(UnitTest.class.getMethod("SingleMemberStringArrAcceptDef", X)); ++ checkSingleMemberClassArrAcceptDef(UnitTest.class.getMethod("SingleMemberClassArrAcceptDef", X)); ++ checkSingleMemberEnumArrAcceptDef(UnitTest.class.getMethod("SingleMemberEnumArrAcceptDef", X)); ++ ++ // *** TESTS ON ANNOTATED FIELDS *** ++ ++ // MULTIMEMBER SCALAR TYPES ON FIELD ++ checkScalarTypes(UnitTest.class.getField("scalarTypesField")); ++ checkScalarTypesAcceptDefault(UnitTest.class.getField("scalarTypesAcceptDefaultField")); ++ checkScalarTypesOverrideDefault(UnitTest.class.getField("scalarTypesOverrideDefaultField")); ++ ++ // MULTIMEMBER ARRAY TYPES ON FIELD ++ checkArrayTypes0(UnitTest.class.getField("emptyArrayTypesField")); ++ checkArrayTypes1(UnitTest.class.getField("singleElementArrayTypesField")); ++ checkArrayTypes2(UnitTest.class.getField("twoElementArrayTypesField")); ++ checkArrayTypesAcceptDefault(UnitTest.class.getField("arrayTypesAcceptDefaultField")); ++ checkArrayTypesOverrideDefault(UnitTest.class.getField("arrayTypesOverrideDefaultField")); ++ ++ // MARKER TYPE ON FIELD ++ checkMarker(UnitTest.class.getField("markerField")); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON FIELD ++ checkSingleMemberByte(UnitTest.class.getField("SingleMemberByteField")); ++ checkSingleMemberShort(UnitTest.class.getField("SingleMemberShortField")); ++ checkSingleMemberInt(UnitTest.class.getField("SingleMemberIntField")); ++ checkSingleMemberLong(UnitTest.class.getField("SingleMemberLongField")); ++ checkSingleMemberChar(UnitTest.class.getField("SingleMemberCharField")); ++ checkSingleMemberFloat(UnitTest.class.getField("SingleMemberFloatField")); ++ checkSingleMemberDouble(UnitTest.class.getField("SingleMemberDoubleField")); ++ checkSingleMemberBoolean(UnitTest.class.getField("SingleMemberBooleanField")); ++ checkSingleMemberString(UnitTest.class.getField("SingleMemberStringField")); ++ checkSingleMemberClass(UnitTest.class.getField("SingleMemberClassField")); ++ checkSingleMemberEnum(UnitTest.class.getField("SingleMemberEnumField")); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON FIELD ++ checkSingleMemberByteOvrdDef(UnitTest.class.getField("SingleMemberByteOvrdDefField")); ++ checkSingleMemberShortOvrdDef(UnitTest.class.getField("SingleMemberShortOvrdDefField")); ++ checkSingleMemberIntOvrdDef(UnitTest.class.getField("SingleMemberIntOvrdDefField")); ++ checkSingleMemberLongOvrdDef(UnitTest.class.getField("SingleMemberLongOvrdDefField")); ++ checkSingleMemberCharOvrdDef(UnitTest.class.getField("SingleMemberCharOvrdDefField")); ++ checkSingleMemberFloatOvrdDef(UnitTest.class.getField("SingleMemberFloatOvrdDefField")); ++ checkSingleMemberDoubleOvrdDef(UnitTest.class.getField("SingleMemberDoubleOvrdDefField")); ++ checkSingleMemberBooleanOvrdDef(UnitTest.class.getField("SingleMemberBooleanOvrdDefField")); ++ checkSingleMemberStringOvrdDef(UnitTest.class.getField("SingleMemberStringOvrdDefField")); ++ checkSingleMemberClassOvrdDef(UnitTest.class.getField("SingleMemberClassOvrdDefField")); ++ checkSingleMemberEnumOvrdDef(UnitTest.class.getField("SingleMemberEnumOvrdDefField")); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON FIELD ++ checkSingleMemberByteAcceptDef(UnitTest.class.getField("SingleMemberByteAcceptDefField")); ++ checkSingleMemberShortAcceptDef(UnitTest.class.getField("SingleMemberShortAcceptDefField")); ++ checkSingleMemberIntAcceptDef(UnitTest.class.getField("SingleMemberIntAcceptDefField")); ++ checkSingleMemberLongAcceptDef(UnitTest.class.getField("SingleMemberLongAcceptDefField")); ++ checkSingleMemberCharAcceptDef(UnitTest.class.getField("SingleMemberCharAcceptDefField")); ++ checkSingleMemberFloatAcceptDef(UnitTest.class.getField("SingleMemberFloatAcceptDefField")); ++ checkSingleMemberDoubleAcceptDef(UnitTest.class.getField("SingleMemberDoubleAcceptDefField")); ++ checkSingleMemberBooleanAcceptDef(UnitTest.class.getField("SingleMemberBooleanAcceptDefField")); ++ checkSingleMemberStringAcceptDef(UnitTest.class.getField("SingleMemberStringAcceptDefField")); ++ checkSingleMemberClassAcceptDef(UnitTest.class.getField("SingleMemberClassAcceptDefField")); ++ checkSingleMemberEnumAcceptDef(UnitTest.class.getField("SingleMemberEnumAcceptDefField")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON FIELD ++ checkSingleMemberByteArrEmpty(UnitTest.class.getField("SingleMemberByteArrEmptyField")); ++ checkSingleMemberShortArrEmpty(UnitTest.class.getField("SingleMemberShortArrEmptyField")); ++ checkSingleMemberIntArrEmpty(UnitTest.class.getField("SingleMemberIntArrEmptyField")); ++ checkSingleMemberLongArrEmpty(UnitTest.class.getField("SingleMemberLongArrEmptyField")); ++ checkSingleMemberCharArrEmpty(UnitTest.class.getField("SingleMemberCharArrEmptyField")); ++ checkSingleMemberFloatArrEmpty(UnitTest.class.getField("SingleMemberFloatArrEmptyField")); ++ checkSingleMemberDoubleArrEmpty(UnitTest.class.getField("SingleMemberDoubleArrEmptyField")); ++ checkSingleMemberBooleanArrEmpty(UnitTest.class.getField("SingleMemberBooleanArrEmptyField")); ++ checkSingleMemberStringArrEmpty(UnitTest.class.getField("SingleMemberStringArrEmptyField")); ++ checkSingleMemberClassArrEmpty(UnitTest.class.getField("SingleMemberClassArrEmptyField")); ++ checkSingleMemberEnumArrEmpty(UnitTest.class.getField("SingleMemberEnumArrEmptyField")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON FIELD ++ checkSingleMemberByteArrOne(UnitTest.class.getField("SingleMemberByteArrOneField")); ++ checkSingleMemberShortArrOne(UnitTest.class.getField("SingleMemberShortArrOneField")); ++ checkSingleMemberIntArrOne(UnitTest.class.getField("SingleMemberIntArrOneField")); ++ checkSingleMemberLongArrOne(UnitTest.class.getField("SingleMemberLongArrOneField")); ++ checkSingleMemberCharArrOne(UnitTest.class.getField("SingleMemberCharArrOneField")); ++ checkSingleMemberFloatArrOne(UnitTest.class.getField("SingleMemberFloatArrOneField")); ++ checkSingleMemberDoubleArrOne(UnitTest.class.getField("SingleMemberDoubleArrOneField")); ++ checkSingleMemberBooleanArrOne(UnitTest.class.getField("SingleMemberBooleanArrOneField")); ++ checkSingleMemberStringArrOne(UnitTest.class.getField("SingleMemberStringArrOneField")); ++ checkSingleMemberClassArrOne(UnitTest.class.getField("SingleMemberClassArrOneField")); ++ checkSingleMemberEnumArrOne(UnitTest.class.getField("SingleMemberEnumArrOneField")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON FIELD ++ checkSingleMemberByteArrTwo(UnitTest.class.getField("SingleMemberByteArrTwoField")); ++ checkSingleMemberShortArrTwo(UnitTest.class.getField("SingleMemberShortArrTwoField")); ++ checkSingleMemberIntArrTwo(UnitTest.class.getField("SingleMemberIntArrTwoField")); ++ checkSingleMemberLongArrTwo(UnitTest.class.getField("SingleMemberLongArrTwoField")); ++ checkSingleMemberCharArrTwo(UnitTest.class.getField("SingleMemberCharArrTwoField")); ++ checkSingleMemberFloatArrTwo(UnitTest.class.getField("SingleMemberFloatArrTwoField")); ++ checkSingleMemberDoubleArrTwo(UnitTest.class.getField("SingleMemberDoubleArrTwoField")); ++ checkSingleMemberBooleanArrTwo(UnitTest.class.getField("SingleMemberBooleanArrTwoField")); ++ checkSingleMemberStringArrTwo(UnitTest.class.getField("SingleMemberStringArrTwoField")); ++ checkSingleMemberClassArrTwo(UnitTest.class.getField("SingleMemberClassArrTwoField")); ++ checkSingleMemberEnumArrTwo(UnitTest.class.getField("SingleMemberEnumArrTwoField")); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON FIELD ++ checkSingleMemberByteArrOvrdDef(UnitTest.class.getField("SingleMemberByteArrOvrdDefField")); ++ checkSingleMemberShortArrOvrdDef(UnitTest.class.getField("SingleMemberShortArrOvrdDefField")); ++ checkSingleMemberIntArrOvrdDef(UnitTest.class.getField("SingleMemberIntArrOvrdDefField")); ++ checkSingleMemberLongArrOvrdDef(UnitTest.class.getField("SingleMemberLongArrOvrdDefField")); ++ checkSingleMemberCharArrOvrdDef(UnitTest.class.getField("SingleMemberCharArrOvrdDefField")); ++ checkSingleMemberFloatArrOvrdDef(UnitTest.class.getField("SingleMemberFloatArrOvrdDefField")); ++ checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField")); ++ checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField")); ++ checkSingleMemberStringArrOvrdDef(UnitTest.class.getField("SingleMemberStringArrOvrdDefField")); ++ checkSingleMemberClassArrOvrdDef(UnitTest.class.getField("SingleMemberClassArrOvrdDefField")); ++ checkSingleMemberEnumArrOvrdDef(UnitTest.class.getField("SingleMemberEnumArrOvrdDefField")); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON FIELD ++ checkSingleMemberByteArrAcceptDef(UnitTest.class.getField("SingleMemberByteArrAcceptDefField")); ++ checkSingleMemberShortArrAcceptDef(UnitTest.class.getField("SingleMemberShortArrAcceptDefField")); ++ checkSingleMemberIntArrAcceptDef(UnitTest.class.getField("SingleMemberIntArrAcceptDefField")); ++ checkSingleMemberLongArrAcceptDef(UnitTest.class.getField("SingleMemberLongArrAcceptDefField")); ++ checkSingleMemberCharArrAcceptDef(UnitTest.class.getField("SingleMemberCharArrAcceptDefField")); ++ checkSingleMemberFloatArrAcceptDef(UnitTest.class.getField("SingleMemberFloatArrAcceptDefField")); ++ checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField")); ++ checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField")); ++ checkSingleMemberStringArrAcceptDef(UnitTest.class.getField("SingleMemberStringArrAcceptDefField")); ++ checkSingleMemberClassArrAcceptDef(UnitTest.class.getField("SingleMemberClassArrAcceptDefField")); ++ checkSingleMemberEnumArrAcceptDef(UnitTest.class.getField("SingleMemberEnumArrAcceptDefField")); ++ ++ // *** TESTS ON ANNOTATED ENUM CONSTS *** ++ ++ // MULTIMEMBER SCALAR TYPES ON ENUM CONST ++ checkScalarTypes(TestType.class.getField("scalarTypesField")); ++ checkScalarTypesAcceptDefault(TestType.class.getField("scalarTypesAcceptDefaultField")); ++ checkScalarTypesOverrideDefault(TestType.class.getField("scalarTypesOverrideDefaultField")); ++ ++ // MULTIMEMBER ARRAY TYPES ON ENUM CONST ++ checkArrayTypes0(TestType.class.getField("emptyArrayTypesField")); ++ checkArrayTypes1(TestType.class.getField("singleElementArrayTypesField")); ++ checkArrayTypes2(TestType.class.getField("twoElementArrayTypesField")); ++ checkArrayTypesAcceptDefault(TestType.class.getField("arrayTypesAcceptDefaultField")); ++ checkArrayTypesOverrideDefault(TestType.class.getField("arrayTypesOverrideDefaultField")); ++ ++ // MARKER TYPE ON CLASS ++ checkMarker(TestType.class.getField("marker")); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON CLASS ++ checkSingleMemberByte(TestType.class.getField("SingleMemberByte")); ++ checkSingleMemberShort(TestType.class.getField("SingleMemberShort")); ++ checkSingleMemberInt(TestType.class.getField("SingleMemberInt")); ++ checkSingleMemberLong(TestType.class.getField("SingleMemberLong")); ++ checkSingleMemberChar(TestType.class.getField("SingleMemberChar")); ++ checkSingleMemberFloat(TestType.class.getField("SingleMemberFloat")); ++ checkSingleMemberDouble(TestType.class.getField("SingleMemberDouble")); ++ checkSingleMemberBoolean(TestType.class.getField("SingleMemberBoolean")); ++ checkSingleMemberString(TestType.class.getField("SingleMemberString")); ++ checkSingleMemberClass(TestType.class.getField("SingleMemberClass")); ++ checkSingleMemberEnum(TestType.class.getField("SingleMemberEnum")); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CLASS ++ checkSingleMemberByteOvrdDef(TestType.class.getField("SingleMemberByteOvrdDef")); ++ checkSingleMemberShortOvrdDef(TestType.class.getField("SingleMemberShortOvrdDef")); ++ checkSingleMemberIntOvrdDef(TestType.class.getField("SingleMemberIntOvrdDef")); ++ checkSingleMemberLongOvrdDef(TestType.class.getField("SingleMemberLongOvrdDef")); ++ checkSingleMemberCharOvrdDef(TestType.class.getField("SingleMemberCharOvrdDef")); ++ checkSingleMemberFloatOvrdDef(TestType.class.getField("SingleMemberFloatOvrdDef")); ++ checkSingleMemberDoubleOvrdDef(TestType.class.getField("SingleMemberDoubleOvrdDef")); ++ checkSingleMemberBooleanOvrdDef(TestType.class.getField("SingleMemberBooleanOvrdDef")); ++ checkSingleMemberStringOvrdDef(TestType.class.getField("SingleMemberStringOvrdDef")); ++ checkSingleMemberClassOvrdDef(TestType.class.getField("SingleMemberClassOvrdDef")); ++ checkSingleMemberEnumOvrdDef(TestType.class.getField("SingleMemberEnumOvrdDef")); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CLASS ++ checkSingleMemberByteAcceptDef(TestType.class.getField("SingleMemberByteAcceptDef")); ++ checkSingleMemberShortAcceptDef(TestType.class.getField("SingleMemberShortAcceptDef")); ++ checkSingleMemberIntAcceptDef(TestType.class.getField("SingleMemberIntAcceptDef")); ++ checkSingleMemberLongAcceptDef(TestType.class.getField("SingleMemberLongAcceptDef")); ++ checkSingleMemberCharAcceptDef(TestType.class.getField("SingleMemberCharAcceptDef")); ++ checkSingleMemberFloatAcceptDef(TestType.class.getField("SingleMemberFloatAcceptDef")); ++ checkSingleMemberDoubleAcceptDef(TestType.class.getField("SingleMemberDoubleAcceptDef")); ++ checkSingleMemberBooleanAcceptDef(TestType.class.getField("SingleMemberBooleanAcceptDef")); ++ checkSingleMemberStringAcceptDef(TestType.class.getField("SingleMemberStringAcceptDef")); ++ checkSingleMemberClassAcceptDef(TestType.class.getField("SingleMemberClassAcceptDef")); ++ checkSingleMemberEnumAcceptDef(TestType.class.getField("SingleMemberEnumAcceptDef")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("EMPTY ARRAY) ON CLASS ++ checkSingleMemberByteArrEmpty(TestType.class.getField("SingleMemberByteArrEmpty")); ++ checkSingleMemberShortArrEmpty(TestType.class.getField("SingleMemberShortArrEmpty")); ++ checkSingleMemberIntArrEmpty(TestType.class.getField("SingleMemberIntArrEmpty")); ++ checkSingleMemberLongArrEmpty(TestType.class.getField("SingleMemberLongArrEmpty")); ++ checkSingleMemberCharArrEmpty(TestType.class.getField("SingleMemberCharArrEmpty")); ++ checkSingleMemberFloatArrEmpty(TestType.class.getField("SingleMemberFloatArrEmpty")); ++ checkSingleMemberDoubleArrEmpty(TestType.class.getField("SingleMemberDoubleArrEmpty")); ++ checkSingleMemberBooleanArrEmpty(TestType.class.getField("SingleMemberBooleanArrEmpty")); ++ checkSingleMemberStringArrEmpty(TestType.class.getField("SingleMemberStringArrEmpty")); ++ checkSingleMemberClassArrEmpty(TestType.class.getField("SingleMemberClassArrEmpty")); ++ checkSingleMemberEnumArrEmpty(TestType.class.getField("SingleMemberEnumArrEmpty")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("ONE-ELEMENT ARRAY) ON CLASS ++ checkSingleMemberByteArrOne(TestType.class.getField("SingleMemberByteArrOne")); ++ checkSingleMemberShortArrOne(TestType.class.getField("SingleMemberShortArrOne")); ++ checkSingleMemberIntArrOne(TestType.class.getField("SingleMemberIntArrOne")); ++ checkSingleMemberLongArrOne(TestType.class.getField("SingleMemberLongArrOne")); ++ checkSingleMemberCharArrOne(TestType.class.getField("SingleMemberCharArrOne")); ++ checkSingleMemberFloatArrOne(TestType.class.getField("SingleMemberFloatArrOne")); ++ checkSingleMemberDoubleArrOne(TestType.class.getField("SingleMemberDoubleArrOne")); ++ checkSingleMemberBooleanArrOne(TestType.class.getField("SingleMemberBooleanArrOne")); ++ checkSingleMemberStringArrOne(TestType.class.getField("SingleMemberStringArrOne")); ++ checkSingleMemberClassArrOne(TestType.class.getField("SingleMemberClassArrOne")); ++ checkSingleMemberEnumArrOne(TestType.class.getField("SingleMemberEnumArrOne")); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("TWO-ELEMENT ARRAY) ON CLASS ++ checkSingleMemberByteArrTwo(TestType.class.getField("SingleMemberByteArrTwo")); ++ checkSingleMemberShortArrTwo(TestType.class.getField("SingleMemberShortArrTwo")); ++ checkSingleMemberIntArrTwo(TestType.class.getField("SingleMemberIntArrTwo")); ++ checkSingleMemberLongArrTwo(TestType.class.getField("SingleMemberLongArrTwo")); ++ checkSingleMemberCharArrTwo(TestType.class.getField("SingleMemberCharArrTwo")); ++ checkSingleMemberFloatArrTwo(TestType.class.getField("SingleMemberFloatArrTwo")); ++ checkSingleMemberDoubleArrTwo(TestType.class.getField("SingleMemberDoubleArrTwo")); ++ checkSingleMemberBooleanArrTwo(TestType.class.getField("SingleMemberBooleanArrTwo")); ++ checkSingleMemberStringArrTwo(TestType.class.getField("SingleMemberStringArrTwo")); ++ checkSingleMemberClassArrTwo(TestType.class.getField("SingleMemberClassArrTwo")); ++ checkSingleMemberEnumArrTwo(TestType.class.getField("SingleMemberEnumArrTwo")); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (TestType.class.getField("OVERRIDE)ON CLASS ++ checkSingleMemberByteArrOvrdDef(TestType.class.getField("SingleMemberByteArrOvrdDef")); ++ checkSingleMemberShortArrOvrdDef(TestType.class.getField("SingleMemberShortArrOvrdDef")); ++ checkSingleMemberIntArrOvrdDef(TestType.class.getField("SingleMemberIntArrOvrdDef")); ++ checkSingleMemberLongArrOvrdDef(TestType.class.getField("SingleMemberLongArrOvrdDef")); ++ checkSingleMemberCharArrOvrdDef(TestType.class.getField("SingleMemberCharArrOvrdDef")); ++ checkSingleMemberFloatArrOvrdDef(TestType.class.getField("SingleMemberFloatArrOvrdDef")); ++ checkSingleMemberDoubleArrOvrdDef(TestType.class.getField("SingleMemberDoubleArrOvrdDef")); ++ checkSingleMemberBooleanArrOvrdDef(TestType.class.getField("SingleMemberBooleanArrOvrdDef")); ++ checkSingleMemberStringArrOvrdDef(TestType.class.getField("SingleMemberStringArrOvrdDef")); ++ checkSingleMemberClassArrOvrdDef(TestType.class.getField("SingleMemberClassArrOvrdDef")); ++ checkSingleMemberEnumArrOvrdDef(TestType.class.getField("SingleMemberEnumArrOvrdDef")); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (TestType.class.getField("ACCEPT)ON CLASS ++ checkSingleMemberByteArrAcceptDef(TestType.class.getField("SingleMemberByteArrAcceptDef")); ++ checkSingleMemberShortArrAcceptDef(TestType.class.getField("SingleMemberShortArrAcceptDef")); ++ checkSingleMemberIntArrAcceptDef(TestType.class.getField("SingleMemberIntArrAcceptDef")); ++ checkSingleMemberLongArrAcceptDef(TestType.class.getField("SingleMemberLongArrAcceptDef")); ++ checkSingleMemberCharArrAcceptDef(TestType.class.getField("SingleMemberCharArrAcceptDef")); ++ checkSingleMemberFloatArrAcceptDef(TestType.class.getField("SingleMemberFloatArrAcceptDef")); ++ checkSingleMemberDoubleArrAcceptDef(TestType.class.getField("SingleMemberDoubleArrAcceptDef")); ++ checkSingleMemberBooleanArrAcceptDef(TestType.class.getField("SingleMemberBooleanArrAcceptDef")); ++ checkSingleMemberStringArrAcceptDef(TestType.class.getField("SingleMemberStringArrAcceptDef")); ++ checkSingleMemberClassArrAcceptDef(TestType.class.getField("SingleMemberClassArrAcceptDef")); ++ checkSingleMemberEnumArrAcceptDef(TestType.class.getField("SingleMemberEnumArrAcceptDef")); ++ ++ // *** TESTS ON ANNOTATED CONSTRUCTORS *** ++ ++ // MULTIMEMBER SCALAR TYPES ON CONSTRUCTOR ++ checkScalarTypes(UnitTest.class.getConstructor(new Class[]{Iterator.class})); ++ checkScalarTypesOverrideDefault(UnitTest.class.getConstructor(new Class[]{Map.class})); ++ checkScalarTypesAcceptDefault(UnitTest.class.getConstructor(new Class[]{Set.class})); ++ ++ // MULTIMEMBER ARRAY TYPES ON CONSTRUCTOR ++ checkArrayTypes0(UnitTest.class.getConstructor(new Class[]{List.class})); ++ checkArrayTypes1(UnitTest.class.getConstructor(new Class[]{Collection.class})); ++ checkArrayTypes2(UnitTest.class.getConstructor(new Class[]{SortedSet.class})); ++ checkArrayTypesAcceptDefault(UnitTest.class.getConstructor(new Class[]{SortedMap.class})); ++ checkArrayTypesOverrideDefault(UnitTest.class.getConstructor(new Class[]{RandomAccess.class})); ++ ++ // MARKER TYPE ON CONSTRUCTOR ++ checkMarker(UnitTest.class.getConstructor(new Class[] { })); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON CONSTRUCTOR ++ checkSingleMemberByte(UnitTest.class.getConstructor(new Class[] { byte.class })); ++ checkSingleMemberShort(UnitTest.class.getConstructor(new Class[] { short.class })); ++ checkSingleMemberInt(UnitTest.class.getConstructor(new Class[] { int.class })); ++ checkSingleMemberLong(UnitTest.class.getConstructor(new Class[] { long.class })); ++ checkSingleMemberChar(UnitTest.class.getConstructor(new Class[] { char.class })); ++ checkSingleMemberFloat(UnitTest.class.getConstructor(new Class[] { float.class })); ++ checkSingleMemberDouble(UnitTest.class.getConstructor(new Class[] { double.class })); ++ checkSingleMemberBoolean(UnitTest.class.getConstructor(new Class[] { boolean.class })); ++ checkSingleMemberString(UnitTest.class.getConstructor(new Class[] { String.class })); ++ checkSingleMemberClass(UnitTest.class.getConstructor(new Class[] { Class.class })); ++ checkSingleMemberEnum(UnitTest.class.getConstructor(new Class[] { Enum.class })); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CONSTRUCTOR ++ checkSingleMemberByteOvrdDef(UnitTest.class.getConstructor(new Class[] { byte.class, Set.class })); ++ checkSingleMemberShortOvrdDef(UnitTest.class.getConstructor(new Class[] { short.class, Set.class })); ++ checkSingleMemberIntOvrdDef(UnitTest.class.getConstructor(new Class[] { int.class, Set.class })); ++ checkSingleMemberLongOvrdDef(UnitTest.class.getConstructor(new Class[] { long.class, Set.class })); ++ checkSingleMemberCharOvrdDef(UnitTest.class.getConstructor(new Class[] { char.class, Set.class })); ++ checkSingleMemberFloatOvrdDef(UnitTest.class.getConstructor(new Class[] { float.class, Set.class })); ++ checkSingleMemberDoubleOvrdDef(UnitTest.class.getConstructor(new Class[] { double.class, Set.class })); ++ checkSingleMemberBooleanOvrdDef(UnitTest.class.getConstructor(new Class[] { boolean.class, Set.class })); ++ checkSingleMemberStringOvrdDef(UnitTest.class.getConstructor(new Class[] { String.class, Set.class })); ++ checkSingleMemberClassOvrdDef(UnitTest.class.getConstructor(new Class[] { Class.class, Set.class })); ++ checkSingleMemberEnumOvrdDef(UnitTest.class.getConstructor(new Class[] { Enum.class, Set.class })); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CONSTRUCTOR ++ checkSingleMemberByteAcceptDef(UnitTest.class.getConstructor(new Class[] { byte.class, Map.class })); ++ checkSingleMemberShortAcceptDef(UnitTest.class.getConstructor(new Class[] { short.class, Map.class })); ++ checkSingleMemberIntAcceptDef(UnitTest.class.getConstructor(new Class[] { int.class, Map.class })); ++ checkSingleMemberLongAcceptDef(UnitTest.class.getConstructor(new Class[] { long.class, Map.class })); ++ checkSingleMemberCharAcceptDef(UnitTest.class.getConstructor(new Class[] { char.class, Map.class })); ++ checkSingleMemberFloatAcceptDef(UnitTest.class.getConstructor(new Class[] { float.class, Map.class })); ++ checkSingleMemberDoubleAcceptDef(UnitTest.class.getConstructor(new Class[] { double.class, Map.class })); ++ checkSingleMemberBooleanAcceptDef(UnitTest.class.getConstructor(new Class[] { boolean.class, Map.class })); ++ checkSingleMemberStringAcceptDef(UnitTest.class.getConstructor(new Class[] { String.class, Map.class })); ++ checkSingleMemberClassAcceptDef(UnitTest.class.getConstructor(new Class[] { Class.class, Map.class })); ++ checkSingleMemberEnumAcceptDef(UnitTest.class.getConstructor(new Class[] { Enum.class, Map.class })); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON CONSTRUCTOR ++ checkSingleMemberByteArrEmpty(UnitTest.class.getConstructor(new Class[] { byte[].class })); ++ checkSingleMemberShortArrEmpty(UnitTest.class.getConstructor(new Class[] { short[].class })); ++ checkSingleMemberIntArrEmpty(UnitTest.class.getConstructor(new Class[] { int[].class })); ++ checkSingleMemberLongArrEmpty(UnitTest.class.getConstructor(new Class[] { long[].class })); ++ checkSingleMemberCharArrEmpty(UnitTest.class.getConstructor(new Class[] { char[].class })); ++ checkSingleMemberFloatArrEmpty(UnitTest.class.getConstructor(new Class[] { float[].class })); ++ checkSingleMemberDoubleArrEmpty(UnitTest.class.getConstructor(new Class[] { double[].class })); ++ checkSingleMemberBooleanArrEmpty(UnitTest.class.getConstructor(new Class[] { boolean[].class })); ++ checkSingleMemberStringArrEmpty(UnitTest.class.getConstructor(new Class[] { String[].class })); ++ checkSingleMemberClassArrEmpty(UnitTest.class.getConstructor(new Class[] { Class[].class })); ++ checkSingleMemberEnumArrEmpty(UnitTest.class.getConstructor(new Class[] { Enum[].class })); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON CONSTRUCTOR ++ checkSingleMemberByteArrOne(UnitTest.class.getConstructor(new Class[] { byte[].class, Set.class })); ++ checkSingleMemberShortArrOne(UnitTest.class.getConstructor(new Class[] { short[].class, Set.class })); ++ checkSingleMemberIntArrOne(UnitTest.class.getConstructor(new Class[] { int[].class, Set.class })); ++ checkSingleMemberLongArrOne(UnitTest.class.getConstructor(new Class[] { long[].class, Set.class })); ++ checkSingleMemberCharArrOne(UnitTest.class.getConstructor(new Class[] { char[].class, Set.class })); ++ checkSingleMemberFloatArrOne(UnitTest.class.getConstructor(new Class[] { float[].class, Set.class })); ++ checkSingleMemberDoubleArrOne(UnitTest.class.getConstructor(new Class[] { double[].class, Set.class })); ++ checkSingleMemberBooleanArrOne(UnitTest.class.getConstructor(new Class[] { boolean[].class, Set.class })); ++ checkSingleMemberStringArrOne(UnitTest.class.getConstructor(new Class[] { String[].class, Set.class })); ++ checkSingleMemberClassArrOne(UnitTest.class.getConstructor(new Class[] { Class[].class, Set.class })); ++ checkSingleMemberEnumArrOne(UnitTest.class.getConstructor(new Class[] { Enum[].class, Set.class })); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON CONSTRUCTOR ++ checkSingleMemberByteArrTwo(UnitTest.class.getConstructor(new Class[] { byte[].class, Map.class })); ++ checkSingleMemberShortArrTwo(UnitTest.class.getConstructor(new Class[] { short[].class, Map.class })); ++ checkSingleMemberIntArrTwo(UnitTest.class.getConstructor(new Class[] { int[].class, Map.class })); ++ checkSingleMemberLongArrTwo(UnitTest.class.getConstructor(new Class[] { long[].class, Map.class })); ++ checkSingleMemberCharArrTwo(UnitTest.class.getConstructor(new Class[] { char[].class, Map.class })); ++ checkSingleMemberFloatArrTwo(UnitTest.class.getConstructor(new Class[] { float[].class, Map.class })); ++ checkSingleMemberDoubleArrTwo(UnitTest.class.getConstructor(new Class[] { double[].class, Map.class })); ++ checkSingleMemberBooleanArrTwo(UnitTest.class.getConstructor(new Class[] { boolean[].class, Map.class })); ++ checkSingleMemberStringArrTwo(UnitTest.class.getConstructor(new Class[] { String[].class, Map.class })); ++ checkSingleMemberClassArrTwo(UnitTest.class.getConstructor(new Class[] { Class[].class, Map.class })); ++ checkSingleMemberEnumArrTwo(UnitTest.class.getConstructor(new Class[] { Enum[].class, Map.class })); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON CONSTRUCTOR ++ checkSingleMemberByteArrOvrdDef(UnitTest.class.getConstructor(new Class[] { byte[].class, List.class })); ++ checkSingleMemberShortArrOvrdDef(UnitTest.class.getConstructor(new Class[] { short[].class, List.class })); ++ checkSingleMemberIntArrOvrdDef(UnitTest.class.getConstructor(new Class[] { int[].class, List.class })); ++ checkSingleMemberLongArrOvrdDef(UnitTest.class.getConstructor(new Class[] { long[].class, List.class })); ++ checkSingleMemberCharArrOvrdDef(UnitTest.class.getConstructor(new Class[] { char[].class, List.class })); ++ checkSingleMemberFloatArrOvrdDef(UnitTest.class.getConstructor(new Class[] { float[].class, List.class })); ++ checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getConstructor(new Class[] { double[].class, List.class })); ++ checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getConstructor(new Class[] { boolean[].class, List.class })); ++ checkSingleMemberStringArrOvrdDef(UnitTest.class.getConstructor(new Class[] { String[].class, List.class })); ++ checkSingleMemberClassArrOvrdDef(UnitTest.class.getConstructor(new Class[] { Class[].class, List.class })); ++ checkSingleMemberEnumArrOvrdDef(UnitTest.class.getConstructor(new Class[] { Enum[].class, List.class })); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON CONSTRUCTOR ++ checkSingleMemberByteArrAcceptDef(UnitTest.class.getConstructor(new Class[] { byte[].class, Collection.class })); ++ checkSingleMemberShortArrAcceptDef(UnitTest.class.getConstructor(new Class[] { short[].class, Collection.class })); ++ checkSingleMemberIntArrAcceptDef(UnitTest.class.getConstructor(new Class[] { int[].class, Collection.class })); ++ checkSingleMemberLongArrAcceptDef(UnitTest.class.getConstructor(new Class[] { long[].class, Collection.class })); ++ checkSingleMemberCharArrAcceptDef(UnitTest.class.getConstructor(new Class[] { char[].class, Collection.class })); ++ checkSingleMemberFloatArrAcceptDef(UnitTest.class.getConstructor(new Class[] { float[].class, Collection.class })); ++ checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getConstructor(new Class[] { double[].class, Collection.class })); ++ checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getConstructor(new Class[] { boolean[].class, Collection.class })); ++ checkSingleMemberStringArrAcceptDef(UnitTest.class.getConstructor(new Class[] { String[].class, Collection.class })); ++ checkSingleMemberClassArrAcceptDef(UnitTest.class.getConstructor(new Class[] { Class[].class, Collection.class })); ++ checkSingleMemberEnumArrAcceptDef(UnitTest.class.getConstructor(new Class[] { Enum[].class, Collection.class })); ++ ++ // *** TESTS ON ANNOTATED PARAMETERS *** ++ ++ // MULTIMEMBER SCALAR TYPES ON PARAM ++ checkScalarTypesParam(UnitTest.class.getMethod("scalarTypesParam", Y)); ++ checkScalarTypesOverrideDefaultParam(UnitTest.class.getMethod("scalarTypesOverrideDefaultParam", Y)); ++ checkScalarTypesAcceptDefaultParam(UnitTest.class.getMethod("scalarTypesAcceptDefaultParam", Y)); ++ ++ // MULTIMEMBER ARRAY TYPES ON PARAM ++ checkArrayTypes0Param(UnitTest.class.getMethod("emptyArrayTypesParam", Y)); ++ checkArrayTypes1Param(UnitTest.class.getMethod("singleElementArrayTypesParam", Y)); ++ checkArrayTypes2Param(UnitTest.class.getMethod("twoElementArrayTypesParam", Y)); ++ checkArrayTypesAcceptDefaultParam(UnitTest.class.getMethod("arrayTypesAcceptDefaultParam", Y)); ++ checkArrayTypesOverrideDefaultParam(UnitTest.class.getMethod("arrayTypesOverrideDefaultParam", Y)); ++ ++ // MARKER TYPE ON PARAMETER ++ checkMarkerParam(UnitTest.class.getMethod("markerParam", Y)); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON PARAMETER ++ checkSingleMemberByteParam(UnitTest.class.getMethod("SingleMemberByteParam", Y)); ++ checkSingleMemberShortParam(UnitTest.class.getMethod("SingleMemberShortParam", Y)); ++ checkSingleMemberIntParam(UnitTest.class.getMethod("SingleMemberIntParam", Y)); ++ checkSingleMemberLongParam(UnitTest.class.getMethod("SingleMemberLongParam", Y)); ++ checkSingleMemberCharParam(UnitTest.class.getMethod("SingleMemberCharParam", Y)); ++ checkSingleMemberFloatParam(UnitTest.class.getMethod("SingleMemberFloatParam", Y)); ++ checkSingleMemberDoubleParam(UnitTest.class.getMethod("SingleMemberDoubleParam", Y)); ++ checkSingleMemberBooleanParam(UnitTest.class.getMethod("SingleMemberBooleanParam", Y)); ++ checkSingleMemberStringParam(UnitTest.class.getMethod("SingleMemberStringParam", Y)); ++ checkSingleMemberClassParam(UnitTest.class.getMethod("SingleMemberClassParam", Y)); ++ checkSingleMemberEnumParam(UnitTest.class.getMethod("SingleMemberEnumParam", Y)); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON PARAMETER ++ checkSingleMemberByteOvrdDefParam(UnitTest.class.getMethod("SingleMemberByteOvrdDefParam", Y)); ++ checkSingleMemberShortOvrdDefParam(UnitTest.class.getMethod("SingleMemberShortOvrdDefParam", Y)); ++ checkSingleMemberIntOvrdDefParam(UnitTest.class.getMethod("SingleMemberIntOvrdDefParam", Y)); ++ checkSingleMemberLongOvrdDefParam(UnitTest.class.getMethod("SingleMemberLongOvrdDefParam", Y)); ++ checkSingleMemberCharOvrdDefParam(UnitTest.class.getMethod("SingleMemberCharOvrdDefParam", Y)); ++ checkSingleMemberFloatOvrdDefParam(UnitTest.class.getMethod("SingleMemberFloatOvrdDefParam", Y)); ++ checkSingleMemberDoubleOvrdDefParam(UnitTest.class.getMethod("SingleMemberDoubleOvrdDefParam", Y)); ++ checkSingleMemberBooleanOvrdDefParam(UnitTest.class.getMethod("SingleMemberBooleanOvrdDefParam", Y)); ++ checkSingleMemberStringOvrdDefParam(UnitTest.class.getMethod("SingleMemberStringOvrdDefParam", Y)); ++ checkSingleMemberClassOvrdDefParam(UnitTest.class.getMethod("SingleMemberClassOvrdDefParam", Y)); ++ checkSingleMemberEnumOvrdDefParam(UnitTest.class.getMethod("SingleMemberEnumOvrdDefParam", Y)); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON PARAMETER ++ checkSingleMemberByteAcceptDefParam(UnitTest.class.getMethod("SingleMemberByteAcceptDefParam", Y)); ++ checkSingleMemberShortAcceptDefParam(UnitTest.class.getMethod("SingleMemberShortAcceptDefParam", Y)); ++ checkSingleMemberIntAcceptDefParam(UnitTest.class.getMethod("SingleMemberIntAcceptDefParam", Y)); ++ checkSingleMemberLongAcceptDefParam(UnitTest.class.getMethod("SingleMemberLongAcceptDefParam", Y)); ++ checkSingleMemberCharAcceptDefParam(UnitTest.class.getMethod("SingleMemberCharAcceptDefParam", Y)); ++ checkSingleMemberFloatAcceptDefParam(UnitTest.class.getMethod("SingleMemberFloatAcceptDefParam", Y)); ++ checkSingleMemberDoubleAcceptDefParam(UnitTest.class.getMethod("SingleMemberDoubleAcceptDefParam", Y)); ++ checkSingleMemberBooleanAcceptDefParam(UnitTest.class.getMethod("SingleMemberBooleanAcceptDefParam", Y)); ++ checkSingleMemberStringAcceptDefParam(UnitTest.class.getMethod("SingleMemberStringAcceptDefParam", Y)); ++ checkSingleMemberClassAcceptDefParam(UnitTest.class.getMethod("SingleMemberClassAcceptDefParam", Y)); ++ checkSingleMemberEnumAcceptDefParam(UnitTest.class.getMethod("SingleMemberEnumAcceptDefParam", Y)); ++ ++ // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("EMPTY ARRAY) ON PARAMETER ++ checkSingleMemberByteArrEmptyParam(UnitTest.class.getMethod("SingleMemberByteArrEmptyParam", Y)); ++ checkSingleMemberShortArrEmptyParam(UnitTest.class.getMethod("SingleMemberShortArrEmptyParam", Y)); ++ checkSingleMemberIntArrEmptyParam(UnitTest.class.getMethod("SingleMemberIntArrEmptyParam", Y)); ++ checkSingleMemberLongArrEmptyParam(UnitTest.class.getMethod("SingleMemberLongArrEmptyParam", Y)); ++ checkSingleMemberCharArrEmptyParam(UnitTest.class.getMethod("SingleMemberCharArrEmptyParam", Y)); ++ checkSingleMemberFloatArrEmptyParam(UnitTest.class.getMethod("SingleMemberFloatArrEmptyParam", Y)); ++ checkSingleMemberDoubleArrEmptyParam(UnitTest.class.getMethod("SingleMemberDoubleArrEmptyParam", Y)); ++ checkSingleMemberBooleanArrEmptyParam(UnitTest.class.getMethod("SingleMemberBooleanArrEmptyParam", Y)); ++ checkSingleMemberStringArrEmptyParam(UnitTest.class.getMethod("SingleMemberStringArrEmptyParam", Y)); ++ checkSingleMemberClassArrEmptyParam(UnitTest.class.getMethod("SingleMemberClassArrEmptyParam", Y)); ++ checkSingleMemberEnumArrEmptyParam(UnitTest.class.getMethod("SingleMemberEnumArrEmptyParam", Y)); ++ ++ // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("ONE-ELEMENT ARRAY) ON PARAMETER ++ checkSingleMemberByteArrOneParam(UnitTest.class.getMethod("SingleMemberByteArrOneParam", Y)); ++ checkSingleMemberShortArrOneParam(UnitTest.class.getMethod("SingleMemberShortArrOneParam", Y)); ++ checkSingleMemberIntArrOneParam(UnitTest.class.getMethod("SingleMemberIntArrOneParam", Y)); ++ checkSingleMemberLongArrOneParam(UnitTest.class.getMethod("SingleMemberLongArrOneParam", Y)); ++ checkSingleMemberCharArrOneParam(UnitTest.class.getMethod("SingleMemberCharArrOneParam", Y)); ++ checkSingleMemberFloatArrOneParam(UnitTest.class.getMethod("SingleMemberFloatArrOneParam", Y)); ++ checkSingleMemberDoubleArrOneParam(UnitTest.class.getMethod("SingleMemberDoubleArrOneParam", Y)); ++ checkSingleMemberBooleanArrOneParam(UnitTest.class.getMethod("SingleMemberBooleanArrOneParam", Y)); ++ checkSingleMemberStringArrOneParam(UnitTest.class.getMethod("SingleMemberStringArrOneParam", Y)); ++ checkSingleMemberClassArrOneParam(UnitTest.class.getMethod("SingleMemberClassArrOneParam", Y)); ++ checkSingleMemberEnumArrOneParam(UnitTest.class.getMethod("SingleMemberEnumArrOneParam", Y)); ++ ++ // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("TWO-ELEMENT ARRAY) ON PARAMETER ++ checkSingleMemberByteArrTwoParam(UnitTest.class.getMethod("SingleMemberByteArrTwoParam", Y)); ++ checkSingleMemberShortArrTwoParam(UnitTest.class.getMethod("SingleMemberShortArrTwoParam", Y)); ++ checkSingleMemberIntArrTwoParam(UnitTest.class.getMethod("SingleMemberIntArrTwoParam", Y)); ++ checkSingleMemberLongArrTwoParam(UnitTest.class.getMethod("SingleMemberLongArrTwoParam", Y)); ++ checkSingleMemberCharArrTwoParam(UnitTest.class.getMethod("SingleMemberCharArrTwoParam", Y)); ++ checkSingleMemberFloatArrTwoParam(UnitTest.class.getMethod("SingleMemberFloatArrTwoParam", Y)); ++ checkSingleMemberDoubleArrTwoParam(UnitTest.class.getMethod("SingleMemberDoubleArrTwoParam", Y)); ++ checkSingleMemberBooleanArrTwoParam(UnitTest.class.getMethod("SingleMemberBooleanArrTwoParam", Y)); ++ checkSingleMemberStringArrTwoParam(UnitTest.class.getMethod("SingleMemberStringArrTwoParam", Y)); ++ checkSingleMemberClassArrTwoParam(UnitTest.class.getMethod("SingleMemberClassArrTwoParam", Y)); ++ checkSingleMemberEnumArrTwoParam(UnitTest.class.getMethod("SingleMemberEnumArrTwoParam", Y)); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT Param(UnitTest.class.getMethod("OVERRIDE)ON PARAMETER ++ checkSingleMemberByteArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberByteArrOvrdDefParam", Y)); ++ checkSingleMemberShortArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberShortArrOvrdDefParam", Y)); ++ checkSingleMemberIntArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberIntArrOvrdDefParam", Y)); ++ checkSingleMemberLongArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberLongArrOvrdDefParam", Y)); ++ checkSingleMemberCharArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberCharArrOvrdDefParam", Y)); ++ checkSingleMemberFloatArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberFloatArrOvrdDefParam", Y)); ++ checkSingleMemberDoubleArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberDoubleArrOvrdDefParam", Y)); ++ checkSingleMemberBooleanArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberBooleanArrOvrdDefParam", Y)); ++ checkSingleMemberStringArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberStringArrOvrdDefParam", Y)); ++ checkSingleMemberClassArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberClassArrOvrdDefParam", Y)); ++ checkSingleMemberEnumArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberEnumArrOvrdDefParam", Y)); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT Param(UnitTest.class.getMethod("ACCEPT)ON PARAMETER ++ checkSingleMemberByteArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberByteArrAcceptDefParam", Y)); ++ checkSingleMemberShortArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberShortArrAcceptDefParam", Y)); ++ checkSingleMemberIntArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberIntArrAcceptDefParam", Y)); ++ checkSingleMemberLongArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberLongArrAcceptDefParam", Y)); ++ checkSingleMemberCharArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberCharArrAcceptDefParam", Y)); ++ checkSingleMemberFloatArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberFloatArrAcceptDefParam", Y)); ++ checkSingleMemberDoubleArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberDoubleArrAcceptDefParam", Y)); ++ checkSingleMemberBooleanArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberBooleanArrAcceptDefParam", Y)); ++ checkSingleMemberStringArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberStringArrAcceptDefParam", Y)); ++ checkSingleMemberClassArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberClassArrAcceptDefParam", Y)); ++ checkSingleMemberEnumArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberEnumArrAcceptDefParam", Y)); ++ ++ // *** TESTS ON ANNOTATED CLASSES *** ++ ++ // MULTIMEMBER SCALAR TYPES ON CLASS ++ checkScalarTypes(scalarTypesClass.class); ++ checkScalarTypesOverrideDefault(scalarTypesOverrideDefaultClass.class); ++ checkScalarTypesAcceptDefault(scalarTypesAcceptDefaultClass.class); ++ ++ // MULTIMEMBER ARRAY TYPES ON CLASS ++ checkArrayTypes0(emptyArrayTypesClass.class); ++ checkArrayTypes1(singleElementArrayTypesClass.class); ++ checkArrayTypes2(twoElementArrayTypesClass.class); ++ checkArrayTypesOverrideDefault(arrayTypesOverrideDefaultClass.class); ++ checkArrayTypesAcceptDefault(arrayTypesAcceptDefaultClass.class); ++ ++ // MARKER TYPE ON CLASS ++ checkMarker(markerClass.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES ON CLASS ++ checkSingleMemberByte(SingleMemberByteClass.class); ++ checkSingleMemberShort(SingleMemberShortClass.class); ++ checkSingleMemberInt(SingleMemberIntClass.class); ++ checkSingleMemberLong(SingleMemberLongClass.class); ++ checkSingleMemberChar(SingleMemberCharClass.class); ++ checkSingleMemberFloat(SingleMemberFloatClass.class); ++ checkSingleMemberDouble(SingleMemberDoubleClass.class); ++ checkSingleMemberBoolean(SingleMemberBooleanClass.class); ++ checkSingleMemberString(SingleMemberStringClass.class); ++ checkSingleMemberClass(SingleMemberClassClass.class); ++ checkSingleMemberEnum(SingleMemberEnumClass.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CLASS ++ checkSingleMemberByteOvrdDef(SingleMemberByteOvrdDefClass.class); ++ checkSingleMemberShortOvrdDef(SingleMemberShortOvrdDefClass.class); ++ checkSingleMemberIntOvrdDef(SingleMemberIntOvrdDefClass.class); ++ checkSingleMemberLongOvrdDef(SingleMemberLongOvrdDefClass.class); ++ checkSingleMemberCharOvrdDef(SingleMemberCharOvrdDefClass.class); ++ checkSingleMemberFloatOvrdDef(SingleMemberFloatOvrdDefClass.class); ++ checkSingleMemberDoubleOvrdDef(SingleMemberDoubleOvrdDefClass.class); ++ checkSingleMemberBooleanOvrdDef(SingleMemberBooleanOvrdDefClass.class); ++ checkSingleMemberStringOvrdDef(SingleMemberStringOvrdDefClass.class); ++ checkSingleMemberClassOvrdDef(SingleMemberClassOvrdDefClass.class); ++ checkSingleMemberEnumOvrdDef(SingleMemberEnumOvrdDefClass.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CLASS ++ checkSingleMemberByteAcceptDef(SingleMemberByteAcceptDefClass.class); ++ checkSingleMemberShortAcceptDef(SingleMemberShortAcceptDefClass.class); ++ checkSingleMemberIntAcceptDef(SingleMemberIntAcceptDefClass.class); ++ checkSingleMemberLongAcceptDef(SingleMemberLongAcceptDefClass.class); ++ checkSingleMemberCharAcceptDef(SingleMemberCharAcceptDefClass.class); ++ checkSingleMemberFloatAcceptDef(SingleMemberFloatAcceptDefClass.class); ++ checkSingleMemberDoubleAcceptDef(SingleMemberDoubleAcceptDefClass.class); ++ checkSingleMemberBooleanAcceptDef(SingleMemberBooleanAcceptDefClass.class); ++ checkSingleMemberStringAcceptDef(SingleMemberStringAcceptDefClass.class); ++ checkSingleMemberClassAcceptDef(SingleMemberClassAcceptDefClass.class); ++ checkSingleMemberEnumAcceptDef(SingleMemberEnumAcceptDefClass.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON CLASS ++ checkSingleMemberByteArrEmpty(SingleMemberByteArrEmptyClass.class); ++ checkSingleMemberShortArrEmpty(SingleMemberShortArrEmptyClass.class); ++ checkSingleMemberIntArrEmpty(SingleMemberIntArrEmptyClass.class); ++ checkSingleMemberLongArrEmpty(SingleMemberLongArrEmptyClass.class); ++ checkSingleMemberCharArrEmpty(SingleMemberCharArrEmptyClass.class); ++ checkSingleMemberFloatArrEmpty(SingleMemberFloatArrEmptyClass.class); ++ checkSingleMemberDoubleArrEmpty(SingleMemberDoubleArrEmptyClass.class); ++ checkSingleMemberBooleanArrEmpty(SingleMemberBooleanArrEmptyClass.class); ++ checkSingleMemberStringArrEmpty(SingleMemberStringArrEmptyClass.class); ++ checkSingleMemberClassArrEmpty(SingleMemberClassArrEmptyClass.class); ++ checkSingleMemberEnumArrEmpty(SingleMemberEnumArrEmptyClass.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON CLASS ++ checkSingleMemberByteArrOne(SingleMemberByteArrOneClass.class); ++ checkSingleMemberShortArrOne(SingleMemberShortArrOneClass.class); ++ checkSingleMemberIntArrOne(SingleMemberIntArrOneClass.class); ++ checkSingleMemberLongArrOne(SingleMemberLongArrOneClass.class); ++ checkSingleMemberCharArrOne(SingleMemberCharArrOneClass.class); ++ checkSingleMemberFloatArrOne(SingleMemberFloatArrOneClass.class); ++ checkSingleMemberDoubleArrOne(SingleMemberDoubleArrOneClass.class); ++ checkSingleMemberBooleanArrOne(SingleMemberBooleanArrOneClass.class); ++ checkSingleMemberStringArrOne(SingleMemberStringArrOneClass.class); ++ checkSingleMemberClassArrOne(SingleMemberClassArrOneClass.class); ++ checkSingleMemberEnumArrOne(SingleMemberEnumArrOneClass.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON CLASS ++ checkSingleMemberByteArrTwo(SingleMemberByteArrTwoClass.class); ++ checkSingleMemberShortArrTwo(SingleMemberShortArrTwoClass.class); ++ checkSingleMemberIntArrTwo(SingleMemberIntArrTwoClass.class); ++ checkSingleMemberLongArrTwo(SingleMemberLongArrTwoClass.class); ++ checkSingleMemberCharArrTwo(SingleMemberCharArrTwoClass.class); ++ checkSingleMemberFloatArrTwo(SingleMemberFloatArrTwoClass.class); ++ checkSingleMemberDoubleArrTwo(SingleMemberDoubleArrTwoClass.class); ++ checkSingleMemberBooleanArrTwo(SingleMemberBooleanArrTwoClass.class); ++ checkSingleMemberStringArrTwo(SingleMemberStringArrTwoClass.class); ++ checkSingleMemberClassArrTwo(SingleMemberClassArrTwoClass.class); ++ checkSingleMemberEnumArrTwo(SingleMemberEnumArrTwoClass.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON CLASS ++ checkSingleMemberByteArrOvrdDef(SingleMemberByteArrOvrdDefClass.class); ++ checkSingleMemberShortArrOvrdDef(SingleMemberShortArrOvrdDefClass.class); ++ checkSingleMemberIntArrOvrdDef(SingleMemberIntArrOvrdDefClass.class); ++ checkSingleMemberLongArrOvrdDef(SingleMemberLongArrOvrdDefClass.class); ++ checkSingleMemberCharArrOvrdDef(SingleMemberCharArrOvrdDefClass.class); ++ checkSingleMemberFloatArrOvrdDef(SingleMemberFloatArrOvrdDefClass.class); ++ checkSingleMemberDoubleArrOvrdDef(SingleMemberDoubleArrOvrdDefClass.class); ++ checkSingleMemberBooleanArrOvrdDef(SingleMemberBooleanArrOvrdDefClass.class); ++ checkSingleMemberStringArrOvrdDef(SingleMemberStringArrOvrdDefClass.class); ++ checkSingleMemberClassArrOvrdDef(SingleMemberClassArrOvrdDefClass.class); ++ checkSingleMemberEnumArrOvrdDef(SingleMemberEnumArrOvrdDefClass.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON CLASS ++ checkSingleMemberByteArrAcceptDef(SingleMemberByteArrAcceptDefClass.class); ++ checkSingleMemberShortArrAcceptDef(SingleMemberShortArrAcceptDefClass.class); ++ checkSingleMemberIntArrAcceptDef(SingleMemberIntArrAcceptDefClass.class); ++ checkSingleMemberLongArrAcceptDef(SingleMemberLongArrAcceptDefClass.class); ++ checkSingleMemberCharArrAcceptDef(SingleMemberCharArrAcceptDefClass.class); ++ checkSingleMemberFloatArrAcceptDef(SingleMemberFloatArrAcceptDefClass.class); ++ checkSingleMemberDoubleArrAcceptDef(SingleMemberDoubleArrAcceptDefClass.class); ++ checkSingleMemberBooleanArrAcceptDef(SingleMemberBooleanArrAcceptDefClass.class); ++ checkSingleMemberStringArrAcceptDef(SingleMemberStringArrAcceptDefClass.class); ++ checkSingleMemberClassArrAcceptDef(SingleMemberClassArrAcceptDefClass.class); ++ checkSingleMemberEnumArrAcceptDef(SingleMemberEnumArrAcceptDefClass.class); ++ ++ // *** TESTS FOR EQUALS AND HASHCODE - POSITIVE ++ ++ // MULTIMEMBER SCALAR TYPES ++ checkEquals(scalarTypesClass.class, UnitTest.class.getField("scalarTypesField"), ++ ScalarTypes.class); ++ checkEquals(scalarTypesOverrideDefaultClass.class, UnitTest.class.getField("scalarTypesOverrideDefaultField"), ++ ScalarTypesWithDefault.class); ++ checkEquals(scalarTypesAcceptDefaultClass.class, UnitTest.class.getField("scalarTypesAcceptDefaultField"), ++ ScalarTypesWithDefault.class); ++ ++ // MULTIMEMBER ARRAY TYPES ++ checkEquals(emptyArrayTypesClass.class, UnitTest.class.getField("emptyArrayTypesField"), ++ ArrayTypes.class); ++ checkEquals(singleElementArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"), ++ ArrayTypes.class); ++ checkEquals(twoElementArrayTypesClass.class, UnitTest.class.getField("twoElementArrayTypesField"), ++ ArrayTypes.class); ++ checkEquals(arrayTypesOverrideDefaultClass.class, UnitTest.class.getField("arrayTypesOverrideDefaultField"), ++ ArrayTypesWithDefault.class); ++ checkEquals(arrayTypesAcceptDefaultClass.class, UnitTest.class.getField("arrayTypesAcceptDefaultField"), ++ ArrayTypesWithDefault.class); ++ ++ // MARKER TYPE ++ checkEquals(markerClass.class, UnitTest.class.getField("markerField"), ++ Marker.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES ++ checkEquals(SingleMemberByteClass.class, UnitTest.class.getField("SingleMemberByteField"), ++ SingleMemberByte.class); ++ checkEquals(SingleMemberShortClass.class, UnitTest.class.getField("SingleMemberShortField"), ++ SingleMemberShort.class); ++ checkEquals(SingleMemberIntClass.class, UnitTest.class.getField("SingleMemberIntField"), ++ SingleMemberInt.class); ++ checkEquals(SingleMemberLongClass.class, UnitTest.class.getField("SingleMemberLongField"), ++ SingleMemberLong.class); ++ checkEquals(SingleMemberCharClass.class, UnitTest.class.getField("SingleMemberCharField"), ++ SingleMemberChar.class); ++ checkEquals(SingleMemberFloatClass.class, UnitTest.class.getField("SingleMemberFloatField"), ++ SingleMemberFloat.class); ++ checkEquals(SingleMemberDoubleClass.class, UnitTest.class.getField("SingleMemberDoubleField"), ++ SingleMemberDouble.class); ++ checkEquals(SingleMemberBooleanClass.class, UnitTest.class.getField("SingleMemberBooleanField"), ++ SingleMemberBoolean.class); ++ checkEquals(SingleMemberStringClass.class, UnitTest.class.getField("SingleMemberStringField"), ++ SingleMemberString.class); ++ checkEquals(SingleMemberClassClass.class, UnitTest.class.getField("SingleMemberClassField"), ++ SingleMemberClass.class); ++ checkEquals(SingleMemberEnumClass.class, UnitTest.class.getField("SingleMemberEnumField"), ++ SingleMemberEnum.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ++ checkEquals(SingleMemberByteOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteOvrdDefField"), ++ SingleMemberByteWithDef.class); ++ checkEquals(SingleMemberShortOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortOvrdDefField"), ++ SingleMemberShortWithDef.class); ++ checkEquals(SingleMemberIntOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntOvrdDefField"), ++ SingleMemberIntWithDef.class); ++ checkEquals(SingleMemberLongOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongOvrdDefField"), ++ SingleMemberLongWithDef.class); ++ checkEquals(SingleMemberCharOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharOvrdDefField"), ++ SingleMemberCharWithDef.class); ++ checkEquals(SingleMemberFloatOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatOvrdDefField"), ++ SingleMemberFloatWithDef.class); ++ checkEquals(SingleMemberDoubleOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleOvrdDefField"), ++ SingleMemberDoubleWithDef.class); ++ checkEquals(SingleMemberBooleanOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanOvrdDefField"), ++ SingleMemberBooleanWithDef.class); ++ checkEquals(SingleMemberStringOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringOvrdDefField"), ++ SingleMemberStringWithDef.class); ++ checkEquals(SingleMemberClassOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassOvrdDefField"), ++ SingleMemberClassWithDef.class); ++ checkEquals(SingleMemberEnumOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumOvrdDefField"), ++ SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ++ checkEquals(SingleMemberByteAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteAcceptDefField"), ++ SingleMemberByteWithDef.class); ++ checkEquals(SingleMemberShortAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortAcceptDefField"), ++ SingleMemberShortWithDef.class); ++ checkEquals(SingleMemberIntAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntAcceptDefField"), ++ SingleMemberIntWithDef.class); ++ checkEquals(SingleMemberLongAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongAcceptDefField"), ++ SingleMemberLongWithDef.class); ++ checkEquals(SingleMemberCharAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharAcceptDefField"), ++ SingleMemberCharWithDef.class); ++ checkEquals(SingleMemberFloatAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatAcceptDefField"), ++ SingleMemberFloatWithDef.class); ++ checkEquals(SingleMemberDoubleAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleAcceptDefField"), ++ SingleMemberDoubleWithDef.class); ++ checkEquals(SingleMemberBooleanAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanAcceptDefField"), ++ SingleMemberBooleanWithDef.class); ++ checkEquals(SingleMemberStringAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringAcceptDefField"), ++ SingleMemberStringWithDef.class); ++ checkEquals(SingleMemberClassAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassAcceptDefField"), ++ SingleMemberClassWithDef.class); ++ checkEquals(SingleMemberEnumAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumAcceptDefField"), ++ SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ++ checkEquals(SingleMemberByteArrEmptyClass.class, UnitTest.class.getField("SingleMemberByteArrEmptyField"), ++ SingleMemberByteArray.class); ++ checkEquals(SingleMemberShortArrEmptyClass.class, UnitTest.class.getField("SingleMemberShortArrEmptyField"), ++ SingleMemberShortArray.class); ++ checkEquals(SingleMemberIntArrEmptyClass.class, UnitTest.class.getField("SingleMemberIntArrEmptyField"), ++ SingleMemberIntArray.class); ++ checkEquals(SingleMemberLongArrEmptyClass.class, UnitTest.class.getField("SingleMemberLongArrEmptyField"), ++ SingleMemberLongArray.class); ++ checkEquals(SingleMemberCharArrEmptyClass.class, UnitTest.class.getField("SingleMemberCharArrEmptyField"), ++ SingleMemberCharArray.class); ++ checkEquals(SingleMemberFloatArrEmptyClass.class, UnitTest.class.getField("SingleMemberFloatArrEmptyField"), ++ SingleMemberFloatArray.class); ++ checkEquals(SingleMemberDoubleArrEmptyClass.class, UnitTest.class.getField("SingleMemberDoubleArrEmptyField"), ++ SingleMemberDoubleArray.class); ++ checkEquals(SingleMemberBooleanArrEmptyClass.class, UnitTest.class.getField("SingleMemberBooleanArrEmptyField"), ++ SingleMemberBooleanArray.class); ++ checkEquals(SingleMemberStringArrEmptyClass.class, UnitTest.class.getField("SingleMemberStringArrEmptyField"), ++ SingleMemberStringArray.class); ++ checkEquals(SingleMemberClassArrEmptyClass.class, UnitTest.class.getField("SingleMemberClassArrEmptyField"), ++ SingleMemberClassArray.class); ++ checkEquals(SingleMemberEnumArrEmptyClass.class, UnitTest.class.getField("SingleMemberEnumArrEmptyField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ++ checkEquals(SingleMemberByteArrOneClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"), ++ SingleMemberByteArray.class); ++ checkEquals(SingleMemberShortArrOneClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"), ++ SingleMemberShortArray.class); ++ checkEquals(SingleMemberIntArrOneClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"), ++ SingleMemberIntArray.class); ++ checkEquals(SingleMemberLongArrOneClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"), ++ SingleMemberLongArray.class); ++ checkEquals(SingleMemberCharArrOneClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"), ++ SingleMemberCharArray.class); ++ checkEquals(SingleMemberFloatArrOneClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"), ++ SingleMemberFloatArray.class); ++ checkEquals(SingleMemberDoubleArrOneClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"), ++ SingleMemberDoubleArray.class); ++ checkEquals(SingleMemberBooleanArrOneClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"), ++ SingleMemberBooleanArray.class); ++ checkEquals(SingleMemberStringArrOneClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"), ++ SingleMemberStringArray.class); ++ checkEquals(SingleMemberClassArrOneClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"), ++ SingleMemberClassArray.class); ++ checkEquals(SingleMemberEnumArrOneClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ++ checkEquals(SingleMemberByteArrTwoClass.class, UnitTest.class.getField("SingleMemberByteArrTwoField"), ++ SingleMemberByteArray.class); ++ checkEquals(SingleMemberShortArrTwoClass.class, UnitTest.class.getField("SingleMemberShortArrTwoField"), ++ SingleMemberShortArray.class); ++ checkEquals(SingleMemberIntArrTwoClass.class, UnitTest.class.getField("SingleMemberIntArrTwoField"), ++ SingleMemberIntArray.class); ++ checkEquals(SingleMemberLongArrTwoClass.class, UnitTest.class.getField("SingleMemberLongArrTwoField"), ++ SingleMemberLongArray.class); ++ checkEquals(SingleMemberCharArrTwoClass.class, UnitTest.class.getField("SingleMemberCharArrTwoField"), ++ SingleMemberCharArray.class); ++ checkEquals(SingleMemberFloatArrTwoClass.class, UnitTest.class.getField("SingleMemberFloatArrTwoField"), ++ SingleMemberFloatArray.class); ++ checkEquals(SingleMemberDoubleArrTwoClass.class, UnitTest.class.getField("SingleMemberDoubleArrTwoField"), ++ SingleMemberDoubleArray.class); ++ checkEquals(SingleMemberBooleanArrTwoClass.class, UnitTest.class.getField("SingleMemberBooleanArrTwoField"), ++ SingleMemberBooleanArray.class); ++ checkEquals(SingleMemberStringArrTwoClass.class, UnitTest.class.getField("SingleMemberStringArrTwoField"), ++ SingleMemberStringArray.class); ++ checkEquals(SingleMemberClassArrTwoClass.class, UnitTest.class.getField("SingleMemberClassArrTwoField"), ++ SingleMemberClassArray.class); ++ checkEquals(SingleMemberEnumArrTwoClass.class, UnitTest.class.getField("SingleMemberEnumArrTwoField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE) ++ checkEquals(SingleMemberByteArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteArrOvrdDefField"), ++ SingleMemberByteArrayDef.class); ++ checkEquals(SingleMemberShortArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortArrOvrdDefField"), ++ SingleMemberShortArrayDef.class); ++ checkEquals(SingleMemberIntArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntArrOvrdDefField"), ++ SingleMemberIntArrayDef.class); ++ checkEquals(SingleMemberLongArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongArrOvrdDefField"), ++ SingleMemberLongArrayDef.class); ++ checkEquals(SingleMemberCharArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharArrOvrdDefField"), ++ SingleMemberCharArrayDef.class); ++ checkEquals(SingleMemberFloatArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatArrOvrdDefField"), ++ SingleMemberFloatArrayDef.class); ++ checkEquals(SingleMemberDoubleArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField"), ++ SingleMemberDoubleArrayDef.class); ++ checkEquals(SingleMemberBooleanArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField"), ++ SingleMemberBooleanArrayDef.class); ++ checkEquals(SingleMemberStringArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringArrOvrdDefField"), ++ SingleMemberStringArrayDef.class); ++ checkEquals(SingleMemberClassArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassArrOvrdDefField"), ++ SingleMemberClassArrayDef.class); ++ checkEquals(SingleMemberEnumArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumArrOvrdDefField"), ++ SingleMemberEnumArrayDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT) ++ checkEquals(SingleMemberByteArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteArrAcceptDefField"), ++ SingleMemberByteArrayDef.class); ++ checkEquals(SingleMemberShortArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortArrAcceptDefField"), ++ SingleMemberShortArrayDef.class); ++ checkEquals(SingleMemberIntArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntArrAcceptDefField"), ++ SingleMemberIntArrayDef.class); ++ checkEquals(SingleMemberLongArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongArrAcceptDefField"), ++ SingleMemberLongArrayDef.class); ++ checkEquals(SingleMemberCharArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharArrAcceptDefField"), ++ SingleMemberCharArrayDef.class); ++ checkEquals(SingleMemberFloatArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatArrAcceptDefField"), ++ SingleMemberFloatArrayDef.class); ++ checkEquals(SingleMemberDoubleArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField"), ++ SingleMemberDoubleArrayDef.class); ++ checkEquals(SingleMemberBooleanArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField"), ++ SingleMemberBooleanArrayDef.class); ++ checkEquals(SingleMemberStringArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringArrAcceptDefField"), ++ SingleMemberStringArrayDef.class); ++ checkEquals(SingleMemberClassArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassArrAcceptDefField"), ++ SingleMemberClassArrayDef.class); ++ checkEquals(SingleMemberEnumArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumArrAcceptDefField"), ++ SingleMemberEnumArrayDef.class); ++ ++ // *** TESTS FOR EQUALS AND HASHCODE - NEGATIVE ++ ++ // MULTIMEMBER SCALAR TYPES ++ checkUnequals(scalarTypesOverrideDefaultClass.class, UnitTest.class.getField("scalarTypesAcceptDefaultField"), ++ ScalarTypesWithDefault.class); ++ checkUnequals(scalarTypesAcceptDefaultClass.class, UnitTest.class.getField("scalarTypesOverrideDefaultField"), ++ ScalarTypesWithDefault.class); ++ ++ // MULTIMEMBER ARRAY TYPES ++ checkUnequals(emptyArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"), ++ ArrayTypes.class); ++ checkUnequals(singleElementArrayTypesClass.class, UnitTest.class.getField("twoElementArrayTypesField"), ++ ArrayTypes.class); ++ checkUnequals(twoElementArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"), ++ ArrayTypes.class); ++ checkUnequals(arrayTypesOverrideDefaultClass.class, UnitTest.class.getField("arrayTypesAcceptDefaultField"), ++ ArrayTypesWithDefault.class); ++ checkUnequals(arrayTypesAcceptDefaultClass.class, UnitTest.class.getField("arrayTypesOverrideDefaultField"), ++ ArrayTypesWithDefault.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ++ checkUnequals(SingleMemberByteOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteAcceptDefField"), ++ SingleMemberByteWithDef.class); ++ checkUnequals(SingleMemberShortOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortAcceptDefField"), ++ SingleMemberShortWithDef.class); ++ checkUnequals(SingleMemberIntOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntAcceptDefField"), ++ SingleMemberIntWithDef.class); ++ checkUnequals(SingleMemberLongOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongAcceptDefField"), ++ SingleMemberLongWithDef.class); ++ checkUnequals(SingleMemberCharOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharAcceptDefField"), ++ SingleMemberCharWithDef.class); ++ checkUnequals(SingleMemberFloatOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatAcceptDefField"), ++ SingleMemberFloatWithDef.class); ++ checkUnequals(SingleMemberDoubleOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleAcceptDefField"), ++ SingleMemberDoubleWithDef.class); ++ checkUnequals(SingleMemberBooleanOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanAcceptDefField"), ++ SingleMemberBooleanWithDef.class); ++ checkUnequals(SingleMemberStringOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringAcceptDefField"), ++ SingleMemberStringWithDef.class); ++ checkUnequals(SingleMemberClassOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassAcceptDefField"), ++ SingleMemberClassWithDef.class); ++ checkUnequals(SingleMemberEnumOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumAcceptDefField"), ++ SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ++ checkUnequals(SingleMemberByteAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteOvrdDefField"), ++ SingleMemberByteWithDef.class); ++ checkUnequals(SingleMemberShortAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortOvrdDefField"), ++ SingleMemberShortWithDef.class); ++ checkUnequals(SingleMemberIntAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntOvrdDefField"), ++ SingleMemberIntWithDef.class); ++ checkUnequals(SingleMemberLongAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongOvrdDefField"), ++ SingleMemberLongWithDef.class); ++ checkUnequals(SingleMemberCharAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharOvrdDefField"), ++ SingleMemberCharWithDef.class); ++ checkUnequals(SingleMemberFloatAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatOvrdDefField"), ++ SingleMemberFloatWithDef.class); ++ checkUnequals(SingleMemberDoubleAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleOvrdDefField"), ++ SingleMemberDoubleWithDef.class); ++ checkUnequals(SingleMemberBooleanAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanOvrdDefField"), ++ SingleMemberBooleanWithDef.class); ++ checkUnequals(SingleMemberStringAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringOvrdDefField"), ++ SingleMemberStringWithDef.class); ++ checkUnequals(SingleMemberClassAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassOvrdDefField"), ++ SingleMemberClassWithDef.class); ++ checkUnequals(SingleMemberEnumAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumOvrdDefField"), ++ SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ++ checkUnequals(SingleMemberByteArrEmptyClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"), ++ SingleMemberByteArray.class); ++ checkUnequals(SingleMemberShortArrEmptyClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"), ++ SingleMemberShortArray.class); ++ checkUnequals(SingleMemberIntArrEmptyClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"), ++ SingleMemberIntArray.class); ++ checkUnequals(SingleMemberLongArrEmptyClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"), ++ SingleMemberLongArray.class); ++ checkUnequals(SingleMemberCharArrEmptyClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"), ++ SingleMemberCharArray.class); ++ checkUnequals(SingleMemberFloatArrEmptyClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"), ++ SingleMemberFloatArray.class); ++ checkUnequals(SingleMemberDoubleArrEmptyClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"), ++ SingleMemberDoubleArray.class); ++ checkUnequals(SingleMemberBooleanArrEmptyClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"), ++ SingleMemberBooleanArray.class); ++ checkUnequals(SingleMemberStringArrEmptyClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"), ++ SingleMemberStringArray.class); ++ checkUnequals(SingleMemberClassArrEmptyClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"), ++ SingleMemberClassArray.class); ++ checkUnequals(SingleMemberEnumArrEmptyClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ++ checkUnequals(SingleMemberByteArrOneClass.class, UnitTest.class.getField("SingleMemberByteArrTwoField"), ++ SingleMemberByteArray.class); ++ checkUnequals(SingleMemberShortArrOneClass.class, UnitTest.class.getField("SingleMemberShortArrTwoField"), ++ SingleMemberShortArray.class); ++ checkUnequals(SingleMemberIntArrOneClass.class, UnitTest.class.getField("SingleMemberIntArrTwoField"), ++ SingleMemberIntArray.class); ++ checkUnequals(SingleMemberLongArrOneClass.class, UnitTest.class.getField("SingleMemberLongArrTwoField"), ++ SingleMemberLongArray.class); ++ checkUnequals(SingleMemberCharArrOneClass.class, UnitTest.class.getField("SingleMemberCharArrTwoField"), ++ SingleMemberCharArray.class); ++ checkUnequals(SingleMemberFloatArrOneClass.class, UnitTest.class.getField("SingleMemberFloatArrTwoField"), ++ SingleMemberFloatArray.class); ++ checkUnequals(SingleMemberDoubleArrOneClass.class, UnitTest.class.getField("SingleMemberDoubleArrTwoField"), ++ SingleMemberDoubleArray.class); ++ checkUnequals(SingleMemberBooleanArrOneClass.class, UnitTest.class.getField("SingleMemberBooleanArrTwoField"), ++ SingleMemberBooleanArray.class); ++ checkUnequals(SingleMemberStringArrOneClass.class, UnitTest.class.getField("SingleMemberStringArrTwoField"), ++ SingleMemberStringArray.class); ++ checkUnequals(SingleMemberClassArrOneClass.class, UnitTest.class.getField("SingleMemberClassArrTwoField"), ++ SingleMemberClassArray.class); ++ checkUnequals(SingleMemberEnumArrOneClass.class, UnitTest.class.getField("SingleMemberEnumArrTwoField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ++ checkUnequals(SingleMemberByteArrTwoClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"), ++ SingleMemberByteArray.class); ++ checkUnequals(SingleMemberShortArrTwoClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"), ++ SingleMemberShortArray.class); ++ checkUnequals(SingleMemberIntArrTwoClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"), ++ SingleMemberIntArray.class); ++ checkUnequals(SingleMemberLongArrTwoClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"), ++ SingleMemberLongArray.class); ++ checkUnequals(SingleMemberCharArrTwoClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"), ++ SingleMemberCharArray.class); ++ checkUnequals(SingleMemberFloatArrTwoClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"), ++ SingleMemberFloatArray.class); ++ checkUnequals(SingleMemberDoubleArrTwoClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"), ++ SingleMemberDoubleArray.class); ++ checkUnequals(SingleMemberBooleanArrTwoClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"), ++ SingleMemberBooleanArray.class); ++ checkUnequals(SingleMemberStringArrTwoClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"), ++ SingleMemberStringArray.class); ++ checkUnequals(SingleMemberClassArrTwoClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"), ++ SingleMemberClassArray.class); ++ checkUnequals(SingleMemberEnumArrTwoClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"), ++ SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE) ++ checkUnequals(SingleMemberByteArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteArrAcceptDefField"), ++ SingleMemberByteArrayDef.class); ++ checkUnequals(SingleMemberShortArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortArrAcceptDefField"), ++ SingleMemberShortArrayDef.class); ++ checkUnequals(SingleMemberIntArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntArrAcceptDefField"), ++ SingleMemberIntArrayDef.class); ++ checkUnequals(SingleMemberLongArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongArrAcceptDefField"), ++ SingleMemberLongArrayDef.class); ++ checkUnequals(SingleMemberCharArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharArrAcceptDefField"), ++ SingleMemberCharArrayDef.class); ++ checkUnequals(SingleMemberFloatArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatArrAcceptDefField"), ++ SingleMemberFloatArrayDef.class); ++ checkUnequals(SingleMemberDoubleArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField"), ++ SingleMemberDoubleArrayDef.class); ++ checkUnequals(SingleMemberBooleanArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField"), ++ SingleMemberBooleanArrayDef.class); ++ checkUnequals(SingleMemberStringArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringArrAcceptDefField"), ++ SingleMemberStringArrayDef.class); ++ checkUnequals(SingleMemberClassArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassArrAcceptDefField"), ++ SingleMemberClassArrayDef.class); ++ checkUnequals(SingleMemberEnumArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumArrAcceptDefField"), ++ SingleMemberEnumArrayDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT) ++ checkUnequals(SingleMemberByteArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteArrOvrdDefField"), ++ SingleMemberByteArrayDef.class); ++ checkUnequals(SingleMemberShortArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortArrOvrdDefField"), ++ SingleMemberShortArrayDef.class); ++ checkUnequals(SingleMemberIntArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntArrOvrdDefField"), ++ SingleMemberIntArrayDef.class); ++ checkUnequals(SingleMemberLongArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongArrOvrdDefField"), ++ SingleMemberLongArrayDef.class); ++ checkUnequals(SingleMemberCharArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharArrOvrdDefField"), ++ SingleMemberCharArrayDef.class); ++ checkUnequals(SingleMemberFloatArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatArrOvrdDefField"), ++ SingleMemberFloatArrayDef.class); ++ checkUnequals(SingleMemberDoubleArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField"), ++ SingleMemberDoubleArrayDef.class); ++ checkUnequals(SingleMemberBooleanArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField"), ++ SingleMemberBooleanArrayDef.class); ++ checkUnequals(SingleMemberStringArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringArrOvrdDefField"), ++ SingleMemberStringArrayDef.class); ++ checkUnequals(SingleMemberClassArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassArrOvrdDefField"), ++ SingleMemberClassArrayDef.class); ++ checkUnequals(SingleMemberEnumArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumArrOvrdDefField"), ++ SingleMemberEnumArrayDef.class); ++ ++ // *** TESTS FOR SERIALIZATION AND DESERIALIZATION ++ ++ // MULTIMEMBER SCALAR TYPES ++ checkSerialization(scalarTypesClass.class, ScalarTypes.class); ++ checkSerialization(scalarTypesOverrideDefaultClass.class, ScalarTypesWithDefault.class); ++ checkSerialization(scalarTypesAcceptDefaultClass.class, ScalarTypesWithDefault.class); ++ ++ // MULTIMEMBER ARRAY TYPES ++ checkSerialization(emptyArrayTypesClass.class, ArrayTypes.class); ++ checkSerialization(singleElementArrayTypesClass.class, ArrayTypes.class); ++ checkSerialization(twoElementArrayTypesClass.class, ArrayTypes.class); ++ checkSerialization(arrayTypesOverrideDefaultClass.class, ArrayTypesWithDefault.class); ++ checkSerialization(arrayTypesAcceptDefaultClass.class, ArrayTypesWithDefault.class); ++ ++ // MARKER TYPE ++ checkSerialization(markerClass.class, Marker.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES ++ checkSerialization(SingleMemberByteClass.class, SingleMemberByte.class); ++ checkSerialization(SingleMemberShortClass.class, SingleMemberShort.class); ++ checkSerialization(SingleMemberIntClass.class, SingleMemberInt.class); ++ checkSerialization(SingleMemberLongClass.class, SingleMemberLong.class); ++ checkSerialization(SingleMemberCharClass.class, SingleMemberChar.class); ++ checkSerialization(SingleMemberFloatClass.class, SingleMemberFloat.class); ++ checkSerialization(SingleMemberDoubleClass.class, SingleMemberDouble.class); ++ checkSerialization(SingleMemberBooleanClass.class, SingleMemberBoolean.class); ++ checkSerialization(SingleMemberStringClass.class, SingleMemberString.class); ++ checkSerialization(SingleMemberClassClass.class, SingleMemberClass.class); ++ checkSerialization(SingleMemberEnumClass.class, SingleMemberEnum.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ++ checkSerialization(SingleMemberByteOvrdDefClass.class, SingleMemberByteWithDef.class); ++ checkSerialization(SingleMemberShortOvrdDefClass.class, SingleMemberShortWithDef.class); ++ checkSerialization(SingleMemberIntOvrdDefClass.class, SingleMemberIntWithDef.class); ++ checkSerialization(SingleMemberLongOvrdDefClass.class, SingleMemberLongWithDef.class); ++ checkSerialization(SingleMemberCharOvrdDefClass.class, SingleMemberCharWithDef.class); ++ checkSerialization(SingleMemberFloatOvrdDefClass.class, SingleMemberFloatWithDef.class); ++ checkSerialization(SingleMemberDoubleOvrdDefClass.class, SingleMemberDoubleWithDef.class); ++ checkSerialization(SingleMemberBooleanOvrdDefClass.class, SingleMemberBooleanWithDef.class); ++ checkSerialization(SingleMemberStringOvrdDefClass.class, SingleMemberStringWithDef.class); ++ checkSerialization(SingleMemberClassOvrdDefClass.class, SingleMemberClassWithDef.class); ++ checkSerialization(SingleMemberEnumOvrdDefClass.class, SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ++ checkSerialization(SingleMemberByteAcceptDefClass.class, SingleMemberByteWithDef.class); ++ checkSerialization(SingleMemberShortAcceptDefClass.class, SingleMemberShortWithDef.class); ++ checkSerialization(SingleMemberIntAcceptDefClass.class, SingleMemberIntWithDef.class); ++ checkSerialization(SingleMemberLongAcceptDefClass.class, SingleMemberLongWithDef.class); ++ checkSerialization(SingleMemberCharAcceptDefClass.class, SingleMemberCharWithDef.class); ++ checkSerialization(SingleMemberFloatAcceptDefClass.class, SingleMemberFloatWithDef.class); ++ checkSerialization(SingleMemberDoubleAcceptDefClass.class, SingleMemberDoubleWithDef.class); ++ checkSerialization(SingleMemberBooleanAcceptDefClass.class, SingleMemberBooleanWithDef.class); ++ checkSerialization(SingleMemberStringAcceptDefClass.class, SingleMemberStringWithDef.class); ++ checkSerialization(SingleMemberClassAcceptDefClass.class, SingleMemberClassWithDef.class); ++ checkSerialization(SingleMemberEnumAcceptDefClass.class, SingleMemberEnumWithDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ++ checkSerialization(SingleMemberByteArrEmptyClass.class, SingleMemberByteArray.class); ++ checkSerialization(SingleMemberShortArrEmptyClass.class, SingleMemberShortArray.class); ++ checkSerialization(SingleMemberIntArrEmptyClass.class, SingleMemberIntArray.class); ++ checkSerialization(SingleMemberLongArrEmptyClass.class, SingleMemberLongArray.class); ++ checkSerialization(SingleMemberCharArrEmptyClass.class, SingleMemberCharArray.class); ++ checkSerialization(SingleMemberFloatArrEmptyClass.class, SingleMemberFloatArray.class); ++ checkSerialization(SingleMemberDoubleArrEmptyClass.class, SingleMemberDoubleArray.class); ++ checkSerialization(SingleMemberBooleanArrEmptyClass.class, SingleMemberBooleanArray.class); ++ checkSerialization(SingleMemberStringArrEmptyClass.class, SingleMemberStringArray.class); ++ checkSerialization(SingleMemberClassArrEmptyClass.class, SingleMemberClassArray.class); ++ checkSerialization(SingleMemberEnumArrEmptyClass.class, SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ++ checkSerialization(SingleMemberByteArrOneClass.class, SingleMemberByteArray.class); ++ checkSerialization(SingleMemberShortArrOneClass.class, SingleMemberShortArray.class); ++ checkSerialization(SingleMemberIntArrOneClass.class, SingleMemberIntArray.class); ++ checkSerialization(SingleMemberLongArrOneClass.class, SingleMemberLongArray.class); ++ checkSerialization(SingleMemberCharArrOneClass.class, SingleMemberCharArray.class); ++ checkSerialization(SingleMemberFloatArrOneClass.class, SingleMemberFloatArray.class); ++ checkSerialization(SingleMemberDoubleArrOneClass.class, SingleMemberDoubleArray.class); ++ checkSerialization(SingleMemberBooleanArrOneClass.class, SingleMemberBooleanArray.class); ++ checkSerialization(SingleMemberStringArrOneClass.class, SingleMemberStringArray.class); ++ checkSerialization(SingleMemberClassArrOneClass.class, SingleMemberClassArray.class); ++ checkSerialization(SingleMemberEnumArrOneClass.class, SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ++ checkSerialization(SingleMemberByteArrTwoClass.class, SingleMemberByteArray.class); ++ checkSerialization(SingleMemberShortArrTwoClass.class, SingleMemberShortArray.class); ++ checkSerialization(SingleMemberIntArrTwoClass.class, SingleMemberIntArray.class); ++ checkSerialization(SingleMemberLongArrTwoClass.class, SingleMemberLongArray.class); ++ checkSerialization(SingleMemberCharArrTwoClass.class, SingleMemberCharArray.class); ++ checkSerialization(SingleMemberFloatArrTwoClass.class, SingleMemberFloatArray.class); ++ checkSerialization(SingleMemberDoubleArrTwoClass.class, SingleMemberDoubleArray.class); ++ checkSerialization(SingleMemberBooleanArrTwoClass.class, SingleMemberBooleanArray.class); ++ checkSerialization(SingleMemberStringArrTwoClass.class, SingleMemberStringArray.class); ++ checkSerialization(SingleMemberClassArrTwoClass.class, SingleMemberClassArray.class); ++ checkSerialization(SingleMemberEnumArrTwoClass.class, SingleMemberEnumArray.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE) ++ checkSerialization(SingleMemberByteArrOvrdDefClass.class, SingleMemberByteArrayDef.class); ++ checkSerialization(SingleMemberShortArrOvrdDefClass.class, SingleMemberShortArrayDef.class); ++ checkSerialization(SingleMemberIntArrOvrdDefClass.class, SingleMemberIntArrayDef.class); ++ checkSerialization(SingleMemberLongArrOvrdDefClass.class, SingleMemberLongArrayDef.class); ++ checkSerialization(SingleMemberCharArrOvrdDefClass.class, SingleMemberCharArrayDef.class); ++ checkSerialization(SingleMemberFloatArrOvrdDefClass.class, SingleMemberFloatArrayDef.class); ++ checkSerialization(SingleMemberDoubleArrOvrdDefClass.class, SingleMemberDoubleArrayDef.class); ++ checkSerialization(SingleMemberBooleanArrOvrdDefClass.class, SingleMemberBooleanArrayDef.class); ++ checkSerialization(SingleMemberStringArrOvrdDefClass.class, SingleMemberStringArrayDef.class); ++ checkSerialization(SingleMemberClassArrOvrdDefClass.class, SingleMemberClassArrayDef.class); ++ checkSerialization(SingleMemberEnumArrOvrdDefClass.class, SingleMemberEnumArrayDef.class); ++ ++ // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT) ++ checkSerialization(SingleMemberByteArrAcceptDefClass.class, SingleMemberByteArrayDef.class); ++ checkSerialization(SingleMemberShortArrAcceptDefClass.class, SingleMemberShortArrayDef.class); ++ checkSerialization(SingleMemberIntArrAcceptDefClass.class, SingleMemberIntArrayDef.class); ++ checkSerialization(SingleMemberLongArrAcceptDefClass.class, SingleMemberLongArrayDef.class); ++ checkSerialization(SingleMemberCharArrAcceptDefClass.class, SingleMemberCharArrayDef.class); ++ checkSerialization(SingleMemberFloatArrAcceptDefClass.class, SingleMemberFloatArrayDef.class); ++ checkSerialization(SingleMemberDoubleArrAcceptDefClass.class, SingleMemberDoubleArrayDef.class); ++ checkSerialization(SingleMemberBooleanArrAcceptDefClass.class, SingleMemberBooleanArrayDef.class); ++ checkSerialization(SingleMemberStringArrAcceptDefClass.class, SingleMemberStringArrayDef.class); ++ checkSerialization(SingleMemberClassArrAcceptDefClass.class, SingleMemberClassArrayDef.class); ++ checkSerialization(SingleMemberEnumArrAcceptDefClass.class, SingleMemberEnumArrayDef.class); ++ ++ // *** TESTS FOR ANNOTATION INHERITANCE AND ENUMERATING DECLARED ANNOTATIONS ++ ++ // Inheritance tests ++ checkInheritence(Grandpa.class, true, true); ++ checkInheritence(Dad.class, true, false); ++ checkInheritence(Son.class, true, true); ++ ++ // Declared annotations tests ++ checkDeclaredAnnotations(Grandpa.class, true, true); ++ checkDeclaredAnnotations(Dad.class, false, false); ++ checkDeclaredAnnotations(Son.class, false, true); ++ ++ // Generate summary ++ System.out.println("\n" + numTests + " tests completed"); ++ if (failCount != 0) ++ throw new Exception("Failure count: " + failCount); ++ else ++ System.out.println("Success."); ++ } ++ ++ static int failCount = 0; ++ ++ private static void fail(String test) { ++ System.out.println("Failure: " + test); ++ failCount++; ++ } ++ ++ // ANNOTATION-VERIFICATION METHODS ++ ++ // Scalar multi-member ++ ++ static void checkScalarTypes(AnnotatedElement e) { ++ try { ++ checkScalarTypes(e.getAnnotation(ScalarTypes.class), e); ++ } catch(Throwable t) { ++ fail("ScalarTypes " + e + ": " + t); ++ t.printStackTrace(); ++ } ++ } ++ ++ static void checkScalarTypes(ScalarTypes st, AnnotatedElement e) throws Exception { ++ numTests++; ++ if (!(st.b() == 1 && ++ st.s() == 2 && ++ st.i() == 3 && ++ st.l() == 4L && ++ st.c() == '5' && ++ st.f() == 6.0f && ++ st.d() == 7.0 && ++ st.bool() == true && ++ st.str().equals("custom") && ++ st.cls() == Map.class && ++ st.e() == Stooge.MOE && ++ st.a().x() == 1 && st.a().y() == 2)) ++ fail("ScalarTypes" + e); ++ } ++ ++ static void checkScalarTypesOverrideDefault(AnnotatedElement e) { ++ try { ++ checkScalarTypesOverrideDefault(e.getAnnotation(ScalarTypesWithDefault.class), e); ++ } catch(Throwable t) { ++ fail("ScalarTypesOverrideDefaults" + e + ": " + t); ++ } ++ } ++ ++ static void checkScalarTypesOverrideDefault(ScalarTypesWithDefault st, AnnotatedElement e) { ++ numTests++; ++ if (!(st.b() == 1 && ++ st.s() == 2 && ++ st.i() == 3 && ++ st.l() == 4L && ++ st.c() == '5' && ++ st.f() == 6.0f && ++ st.d() == 7.0 && ++ st.bool() == true && ++ st.str().equals("custom") && ++ st.cls() == Map.class && ++ st.e() == Stooge.MOE)) ++ fail("ScalarTypesOverrideDefaults" + e); ++ } ++ ++ static void checkScalarTypesAcceptDefault(AnnotatedElement e) { ++ try { ++ checkScalarTypesAcceptDefault(e.getAnnotation(ScalarTypesWithDefault.class), e); ++ } catch(Throwable t) { ++ fail("ScalarTypesAcceptDefaults" + e + ": " + t); ++ } ++ } ++ ++ static void checkScalarTypesAcceptDefault(ScalarTypesWithDefault st, AnnotatedElement e) { ++ numTests++; ++ if (!(st.b() == 11 && ++ st.s() == 12 && ++ st.i() == 13 && ++ st.l() == 14L && ++ st.c() == 'V' && ++ st.f() == 16.0f && ++ st.d() == 17.0 && ++ st.bool() == false && ++ st.str().equals("default") && ++ st.cls() == Class.class && ++ st.e() == Stooge.LARRY && ++ st.a().x() == 11 && st.a().y() == 12)) ++ fail("ScalarTypesAcceptDefaults" + e); ++ } ++ ++ // Array multi-member ++ ++ static void checkArrayTypes0(AnnotatedElement e) { ++ try { ++ checkArrayTypes0(e.getAnnotation(ArrayTypes.class), e); ++ } catch(Throwable t) { ++ fail("ArrayTypes(Empty)" + e + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypes0(ArrayTypes at, AnnotatedElement e) { ++ numTests++; ++ if (!(at.b().length == 0 && ++ at.s().length == 0 && ++ at.i().length == 0 && ++ at.l().length == 0 && ++ at.c().length == 0 && ++ at.f().length == 0 && ++ at.d().length == 0 && ++ at.bool().length == 0 && ++ at.str().length == 0 && ++ at.cls().length == 0 && ++ at.e().length == 0 && ++ at.a().length == 0)) { ++ fail("ArrayTypes(Empty)" + e); ++ } ++ } ++ ++ static void checkArrayTypes1(AnnotatedElement e) { ++ try { ++ checkArrayTypes1(e.getAnnotation(ArrayTypes.class), e); ++ } catch(Throwable t) { ++ fail("ArrayTypes(One element)" + e + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypes1(ArrayTypes at, AnnotatedElement e) { ++ numTests++; ++ if (!(at.b()[0] == 1 && ++ at.s()[0] == 2 && ++ at.i()[0] == 3 && ++ at.l()[0] == 4L && ++ at.c()[0] == '5' && ++ at.f()[0] == 6.0f && ++ at.d()[0] == 7.0 && ++ at.bool()[0] == true && ++ at.str()[0].equals("custom") && ++ at.cls()[0] == Map.class && ++ at.e()[0] == Stooge.MOE && ++ at.a()[0].x() == 1 && at.a()[0].y() == 2 && ++ ++ at.b().length==1 && at.s().length==1 && at.i().length==1 && ++ at.l().length==1 && at.c().length==1 && at.d().length==1 && ++ at.bool().length==1 && at.str().length==1 && ++ at.cls().length==1 && at.cls().length==1 && at.a().length==1)) ++ fail("ArrayTypes(One element)" + e); ++ } ++ ++ static void checkArrayTypes2(AnnotatedElement e) { ++ try { ++ checkArrayTypes2(e.getAnnotation(ArrayTypes.class), e); ++ } catch(Throwable t) { ++ fail("ArrayTypes(Two element)" + e + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypes2(ArrayTypes at, AnnotatedElement e) { ++ numTests++; ++ if (!(at.b()[0] == 1 && at.b()[1] == 2 && ++ at.s()[0] == 2 && at.s()[1] == 3 && ++ at.i()[0] == 3 && at.i()[1] == 4 && ++ at.l()[0] == 4L && at.l()[1] == 5L && ++ at.c()[0] == '5' && at.c()[1] == '6' && ++ at.f()[0] == 6.0f && at.f()[1] == 7.0f && ++ at.d()[0] == 7.0 && at.d()[1] == 8.0 && ++ at.bool()[0] == true && at.bool()[1] == false && ++ at.str()[0].equals("custom") && at.str()[1].equals("paint") && ++ at.cls()[0] == Map.class && at.cls()[1] == Set.class && ++ at.e()[0] == Stooge.MOE && at.e()[1] == Stooge.CURLY && ++ at.a()[0].x() == 1 && at.a()[0].y() == 2 && at.a()[1].x() == 3 && at.a()[1].y() == 4 && ++ ++ at.b().length==2 && at.s().length==2 && at.i().length==2 && ++ at.l().length==2 && at.c().length==2 && at.d().length==2 && ++ at.bool().length==2 && at.str().length==2 && ++ at.cls().length==2 && at.cls().length==2 && at.a().length==2)) ++ fail("ArrayTypes(Two element)" + e); ++ } ++ ++ static void checkArrayTypesOverrideDefault(AnnotatedElement e) { ++ try { ++ checkArrayTypesOverrideDefault(e.getAnnotation(ArrayTypesWithDefault.class), e); ++ } catch(Throwable t) { ++ fail("ArrayTypesOverrideDefault" + e + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypesOverrideDefault(ArrayTypesWithDefault at, AnnotatedElement e) { ++ numTests++; ++ if (!(at.b()[0] == 1 && ++ at.s()[0] == 2 && ++ at.i()[0] == 3 && ++ at.l()[0] == 4L && ++ at.c()[0] == '5' && ++ at.f()[0] == 6.0f && ++ at.d()[0] == 7.0 && ++ at.bool()[0] == true && ++ at.str()[0].equals("custom") && ++ at.cls()[0] == Map.class && ++ at.e()[0] == Stooge.MOE && ++ at.a()[0].x() == 1 && at.a()[0].y() == 2 && ++ ++ at.b().length==1 && at.s().length==1 && at.i().length==1 && ++ at.l().length==1 && at.c().length==1 && at.d().length==1 && ++ at.bool().length==1 && at.str().length==1 && ++ at.cls().length==1 && at.cls().length==1)) ++ fail("ArrayTypesOverrideDefault" + e); ++ } ++ ++ static void checkArrayTypesAcceptDefault(AnnotatedElement e) { ++ try { ++ checkArrayTypesAcceptDefault(e.getAnnotation(ArrayTypesWithDefault.class), e); ++ } catch(Throwable t) { ++ fail("ArrayTypesAcceptDefault" + e + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypesAcceptDefault(ArrayTypesWithDefault at, AnnotatedElement e) { ++ numTests++; ++ if (!(at.b()[0] == 11 && ++ at.s()[0] == 12 && ++ at.i()[0] == 13 && ++ at.l()[0] == 14L && ++ at.c()[0] == 'V' && ++ at.f()[0] == 16.0f && ++ at.d()[0] == 17.0 && ++ at.bool()[0] == false && ++ at.str()[0].equals("default") && ++ at.cls()[0] == Class.class && ++ at.e()[0] == Stooge.LARRY && ++ at.a()[0].x() == 11 && at.a()[0].y() == 12 && ++ ++ at.b().length==1 && at.s().length==1 && at.i().length==1 && ++ at.l().length==1 && at.c().length==1 && at.d().length==1 && ++ at.bool().length==1 && at.str().length==1 && ++ at.cls().length==1 && at.cls().length==1)) ++ fail("ArrayTypesAcceptDefault" + e); ++ } ++ ++ // Scalar multi-member for parameters ++ ++ static void checkScalarTypesParam(Method m) { ++ try { ++ checkScalarTypes((ScalarTypes) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ScalarTypes" + m + ": " + t); ++ } ++ } ++ ++ static void checkScalarTypesOverrideDefaultParam(Method m) { ++ try { ++ checkScalarTypesOverrideDefault((ScalarTypesWithDefault) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ScalarTypesOverrideDefaults" + m + ": " + t); ++ } ++ } ++ ++ static void checkScalarTypesAcceptDefaultParam(Method m) { ++ try { ++ checkScalarTypesAcceptDefault((ScalarTypesWithDefault) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ScalarTypesAcceptDefaults" + m + ": " + t); ++ } ++ } ++ ++ // Array multi-member for parameters ++ ++ static void checkArrayTypes0Param(Method m) { ++ try { ++ checkArrayTypes0((ArrayTypes) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ArrayTypes(Empty)" + m + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypes1Param(Method m) { ++ try { ++ checkArrayTypes1((ArrayTypes) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ArrayTypes(One Element)" + m + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypes2Param(Method m) { ++ try { ++ checkArrayTypes2((ArrayTypes) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ArrayTypes(Two Elements)" + m + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypesOverrideDefaultParam(Method m) { ++ try { ++ checkArrayTypesOverrideDefault((ArrayTypesWithDefault) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ArrayTypesOverrideDefault" + m + ": " + t); ++ } ++ } ++ ++ static void checkArrayTypesAcceptDefaultParam(Method m) { ++ try { ++ checkArrayTypesAcceptDefault((ArrayTypesWithDefault) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("ArrayTypesAcceptDefault" + m + ": " + t); ++ } ++ } ++ ++ // marker type on parameter ++ static void checkMarkerParam(Method m) { ++ try { ++ checkMarker((Marker) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("Marker" + m + ": " + t); ++ } ++ } ++ ++ // single-member scalar types on parameter ++ static void checkSingleMemberByteParam(Method m) { ++ try { ++ checkSingleMemberByte((SingleMemberByte) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByte" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortParam(Method m) { ++ try { ++ checkSingleMemberShort((SingleMemberShort) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShort" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntParam(Method m) { ++ try { ++ checkSingleMemberInt((SingleMemberInt) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberInt" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongParam(Method m) { ++ try { ++ checkSingleMemberLong((SingleMemberLong) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLong" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharParam(Method m) { ++ try { ++ checkSingleMemberChar((SingleMemberChar) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberChar" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatParam(Method m) { ++ try { ++ checkSingleMemberFloat((SingleMemberFloat) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloat" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleParam(Method m) { ++ try { ++ checkSingleMemberDouble((SingleMemberDouble) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDouble" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanParam(Method m) { ++ try { ++ checkSingleMemberBoolean((SingleMemberBoolean) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBoolean" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringParam(Method m) { ++ try { ++ checkSingleMemberString((SingleMemberString) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberString" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassParam(Method m) { ++ try { ++ checkSingleMemberClass((SingleMemberClass) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClass" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumParam(Method m) { ++ try { ++ checkSingleMemberEnum((SingleMemberEnum) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnum" + m + ": " + t); ++ } ++ } ++ ++ // single-member scalar types with default-override on parameter ++ static void checkSingleMemberByteOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberByteOvrdDef((SingleMemberByteWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberShortOvrdDef((SingleMemberShortWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberIntOvrdDef((SingleMemberIntWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberLongOvrdDef((SingleMemberLongWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberCharOvrdDef((SingleMemberCharWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberFloatOvrdDef((SingleMemberFloatWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberDoubleOvrdDef((SingleMemberDoubleWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberBooleanOvrdDef((SingleMemberBooleanWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberStringOvrdDef((SingleMemberStringWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberClassOvrdDef((SingleMemberClassWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberEnumOvrdDef((SingleMemberEnumWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ // single-member scalar types with default-accept on PARAMETER ++ static void checkSingleMemberByteAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberByteAcceptDef((SingleMemberByteWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberShortAcceptDef((SingleMemberShortWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberIntAcceptDef((SingleMemberIntWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberLongAcceptDef((SingleMemberLongWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberCharAcceptDef((SingleMemberCharWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberFloatAcceptDef((SingleMemberFloatWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberDoubleAcceptDef((SingleMemberDoubleWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberBooleanAcceptDef((SingleMemberBooleanWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberStringAcceptDef((SingleMemberStringWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberClassAcceptDef((SingleMemberClassWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberEnumAcceptDef((SingleMemberEnumWithDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ // single-member array types (empty array) parameter ++ static void checkSingleMemberByteArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberByteArrEmpty((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberShortArrEmpty((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberIntArrEmpty((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberLongArrEmpty((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberCharArrEmpty((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberFloatArrEmpty((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberDoubleArrEmpty((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberBooleanArrEmpty((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberStringArrEmpty((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberClassArrEmpty((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrEmptyParam(Method m) { ++ try { ++ checkSingleMemberEnumArrEmpty((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrEmpty" + m + ": " + t); ++ } ++ } ++ ++ // single-member array types (one-element array) on parameter ++ static void checkSingleMemberByteArrOneParam(Method m) { ++ try { ++ checkSingleMemberByteArrOne((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrOneParam(Method m) { ++ try { ++ checkSingleMemberShortArrOne((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrOneParam(Method m) { ++ try { ++ checkSingleMemberIntArrOne((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrOneParam(Method m) { ++ try { ++ checkSingleMemberLongArrOne((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrOneParam(Method m) { ++ try { ++ checkSingleMemberCharArrOne((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrOneParam(Method m) { ++ try { ++ checkSingleMemberFloatArrOne((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrOneParam(Method m) { ++ try { ++ checkSingleMemberDoubleArrOne((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrOneParam(Method m) { ++ try { ++ checkSingleMemberBooleanArrOne((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrOneParam(Method m) { ++ try { ++ checkSingleMemberStringArrOne((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrOneParam(Method m) { ++ try { ++ checkSingleMemberClassArrOne((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrOne" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrOneParam(Method m) { ++ try { ++ checkSingleMemberEnumArrOne((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrOne" + m + ": " + t); ++ } ++ } ++ ++ // single-member array types (two-element array) on parameter ++ static void checkSingleMemberByteArrTwoParam(Method m) { ++ try { ++ checkSingleMemberByteArrTwo((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrTwoParam(Method m) { ++ try { ++ checkSingleMemberShortArrTwo((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrTwoParam(Method m) { ++ try { ++ checkSingleMemberIntArrTwo((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrTwoParam(Method m) { ++ try { ++ checkSingleMemberLongArrTwo((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrTwoParam(Method m) { ++ try { ++ checkSingleMemberCharArrTwo((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrTwoParam(Method m) { ++ try { ++ checkSingleMemberFloatArrTwo((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrTwoParam(Method m) { ++ try { ++ checkSingleMemberDoubleArrTwo((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrTwoParam(Method m) { ++ try { ++ checkSingleMemberBooleanArrTwo((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrTwoParam(Method m) { ++ try { ++ checkSingleMemberStringArrTwo((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrTwoParam(Method m) { ++ try { ++ checkSingleMemberClassArrTwo((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrTwo" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrTwoParam(Method m) { ++ try { ++ checkSingleMemberEnumArrTwo((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrTwo" + m + ": " + t); ++ } ++ } ++ ++ // single-member array types with default (override)on parameter ++ static void checkSingleMemberByteArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberByteArrOvrdDef((SingleMemberByteArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberShortArrOvrdDef((SingleMemberShortArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberIntArrOvrdDef((SingleMemberIntArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberLongArrOvrdDef((SingleMemberLongArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberCharArrOvrdDef((SingleMemberCharArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberFloatArrOvrdDef((SingleMemberFloatArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberDoubleArrOvrdDef((SingleMemberDoubleArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberBooleanArrOvrdDef((SingleMemberBooleanArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberStringArrOvrdDef((SingleMemberStringArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberClassArrOvrdDef((SingleMemberClassArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrOvrdDefParam(Method m) { ++ try { ++ checkSingleMemberEnumArrOvrdDef((SingleMemberEnumArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrOvrdDef" + m + ": " + t); ++ } ++ } ++ ++ // single-member array types with default (accept)on parameter ++ static void checkSingleMemberByteArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberByteArrAcceptDef((SingleMemberByteArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberShortArrAcceptDef((SingleMemberShortArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberIntArrAcceptDef((SingleMemberIntArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberLongArrAcceptDef((SingleMemberLongArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberCharArrAcceptDef((SingleMemberCharArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberFloatArrAcceptDef((SingleMemberFloatArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberDoubleArrAcceptDef((SingleMemberDoubleArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberBooleanArrAcceptDef((SingleMemberBooleanArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberStringArrAcceptDef((SingleMemberStringArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberClassArrAcceptDef((SingleMemberClassArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrAcceptDefParam(Method m) { ++ try { ++ checkSingleMemberEnumArrAcceptDef((SingleMemberEnumArrayDef) m.getParameterAnnotations()[0][0], m); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrAcceptDef" + m + ": " + t); ++ } ++ } ++ ++ // Marker ++ static void checkMarker(AnnotatedElement e) { ++ checkMarker(e.getAnnotation(Marker.class), e); ++ } ++ static void checkMarker(Marker m, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (m == null) fail("Marker " + e); ++ } catch(Throwable t) { ++ fail("Marker " + e + ": " + t); ++ } ++ } ++ ++ // Single-member ++ ++ static void checkSingleMemberByte(AnnotatedElement e) { ++ checkSingleMemberByte(e.getAnnotation(SingleMemberByte.class), e); ++ } ++ static void checkSingleMemberByte(SingleMemberByte a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 1) fail("SingleMemberByte " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByte " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShort(AnnotatedElement e) { ++ checkSingleMemberShort(e.getAnnotation(SingleMemberShort.class), e); ++ } ++ static void checkSingleMemberShort(SingleMemberShort a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 2) fail("SingleMemberShort " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShort " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberInt(AnnotatedElement e) { ++ checkSingleMemberInt(e.getAnnotation(SingleMemberInt.class), e); ++ } ++ static void checkSingleMemberInt(SingleMemberInt a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 3) fail("SingleMemberInt " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberInt " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLong(AnnotatedElement e) { ++ checkSingleMemberLong(e.getAnnotation(SingleMemberLong.class), e); ++ } ++ static void checkSingleMemberLong(SingleMemberLong a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 4L) fail("SingleMemberLong " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLong " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberChar(AnnotatedElement e) { ++ checkSingleMemberChar(e.getAnnotation(SingleMemberChar.class), e); ++ } ++ static void checkSingleMemberChar(SingleMemberChar a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != '5') fail("SingleMemberChar " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberChar " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloat(AnnotatedElement e) { ++ checkSingleMemberFloat(e.getAnnotation(SingleMemberFloat.class), e); ++ } ++ static void checkSingleMemberFloat(SingleMemberFloat a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 6.0f) fail("SingleMemberFloat " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloat " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDouble(AnnotatedElement e) { ++ checkSingleMemberDouble(e.getAnnotation(SingleMemberDouble.class), e); ++ } ++ static void checkSingleMemberDouble(SingleMemberDouble a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 7.0) fail("SingleMemberDouble " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDouble " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBoolean(AnnotatedElement e) { ++ checkSingleMemberBoolean(e.getAnnotation(SingleMemberBoolean.class), e); ++ } ++ static void checkSingleMemberBoolean(SingleMemberBoolean a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (!a.value()) fail("SingleMemberBoolean " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBoolean " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberString(AnnotatedElement e) { ++ checkSingleMemberString(e.getAnnotation(SingleMemberString.class), e); ++ } ++ static void checkSingleMemberString(SingleMemberString a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (!(a.value().equals("custom"))) fail("SingleMemberString " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberString " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClass(AnnotatedElement e) { ++ checkSingleMemberClass(e.getAnnotation(SingleMemberClass.class), e); ++ } ++ static void checkSingleMemberClass(SingleMemberClass a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Map.class) fail("SingleMemberClass " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClass " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnum(AnnotatedElement e) { ++ checkSingleMemberEnum(e.getAnnotation(SingleMemberEnum.class), e); ++ } ++ static void checkSingleMemberEnum(SingleMemberEnum a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Stooge.MOE) fail("SingleMemberEnum " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnum " + e + ": " + t); ++ } ++ } ++ ++ // Single-member with default (Override) ++ ++ static void checkSingleMemberByteOvrdDef(AnnotatedElement e) { ++ checkSingleMemberByteOvrdDef(e.getAnnotation(SingleMemberByteWithDef.class), e); ++ } ++ static void checkSingleMemberByteOvrdDef(SingleMemberByteWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 1) fail("SingleMemberByteOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortOvrdDef(AnnotatedElement e) { ++ checkSingleMemberShortOvrdDef(e.getAnnotation(SingleMemberShortWithDef.class), e); ++ } ++ static void checkSingleMemberShortOvrdDef(SingleMemberShortWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 2) fail("SingleMemberShortOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntOvrdDef(AnnotatedElement e) { ++ checkSingleMemberIntOvrdDef(e.getAnnotation(SingleMemberIntWithDef.class), e); ++ } ++ static void checkSingleMemberIntOvrdDef(SingleMemberIntWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 3) fail("SingleMemberIntOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongOvrdDef(AnnotatedElement e) { ++ checkSingleMemberLongOvrdDef(e.getAnnotation(SingleMemberLongWithDef.class), e); ++ } ++ static void checkSingleMemberLongOvrdDef(SingleMemberLongWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 4L) fail("SingleMemberLongOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharOvrdDef(AnnotatedElement e) { ++ checkSingleMemberCharOvrdDef(e.getAnnotation(SingleMemberCharWithDef.class), e); ++ } ++ static void checkSingleMemberCharOvrdDef(SingleMemberCharWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != '5') fail("SingleMemberCharOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatOvrdDef(AnnotatedElement e) { ++ checkSingleMemberFloatOvrdDef(e.getAnnotation(SingleMemberFloatWithDef.class), e); ++ } ++ static void checkSingleMemberFloatOvrdDef(SingleMemberFloatWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 6.0f) fail("SingleMemberFloatOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleOvrdDef(AnnotatedElement e) { ++ checkSingleMemberDoubleOvrdDef(e.getAnnotation(SingleMemberDoubleWithDef.class), e); ++ } ++ static void checkSingleMemberDoubleOvrdDef(SingleMemberDoubleWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 7.0) fail("SingleMemberDoubleOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanOvrdDef(AnnotatedElement e) { ++ checkSingleMemberBooleanOvrdDef(e.getAnnotation(SingleMemberBooleanWithDef.class), e); ++ } ++ static void checkSingleMemberBooleanOvrdDef(SingleMemberBooleanWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (!a.value()) fail("SingleMemberBooleanOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringOvrdDef(AnnotatedElement e) { ++ checkSingleMemberStringOvrdDef(e.getAnnotation(SingleMemberStringWithDef.class), e); ++ } ++ static void checkSingleMemberStringOvrdDef(SingleMemberStringWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (!(a.value().equals("custom"))) fail("SingleMemberStringOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassOvrdDef(AnnotatedElement e) { ++ checkSingleMemberClassOvrdDef(e.getAnnotation(SingleMemberClassWithDef.class), e); ++ } ++ static void checkSingleMemberClassOvrdDef(SingleMemberClassWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Map.class) fail("SingleMemberClassOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumOvrdDef(AnnotatedElement e) { ++ checkSingleMemberEnumOvrdDef(e.getAnnotation(SingleMemberEnumWithDef.class), e); ++ } ++ static void checkSingleMemberEnumOvrdDef(SingleMemberEnumWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Stooge.MOE) fail("SingleMemberEnumOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ // Single-member with default (Accept) ++ ++ static void checkSingleMemberByteAcceptDef(AnnotatedElement e) { ++ checkSingleMemberByteAcceptDef(e.getAnnotation(SingleMemberByteWithDef.class), e); ++ } ++ static void checkSingleMemberByteAcceptDef(SingleMemberByteWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 11) fail("SingleMemberByteAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortAcceptDef(AnnotatedElement e) { ++ checkSingleMemberShortAcceptDef(e.getAnnotation(SingleMemberShortWithDef.class), e); ++ } ++ static void checkSingleMemberShortAcceptDef(SingleMemberShortWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 12) fail("SingleMemberShortAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntAcceptDef(AnnotatedElement e) { ++ checkSingleMemberIntAcceptDef(e.getAnnotation(SingleMemberIntWithDef.class), e); ++ } ++ static void checkSingleMemberIntAcceptDef(SingleMemberIntWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 13) fail("SingleMemberIntAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongAcceptDef(AnnotatedElement e) { ++ checkSingleMemberLongAcceptDef(e.getAnnotation(SingleMemberLongWithDef.class), e); ++ } ++ static void checkSingleMemberLongAcceptDef(SingleMemberLongWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 14L) fail("SingleMemberLongAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharAcceptDef(AnnotatedElement e) { ++ checkSingleMemberCharAcceptDef(e.getAnnotation(SingleMemberCharWithDef.class), e); ++ } ++ static void checkSingleMemberCharAcceptDef(SingleMemberCharWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 'V') fail("SingleMemberCharAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatAcceptDef(AnnotatedElement e) { ++ checkSingleMemberFloatAcceptDef(e.getAnnotation(SingleMemberFloatWithDef.class), e); ++ } ++ static void checkSingleMemberFloatAcceptDef(SingleMemberFloatWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 16.0f) fail("SingleMemberFloatAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleAcceptDef(AnnotatedElement e) { ++ checkSingleMemberDoubleAcceptDef(e.getAnnotation(SingleMemberDoubleWithDef.class), e); ++ } ++ static void checkSingleMemberDoubleAcceptDef(SingleMemberDoubleWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != 17.0) fail("SingleMemberDoubleAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanAcceptDef(AnnotatedElement e) { ++ checkSingleMemberBooleanAcceptDef(e.getAnnotation(SingleMemberBooleanWithDef.class), e); ++ } ++ static void checkSingleMemberBooleanAcceptDef(SingleMemberBooleanWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value()) fail("SingleMemberBooleanAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringAcceptDef(AnnotatedElement e) { ++ checkSingleMemberStringAcceptDef(e.getAnnotation(SingleMemberStringWithDef.class), e); ++ } ++ static void checkSingleMemberStringAcceptDef(SingleMemberStringWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (!(a.value().equals("default"))) fail("SingleMemberStringAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassAcceptDef(AnnotatedElement e) { ++ checkSingleMemberClassAcceptDef(e.getAnnotation(SingleMemberClassWithDef.class), e); ++ } ++ static void checkSingleMemberClassAcceptDef(SingleMemberClassWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Class.class) fail("SingleMemberClassAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumAcceptDef(AnnotatedElement e) { ++ checkSingleMemberEnumAcceptDef(e.getAnnotation(SingleMemberEnumWithDef.class), e); ++ } ++ static void checkSingleMemberEnumAcceptDef(SingleMemberEnumWithDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value() != Stooge.LARRY) fail("SingleMemberEnumAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ // Single member array (empty array) ++ static void checkSingleMemberByteArrEmpty(AnnotatedElement e) { ++ checkSingleMemberByteArrEmpty(e.getAnnotation(SingleMemberByteArray.class), e); ++ } ++ static void checkSingleMemberByteArrEmpty(SingleMemberByteArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberByteArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrEmpty(AnnotatedElement e) { ++ checkSingleMemberShortArrEmpty(e.getAnnotation(SingleMemberShortArray.class), e); ++ } ++ static void checkSingleMemberShortArrEmpty(SingleMemberShortArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberShortArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrEmpty(AnnotatedElement e) { ++ checkSingleMemberIntArrEmpty(e.getAnnotation(SingleMemberIntArray.class), e); ++ } ++ static void checkSingleMemberIntArrEmpty(SingleMemberIntArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberIntArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrEmpty(AnnotatedElement e) { ++ checkSingleMemberLongArrEmpty(e.getAnnotation(SingleMemberLongArray.class), e); ++ } ++ static void checkSingleMemberLongArrEmpty(SingleMemberLongArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberLongArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrEmpty(AnnotatedElement e) { ++ checkSingleMemberCharArrEmpty(e.getAnnotation(SingleMemberCharArray.class), e); ++ } ++ static void checkSingleMemberCharArrEmpty(SingleMemberCharArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberCharArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrEmpty(AnnotatedElement e) { ++ checkSingleMemberFloatArrEmpty(e.getAnnotation(SingleMemberFloatArray.class), e); ++ } ++ static void checkSingleMemberFloatArrEmpty(SingleMemberFloatArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberFloatArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrEmpty(AnnotatedElement e) { ++ checkSingleMemberDoubleArrEmpty(e.getAnnotation(SingleMemberDoubleArray.class), e); ++ } ++ static void checkSingleMemberDoubleArrEmpty(SingleMemberDoubleArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberDoubleArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrEmpty(AnnotatedElement e) { ++ checkSingleMemberBooleanArrEmpty(e.getAnnotation(SingleMemberBooleanArray.class), e); ++ } ++ static void checkSingleMemberBooleanArrEmpty(SingleMemberBooleanArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberBooleanArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrEmpty(AnnotatedElement e) { ++ checkSingleMemberStringArrEmpty(e.getAnnotation(SingleMemberStringArray.class), e); ++ } ++ static void checkSingleMemberStringArrEmpty(SingleMemberStringArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberStringArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrEmpty(AnnotatedElement e) { ++ checkSingleMemberClassArrEmpty(e.getAnnotation(SingleMemberClassArray.class), e); ++ } ++ static void checkSingleMemberClassArrEmpty(SingleMemberClassArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberClassArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrEmpty(AnnotatedElement e) { ++ checkSingleMemberEnumArrEmpty(e.getAnnotation(SingleMemberEnumArray.class), e); ++ } ++ static void checkSingleMemberEnumArrEmpty(SingleMemberEnumArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 0) fail("SingleMemberEnumArrEmpty " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrEmpty " + e + ": " + t); ++ } ++ } ++ ++ // Single member array (one element array) ++ static void checkSingleMemberByteArrOne(AnnotatedElement e) { ++ checkSingleMemberByteArrOne(e.getAnnotation(SingleMemberByteArray.class), e); ++ } ++ static void checkSingleMemberByteArrOne(SingleMemberByteArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (byte)1) ++ fail("SingleMemberByteArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrOne(AnnotatedElement e) { ++ checkSingleMemberShortArrOne(e.getAnnotation(SingleMemberShortArray.class), e); ++ } ++ static void checkSingleMemberShortArrOne(SingleMemberShortArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (short)2) ++ fail("SingleMemberShortArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrOne(AnnotatedElement e) { ++ checkSingleMemberIntArrOne(e.getAnnotation(SingleMemberIntArray.class), e); ++ } ++ static void checkSingleMemberIntArrOne(SingleMemberIntArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 3) ++ fail("SingleMemberIntArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrOne(AnnotatedElement e) { ++ checkSingleMemberLongArrOne(e.getAnnotation(SingleMemberLongArray.class), e); ++ } ++ static void checkSingleMemberLongArrOne(SingleMemberLongArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 4L) ++ fail("SingleMemberLongArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrOne(AnnotatedElement e) { ++ checkSingleMemberCharArrOne(e.getAnnotation(SingleMemberCharArray.class), e); ++ } ++ static void checkSingleMemberCharArrOne(SingleMemberCharArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != '5') ++ fail("SingleMemberCharArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrOne(AnnotatedElement e) { ++ checkSingleMemberFloatArrOne(e.getAnnotation(SingleMemberFloatArray.class), e); ++ } ++ static void checkSingleMemberFloatArrOne(SingleMemberFloatArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 6.0f) ++ fail("SingleMemberFloatArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrOne(AnnotatedElement e) { ++ checkSingleMemberDoubleArrOne(e.getAnnotation(SingleMemberDoubleArray.class), e); ++ } ++ static void checkSingleMemberDoubleArrOne(SingleMemberDoubleArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 7.0) ++ fail("SingleMemberDoubleArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrOne(AnnotatedElement e) { ++ checkSingleMemberBooleanArrOne(e.getAnnotation(SingleMemberBooleanArray.class), e); ++ } ++ static void checkSingleMemberBooleanArrOne(SingleMemberBooleanArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || !a.value()[0]) ++ fail("SingleMemberBooleanArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrOne(AnnotatedElement e) { ++ checkSingleMemberStringArrOne(e.getAnnotation(SingleMemberStringArray.class), e); ++ } ++ static void checkSingleMemberStringArrOne(SingleMemberStringArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || !(a.value()[0].equals("custom"))) ++ fail("SingleMemberStringArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrOne(AnnotatedElement e) { ++ checkSingleMemberClassArrOne(e.getAnnotation(SingleMemberClassArray.class), e); ++ } ++ static void checkSingleMemberClassArrOne(SingleMemberClassArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Map.class) ++ fail("SingleMemberClassArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrOne " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrOne(AnnotatedElement e) { ++ checkSingleMemberEnumArrOne(e.getAnnotation(SingleMemberEnumArray.class), e); ++ } ++ static void checkSingleMemberEnumArrOne(SingleMemberEnumArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Stooge.MOE) ++ fail("SingleMemberEnumArrOne " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrOne " + e + ": " + t); ++ } ++ } ++ ++ // Single member array (two element array) ++ static void checkSingleMemberByteArrTwo(AnnotatedElement e) { ++ checkSingleMemberByteArrTwo(e.getAnnotation(SingleMemberByteArray.class), e); ++ } ++ static void checkSingleMemberByteArrTwo(SingleMemberByteArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != (byte)1 || a.value()[1] != (byte)2) ++ fail("SingleMemberByteArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrTwo(AnnotatedElement e) { ++ checkSingleMemberShortArrTwo(e.getAnnotation(SingleMemberShortArray.class), e); ++ } ++ static void checkSingleMemberShortArrTwo(SingleMemberShortArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != (short)2 || a.value()[1] != (short)3) ++ fail("SingleMemberShortArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrTwo(AnnotatedElement e) { ++ checkSingleMemberIntArrTwo(e.getAnnotation(SingleMemberIntArray.class), e); ++ } ++ static void checkSingleMemberIntArrTwo(SingleMemberIntArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != 3 || a.value()[1] != 4) ++ fail("SingleMemberIntArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrTwo(AnnotatedElement e) { ++ checkSingleMemberLongArrTwo(e.getAnnotation(SingleMemberLongArray.class), e); ++ } ++ static void checkSingleMemberLongArrTwo(SingleMemberLongArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != 4L || a.value()[1] != 5L) ++ fail("SingleMemberLongArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrTwo(AnnotatedElement e) { ++ checkSingleMemberCharArrTwo(e.getAnnotation(SingleMemberCharArray.class), e); ++ } ++ static void checkSingleMemberCharArrTwo(SingleMemberCharArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != '5' || a.value()[1] != '6') ++ fail("SingleMemberCharArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrTwo(AnnotatedElement e) { ++ checkSingleMemberFloatArrTwo(e.getAnnotation(SingleMemberFloatArray.class), e); ++ } ++ static void checkSingleMemberFloatArrTwo(SingleMemberFloatArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != 6.0f || a.value()[1] != 7.0f) ++ fail("SingleMemberFloatArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrTwo(AnnotatedElement e) { ++ checkSingleMemberDoubleArrTwo(e.getAnnotation(SingleMemberDoubleArray.class), e); ++ } ++ static void checkSingleMemberDoubleArrTwo(SingleMemberDoubleArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != 7.0 || a.value()[1] != 8.0) ++ fail("SingleMemberDoubleArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrTwo(AnnotatedElement e) { ++ checkSingleMemberBooleanArrTwo(e.getAnnotation(SingleMemberBooleanArray.class), e); ++ } ++ static void checkSingleMemberBooleanArrTwo(SingleMemberBooleanArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || !a.value()[0] || a.value()[1]) ++ fail("SingleMemberBooleanArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrTwo(AnnotatedElement e) { ++ checkSingleMemberStringArrTwo(e.getAnnotation(SingleMemberStringArray.class), e); ++ } ++ static void checkSingleMemberStringArrTwo(SingleMemberStringArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || !(a.value()[0].equals("custom")) || !(a.value()[1].equals("paint"))) ++ fail("SingleMemberStringArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrTwo(AnnotatedElement e) { ++ checkSingleMemberClassArrTwo(e.getAnnotation(SingleMemberClassArray.class), e); ++ } ++ static void checkSingleMemberClassArrTwo(SingleMemberClassArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != Map.class || a.value()[1] != Set.class) ++ fail("SingleMemberClassArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrTwo " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrTwo(AnnotatedElement e) { ++ checkSingleMemberEnumArrTwo(e.getAnnotation(SingleMemberEnumArray.class), e); ++ } ++ static void checkSingleMemberEnumArrTwo(SingleMemberEnumArray a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 2 || a.value()[0] != Stooge.MOE || a.value()[1] != Stooge.CURLY) ++ fail("SingleMemberEnumArrTwo " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrTwo " + e + ": " + t); ++ } ++ } ++ ++ // Single member array with default (override) ++ static void checkSingleMemberByteArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberByteArrOvrdDef(e.getAnnotation(SingleMemberByteArrayDef.class), e); ++ } ++ static void checkSingleMemberByteArrOvrdDef(SingleMemberByteArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (byte)1) ++ fail("SingleMemberByteArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberShortArrOvrdDef(e.getAnnotation(SingleMemberShortArrayDef.class), e); ++ } ++ static void checkSingleMemberShortArrOvrdDef(SingleMemberShortArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (short)2) ++ fail("SingleMemberShortArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberIntArrOvrdDef(e.getAnnotation(SingleMemberIntArrayDef.class), e); ++ } ++ static void checkSingleMemberIntArrOvrdDef(SingleMemberIntArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 3) ++ fail("SingleMemberIntArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberLongArrOvrdDef(e.getAnnotation(SingleMemberLongArrayDef.class), e); ++ } ++ static void checkSingleMemberLongArrOvrdDef(SingleMemberLongArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 4L) ++ fail("SingleMemberLongArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberCharArrOvrdDef(e.getAnnotation(SingleMemberCharArrayDef.class), e); ++ } ++ static void checkSingleMemberCharArrOvrdDef(SingleMemberCharArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != '5') ++ fail("SingleMemberCharArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberFloatArrOvrdDef(e.getAnnotation(SingleMemberFloatArrayDef.class), e); ++ } ++ static void checkSingleMemberFloatArrOvrdDef(SingleMemberFloatArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 6.0f) ++ fail("SingleMemberFloatArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberDoubleArrOvrdDef(e.getAnnotation(SingleMemberDoubleArrayDef.class), e); ++ } ++ static void checkSingleMemberDoubleArrOvrdDef(SingleMemberDoubleArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 7.0) ++ fail("SingleMemberDoubleArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberBooleanArrOvrdDef(e.getAnnotation(SingleMemberBooleanArrayDef.class), e); ++ } ++ static void checkSingleMemberBooleanArrOvrdDef(SingleMemberBooleanArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || !a.value()[0]) ++ fail("SingleMemberBooleanArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberStringArrOvrdDef(e.getAnnotation(SingleMemberStringArrayDef.class), e); ++ } ++ static void checkSingleMemberStringArrOvrdDef(SingleMemberStringArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || !(a.value()[0].equals("custom"))) ++ fail("SingleMemberStringArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberClassArrOvrdDef(e.getAnnotation(SingleMemberClassArrayDef.class), e); ++ } ++ static void checkSingleMemberClassArrOvrdDef(SingleMemberClassArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Map.class) ++ fail("SingleMemberClassArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrOvrdDef(AnnotatedElement e) { ++ checkSingleMemberEnumArrOvrdDef(e.getAnnotation(SingleMemberEnumArrayDef.class), e); ++ } ++ static void checkSingleMemberEnumArrOvrdDef(SingleMemberEnumArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Stooge.MOE) ++ fail("SingleMemberEnumArrOvrdDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrOvrdDef " + e + ": " + t); ++ } ++ } ++ ++ // Single member array with default (accept) ++ static void checkSingleMemberByteArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberByteArrAcceptDef(e.getAnnotation(SingleMemberByteArrayDef.class), e); ++ } ++ static void checkSingleMemberByteArrAcceptDef(SingleMemberByteArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (byte)11) ++ fail("SingleMemberByteArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberByteArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberShortArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberShortArrAcceptDef(e.getAnnotation(SingleMemberShortArrayDef.class), e); ++ } ++ static void checkSingleMemberShortArrAcceptDef(SingleMemberShortArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != (short)12) ++ fail("SingleMemberShortArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberShortArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberIntArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberIntArrAcceptDef(e.getAnnotation(SingleMemberIntArrayDef.class), e); ++ } ++ static void checkSingleMemberIntArrAcceptDef(SingleMemberIntArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 13) ++ fail("SingleMemberIntArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberIntArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberLongArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberLongArrAcceptDef(e.getAnnotation(SingleMemberLongArrayDef.class), e); ++ } ++ static void checkSingleMemberLongArrAcceptDef(SingleMemberLongArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 14L) ++ fail("SingleMemberLongArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberLongArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberCharArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberCharArrAcceptDef(e.getAnnotation(SingleMemberCharArrayDef.class), e); ++ } ++ static void checkSingleMemberCharArrAcceptDef(SingleMemberCharArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 'V') ++ fail("SingleMemberCharArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberCharArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberFloatArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberFloatArrAcceptDef(e.getAnnotation(SingleMemberFloatArrayDef.class), e); ++ } ++ static void checkSingleMemberFloatArrAcceptDef(SingleMemberFloatArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 16.0f) ++ fail("SingleMemberFloatArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberFloatArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberDoubleArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberDoubleArrAcceptDef(e.getAnnotation(SingleMemberDoubleArrayDef.class), e); ++ } ++ static void checkSingleMemberDoubleArrAcceptDef(SingleMemberDoubleArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != 17.0) ++ fail("SingleMemberDoubleArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberDoubleArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberBooleanArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberBooleanArrAcceptDef(e.getAnnotation(SingleMemberBooleanArrayDef.class), e); ++ } ++ static void checkSingleMemberBooleanArrAcceptDef(SingleMemberBooleanArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0]) ++ fail("SingleMemberBooleanArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberBooleanArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberStringArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberStringArrAcceptDef(e.getAnnotation(SingleMemberStringArrayDef.class), e); ++ } ++ static void checkSingleMemberStringArrAcceptDef(SingleMemberStringArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || !(a.value()[0].equals("default"))) ++ fail("SingleMemberStringArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberStringArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberClassArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberClassArrAcceptDef(e.getAnnotation(SingleMemberClassArrayDef.class), e); ++ } ++ static void checkSingleMemberClassArrAcceptDef(SingleMemberClassArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Class.class) ++ fail("SingleMemberClassArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberClassArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ static void checkSingleMemberEnumArrAcceptDef(AnnotatedElement e) { ++ checkSingleMemberEnumArrAcceptDef(e.getAnnotation(SingleMemberEnumArrayDef.class), e); ++ } ++ static void checkSingleMemberEnumArrAcceptDef(SingleMemberEnumArrayDef a, AnnotatedElement e) { ++ numTests++; ++ try { ++ if (a.value().length != 1 || a.value()[0] != Stooge.LARRY) ++ fail("SingleMemberEnumArrAcceptDef " + e + " = " + a.value()); ++ } catch(Throwable t) { ++ fail("SingleMemberEnumArrAcceptDef " + e + ": " + t); ++ } ++ } ++ ++ // Verfification methods for equals/hashCode/serialization ++ ++ static void checkEquals(AnnotatedElement e1, AnnotatedElement e2, Class annoType) { ++ numTests++; ++ T a1 = e1.getAnnotation(annoType); ++ T a2 = e2.getAnnotation(annoType); ++ try { ++ if (!a1.equals(a2)) ++ fail(a1 + " != " + a2); ++ if (a1.hashCode() != a2.hashCode()) ++ fail(a1 + ".hashCode() [" + a1.hashCode() + "] != " + a2 + " .hashCode()["+ a2.hashCode()+"]"); ++ if (!(a1.toString().equals(a2.toString()))) ++ fail(a1 + ".toString() != " + a2 + ".toString()"); ++ } catch(Throwable t) { ++ fail(a1 + " == " + a2 + ": " + t); ++ } ++ } ++ ++ static void checkUnequals(AnnotatedElement e1, AnnotatedElement e2, Class annoType) { ++ numTests++; ++ T a1 = e1.getAnnotation(annoType); ++ T a2 = e2.getAnnotation(annoType); ++ try { ++ if (a1.equals(a2)) ++ fail(a1 + " == " + a2); ++ if (a1.hashCode() == a2.hashCode()) ++ fail(a1 + ".hashCode() [" + a1.hashCode() + "] == " + a2 + " .hashCode()[" + a2.hashCode() + "]"); ++ if (a1.toString().equals(a2.toString())) ++ fail(a1 + ".toString() == " + a2 + ".toString()"); ++ } catch(Throwable t) { ++ fail(a1 + " != " + a2 + ": " + t); ++ } ++ } ++ ++ // Verfification method for serialization/deserialization ++ ++ static void checkSerialization(AnnotatedElement e, Class annoType) { ++ numTests++; ++ T a1 = e.getAnnotation(annoType); ++ Object a2 = deepCopy(a1); ++ try { ++ if (!a1.equals(a2)) ++ fail("Serialization: " + a1 + " != " + a2); ++ if (a1.hashCode() != a2.hashCode()) ++ fail("Serialization: " + a1 + ".hashCode() [" + a1.hashCode() + "] != " + a2 + " .hashCode()["+a2.hashCode()+"]"); ++ if (!(a1.toString().equals(a2.toString()))) ++ fail("Serialization: " + a1 + ".toString() != " + a2 + ".toString()"); ++ } catch(Throwable t) { ++ fail("Serialization: " + a1 + " == " + a2 + ": " + t); ++ } ++ } ++ ++ private static Object deepCopy(Object original) { ++ try { ++ ByteArrayOutputStream bos = new ByteArrayOutputStream(); ++ ObjectOutputStream oos = new ObjectOutputStream(bos); ++ oos.writeObject(original); ++ oos.flush(); ++ ByteArrayInputStream bin = new ByteArrayInputStream( ++ bos.toByteArray()); ++ ObjectInputStream ois = new ObjectInputStream(bin); ++ return ois.readObject(); ++ } catch(Exception e) { ++ throw new IllegalArgumentException(e); ++ } ++ } ++ ++ // Verification method for inheritance test ++ static void checkInheritence(AnnotatedElement e, boolean shouldHaveFoo, boolean shouldHaveBar) { ++ numTests++; ++ try { ++ boolean hasFoo = e.isAnnotationPresent(Foo.class); ++ boolean hasBar = e.isAnnotationPresent(Bar.class); ++ if (hasFoo != shouldHaveFoo || hasBar != shouldHaveBar) ++ fail("Inheritance(1): " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar); ++ ++ // Now test getAnnotations ++ hasFoo = hasBar = false; ++ Annotation[] allAnnotations = e.getAnnotations(); ++ for (Annotation a : allAnnotations) { ++ if (a instanceof Foo) ++ hasFoo = true; ++ else if (a instanceof Bar) ++ hasBar = true; ++ } ++ if (hasFoo != shouldHaveFoo ||hasBar != shouldHaveBar) ++ fail("Inheritance(2): " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar); ++ } catch(Throwable t) { ++ fail("Inheritance: " + e +": " + t); ++ } ++ } ++ ++ // Verification method for declared annotations test ++ static void checkDeclaredAnnotations(AnnotatedElement e, boolean shouldHaveFoo, boolean shouldHaveBar) { ++ numTests++; ++ try { ++ boolean hasFoo = false; ++ boolean hasBar = false; ++ Annotation[] declaredAnnotations = e.getDeclaredAnnotations(); ++ for (Annotation a : declaredAnnotations) { ++ if (a instanceof Foo) ++ hasFoo = true; ++ else if (a instanceof Bar) ++ hasBar = true; ++ } ++ if (hasFoo != shouldHaveFoo ||hasBar != shouldHaveBar) ++ fail("Declared annotations: " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar); ++ } catch(Throwable t) { ++ fail("Declared annotations: " + e +": " + t); ++ } ++ } ++ ++ ++ // ANNOTATED METHODS ++ ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ public void scalarTypesMethod() { } ++ ++ @ScalarTypesWithDefault ( ) ++ public void scalarTypesAcceptDefaultMethod() { } ++ ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ public void scalarTypesOverrideDefaultMethod() { } ++ ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ public void emptyArrayTypesMethod() { } ++ ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ public void singleElementArrayTypesMethod() { } ++ ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ public void twoElementArrayTypesMethod() { } ++ ++ @ArrayTypesWithDefault ( ++ ) ++ public void arrayTypesAcceptDefaultMethod() { } ++ ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ public void arrayTypesOverrideDefaultMethod() { } ++ ++ // Marker ++ @Marker public void markerMethod() { } ++ ++ // Single-member (shorthand) ++ @SingleMemberByte(1) public void SingleMemberByte() {} ++ @SingleMemberShort(2) public void SingleMemberShort() {} ++ @SingleMemberInt(3) public void SingleMemberInt() {} ++ @SingleMemberLong(4L) public void SingleMemberLong() {} ++ @SingleMemberChar('5') public void SingleMemberChar() {} ++ @SingleMemberFloat(6.0f) public void SingleMemberFloat() {} ++ @SingleMemberDouble(7.0) public void SingleMemberDouble() {} ++ @SingleMemberBoolean(true) public void SingleMemberBoolean() {} ++ @SingleMemberString("custom") public void SingleMemberString() {} ++ @SingleMemberClass(Map.class) public void SingleMemberClass() {} ++ @SingleMemberEnum(Stooge.MOE) public void SingleMemberEnum() {} ++ ++ // Single-member with default (Override) ++ @SingleMemberByteWithDef(1) public void SingleMemberByteOvrdDef() {} ++ @SingleMemberShortWithDef(2) public void SingleMemberShortOvrdDef() {} ++ @SingleMemberIntWithDef(3) public void SingleMemberIntOvrdDef() {} ++ @SingleMemberLongWithDef(4L) public void SingleMemberLongOvrdDef() {} ++ @SingleMemberCharWithDef('5') public void SingleMemberCharOvrdDef() {} ++ @SingleMemberFloatWithDef(6.0f) public void SingleMemberFloatOvrdDef() {} ++ @SingleMemberDoubleWithDef(7.0) public void SingleMemberDoubleOvrdDef() {} ++ @SingleMemberBooleanWithDef(true) public void SingleMemberBooleanOvrdDef() {} ++ @SingleMemberStringWithDef("custom") public void SingleMemberStringOvrdDef() {} ++ @SingleMemberClassWithDef(Map.class) public void SingleMemberClassOvrdDef() {} ++ @SingleMemberEnumWithDef(Stooge.MOE) public void SingleMemberEnumOvrdDef() {} ++ ++ // Single-member with default (Accept) ++ @SingleMemberByteWithDef public void SingleMemberByteAcceptDef() {} ++ @SingleMemberShortWithDef public void SingleMemberShortAcceptDef() {} ++ @SingleMemberIntWithDef public void SingleMemberIntAcceptDef() {} ++ @SingleMemberLongWithDef public void SingleMemberLongAcceptDef() {} ++ @SingleMemberCharWithDef public void SingleMemberCharAcceptDef() {} ++ @SingleMemberFloatWithDef public void SingleMemberFloatAcceptDef() {} ++ @SingleMemberDoubleWithDef public void SingleMemberDoubleAcceptDef() {} ++ @SingleMemberBooleanWithDef public void SingleMemberBooleanAcceptDef() {} ++ @SingleMemberStringWithDef public void SingleMemberStringAcceptDef() {} ++ @SingleMemberClassWithDef public void SingleMemberClassAcceptDef() {} ++ @SingleMemberEnumWithDef public void SingleMemberEnumAcceptDef() {} ++ ++ // Single member array (empty array) ++ @SingleMemberByteArray({}) public void SingleMemberByteArrEmpty() {} ++ @SingleMemberShortArray({}) public void SingleMemberShortArrEmpty() {} ++ @SingleMemberIntArray({}) public void SingleMemberIntArrEmpty() {} ++ @SingleMemberLongArray({}) public void SingleMemberLongArrEmpty() {} ++ @SingleMemberCharArray({}) public void SingleMemberCharArrEmpty() {} ++ @SingleMemberFloatArray({}) public void SingleMemberFloatArrEmpty() {} ++ @SingleMemberDoubleArray({}) public void SingleMemberDoubleArrEmpty() {} ++ @SingleMemberBooleanArray({})public void SingleMemberBooleanArrEmpty() {} ++ @SingleMemberStringArray({}) public void SingleMemberStringArrEmpty() {} ++ @SingleMemberClassArray({}) public void SingleMemberClassArrEmpty() {} ++ @SingleMemberEnumArray({}) public void SingleMemberEnumArrEmpty() {} ++ ++ // Single member array (one-element shorthand) ++ @SingleMemberByteArray(1) public void SingleMemberByteArrOne() {} ++ @SingleMemberShortArray(2) public void SingleMemberShortArrOne() {} ++ @SingleMemberIntArray(3) public void SingleMemberIntArrOne() {} ++ @SingleMemberLongArray(4L) public void SingleMemberLongArrOne() {} ++ @SingleMemberCharArray('5') public void SingleMemberCharArrOne() {} ++ @SingleMemberFloatArray(6.0f) public void SingleMemberFloatArrOne() {} ++ @SingleMemberDoubleArray(7.0) public void SingleMemberDoubleArrOne() {} ++ @SingleMemberBooleanArray(true) public void SingleMemberBooleanArrOne() {} ++ @SingleMemberStringArray("custom") public void SingleMemberStringArrOne() {} ++ @SingleMemberClassArray(Map.class) public void SingleMemberClassArrOne() {} ++ @SingleMemberEnumArray(Stooge.MOE) public void SingleMemberEnumArrOne() {} ++ ++ // Single member array (two elements) ++ @SingleMemberByteArray({1, 2}) public void SingleMemberByteArrTwo() {} ++ @SingleMemberShortArray({2, 3}) public void SingleMemberShortArrTwo() {} ++ @SingleMemberIntArray({3, 4}) public void SingleMemberIntArrTwo() {} ++ @SingleMemberLongArray({4L, 5L}) public void SingleMemberLongArrTwo() {} ++ @SingleMemberCharArray({'5', '6'}) public void SingleMemberCharArrTwo() {} ++ @SingleMemberFloatArray({6.0f, 7.0f}) public void SingleMemberFloatArrTwo() {} ++ @SingleMemberDoubleArray({7.0, 8.0}) public void SingleMemberDoubleArrTwo() {} ++ @SingleMemberBooleanArray({true, false}) public void SingleMemberBooleanArrTwo(){} ++ @SingleMemberStringArray({"custom", "paint"}) public void SingleMemberStringArrTwo(){} ++ @SingleMemberClassArray({Map.class, Set.class}) public void SingleMemberClassArrTwo() {} ++ @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) public void SingleMemberEnumArrTwo() {} ++ ++ // Single member array with default (override) ++ @SingleMemberByteArrayDef(1) public void SingleMemberByteArrOvrdDef() {} ++ @SingleMemberShortArrayDef(2) public void SingleMemberShortArrOvrdDef() {} ++ @SingleMemberIntArrayDef(3) public void SingleMemberIntArrOvrdDef() {} ++ @SingleMemberLongArrayDef(4L) public void SingleMemberLongArrOvrdDef() {} ++ @SingleMemberCharArrayDef('5') public void SingleMemberCharArrOvrdDef() {} ++ @SingleMemberFloatArrayDef(6.0f) public void SingleMemberFloatArrOvrdDef() {} ++ @SingleMemberDoubleArrayDef(7.0) public void SingleMemberDoubleArrOvrdDef() {} ++ @SingleMemberBooleanArrayDef(true) public void SingleMemberBooleanArrOvrdDef(){} ++ @SingleMemberStringArrayDef("custom") public void SingleMemberStringArrOvrdDef() {} ++ @SingleMemberClassArrayDef(Map.class) public void SingleMemberClassArrOvrdDef() {} ++ @SingleMemberEnumArrayDef(Stooge.MOE) public void SingleMemberEnumArrOvrdDef() {} ++ ++ // Single member array with default - accept ++ @SingleMemberByteArrayDef public void SingleMemberByteArrAcceptDef() {} ++ @SingleMemberShortArrayDef public void SingleMemberShortArrAcceptDef() {} ++ @SingleMemberIntArrayDef public void SingleMemberIntArrAcceptDef() {} ++ @SingleMemberLongArrayDef public void SingleMemberLongArrAcceptDef() {} ++ @SingleMemberCharArrayDef public void SingleMemberCharArrAcceptDef() {} ++ @SingleMemberFloatArrayDef public void SingleMemberFloatArrAcceptDef() {} ++ @SingleMemberDoubleArrayDef public void SingleMemberDoubleArrAcceptDef() {} ++ @SingleMemberBooleanArrayDef public void SingleMemberBooleanArrAcceptDef() {} ++ @SingleMemberStringArrayDef public void SingleMemberStringArrAcceptDef() {} ++ @SingleMemberClassArrayDef public void SingleMemberClassArrAcceptDef() {} ++ @SingleMemberEnumArrayDef public void SingleMemberEnumArrAcceptDef() {} ++ ++ // ANNOTATED FIELDS ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ public int scalarTypesField; ++ ++ @ScalarTypesWithDefault ( ) ++ public int scalarTypesAcceptDefaultField; ++ ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ public int scalarTypesOverrideDefaultField; ++ ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ public int emptyArrayTypesField; ++ ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ public int singleElementArrayTypesField; ++ ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ public int twoElementArrayTypesField; ++ ++ @ArrayTypesWithDefault ( ) ++ public int arrayTypesAcceptDefaultField; ++ ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ public int arrayTypesOverrideDefaultField; ++ ++ @Marker public int markerField; ++ ++ // Single-member (shorthand) ++ @SingleMemberByte(1) public int SingleMemberByteField; ++ @SingleMemberShort(2) public int SingleMemberShortField; ++ @SingleMemberInt(3) public int SingleMemberIntField; ++ @SingleMemberLong(4L) public int SingleMemberLongField; ++ @SingleMemberChar('5') public int SingleMemberCharField; ++ @SingleMemberFloat(6.0f) public int SingleMemberFloatField; ++ @SingleMemberDouble(7.0) public int SingleMemberDoubleField; ++ @SingleMemberBoolean(true) public int SingleMemberBooleanField; ++ @SingleMemberString("custom") public int SingleMemberStringField; ++ @SingleMemberClass(Map.class) public int SingleMemberClassField; ++ @SingleMemberEnum(Stooge.MOE) public int SingleMemberEnumField; ++ ++ // Single-member with default (Override) ++ @SingleMemberByteWithDef(1) public int SingleMemberByteOvrdDefField; ++ @SingleMemberShortWithDef(2) public int SingleMemberShortOvrdDefField; ++ @SingleMemberIntWithDef(3) public int SingleMemberIntOvrdDefField; ++ @SingleMemberLongWithDef(4L) public int SingleMemberLongOvrdDefField; ++ @SingleMemberCharWithDef('5') public int SingleMemberCharOvrdDefField; ++ @SingleMemberFloatWithDef(6.0f) public int SingleMemberFloatOvrdDefField; ++ @SingleMemberDoubleWithDef(7.0) public int SingleMemberDoubleOvrdDefField; ++ @SingleMemberBooleanWithDef(true) public int SingleMemberBooleanOvrdDefField; ++ @SingleMemberStringWithDef("custom") public int SingleMemberStringOvrdDefField; ++ @SingleMemberClassWithDef(Map.class) public int SingleMemberClassOvrdDefField; ++ @SingleMemberEnumWithDef(Stooge.MOE) public int SingleMemberEnumOvrdDefField; ++ ++ // Single-member with default (Accept) ++ @SingleMemberByteWithDef public int SingleMemberByteAcceptDefField; ++ @SingleMemberShortWithDef public int SingleMemberShortAcceptDefField; ++ @SingleMemberIntWithDef public int SingleMemberIntAcceptDefField; ++ @SingleMemberLongWithDef public int SingleMemberLongAcceptDefField; ++ @SingleMemberCharWithDef public int SingleMemberCharAcceptDefField; ++ @SingleMemberFloatWithDef public int SingleMemberFloatAcceptDefField; ++ @SingleMemberDoubleWithDef public int SingleMemberDoubleAcceptDefField; ++ @SingleMemberBooleanWithDef public int SingleMemberBooleanAcceptDefField; ++ @SingleMemberStringWithDef public int SingleMemberStringAcceptDefField; ++ @SingleMemberClassWithDef public int SingleMemberClassAcceptDefField; ++ @SingleMemberEnumWithDef public int SingleMemberEnumAcceptDefField; ++ ++ // Single member array (empty array) ++ @SingleMemberByteArray({}) public int SingleMemberByteArrEmptyField; ++ @SingleMemberShortArray({}) public int SingleMemberShortArrEmptyField; ++ @SingleMemberIntArray({}) public int SingleMemberIntArrEmptyField; ++ @SingleMemberLongArray({}) public int SingleMemberLongArrEmptyField; ++ @SingleMemberCharArray({}) public int SingleMemberCharArrEmptyField; ++ @SingleMemberFloatArray({}) public int SingleMemberFloatArrEmptyField; ++ @SingleMemberDoubleArray({}) public int SingleMemberDoubleArrEmptyField; ++ @SingleMemberBooleanArray({})public int SingleMemberBooleanArrEmptyField; ++ @SingleMemberStringArray({}) public int SingleMemberStringArrEmptyField; ++ @SingleMemberClassArray({}) public int SingleMemberClassArrEmptyField; ++ @SingleMemberEnumArray({}) public int SingleMemberEnumArrEmptyField; ++ ++ // Single member array (one-element shorthand) ++ @SingleMemberByteArray(1) public int SingleMemberByteArrOneField; ++ @SingleMemberShortArray(2) public int SingleMemberShortArrOneField; ++ @SingleMemberIntArray(3) public int SingleMemberIntArrOneField; ++ @SingleMemberLongArray(4L) public int SingleMemberLongArrOneField; ++ @SingleMemberCharArray('5') public int SingleMemberCharArrOneField; ++ @SingleMemberFloatArray(6.0f) public int SingleMemberFloatArrOneField; ++ @SingleMemberDoubleArray(7.0) public int SingleMemberDoubleArrOneField; ++ @SingleMemberBooleanArray(true) public int SingleMemberBooleanArrOneField; ++ @SingleMemberStringArray("custom") public int SingleMemberStringArrOneField; ++ @SingleMemberClassArray(Map.class) public int SingleMemberClassArrOneField; ++ @SingleMemberEnumArray(Stooge.MOE) public int SingleMemberEnumArrOneField; ++ ++ // Single member array (two elements) ++ @SingleMemberByteArray({1, 2}) public int SingleMemberByteArrTwoField; ++ @SingleMemberShortArray({2, 3}) public int SingleMemberShortArrTwoField; ++ @SingleMemberIntArray({3, 4}) public int SingleMemberIntArrTwoField; ++ @SingleMemberLongArray({4L, 5L}) public int SingleMemberLongArrTwoField; ++ @SingleMemberCharArray({'5', '6'}) public int SingleMemberCharArrTwoField; ++ @SingleMemberFloatArray({6.0f, 7.0f}) public int SingleMemberFloatArrTwoField; ++ @SingleMemberDoubleArray({7.0, 8.0}) public int SingleMemberDoubleArrTwoField; ++ @SingleMemberBooleanArray({true,false}) public int SingleMemberBooleanArrTwoField; ++ @SingleMemberStringArray({"custom", "paint"}) public int SingleMemberStringArrTwoField; ++ @SingleMemberClassArray({Map.class, Set.class}) public int SingleMemberClassArrTwoField; ++ @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) public int SingleMemberEnumArrTwoField; ++ ++ // Single member array with default (override) ++ @SingleMemberByteArrayDef(1) public int SingleMemberByteArrOvrdDefField; ++ @SingleMemberShortArrayDef(2) public int SingleMemberShortArrOvrdDefField; ++ @SingleMemberIntArrayDef(3) public int SingleMemberIntArrOvrdDefField; ++ @SingleMemberLongArrayDef(4L) public int SingleMemberLongArrOvrdDefField; ++ @SingleMemberCharArrayDef('5') public int SingleMemberCharArrOvrdDefField; ++ @SingleMemberFloatArrayDef(6.0f) public int SingleMemberFloatArrOvrdDefField; ++ @SingleMemberDoubleArrayDef(7.0) public int SingleMemberDoubleArrOvrdDefField; ++ @SingleMemberBooleanArrayDef(true) public int SingleMemberBooleanArrOvrdDefField; ++ @SingleMemberStringArrayDef("custom") public int SingleMemberStringArrOvrdDefField; ++ @SingleMemberClassArrayDef(Map.class) public int SingleMemberClassArrOvrdDefField; ++ @SingleMemberEnumArrayDef(Stooge.MOE) public int SingleMemberEnumArrOvrdDefField; ++ ++ // Single member array with default - accept ++ @SingleMemberByteArrayDef public int SingleMemberByteArrAcceptDefField; ++ @SingleMemberShortArrayDef public int SingleMemberShortArrAcceptDefField; ++ @SingleMemberIntArrayDef public int SingleMemberIntArrAcceptDefField; ++ @SingleMemberLongArrayDef public int SingleMemberLongArrAcceptDefField; ++ @SingleMemberCharArrayDef public int SingleMemberCharArrAcceptDefField; ++ @SingleMemberFloatArrayDef public int SingleMemberFloatArrAcceptDefField; ++ @SingleMemberDoubleArrayDef public int SingleMemberDoubleArrAcceptDefField; ++ @SingleMemberBooleanArrayDef public int SingleMemberBooleanArrAcceptDefField; ++ @SingleMemberStringArrayDef public int SingleMemberStringArrAcceptDefField; ++ @SingleMemberClassArrayDef public int SingleMemberClassArrAcceptDefField; ++ @SingleMemberEnumArrayDef public int SingleMemberEnumArrAcceptDefField; ++ ++ // ANNOTATED ENUM CONSTANTS ++ enum TestType { ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ scalarTypesField, ++ ++ @ScalarTypesWithDefault ( ) ++ scalarTypesAcceptDefaultField, ++ ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ scalarTypesOverrideDefaultField, ++ ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ emptyArrayTypesField, ++ ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ singleElementArrayTypesField, ++ ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ twoElementArrayTypesField, ++ ++ @ArrayTypesWithDefault ( ) ++ arrayTypesAcceptDefaultField, ++ ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ arrayTypesOverrideDefaultField, ++ ++ // marker ++ @Marker marker, ++ ++ // Single-member (shorthand) ++ @SingleMemberByte(1) SingleMemberByte, ++ @SingleMemberShort(2) SingleMemberShort, ++ @SingleMemberInt(3) SingleMemberInt, ++ @SingleMemberLong(4L) SingleMemberLong, ++ @SingleMemberChar('5') SingleMemberChar, ++ @SingleMemberFloat(6.0f) SingleMemberFloat, ++ @SingleMemberDouble(7.0) SingleMemberDouble, ++ @SingleMemberBoolean(true) SingleMemberBoolean, ++ @SingleMemberString("custom") SingleMemberString, ++ @SingleMemberClass(Map.class) SingleMemberClass, ++ @SingleMemberEnum(Stooge.MOE) SingleMemberEnum, ++ ++ // Single-member with default (Override) ++ @SingleMemberByteWithDef(1) SingleMemberByteOvrdDef, ++ @SingleMemberShortWithDef(2) SingleMemberShortOvrdDef, ++ @SingleMemberIntWithDef(3) SingleMemberIntOvrdDef, ++ @SingleMemberLongWithDef(4L) SingleMemberLongOvrdDef, ++ @SingleMemberCharWithDef('5') SingleMemberCharOvrdDef, ++ @SingleMemberFloatWithDef(6.0f) SingleMemberFloatOvrdDef, ++ @SingleMemberDoubleWithDef(7.0) SingleMemberDoubleOvrdDef, ++ @SingleMemberBooleanWithDef(true) SingleMemberBooleanOvrdDef, ++ @SingleMemberStringWithDef("custom") SingleMemberStringOvrdDef, ++ @SingleMemberClassWithDef(Map.class) SingleMemberClassOvrdDef, ++ @SingleMemberEnumWithDef(Stooge.MOE) SingleMemberEnumOvrdDef, ++ ++ // Single-member with default (Accept) ++ @SingleMemberByteWithDef SingleMemberByteAcceptDef, ++ @SingleMemberShortWithDef SingleMemberShortAcceptDef, ++ @SingleMemberIntWithDef SingleMemberIntAcceptDef, ++ @SingleMemberLongWithDef SingleMemberLongAcceptDef, ++ @SingleMemberCharWithDef SingleMemberCharAcceptDef, ++ @SingleMemberFloatWithDef SingleMemberFloatAcceptDef, ++ @SingleMemberDoubleWithDef SingleMemberDoubleAcceptDef, ++ @SingleMemberBooleanWithDef SingleMemberBooleanAcceptDef, ++ @SingleMemberStringWithDef SingleMemberStringAcceptDef, ++ @SingleMemberClassWithDef SingleMemberClassAcceptDef, ++ @SingleMemberEnumWithDef SingleMemberEnumAcceptDef, ++ ++ // Single member array (empty array) ++ @SingleMemberByteArray({}) SingleMemberByteArrEmpty, ++ @SingleMemberShortArray({}) SingleMemberShortArrEmpty, ++ @SingleMemberIntArray({}) SingleMemberIntArrEmpty, ++ @SingleMemberLongArray({}) SingleMemberLongArrEmpty, ++ @SingleMemberCharArray({}) SingleMemberCharArrEmpty, ++ @SingleMemberFloatArray({}) SingleMemberFloatArrEmpty, ++ @SingleMemberDoubleArray({}) SingleMemberDoubleArrEmpty, ++ @SingleMemberBooleanArray({})SingleMemberBooleanArrEmpty, ++ @SingleMemberStringArray({}) SingleMemberStringArrEmpty, ++ @SingleMemberClassArray({}) SingleMemberClassArrEmpty, ++ @SingleMemberEnumArray({}) SingleMemberEnumArrEmpty, ++ ++ // Single member array (one-element shorthand) ++ @SingleMemberByteArray(1) SingleMemberByteArrOne, ++ @SingleMemberShortArray(2) SingleMemberShortArrOne, ++ @SingleMemberIntArray(3) SingleMemberIntArrOne, ++ @SingleMemberLongArray(4L) SingleMemberLongArrOne, ++ @SingleMemberCharArray('5') SingleMemberCharArrOne, ++ @SingleMemberFloatArray(6.0f) SingleMemberFloatArrOne, ++ @SingleMemberDoubleArray(7.0) SingleMemberDoubleArrOne, ++ @SingleMemberBooleanArray(true) SingleMemberBooleanArrOne, ++ @SingleMemberStringArray("custom") SingleMemberStringArrOne, ++ @SingleMemberClassArray(Map.class) SingleMemberClassArrOne, ++ @SingleMemberEnumArray(Stooge.MOE) SingleMemberEnumArrOne, ++ ++ // Single member array (two elements) ++ @SingleMemberByteArray({1, 2}) SingleMemberByteArrTwo, ++ @SingleMemberShortArray({2, 3}) SingleMemberShortArrTwo, ++ @SingleMemberIntArray({3, 4}) SingleMemberIntArrTwo, ++ @SingleMemberLongArray({4L, 5L}) SingleMemberLongArrTwo, ++ @SingleMemberCharArray({'5', '6'}) SingleMemberCharArrTwo, ++ @SingleMemberFloatArray({6.0f, 7.0f}) SingleMemberFloatArrTwo, ++ @SingleMemberDoubleArray({7.0, 8.0}) SingleMemberDoubleArrTwo, ++ @SingleMemberBooleanArray({true,false}) SingleMemberBooleanArrTwo, ++ @SingleMemberStringArray({"custom", "paint"}) SingleMemberStringArrTwo, ++ @SingleMemberClassArray({Map.class, Set.class}) SingleMemberClassArrTwo, ++ @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) SingleMemberEnumArrTwo, ++ ++ // Single member array with default (override) ++ @SingleMemberByteArrayDef(1) SingleMemberByteArrOvrdDef, ++ @SingleMemberShortArrayDef(2) SingleMemberShortArrOvrdDef, ++ @SingleMemberIntArrayDef(3) SingleMemberIntArrOvrdDef, ++ @SingleMemberLongArrayDef(4L) SingleMemberLongArrOvrdDef, ++ @SingleMemberCharArrayDef('5') SingleMemberCharArrOvrdDef, ++ @SingleMemberFloatArrayDef(6.0f) SingleMemberFloatArrOvrdDef, ++ @SingleMemberDoubleArrayDef(7.0) SingleMemberDoubleArrOvrdDef, ++ @SingleMemberBooleanArrayDef(true) SingleMemberBooleanArrOvrdDef, ++ @SingleMemberStringArrayDef("custom") SingleMemberStringArrOvrdDef, ++ @SingleMemberClassArrayDef(Map.class) SingleMemberClassArrOvrdDef, ++ @SingleMemberEnumArrayDef(Stooge.MOE) SingleMemberEnumArrOvrdDef, ++ ++ // Single member array with default - accept ++ @SingleMemberByteArrayDef SingleMemberByteArrAcceptDef, ++ @SingleMemberShortArrayDef SingleMemberShortArrAcceptDef, ++ @SingleMemberIntArrayDef SingleMemberIntArrAcceptDef, ++ @SingleMemberLongArrayDef SingleMemberLongArrAcceptDef, ++ @SingleMemberCharArrayDef SingleMemberCharArrAcceptDef, ++ @SingleMemberFloatArrayDef SingleMemberFloatArrAcceptDef, ++ @SingleMemberDoubleArrayDef SingleMemberDoubleArrAcceptDef, ++ @SingleMemberBooleanArrayDef SingleMemberBooleanArrAcceptDef, ++ @SingleMemberStringArrayDef SingleMemberStringArrAcceptDef, ++ @SingleMemberClassArrayDef SingleMemberClassArrAcceptDef, ++ @SingleMemberEnumArrayDef SingleMemberEnumArrAcceptDef, ++ } ++ ++ // ANNOTATED CONSTRUCTORS ++ ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ public UnitTest(Iterator it) { } // scalar types ++ ++ @ScalarTypesWithDefault ( ) ++ public UnitTest(Set s) { } // scalarTypesAcceptDefault ++ ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ public UnitTest(Map s) { } // scalarTypesOverrideDefault ++ ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ public UnitTest(List l){ } // emptyArrayTypes ++ ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ public UnitTest(Collection c) { } // singleElementArrayTypes ++ ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ public UnitTest(SortedSet ss) { } // twoElementArrayTypes ++ ++ @ArrayTypesWithDefault ( ) ++ public UnitTest(SortedMap sm) { } // arrayTypesAcceptDefault ++ ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ public UnitTest(RandomAccess r) { } // arrayTypesOverrideDefault ++ ++ // Marker ++ @Marker public UnitTest() { } // marker ++ ++ // Single-member (shorthand) ++ @SingleMemberByte(1) public UnitTest(byte b) { } ++ @SingleMemberShort(2) public UnitTest(short s) { } ++ @SingleMemberInt(3) public UnitTest(int i) { } ++ @SingleMemberLong(4L) public UnitTest(long l) { } ++ @SingleMemberChar('5') public UnitTest(char c) { } ++ @SingleMemberFloat(6.0f) public UnitTest(float f) { } ++ @SingleMemberDouble(7.0) public UnitTest(double d) { } ++ @SingleMemberBoolean(true) public UnitTest(boolean b) { } ++ @SingleMemberString("custom") public UnitTest(String s) { } ++ @SingleMemberClass(Map.class) public UnitTest(Class c) { } ++ @SingleMemberEnum(Stooge.MOE) public UnitTest(Enum e) { } ++ ++ // Single-member with default (Override) ++ @SingleMemberByteWithDef(1) public UnitTest(byte b, Set s) { } ++ @SingleMemberShortWithDef(2) public UnitTest(short s, Set x) { } ++ @SingleMemberIntWithDef(3) public UnitTest(int i, Set s) { } ++ @SingleMemberLongWithDef(4L) public UnitTest(long l, Set s) { } ++ @SingleMemberCharWithDef('5') public UnitTest(char c, Set s) { } ++ @SingleMemberFloatWithDef(6.0f) public UnitTest(float f, Set s) { } ++ @SingleMemberDoubleWithDef(7.0) public UnitTest(double d, Set s) { } ++ @SingleMemberBooleanWithDef(true) public UnitTest(boolean b, Set s) { } ++ @SingleMemberStringWithDef("custom") public UnitTest(String s, Set x) { } ++ @SingleMemberClassWithDef(Map.class) public UnitTest(Class c, Set s) { } ++ @SingleMemberEnumWithDef(Stooge.MOE) public UnitTest(Enum e, Set s) { } ++ ++ // Single-member with default (Accept) ++ @SingleMemberByteWithDef public UnitTest(byte b, Map m) { } ++ @SingleMemberShortWithDef public UnitTest(short s, Map m) { } ++ @SingleMemberIntWithDef public UnitTest(int i, Map m) { } ++ @SingleMemberLongWithDef public UnitTest(long l, Map m) { } ++ @SingleMemberCharWithDef public UnitTest(char c, Map m) { } ++ @SingleMemberFloatWithDef public UnitTest(float f, Map m) { } ++ @SingleMemberDoubleWithDef public UnitTest(double d, Map m) { } ++ @SingleMemberBooleanWithDef public UnitTest(boolean b, Map m) { } ++ @SingleMemberStringWithDef public UnitTest(String s, Map m) { } ++ @SingleMemberClassWithDef public UnitTest(Class c, Map m) { } ++ @SingleMemberEnumWithDef public UnitTest(Enum e, Map m) { } ++ ++ // Single member array (empty array) ++ @SingleMemberByteArray({}) public UnitTest(byte[] b) { } ++ @SingleMemberShortArray({}) public UnitTest(short[] s) { } ++ @SingleMemberIntArray({}) public UnitTest(int[] i) { } ++ @SingleMemberLongArray({}) public UnitTest(long[] l) { } ++ @SingleMemberCharArray({}) public UnitTest(char[] c) { } ++ @SingleMemberFloatArray({}) public UnitTest(float[] f) { } ++ @SingleMemberDoubleArray({}) public UnitTest(double[] d) { } ++ @SingleMemberBooleanArray({})public UnitTest(boolean[] b) { } ++ @SingleMemberStringArray({}) public UnitTest(String[] s) { } ++ @SingleMemberClassArray({}) public UnitTest(Class[] c) { } ++ @SingleMemberEnumArray({}) public UnitTest(Enum[] e) { } ++ ++ // Single member array (one-element shorthand) ++ @SingleMemberByteArray(1) public UnitTest(byte[] b, Set s) { } ++ @SingleMemberShortArray(2) public UnitTest(short[] s, Set x) { } ++ @SingleMemberIntArray(3) public UnitTest(int[] i, Set s) { } ++ @SingleMemberLongArray(4L) public UnitTest(long[] l, Set s) { } ++ @SingleMemberCharArray('5') public UnitTest(char[] c, Set s) { } ++ @SingleMemberFloatArray(6.0f) public UnitTest(float[] f, Set s) { } ++ @SingleMemberDoubleArray(7.0) public UnitTest(double[] d, Set s) { } ++ @SingleMemberBooleanArray(true) public UnitTest(boolean[] b, Set s) { } ++ @SingleMemberStringArray("custom") public UnitTest(String[] s, Set x) { } ++ @SingleMemberClassArray(Map.class) public UnitTest(Class[] c, Set s) { } ++ @SingleMemberEnumArray(Stooge.MOE) public UnitTest(Enum[] e, Set s) { } ++ ++ // Single member array (two elements) ++ @SingleMemberByteArray({1, 2}) public UnitTest(byte[] b, Map m) { } ++ @SingleMemberShortArray({2, 3}) public UnitTest(short[] s, Map m) { } ++ @SingleMemberIntArray({3, 4}) public UnitTest(int[] i, Map m) { } ++ @SingleMemberLongArray({4L, 5L}) public UnitTest(long[] l, Map m) { } ++ @SingleMemberCharArray({'5', '6'}) public UnitTest(char[] c, Map m) { } ++ @SingleMemberFloatArray({6.0f, 7.0f}) public UnitTest(float[] f, Map m) { } ++ @SingleMemberDoubleArray({7.0, 8.0}) public UnitTest(double[] d, Map m) { } ++ @SingleMemberBooleanArray({true, false}) public UnitTest(boolean[] b, Map m) { } ++ @SingleMemberStringArray({"custom", "paint"}) public UnitTest(String[] s, Map m) { } ++ @SingleMemberClassArray({Map.class,Set.class}) public UnitTest(Class[] c, Map m) { } ++ @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) public UnitTest(Enum[] e, Map m) { } ++ ++ ++ // Single member array with default (override) ++ @SingleMemberByteArrayDef(1) public UnitTest(byte[] b, List l) { } ++ @SingleMemberShortArrayDef(2) public UnitTest(short[] s, List l) { } ++ @SingleMemberIntArrayDef(3) public UnitTest(int[] i, List l) { } ++ @SingleMemberLongArrayDef(4L) public UnitTest(long[] l, List x) { } ++ @SingleMemberCharArrayDef('5') public UnitTest(char[] c, List l) { } ++ @SingleMemberFloatArrayDef(6.0f) public UnitTest(float[] f, List l) { } ++ @SingleMemberDoubleArrayDef(7.0) public UnitTest(double[] d, List l) { } ++ @SingleMemberBooleanArrayDef(true) public UnitTest(boolean[] b, List l) { } ++ @SingleMemberStringArrayDef("custom") public UnitTest(String[] s, List l) { } ++ @SingleMemberClassArrayDef(Map.class) public UnitTest(Class[] c, List l) { } ++ @SingleMemberEnumArrayDef(Stooge.MOE) public UnitTest(Enum[] e, List l) { } ++ ++ // Single member array with default - accept ++ @SingleMemberByteArrayDef public UnitTest(byte[] b, Collection c) { } ++ @SingleMemberShortArrayDef public UnitTest(short[] s, Collection c) { } ++ @SingleMemberIntArrayDef public UnitTest(int[] i, Collection c) { } ++ @SingleMemberLongArrayDef public UnitTest(long[] l, Collection c) { } ++ @SingleMemberCharArrayDef public UnitTest(char[] c, Collection x) { } ++ @SingleMemberFloatArrayDef public UnitTest(float[] f, Collection c) { } ++ @SingleMemberDoubleArrayDef public UnitTest(double[] d, Collection c) { } ++ @SingleMemberBooleanArrayDef public UnitTest(boolean[] b, Collection c) { } ++ @SingleMemberStringArrayDef public UnitTest(String[] s, Collection c) { } ++ @SingleMemberClassArrayDef public UnitTest(Class[] c, Collection x) { } ++ @SingleMemberEnumArrayDef public UnitTest(Enum[] e, Collection c) { } ++ ++ // ANNOTATED PARAMETERS ++ ++ public void scalarTypesParam( ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ int x) { } ++ ++ ++ public void scalarTypesAcceptDefaultParam( ++ @ScalarTypesWithDefault int x) { } ++ ++ public void scalarTypesOverrideDefaultParam( ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ int x) { } ++ ++ public void emptyArrayTypesParam( ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ int x) { } ++ ++ public void singleElementArrayTypesParam( ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ int x) { } ++ ++ public void twoElementArrayTypesParam( ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ int x) { } ++ ++ public void arrayTypesAcceptDefaultParam( ++ @ArrayTypesWithDefault ++ int x) { } ++ ++ public void arrayTypesOverrideDefaultParam( ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ int x) { } ++ ++ // Marker ++ public void markerParam(@Marker int x) { } ++ ++ // Single-member (shorthand) ++ public void SingleMemberByteParam(@SingleMemberByte(1) int x) {} ++ public void SingleMemberShortParam(@SingleMemberShort(2) int x) {} ++ public void SingleMemberIntParam(@SingleMemberInt(3) int x) {} ++ public void SingleMemberLongParam(@SingleMemberLong(4L) int x) {} ++ public void SingleMemberCharParam(@SingleMemberChar('5') int x) {} ++ public void SingleMemberFloatParam(@SingleMemberFloat(6.0f) int x) {} ++ public void SingleMemberDoubleParam(@SingleMemberDouble(7.0) int x) {} ++ public void SingleMemberBooleanParam(@SingleMemberBoolean(true) int x) {} ++ public void SingleMemberStringParam(@SingleMemberString("custom") int x) {} ++ public void SingleMemberClassParam(@SingleMemberClass(Map.class) int x) {} ++ public void SingleMemberEnumParam(@SingleMemberEnum(Stooge.MOE) int x) {} ++ ++ // Single-member with default (Override) ++ public void SingleMemberByteOvrdDefParam(@SingleMemberByteWithDef(1) int x) {} ++ public void SingleMemberShortOvrdDefParam(@SingleMemberShortWithDef(2) int x) {} ++ public void SingleMemberIntOvrdDefParam(@SingleMemberIntWithDef(3) int x) {} ++ public void SingleMemberLongOvrdDefParam(@SingleMemberLongWithDef(4L) int x) {} ++ public void SingleMemberCharOvrdDefParam(@SingleMemberCharWithDef('5') int x) {} ++ public void SingleMemberFloatOvrdDefParam(@SingleMemberFloatWithDef(6.0f) int x) {} ++ public void SingleMemberDoubleOvrdDefParam(@SingleMemberDoubleWithDef(7.0) int x) {} ++ public void SingleMemberBooleanOvrdDefParam(@SingleMemberBooleanWithDef(true) int x) {} ++ public void SingleMemberStringOvrdDefParam(@SingleMemberStringWithDef("custom") int x) {} ++ public void SingleMemberClassOvrdDefParam(@SingleMemberClassWithDef(Map.class) int x) {} ++ public void SingleMemberEnumOvrdDefParam(@SingleMemberEnumWithDef(Stooge.MOE) int x) {} ++ ++ // Single-member with default (Accept) ++ public void SingleMemberByteAcceptDefParam(@SingleMemberByteWithDef int x) {} ++ public void SingleMemberShortAcceptDefParam(@SingleMemberShortWithDef int x) {} ++ public void SingleMemberIntAcceptDefParam(@SingleMemberIntWithDef int x) {} ++ public void SingleMemberLongAcceptDefParam(@SingleMemberLongWithDef int x) {} ++ public void SingleMemberCharAcceptDefParam(@SingleMemberCharWithDef int x) {} ++ public void SingleMemberFloatAcceptDefParam(@SingleMemberFloatWithDef int x) {} ++ public void SingleMemberDoubleAcceptDefParam(@SingleMemberDoubleWithDef int x) {} ++ public void SingleMemberBooleanAcceptDefParam(@SingleMemberBooleanWithDef int x){} ++ public void SingleMemberStringAcceptDefParam(@SingleMemberStringWithDef int x) {} ++ public void SingleMemberClassAcceptDefParam(@SingleMemberClassWithDef int x) {} ++ public void SingleMemberEnumAcceptDefParam(@SingleMemberEnumWithDef int x) {} ++ ++ // Single member array (empty array) ++ public void SingleMemberByteArrEmptyParam(@SingleMemberByteArray({}) int x) {} ++ public void SingleMemberShortArrEmptyParam(@SingleMemberShortArray({}) int x) {} ++ public void SingleMemberIntArrEmptyParam(@SingleMemberIntArray({}) int x) {} ++ public void SingleMemberLongArrEmptyParam(@SingleMemberLongArray({}) int x) {} ++ public void SingleMemberCharArrEmptyParam(@SingleMemberCharArray({}) int x) {} ++ public void SingleMemberFloatArrEmptyParam(@SingleMemberFloatArray({}) int x) {} ++ public void SingleMemberDoubleArrEmptyParam(@SingleMemberDoubleArray({}) int x) {} ++ public void SingleMemberBooleanArrEmptyParam(@SingleMemberBooleanArray({}) int x) {} ++ public void SingleMemberStringArrEmptyParam(@SingleMemberStringArray({}) int x) {} ++ public void SingleMemberClassArrEmptyParam(@SingleMemberClassArray({}) int x) {} ++ public void SingleMemberEnumArrEmptyParam(@SingleMemberEnumArray({}) int x) {} ++ ++ // Single member array (one-element shorthand) ++ public void SingleMemberByteArrOneParam(@SingleMemberByteArray(1) int x) {} ++ public void SingleMemberShortArrOneParam(@SingleMemberShortArray(2) int x) {} ++ public void SingleMemberIntArrOneParam(@SingleMemberIntArray(3) int x) {} ++ public void SingleMemberLongArrOneParam(@SingleMemberLongArray(4L) int x) {} ++ public void SingleMemberCharArrOneParam(@SingleMemberCharArray('5') int x) {} ++ public void SingleMemberFloatArrOneParam(@SingleMemberFloatArray(6.0f) int x) {} ++ public void SingleMemberDoubleArrOneParam(@SingleMemberDoubleArray(7.0) int x) {} ++ public void SingleMemberBooleanArrOneParam(@SingleMemberBooleanArray(true) int x) {} ++ public void SingleMemberStringArrOneParam(@SingleMemberStringArray("custom") int x) {} ++ public void SingleMemberClassArrOneParam(@SingleMemberClassArray(Map.class) int x) {} ++ public void SingleMemberEnumArrOneParam(@SingleMemberEnumArray(Stooge.MOE) int x) {} ++ ++ // Single member array (two elements) ++ public void SingleMemberByteArrTwoParam(@SingleMemberByteArray({1, 2}) int x) {} ++ public void SingleMemberShortArrTwoParam(@SingleMemberShortArray({2, 3}) int x) {} ++ public void SingleMemberIntArrTwoParam(@SingleMemberIntArray({3, 4}) int x) {} ++ public void SingleMemberLongArrTwoParam(@SingleMemberLongArray({4L, 5L}) int x) {} ++ public void SingleMemberCharArrTwoParam(@SingleMemberCharArray({'5', '6'}) int x) {} ++ public void SingleMemberFloatArrTwoParam(@SingleMemberFloatArray({6.0f, 7.0f}) int x) {} ++ public void SingleMemberDoubleArrTwoParam(@SingleMemberDoubleArray({7.0, 8.0}) int x) {} ++ public void SingleMemberBooleanArrTwoParam(@SingleMemberBooleanArray({true, false}) int x){} ++ public void SingleMemberStringArrTwoParam(@SingleMemberStringArray({"custom", "paint"}) int x) {} ++ public void SingleMemberClassArrTwoParam(@SingleMemberClassArray({Map.class, Set.class}) int x) {} ++ public void SingleMemberEnumArrTwoParam(@SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) int x) {} ++ ++ // Single member array with default (override) ++ public void SingleMemberByteArrOvrdDefParam(@SingleMemberByteArrayDef(1) int x) {} ++ public void SingleMemberShortArrOvrdDefParam(@SingleMemberShortArrayDef(2) int x) {} ++ public void SingleMemberIntArrOvrdDefParam(@SingleMemberIntArrayDef(3) int x) {} ++ public void SingleMemberLongArrOvrdDefParam(@SingleMemberLongArrayDef(4L) int x) {} ++ public void SingleMemberCharArrOvrdDefParam(@SingleMemberCharArrayDef('5') int x) {} ++ public void SingleMemberFloatArrOvrdDefParam(@SingleMemberFloatArrayDef(6.0f) int x) {} ++ public void SingleMemberDoubleArrOvrdDefParam(@SingleMemberDoubleArrayDef(7.0) int x) {} ++ public void SingleMemberBooleanArrOvrdDefParam(@SingleMemberBooleanArrayDef(true) int x){} ++ public void SingleMemberStringArrOvrdDefParam(@SingleMemberStringArrayDef("custom") int x) {} ++ public void SingleMemberClassArrOvrdDefParam(@SingleMemberClassArrayDef(Map.class) int x) {} ++ public void SingleMemberEnumArrOvrdDefParam(@SingleMemberEnumArrayDef(Stooge.MOE) int x) {} ++ ++ // Single member array with default - accept ++ public void SingleMemberByteArrAcceptDefParam(@SingleMemberByteArrayDef int x) {} ++ public void SingleMemberShortArrAcceptDefParam(@SingleMemberShortArrayDef int x) {} ++ public void SingleMemberIntArrAcceptDefParam(@SingleMemberIntArrayDef int x) {} ++ public void SingleMemberLongArrAcceptDefParam(@SingleMemberLongArrayDef int x) {} ++ public void SingleMemberCharArrAcceptDefParam(@SingleMemberCharArrayDef int x) {} ++ public void SingleMemberFloatArrAcceptDefParam(@SingleMemberFloatArrayDef int x) {} ++ public void SingleMemberDoubleArrAcceptDefParam(@SingleMemberDoubleArrayDef int x) {} ++ public void SingleMemberBooleanArrAcceptDefParam(@SingleMemberBooleanArrayDef int x){} ++ public void SingleMemberStringArrAcceptDefParam(@SingleMemberStringArrayDef int x) {} ++ public void SingleMemberClassArrAcceptDefParam(@SingleMemberClassArrayDef int x) {} ++ public void SingleMemberEnumArrAcceptDefParam(@SingleMemberEnumArrayDef int x) {} ++} ++ ++// Helper types ++ ++enum Stooge { LARRY, MOE, CURLY } ++ ++ at Target({}) @interface Point { int x(); int y(); } ++ ++// ANNOTATION TYPES ++ ++ at Retention(RUNTIME) @interface ScalarTypes { ++ byte b(); ++ short s(); ++ int i(); ++ long l(); ++ char c(); ++ float f(); ++ double d(); ++ boolean bool(); ++ String str(); ++ Class cls(); ++ Stooge e(); ++ Point a(); ++} ++ ++ at Retention(RUNTIME) @interface ScalarTypesWithDefault { ++ byte b() default 11; ++ short s() default 12; ++ int i() default 13; ++ long l() default 14; ++ char c() default 'V'; ++ float f() default 16.0f; ++ double d() default 17.0; ++ boolean bool() default false; ++ String str() default "default"; ++ Class cls() default Class.class; ++ Stooge e() default Stooge.LARRY; ++ Point a() default @Point(x = 11, y = 12); ++} ++ ++ at Retention(RUNTIME) @interface ArrayTypes { ++ byte[] b(); ++ short[] s(); ++ int[] i(); ++ long[] l(); ++ char[] c(); ++ float[] f(); ++ double[] d(); ++ boolean[] bool(); ++ String[] str(); ++ Class[] cls(); ++ Stooge[] e(); ++ Point[] a(); ++} ++ ++ at Retention(RUNTIME) @interface ArrayTypesWithDefault { ++ byte[] b() default { 11 }; ++ short[] s() default { 12 }; ++ int[] i() default { 13 }; ++ long[] l() default { 14L }; ++ char[] c() default { 'V' }; ++ float[] f() default { 16.0f }; ++ double[] d() default { 17.0 }; ++ boolean[] bool() default { false }; ++ String[] str() default { "default" }; ++ Class[] cls() default { Class.class }; ++ Stooge[] e() default { Stooge.LARRY }; ++ Point[] a() default { @Point(x = 11, y = 12) }; ++} ++ ++ at Retention(RUNTIME) @interface Marker { } ++ ++ at Retention(RUNTIME) @interface SingleMemberByte { byte value(); } ++ at Retention(RUNTIME) @interface SingleMemberShort { short value(); } ++ at Retention(RUNTIME) @interface SingleMemberInt { int value(); } ++ at Retention(RUNTIME) @interface SingleMemberLong { long value(); } ++ at Retention(RUNTIME) @interface SingleMemberChar { char value(); } ++ at Retention(RUNTIME) @interface SingleMemberFloat { float value(); } ++ at Retention(RUNTIME) @interface SingleMemberDouble { double value(); } ++ at Retention(RUNTIME) @interface SingleMemberBoolean { boolean value(); } ++ at Retention(RUNTIME) @interface SingleMemberString { String value(); } ++ at Retention(RUNTIME) @interface SingleMemberClass { Class value(); } ++ at Retention(RUNTIME) @interface SingleMemberEnum { Stooge value(); } ++ ++ at Retention(RUNTIME) @interface SingleMemberByteWithDef { byte value() default 11; } ++ at Retention(RUNTIME) @interface SingleMemberShortWithDef { short value() default 12; } ++ at Retention(RUNTIME) @interface SingleMemberIntWithDef { int value() default 13; } ++ at Retention(RUNTIME) @interface SingleMemberLongWithDef { long value() default 14; } ++ at Retention(RUNTIME) @interface SingleMemberCharWithDef { char value() default 'V'; } ++ at Retention(RUNTIME) @interface SingleMemberFloatWithDef { float value() default 16.0f; } ++ at Retention(RUNTIME) @interface SingleMemberDoubleWithDef { double value() default 17.0; } ++ at Retention(RUNTIME) @interface SingleMemberBooleanWithDef { boolean value() default false; } ++ at Retention(RUNTIME) @interface SingleMemberStringWithDef { String value() default "default"; } ++ at Retention(RUNTIME) @interface SingleMemberClassWithDef { Class value() default Class.class; } ++ at Retention(RUNTIME) @interface SingleMemberEnumWithDef { Stooge value() default Stooge.LARRY; } ++ ++ at Retention(RUNTIME) @interface SingleMemberByteArray { byte[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberShortArray { short[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberIntArray { int[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberLongArray { long[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberCharArray { char[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberFloatArray { float[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberDoubleArray { double[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberBooleanArray { boolean[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberStringArray { String[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberClassArray { Class[] value(); } ++ at Retention(RUNTIME) @interface SingleMemberEnumArray { Stooge[] value(); } ++ ++ at Retention(RUNTIME) @interface SingleMemberByteArrayDef { byte[] value() default { 11 }; } ++ at Retention(RUNTIME) @interface SingleMemberShortArrayDef { short[] value() default { 12 }; } ++ at Retention(RUNTIME) @interface SingleMemberIntArrayDef { int[] value() default { 13 }; } ++ at Retention(RUNTIME) @interface SingleMemberLongArrayDef { long[] value() default { 14 }; } ++ at Retention(RUNTIME) @interface SingleMemberCharArrayDef { char[] value() default { 'V' }; } ++ at Retention(RUNTIME) @interface SingleMemberFloatArrayDef { float[] value() default { 16.0f };} ++ at Retention(RUNTIME) @interface SingleMemberDoubleArrayDef { double[] value() default { 17.0 }; } ++ at Retention(RUNTIME) @interface SingleMemberBooleanArrayDef { boolean[] value() default { false };} ++ at Retention(RUNTIME) @interface SingleMemberStringArrayDef { ++ String[] value() default {"default"}; ++} ++ at Retention(RUNTIME) @interface SingleMemberClassArrayDef { ++ Class[] value() default {Class.class}; ++} ++ at Retention(RUNTIME) @interface SingleMemberEnumArrayDef { ++ Stooge[] value() default {Stooge.LARRY}; ++} ++ ++// Annotation types for inheritance and declared-annotations tests ++ at Inherited @Retention(RUNTIME) @interface Foo { } ++ @Retention(RUNTIME) @interface Bar { } ++ ++ ++ // ANNOTATED CLASSES ++ ++ @ScalarTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ class scalarTypesClass { } ++ ++ @ScalarTypesWithDefault ( ) ++ class scalarTypesAcceptDefaultClass { } ++ ++ @ScalarTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE ++ ) ++ class scalarTypesOverrideDefaultClass { } ++ ++ @ArrayTypes ( ++ b = { }, ++ s = { }, ++ i = { }, ++ l = { }, ++ c = { }, ++ f = { }, ++ d = { }, ++ bool = { }, ++ str = { }, ++ cls = { }, ++ e = { }, ++ a = { } ++ ) ++ class emptyArrayTypesClass { } ++ ++ @ArrayTypes ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = @Point(x = 1, y = 2) ++ ) ++ class singleElementArrayTypesClass { } ++ ++ @ArrayTypes ( ++ b = { 1, 2 }, ++ s = { 2, 3 }, ++ i = { 3, 4 }, ++ l = { 4L, 5L }, ++ c = { '5', '6' }, ++ f = { 6.0f, 7.0f }, ++ d = { 7.0, 8.0 }, ++ bool = { true, false }, ++ str = { "custom", "paint" }, ++ cls = { Map.class, Set.class }, ++ e = { Stooge.MOE, Stooge.CURLY }, ++ a = { @Point(x = 1, y = 2), @Point(x = 3, y = 4) } ++ ) ++ class twoElementArrayTypesClass { } ++ ++ @ArrayTypesWithDefault ( ++ ) ++ class arrayTypesAcceptDefaultClass { } ++ ++ @ArrayTypesWithDefault ( ++ b = 1, ++ s = 2, ++ i = 3, ++ l = 4L, ++ c = '5', ++ f = 6.0f, ++ d = 7.0, ++ bool = true, ++ str = "custom", ++ cls = Map.class, ++ e = Stooge.MOE, ++ a = { @Point(x = 1, y = 2) } ++ ) ++ class arrayTypesOverrideDefaultClass { } ++ ++ @Marker class markerClass { } ++ ++ // Single-member (shorthand) ++ @SingleMemberByte(1) class SingleMemberByteClass { } ++ @SingleMemberShort(2) class SingleMemberShortClass { } ++ @SingleMemberInt(3) class SingleMemberIntClass { } ++ @SingleMemberLong(4L) class SingleMemberLongClass { } ++ @SingleMemberChar('5') class SingleMemberCharClass { } ++ @SingleMemberFloat(6.0f) class SingleMemberFloatClass { } ++ @SingleMemberDouble(7.0) class SingleMemberDoubleClass { } ++ @SingleMemberBoolean(true) class SingleMemberBooleanClass { } ++ @SingleMemberString("custom") class SingleMemberStringClass { } ++ @SingleMemberClass(Map.class) class SingleMemberClassClass { } ++ @SingleMemberEnum(Stooge.MOE) class SingleMemberEnumClass { } ++ ++ // Single-member with default (Override) ++ @SingleMemberByteWithDef(1) class SingleMemberByteOvrdDefClass { } ++ @SingleMemberShortWithDef(2) class SingleMemberShortOvrdDefClass { } ++ @SingleMemberIntWithDef(3) class SingleMemberIntOvrdDefClass { } ++ @SingleMemberLongWithDef(4L) class SingleMemberLongOvrdDefClass { } ++ @SingleMemberCharWithDef('5') class SingleMemberCharOvrdDefClass { } ++ @SingleMemberFloatWithDef(6.0f) class SingleMemberFloatOvrdDefClass { } ++ @SingleMemberDoubleWithDef(7.0) class SingleMemberDoubleOvrdDefClass { } ++ @SingleMemberBooleanWithDef(true) class SingleMemberBooleanOvrdDefClass { } ++ @SingleMemberStringWithDef("custom") class SingleMemberStringOvrdDefClass { } ++ @SingleMemberClassWithDef(Map.class) class SingleMemberClassOvrdDefClass { } ++ @SingleMemberEnumWithDef(Stooge.MOE) class SingleMemberEnumOvrdDefClass { } ++ ++ // Single-member with default (Accept) ++ @SingleMemberByteWithDef class SingleMemberByteAcceptDefClass { } ++ @SingleMemberShortWithDef class SingleMemberShortAcceptDefClass { } ++ @SingleMemberIntWithDef class SingleMemberIntAcceptDefClass { } ++ @SingleMemberLongWithDef class SingleMemberLongAcceptDefClass { } ++ @SingleMemberCharWithDef class SingleMemberCharAcceptDefClass { } ++ @SingleMemberFloatWithDef class SingleMemberFloatAcceptDefClass { } ++ @SingleMemberDoubleWithDef class SingleMemberDoubleAcceptDefClass { } ++ @SingleMemberBooleanWithDef class SingleMemberBooleanAcceptDefClass { } ++ @SingleMemberStringWithDef class SingleMemberStringAcceptDefClass { } ++ @SingleMemberClassWithDef class SingleMemberClassAcceptDefClass { } ++ @SingleMemberEnumWithDef class SingleMemberEnumAcceptDefClass { } ++ ++ // Single member array (empty array) ++ @SingleMemberByteArray({}) class SingleMemberByteArrEmptyClass { } ++ @SingleMemberShortArray({}) class SingleMemberShortArrEmptyClass { } ++ @SingleMemberIntArray({}) class SingleMemberIntArrEmptyClass { } ++ @SingleMemberLongArray({}) class SingleMemberLongArrEmptyClass { } ++ @SingleMemberCharArray({}) class SingleMemberCharArrEmptyClass { } ++ @SingleMemberFloatArray({}) class SingleMemberFloatArrEmptyClass { } ++ @SingleMemberDoubleArray({}) class SingleMemberDoubleArrEmptyClass { } ++ @SingleMemberBooleanArray({})class SingleMemberBooleanArrEmptyClass { } ++ @SingleMemberStringArray({}) class SingleMemberStringArrEmptyClass { } ++ @SingleMemberClassArray({}) class SingleMemberClassArrEmptyClass { } ++ @SingleMemberEnumArray({}) class SingleMemberEnumArrEmptyClass { } ++ ++ // Single member array (one-element shorthand) ++ @SingleMemberByteArray(1) class SingleMemberByteArrOneClass { } ++ @SingleMemberShortArray(2) class SingleMemberShortArrOneClass { } ++ @SingleMemberIntArray(3) class SingleMemberIntArrOneClass { } ++ @SingleMemberLongArray(4L) class SingleMemberLongArrOneClass { } ++ @SingleMemberCharArray('5') class SingleMemberCharArrOneClass { } ++ @SingleMemberFloatArray(6.0f) class SingleMemberFloatArrOneClass { } ++ @SingleMemberDoubleArray(7.0) class SingleMemberDoubleArrOneClass { } ++ @SingleMemberBooleanArray(true) class SingleMemberBooleanArrOneClass { } ++ @SingleMemberStringArray("custom") class SingleMemberStringArrOneClass { } ++ @SingleMemberClassArray(Map.class) class SingleMemberClassArrOneClass { } ++ @SingleMemberEnumArray(Stooge.MOE) class SingleMemberEnumArrOneClass { } ++ ++ // Single member array (two elements) ++ @SingleMemberByteArray({1, 2}) class SingleMemberByteArrTwoClass { } ++ @SingleMemberShortArray({2, 3}) class SingleMemberShortArrTwoClass { } ++ @SingleMemberIntArray({3, 4}) class SingleMemberIntArrTwoClass { } ++ @SingleMemberLongArray({4L, 5L}) class SingleMemberLongArrTwoClass { } ++ @SingleMemberCharArray({'5', '6'}) class SingleMemberCharArrTwoClass { } ++ @SingleMemberFloatArray({6.0f, 7.0f}) class SingleMemberFloatArrTwoClass { } ++ @SingleMemberDoubleArray({7.0, 8.0}) class SingleMemberDoubleArrTwoClass { } ++ @SingleMemberBooleanArray({true,false}) class SingleMemberBooleanArrTwoClass { } ++ @SingleMemberStringArray({"custom", "paint"}) class SingleMemberStringArrTwoClass { } ++ @SingleMemberClassArray({Map.class, Set.class}) class SingleMemberClassArrTwoClass { } ++ @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) class SingleMemberEnumArrTwoClass { } ++ ++ // Single member array with default (override) ++ @SingleMemberByteArrayDef(1) class SingleMemberByteArrOvrdDefClass { } ++ @SingleMemberShortArrayDef(2) class SingleMemberShortArrOvrdDefClass { } ++ @SingleMemberIntArrayDef(3) class SingleMemberIntArrOvrdDefClass { } ++ @SingleMemberLongArrayDef(4L) class SingleMemberLongArrOvrdDefClass { } ++ @SingleMemberCharArrayDef('5') class SingleMemberCharArrOvrdDefClass { } ++ @SingleMemberFloatArrayDef(6.0f) class SingleMemberFloatArrOvrdDefClass { } ++ @SingleMemberDoubleArrayDef(7.0) class SingleMemberDoubleArrOvrdDefClass { } ++ @SingleMemberBooleanArrayDef(true) class SingleMemberBooleanArrOvrdDefClass { } ++ @SingleMemberStringArrayDef("custom") class SingleMemberStringArrOvrdDefClass { } ++ @SingleMemberClassArrayDef(Map.class) class SingleMemberClassArrOvrdDefClass { } ++ @SingleMemberEnumArrayDef(Stooge.MOE) class SingleMemberEnumArrOvrdDefClass { } ++ ++ // Single member array with default - accept ++ @SingleMemberByteArrayDef class SingleMemberByteArrAcceptDefClass { } ++ @SingleMemberShortArrayDef class SingleMemberShortArrAcceptDefClass { } ++ @SingleMemberIntArrayDef class SingleMemberIntArrAcceptDefClass { } ++ @SingleMemberLongArrayDef class SingleMemberLongArrAcceptDefClass { } ++ @SingleMemberCharArrayDef class SingleMemberCharArrAcceptDefClass { } ++ @SingleMemberFloatArrayDef class SingleMemberFloatArrAcceptDefClass { } ++ @SingleMemberDoubleArrayDef class SingleMemberDoubleArrAcceptDefClass { } ++ @SingleMemberBooleanArrayDef class SingleMemberBooleanArrAcceptDefClass { } ++ @SingleMemberStringArrayDef class SingleMemberStringArrAcceptDefClass { } ++ @SingleMemberClassArrayDef class SingleMemberClassArrAcceptDefClass { } ++ @SingleMemberEnumArrayDef class SingleMemberEnumArrAcceptDefClass { } ++ ++ // Annotated classes for inheritance and declared-annotations tests ++ @Foo @Bar class Grandpa { } ++ class Dad extends Grandpa { } ++ @Bar class Son extends Dad { } diff -r 3b8dcbd3d44d patches/openjdk/bidi-tests.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/bidi-tests.patch Wed Feb 11 02:15:37 2009 +0000 @@ -0,0 +1,295 @@ + +# HG changeset patch +# User peytoia +# Date 1224218043 -32400 +# Node ID 8ea49fa4c2f761eeb67711ba2fa5482cb3b0347c +# Parent 244f62312fec34c292e082ba3bb9c76aef30858e +6759521: Move Bidi test programs from closed to open. +Reviewed-by: okutsu + +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/text/Bidi/BidiBug.java Fri Oct 17 13:34:03 2008 +0900 +@@ -0,0 +1,41 @@ ++/* ++ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 4827312 ++ * @summary verify that argument validity check is not fooled by overflow ++ */ ++public class BidiBug { ++ public static void main(String[] args) { ++ try { ++ byte buff[] = new byte[3000]; ++ java.text.Bidi bidi = new java.text.Bidi(new char[20],10,buff,Integer.MAX_VALUE-3,4,1); ++ } ++ catch (IllegalArgumentException e) { ++ System.out.println(e); ++ return; // success ++ } ++ throw new RuntimeException("didn't throw error, though we didn't crash either"); ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/text/Bidi/BidiEmbeddingTest.java Fri Oct 17 13:34:03 2008 +0900 +@@ -0,0 +1,132 @@ ++/* ++ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 4396492 4396496 4778510 ++ * @summary verify that the embedding values processed by the bidi code use negative values to ++ * indicate overrides, rather than using bit 7. Also tests Bidi without loading awt classes to ++ * confirm that Bidi can be used without awt. Verify that embedding level 0 is properly mapped ++ * to the base embedding level. ++ */ ++ ++import java.awt.Color; ++import java.awt.Frame; ++import java.awt.font.TextAttribute; ++import java.text.AttributedString; ++import java.text.Bidi; ++ ++public class BidiEmbeddingTest { ++ public static void main(String[] args) { ++ // to regress embedding test against old fix, call with an arg. A window will pop ++ // up causing awt lib to be loaded so the vm won't die with the unsatisfied link error. ++ if (args.length > 0) { ++ Frame f = new Frame(); ++ f.setSize(300, 300); ++ f.setBackground(Color.white); ++ f.show(); ++ } ++ ++ test1(); ++ test2(); ++ } ++ ++ static void test1() { ++ String target = "BACK WARDS"; ++ String str = "If this text is >" + target + "< the test passed."; ++ int start = str.indexOf(target); ++ int limit = start + target.length(); ++ ++ System.out.println("start: " + start + " limit: " + limit); ++ ++ AttributedString astr = new AttributedString(str); ++ astr.addAttribute(TextAttribute.BIDI_EMBEDDING, ++ new Integer(-1), ++ start, ++ limit); ++ ++ Bidi bidi = new Bidi(astr.getIterator()); ++ ++ for (int i = 0; i < bidi.getRunCount(); ++i) { ++ System.out.println("run " + i + ++ " from " + bidi.getRunStart(i) + ++ " to " + bidi.getRunLimit(i) + ++ " at level " + bidi.getRunLevel(i)); ++ } ++ ++ System.out.println(bidi); ++ ++ byte[] embs = new byte[str.length() + 3]; ++ for (int i = start + 1; i < limit + 1; ++i) { ++ embs[i] = -1; ++ } ++ ++ Bidi bidi2 = new Bidi(str.toCharArray(), 0, embs, 1, str.length(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT); ++ for (int i = 0; i < bidi2.getRunCount(); ++i) { ++ System.out.println("run " + i + ++ " from " + bidi2.getRunStart(i) + ++ " to " + bidi2.getRunLimit(i) + ++ " at level " + bidi2.getRunLevel(i)); ++ } ++ ++ System.out.println(bidi2); ++ ++ if (bidi.getRunCount() != 3 || bidi2.getRunCount() != 3) { ++ throw new Error("Bidi run count incorrect"); ++ } ++ } ++ ++ // make sure BIDI_EMBEDDING values of 0 are mapped to base run direction, instead of flagging an error. ++ static void test2() { ++ String target = "BACK WARDS"; ++ String str = "If this text is >" + target + "< the test passed."; ++ int length = str.length(); ++ int start = str.indexOf(target); ++ int limit = start + target.length(); ++ ++ System.out.println("start: " + start + " limit: " + limit); ++ ++ AttributedString astr = new AttributedString(str); ++ astr.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL); ++ ++ astr.addAttribute(TextAttribute.BIDI_EMBEDDING, ++ new Integer(-3), ++ start, ++ limit); ++ ++ Bidi bidi = new Bidi(astr.getIterator()); ++ ++ for (int i = 0; i < bidi.getRunCount(); ++i) { ++ System.out.println("run " + i + ++ " from " + bidi.getRunStart(i) + ++ " to " + bidi.getRunLimit(i) + ++ " at level " + bidi.getRunLevel(i)); ++ } ++ ++ System.out.println(bidi); ++ ++ if (bidi.getRunCount() != 6) { // runs of spaces and angles at embedding bound,s and final period, each get level 1 ++ throw new Error("Bidi embedding processing failed"); ++ } ++ } ++} +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ openjdk/jdk/test/java/text/Bidi/BidiSurrogateTest.java Fri Oct 17 13:34:03 2008 +0900 +@@ -0,0 +1,103 @@ ++/* ++ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, ++ * CA 95054 USA or visit www.sun.com if you need additional information or ++ * have any questions. ++ */ ++ ++/* ++ * @test ++ * @bug 4888843 ++ * @summary verify that surrogate pairs representing codepoints with R or AL directionality ++ * and correctly recognized and reordered. ++ */ ++ ++import java.text.Bidi; ++ ++public class BidiSurrogateTest { ++ private static final String RTLS = new String(Character.toChars(0x10800)); // surrogate code point with R directionality ++ private static final String LTRS = new String(Character.toChars(0x107ff)); // surrogate code point with L directionality ++ private static final String LRE = "\u202a"; ++ private static final String RLE = "\u202b"; ++ private static final String PDF = "\u202c"; ++ ++ ++ public static void main(String[] args) { ++ new BidiSurrogateTest().test(); ++ } ++ ++ void test() { ++ test0(); ++ test1(); ++ } ++ ++ void test0() { ++ // test unpaired surrogates - should have L directionality ++ testRequiresBidi("\ud800", false); // unpaired lead surrogate ++ testRequiresBidi("\udc00", false); // unpaired trail surrogate ++ testRequiresBidi("\udc00\ud800", false); // out of order surrogates ++ testRequiresBidi("a\udc00b\ud800c", false); // out of order surrogates split ++ testRequiresBidi(LTRS, false); // supplementary with L ++ testRequiresBidi(RTLS, true); // supplementary with R ++ testRequiresBidi("a" + RTLS + "b", true); // R supplementary in LTR text ++ testRequiresBidi(LTRS + RTLS, true); // R supplementary in LTR supplementary text ++ testRequiresBidi(LRE, false); // LRE lone embedding ++ testRequiresBidi(RLE, true); // RLE lone embedding ++ testRequiresBidi(PDF, false); // PDF lone pop embedding ++ } ++ ++ void testRequiresBidi(String string, boolean requiresBidi) { ++ char[] text = string.toCharArray(); ++ if (Bidi.requiresBidi(text, 0, text.length) != requiresBidi) { ++ throw new RuntimeException("testRequiresBidi failed with '" + string + "', " + requiresBidi); ++ } ++ } ++ ++ void test1() { ++ // test that strings with surrogate runs process surrogate directionality ok ++ testBidi("This is a string with " + LTRS + " in it.", false); ++ testBidi("This is a string with \ud800 in it.", false); ++ testBidi("This is a string with \u0640 in it.", 22, 1); ++ testBidi(RTLS, true); ++ testBidi("This is a string with " + RTLS + RTLS + RTLS + " in it.", 22, 6); ++ } ++ ++ void testBidi(String string, boolean directionIsRTL) { ++ Bidi bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT); ++ if (bidi.isMixed()) { ++ throw new RuntimeException("bidi is mixed"); ++ } ++ if (bidi.isRightToLeft() != directionIsRTL) { ++ throw new RuntimeException("bidi is not " + (directionIsRTL ? "rtl" : "ltr")); ++ } ++ } ++ ++ void testBidi(String string, int rtlstart, int rtllength) { ++ Bidi bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT); ++ for (int i = 0; i < bidi.getRunCount(); ++i) { ++ if ((bidi.getRunLevel(i) & 1) != 0) { ++ if (bidi.getRunStart(i) != rtlstart || ++ bidi.getRunLimit(i) != rtlstart + rtllength) { ++ throw new RuntimeException("first rtl run didn't match " + rtlstart + ", " + rtllength); ++ } ++ break; ++ } ++ } ++ } ++} + From glewis at eyesbeyond.com Tue Feb 10 21:13:45 2009 From: glewis at eyesbeyond.com (Greg Lewis) Date: Tue, 10 Feb 2009 21:13:45 -0800 Subject: BSD Port and Linux Differences In-Reply-To: <20090210160035.DCC5D5654E@rebar.astron.com> References: <20090210160035.DCC5D5654E@rebar.astron.com> Message-ID: <20090211051345.GA56272@misty.eyesbeyond.com> On Tue, Feb 10, 2009 at 11:00:35AM -0500, Christos Zoulas wrote: > On Feb 9, 7:56pm, mvfranz at gmail.com (Michael Franz) wrote: > -- Subject: BSD Port and Linux Differences > > | Hi, > | > | I am still working through the issues to get the bsd-port repo to compile on > | Linux and have run into these issues. > | > | BSD is using statfs instead of statvfs. Both are available on Linux and OS > | X. The difference is how they are included. Linux uses either sys/statfs.h > | or sys/statfs.h while OS X (and I assume other BSDs) are use > | sys/param.h,sys/mount.h or sys/statvfs.h. See > | jdk/src/solaris/native/java/io/UnixFileSystem_md.c for more details. > > NetBSD uses statvfs too. > > | Is it better to use one over the other? Do we really want to use statfs on > | bsd and statvfs on linux? > > statvfs should be preferred over statfs because: > 1. it is part of POSIX: > http://www.opengroup.org/onlinepubs/009695399/functions/statvfs.html > 2. it is newer and has 64 bit fields where appropriate (in most implementations) > > I think we need some #ifdef's there to handle which include is appropriate > for which OS. It looks like everything supports statvfs now, so I don't think we need any #ifdef's at all. I've got a patch to revert this change. > | I have run into a similar issue with strncpy vs strlcpy. The bsd port is > | using strlcpy, as far as I can tell, strlcpy does not exist on linux. Both > | have strncpy, should this be used instead? > | > | This issue exists in jdk/src/solaris/native/java/util/TimeZone_md.c > > strl{cpy,cat} should be preferred over strn{cpy,cat}. If that is the only > use though, I say put it back to use strncpy() correctly, since java probably > uses strn{cpy,cat} all over the place and providing portability just for > one use is overkill. *sigh* It looks like the GNU libc maintainers don't like strlcpy, so although *BSD and Solaris have it, Linux does not. I'll change it to strncpy universally rather than adding an #ifdef just for that. > | A previous difference that I have found was in the use of machine/endian.h > | in the BSD port. > > This is a more complicated :-) and I will let someone else answer it. I've already answered this before :). Its the right thing to do. We just need to also do the right thing for Linux and Solaris. I've got access to an Ubuntu box -- I can try a compile there as well. -- Greg Lewis Email : glewis at eyesbeyond.com Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : glewis at FreeBSD.org From aph at redhat.com Wed Feb 11 00:59:52 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 11 Feb 2009 08:59:52 +0000 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <20090210190726.GA13625@rivendell.middle-earth.co.uk> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> Message-ID: <49929388.1030002@redhat.com> Andrew John Hughes wrote: > It appears that some older versions of ecj fail when building the > NIO2 code: > > 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) > public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) > throws IOException > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it > ---------- > > It looks like this bug: > > https://bugs.eclipse.org/bugs/show_bug.cgi?id=243820 > > The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, > and to be consistent with the rest of the autotools macro, it switches the values used from true/false > to yes/no. > > Okay to commit? Would it not make more sense to: 1. require a newer version of ecj in our build documentation and 2. tell people that if they have an old ecj they'll have to diable NIO2 ? Andrew. From doko at ubuntu.com Wed Feb 11 04:00:44 2009 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 11 Feb 2009 13:00:44 +0100 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <49929388.1030002@redhat.com> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> <49929388.1030002@redhat.com> Message-ID: <4992BDEC.8080301@ubuntu.com> Andrew Haley schrieb: > Andrew John Hughes wrote: >> It appears that some older versions of ecj fail when building the >> NIO2 code: >> >> 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) >> public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) >> throws IOException >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it >> ---------- >> >> It looks like this bug: >> >> https://bugs.eclipse.org/bugs/show_bug.cgi?id=243820 >> >> The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, >> and to be consistent with the rest of the autotools macro, it switches the values used from true/false >> to yes/no. >> >> Okay to commit? > > Would it not make more sense to: > > 1. require a newer version of ecj in our build documentation > > and > > 2. tell people that if they have an old ecj they'll have to diable NIO2 documenting the requirement sounds fine. For distributing ecj I am interested in one version which can be used to build ecj1 and a vanilla ecj which is used as standalone compiler, or javac for java-gcj-compat. Last time I checked an update to the next ecj-3.3.x release didn't work well for libgcj. I'll try to check the ecj-3.4.2 release and see how/if this works when used as ecj1. Are there any patches available for ecj-3.4.2 to build it as ecj1? Matthias From aph at redhat.com Wed Feb 11 05:01:47 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 11 Feb 2009 13:01:47 +0000 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <4992BDEC.8080301@ubuntu.com> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> <49929388.1030002@redhat.com> <4992BDEC.8080301@ubuntu.com> Message-ID: <4992CC3B.2040708@redhat.com> Matthias Klose wrote: > Andrew Haley schrieb: >> Andrew John Hughes wrote: >>> It appears that some older versions of ecj fail when building the >>> NIO2 code: >>> >>> 1. ERROR in ../../../src/share/classes/org/classpath/icedtea/java/nio/file/spi/AbstractPath.java (at line 276) >>> public final WatchKey register(WatchService watcher, WatchEvent.Kind... events) >>> throws IOException >>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> Name clash: The method register(WatchService, WatchEvent.Kind...) of type AbstractPath has the same erasure as register(WatchService, WatchEvent.Kind...) of type Watchable but does not override it >>> ---------- >>> >>> It looks like this bug: >>> >>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=243820 >>> >>> The attached patch sets the NIO2 default based on whether with_icedtea is enabled. So this works, >>> and to be consistent with the rest of the autotools macro, it switches the values used from true/false >>> to yes/no. >>> >>> Okay to commit? >> Would it not make more sense to: >> >> 1. require a newer version of ecj in our build documentation >> >> and >> >> 2. tell people that if they have an old ecj they'll have to diable NIO2 > > documenting the requirement sounds fine. > > For distributing ecj I am interested in one version which can be used to build > ecj1 and a vanilla ecj which is used as standalone compiler, or javac for > java-gcj-compat. Last time I checked an update to the next ecj-3.3.x release > didn't work well for libgcj. I'll try to check the ecj-3.4.2 release and see > how/if this works when used as ecj1. Are there any patches available for > ecj-3.4.2 to build it as ecj1? I have seen none, but I can't imagine it'd be hard. Andrew. From mark at klomp.org Wed Feb 11 05:27:45 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 11 Feb 2009 14:27:45 +0100 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <4992CC3B.2040708@redhat.com> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> <49929388.1030002@redhat.com> <4992BDEC.8080301@ubuntu.com> <4992CC3B.2040708@redhat.com> Message-ID: <1234358866.2340.55.camel@fedora.wildebeest.org> Hi, On Wed, 2009-02-11 at 13:01 +0000, Andrew Haley wrote: > > For distributing ecj I am interested in one version which can be used to build > > ecj1 and a vanilla ecj which is used as standalone compiler, or javac for > > java-gcj-compat. Last time I checked an update to the next ecj-3.3.x release > > didn't work well for libgcj. I'll try to check the ecj-3.4.2 release and see > > how/if this works when used as ecj1. Are there any patches available for > > ecj-3.4.2 to build it as ecj1? > > I have seen none, but I can't imagine it'd be hard. The only thing necessary should be the GCCMain one that is being kept up to date by Tom in the rhug repository: http://sourceware.org/cgi-bin/cvsweb.cgi/eclipse-gcj/org/eclipse/jdt/internal/compiler/batch/GCCMain.java?cvsroot=rhug Latest version is r34_1, haven't yet tried if it also applies to 3.4.2. If that works out then it would be good to update the recommended version of ecj-latest.jar that the gcc/contrib/download_ecj grabs so that future versions (4.4?) of gcc will come with it. Cheers, Mark From mark at klomp.org Wed Feb 11 05:37:31 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 11 Feb 2009 14:37:31 +0100 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <1234358866.2340.55.camel@fedora.wildebeest.org> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> <49929388.1030002@redhat.com> <4992BDEC.8080301@ubuntu.com> <4992CC3B.2040708@redhat.com> <1234358866.2340.55.camel@fedora.wildebeest.org> Message-ID: <1234359452.2340.61.camel@fedora.wildebeest.org> On Wed, 2009-02-11 at 14:27 +0100, Mark Wielaard wrote: > The only thing necessary should be the GCCMain one that is being kept up > to date by Tom in the rhug repository: > http://sourceware.org/cgi-bin/cvsweb.cgi/eclipse-gcj/org/eclipse/jdt/internal/compiler/batch/GCCMain.java?cvsroot=rhug > Latest version is r34_1, haven't yet tried if it also applies to 3.4.2. > > If that works out then it would be good to update the recommended > version of ecj-latest.jar that the gcc/contrib/download_ecj grabs so > that future versions (4.4?) of gcc will come with it. Alternatively, someone might want to look into the Summer Of Code work from Dalibor to integrate the openjdk javac (or actually any JSR 199 compliant byte code compiler): http://code.google.com/p/google-summer-of-code-2007-gcc/downloads/detail?name=Dalibor_Topic.tar.gz The eclipse-gcj-pretty/README.GSOC gives a nice summary of the work. Cheers, Mark From xerxes at zafena.se Wed Feb 11 05:54:49 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Wed, 11 Feb 2009 14:54:49 +0100 Subject: [patches] pointers to Robert Schusters patches for Icedtea6 to make Icedtea6 cross-compilation work using OE/Jalimo and shark fixes for ARM using llvm 2.4 Message-ID: <4992D8A9.5090004@zafena.se> Cheers to you all fellow free java hackers! I had a great time at Fosdem 09, it was great fun meeting you(all) and I returned quite safely to Sweden a early thuesday morning after a rough airliner adventure, more about this will pop up on a familiar blogroll near you in the near future. Before I forget, here I have composed some pointers to all the patches Robert Schuster had pushed on the mailinglist in order to make Icedtea6 cross-compile using openembedded and Jalimo, fixes for shark and llvm. These patches needs sponsoring in one way or another: [patch] fix to make icedtea6 cross-compile using openembedded and jalimo http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004435.html - patch for Icedtea6 http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004428.html - start of discussion for patch inclusion [patch] fix for building shark using llvm 2.4 http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004606.html - patch for Icedtea6 http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004591.html - start of discussion for patch inclusion http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004609.html - verdict Robert had also pushed some patches for llvm 2.4 on the mailinglist, do you happen to know some llvm people who might sponsor inclusion fo these patches upstreams in llvm? [patch] fix for llvm 2.4 on ARM http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-January/004605.html - patch for llvm 2.4 (found in shark discussion thread above) Robert please fill in if there is some patches that i have missed related to your awesome cross-compilation work. Cheers and have a great day! Xerxes From omajid at redhat.com Wed Feb 11 06:35:55 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 11 Feb 2009 14:35:55 +0000 Subject: changeset in /hg/icedtea6: 2009-02-11 Marc Schoenefeld changeset 24c29e381e49 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=24c29e381e49 description: 2009-02-11 Marc Schoenefeld Omair Majid * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java (write): Fix bounds checking. diffstat: 2 files changed, 9 insertions(+), 12 deletions(-) ChangeLog | 6 ++++ pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java | 15 ++-------- diffs (39 lines): diff -r 5d4d8012aa03 -r 24c29e381e49 ChangeLog --- a/ChangeLog Wed Feb 11 02:18:27 2009 +0000 +++ b/ChangeLog Wed Feb 11 09:14:17 2009 -0500 @@ -1,3 +1,9 @@ 2009-02-11 Andrew John Hughes + Omair Majid + + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java + (write): Fix bounds checking. + 2009-02-11 Andrew John Hughes * Makefile.am: diff -r 5d4d8012aa03 -r 24c29e381e49 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java --- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Wed Feb 11 02:18:27 2009 +0000 +++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Wed Feb 11 09:14:17 2009 -0500 @@ -151,19 +151,10 @@ public final class PulseAudioSourceDataL throw new IllegalArgumentException( "amount of data to write does not represent an integral number of frames"); } - if (length < 0) { - throw new IllegalArgumentException("length is negative"); - } - - if (offset < 0) { - throw new ArrayIndexOutOfBoundsException("offset is negative: " - + offset); - } - - if (length + offset > data.length) { + if (length < 0 || offset < 0 || offset > data.length - length) { throw new ArrayIndexOutOfBoundsException( - "writing data beyond the length of the array: " - + (length + offset)); + "Overflow condition: buffer.length=" + data.length + + " offset= " + offset + " length=" + length ); } int position = offset; From omajid at redhat.com Wed Feb 11 08:50:52 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 11 Feb 2009 16:50:52 +0000 Subject: changeset in /hg/icedtea6: 2009-02-11 Omair Majid changeset 551c49cb2e2a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=551c49cb2e2a description: 2009-02-11 Omair Majid * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java (write): Throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException for length. * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java (read): Fixed bounds checking. diffstat: 3 files changed, 17 insertions(+), 4 deletions(-) ChangeLog | 8 ++++++++ pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java | 5 +++++ pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java | 8 ++++---- diffs (48 lines): diff -r 24c29e381e49 -r 551c49cb2e2a ChangeLog --- a/ChangeLog Wed Feb 11 09:14:17 2009 -0500 +++ b/ChangeLog Wed Feb 11 11:49:45 2009 -0500 @@ -1,3 +1,11 @@ 2009-02-11 Marc Schoenefeld + + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java + (write): Throw IllegalArgumentException instead of + ArrayIndexOutOfBoundsException for length. + * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java + (read): Fixed bounds checking. + 2009-02-11 Marc Schoenefeld Omair Majid diff -r 24c29e381e49 -r 551c49cb2e2a pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java --- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Wed Feb 11 09:14:17 2009 -0500 +++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Wed Feb 11 11:49:45 2009 -0500 @@ -151,6 +151,11 @@ public final class PulseAudioSourceDataL throw new IllegalArgumentException( "amount of data to write does not represent an integral number of frames"); } + + if (length < 0) { + throw new IllegalArgumentException("length is negative"); + } + if (length < 0 || offset < 0 || offset > data.length - length) { throw new ArrayIndexOutOfBoundsException( "Overflow condition: buffer.length=" + data.length + diff -r 24c29e381e49 -r 551c49cb2e2a pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java --- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Wed Feb 11 09:14:17 2009 -0500 +++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Wed Feb 11 11:49:45 2009 -0500 @@ -156,10 +156,10 @@ public final class PulseAudioTargetDataL if (length < 0) { throw new IllegalArgumentException("length is negative"); } - - if (length + offset > data.length) { - throw new ArrayIndexOutOfBoundsException("index: " - + (length + offset) + " array size: " + data.length); + + if ( offset < 0 || offset > data.length - length) { + throw new ArrayIndexOutOfBoundsException("array size: " + data.length + + " offset:" + offset + " length:" + length ); } /* everything ok */ From langel at redhat.com Wed Feb 11 11:38:30 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 11 Feb 2009 14:38:30 -0500 Subject: mozilla.javascript still encumbered...? Message-ID: <49932936.7060300@redhat.com> Hi, I was attempting to build the yui-compressor tool[1], and I found that IcedTea/OpenJDK is missing some mozilla.javascript[2] classes still. At the moment, I don't have the time to start implementing these, but let me know if anyone does. The tool does build with JDK 1.6.0. https://bugzilla.redhat.com/show_bug.cgi?id=485135 Cheers, Lillian [1] http://www.julienlecomte.net/yuicompressor/ [2] [...yuicompressor-2.4.2]$ ant Buildfile: build.xml -load.properties: -init: [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build build.classes: [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build/classes [javac] Compiling 12 source files to /home/langel/yuicompressor-2.4.2/build/classes [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:120: cannot find symbol [javac] symbol : method isStrictMode() [javac] location: class org.mozilla.javascript.CompilerEnvirons [javac] if (compilerEnv.isStrictMode()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:127: cannot find symbol [javac] symbol : method reportWarningAsError() [javac] location: class org.mozilla.javascript.CompilerEnvirons [javac] if (compilerEnv.reportWarningAsError()) { [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: cannot find symbol [javac] symbol : method isStrictMode() [javac] location: class org.mozilla.javascript.CompilerEnvirons [javac] if (compilerEnv.isStrictMode() && !body.hasConsistentReturnUsage()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: cannot find symbol [javac] symbol : method hasConsistentReturnUsage() [javac] location: class org.mozilla.javascript.Node [javac] if (compilerEnv.isStrictMode() && !body.hasConsistentReturnUsage()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:639: cannot find symbol [javac] symbol : variable PARENTHESIZED_PROP [javac] location: class org.mozilla.javascript.Node [javac] if (pn.getProp(Node.PARENTHESIZED_PROP) == null && [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: cannot find symbol [javac] symbol : method isStrictMode() [javac] location: class org.mozilla.javascript.CompilerEnvirons [javac] if (compilerEnv.isStrictMode() && !pn.hasSideEffects()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: cannot find symbol [javac] symbol : method hasSideEffects() [javac] location: class org.mozilla.javascript.Node [javac] if (compilerEnv.isStrictMode() && !pn.hasSideEffects()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1107: cannot find symbol [javac] symbol : variable END_RETURNS_VALUE [javac] location: class org.mozilla.javascript.Node [javac] if (functionEndFlags == Node.END_RETURNS_VALUE) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1110: cannot find symbol [javac] symbol : variable END_RETURNS [javac] location: class org.mozilla.javascript.Node [javac] functionEndFlags |= Node.END_RETURNS; [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1112: cannot find symbol [javac] symbol : variable END_RETURNS [javac] location: class org.mozilla.javascript.Node [javac] if (functionEndFlags == Node.END_RETURNS) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1115: cannot find symbol [javac] symbol : variable END_RETURNS_VALUE [javac] location: class org.mozilla.javascript.Node [javac] functionEndFlags |= Node.END_RETURNS_VALUE; [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1269: createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied to (int,int) [javac] pn = nf.createVariables(Token.CONST, ts.getLineno()); [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1272: createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied to (int,int) [javac] pn = nf.createVariables(Token.VAR, ts.getLineno()); [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1289: cannot find symbol [javac] symbol : method addConst(java.lang.String) [javac] location: class org.mozilla.javascript.ScriptOrFnNode [javac] if (!currentScriptOrFn.addConst(s)) { [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: 'void' type not allowed here [javac] if (currentScriptOrFn.addVar(s) != ScriptOrFnNode.DUPLICATE_CONST) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: cannot find symbol [javac] symbol : variable DUPLICATE_CONST [javac] location: class org.mozilla.javascript.ScriptOrFnNode [javac] if (currentScriptOrFn.addVar(s) != ScriptOrFnNode.DUPLICATE_CONST) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1299: incompatible types [javac] found : void [javac] required: int [javac] int dupState = currentScriptOrFn.addVar(s); [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1300: cannot find symbol [javac] symbol : variable DUPLICATE_CONST [javac] location: class org.mozilla.javascript.ScriptOrFnNode [javac] if (dupState == ScriptOrFnNode.DUPLICATE_CONST) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1302: cannot find symbol [javac] symbol : variable DUPLICATE_PARAMETER [javac] location: class org.mozilla.javascript.ScriptOrFnNode [javac] else if (dupState == ScriptOrFnNode.DUPLICATE_PARAMETER) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1304: cannot find symbol [javac] symbol : variable DUPLICATE_VAR [javac] location: class org.mozilla.javascript.ScriptOrFnNode [javac] else if (dupState == ScriptOrFnNode.DUPLICATE_VAR) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: cannot find symbol [javac] symbol : method isStrictMode() [javac] location: class org.mozilla.javascript.CompilerEnvirons [javac] if (compilerEnv.isStrictMode() && !pn.hasSideEffects()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: cannot find symbol [javac] symbol : method hasSideEffects() [javac] location: class org.mozilla.javascript.Node [javac] if (compilerEnv.isStrictMode() && !pn.hasSideEffects()) [javac] ^ [javac] /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:2065: cannot find symbol [javac] symbol : variable PARENTHESIZED_PROP [javac] location: class org.mozilla.javascript.Node [javac] pn.putProp(Node.PARENTHESIZED_PROP, Boolean.TRUE); [javac] ^ [javac] 23 errors BUILD FAILED /home/langel/yuicompressor-2.4.2/build.xml:23: Compile failed; see the compiler error output for details. Total time: 2 seconds From dbhole at redhat.com Wed Feb 11 11:57:24 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 11 Feb 2009 14:57:24 -0500 Subject: mozilla.javascript still encumbered...? In-Reply-To: <49932936.7060300@redhat.com> References: <49932936.7060300@redhat.com> Message-ID: <20090211195724.GA30628@redhat.com> * Lillian Angel [2009-02-11 14:39]: > Hi, > > I was attempting to build the yui-compressor tool[1], and I found that > IcedTea/OpenJDK is missing some mozilla.javascript[2] classes still. At the > moment, I don't have the time to start implementing these, but let me know > if anyone does. > > The tool does build with JDK 1.6.0. > > https://bugzilla.redhat.com/show_bug.cgi?id=485135 > > Cheers, > Lillian > > Looks like we need to upgrade rhino. 1.7R1 appears to have the new stuff. Just did a quick search for a couple of things: $ grep -rE "isStrictMode|reportWarningAsError|DUPLICATE_CONST" rhino1_7R1/src/ | awk '{print $1}' | sort -u rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java: rhino1_7R1/src/org/mozilla/javascript/Parser.java: Deepak > [1] > http://www.julienlecomte.net/yuicompressor/ > > [2] > [...yuicompressor-2.4.2]$ ant > Buildfile: build.xml > > -load.properties: > > -init: > [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build > > build.classes: > [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build/classes > [javac] Compiling 12 source files to > /home/langel/yuicompressor-2.4.2/build/classes > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:120: > cannot find symbol > [javac] symbol : method isStrictMode() > [javac] location: class org.mozilla.javascript.CompilerEnvirons > [javac] if (compilerEnv.isStrictMode()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:127: > cannot find symbol > [javac] symbol : method reportWarningAsError() > [javac] location: class org.mozilla.javascript.CompilerEnvirons > [javac] if (compilerEnv.reportWarningAsError()) { > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: > cannot find symbol > [javac] symbol : method isStrictMode() > [javac] location: class org.mozilla.javascript.CompilerEnvirons > [javac] if (compilerEnv.isStrictMode() && > !body.hasConsistentReturnUsage()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: > cannot find symbol > [javac] symbol : method hasConsistentReturnUsage() > [javac] location: class org.mozilla.javascript.Node > [javac] if (compilerEnv.isStrictMode() && > !body.hasConsistentReturnUsage()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:639: > cannot find symbol > [javac] symbol : variable PARENTHESIZED_PROP > [javac] location: class org.mozilla.javascript.Node > [javac] if (pn.getProp(Node.PARENTHESIZED_PROP) == null && > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: > cannot find symbol > [javac] symbol : method isStrictMode() > [javac] location: class org.mozilla.javascript.CompilerEnvirons > [javac] if (compilerEnv.isStrictMode() && > !pn.hasSideEffects()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: > cannot find symbol > [javac] symbol : method hasSideEffects() > [javac] location: class org.mozilla.javascript.Node > [javac] if (compilerEnv.isStrictMode() && > !pn.hasSideEffects()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1107: > cannot find symbol > [javac] symbol : variable END_RETURNS_VALUE > [javac] location: class org.mozilla.javascript.Node > [javac] if (functionEndFlags == Node.END_RETURNS_VALUE) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1110: > cannot find symbol > [javac] symbol : variable END_RETURNS > [javac] location: class org.mozilla.javascript.Node > [javac] functionEndFlags |= Node.END_RETURNS; > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1112: > cannot find symbol > [javac] symbol : variable END_RETURNS > [javac] location: class org.mozilla.javascript.Node > [javac] if (functionEndFlags == Node.END_RETURNS) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1115: > cannot find symbol > [javac] symbol : variable END_RETURNS_VALUE > [javac] location: class org.mozilla.javascript.Node > [javac] functionEndFlags |= Node.END_RETURNS_VALUE; > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1269: > createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied > to (int,int) > [javac] pn = nf.createVariables(Token.CONST, > ts.getLineno()); > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1272: > createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied > to (int,int) > [javac] pn = nf.createVariables(Token.VAR, ts.getLineno()); > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1289: > cannot find symbol > [javac] symbol : method addConst(java.lang.String) > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > [javac] if (!currentScriptOrFn.addConst(s)) { > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: > 'void' type not allowed here > [javac] if (currentScriptOrFn.addVar(s) != > ScriptOrFnNode.DUPLICATE_CONST) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: > cannot find symbol > [javac] symbol : variable DUPLICATE_CONST > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > [javac] if (currentScriptOrFn.addVar(s) != > ScriptOrFnNode.DUPLICATE_CONST) > [javac] > ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1299: > incompatible types > [javac] found : void > [javac] required: int > [javac] int dupState = currentScriptOrFn.addVar(s); > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1300: > cannot find symbol > [javac] symbol : variable DUPLICATE_CONST > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > [javac] if (dupState == ScriptOrFnNode.DUPLICATE_CONST) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1302: > cannot find symbol > [javac] symbol : variable DUPLICATE_PARAMETER > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > [javac] else if (dupState == > ScriptOrFnNode.DUPLICATE_PARAMETER) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1304: > cannot find symbol > [javac] symbol : variable DUPLICATE_VAR > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > [javac] else if (dupState == > ScriptOrFnNode.DUPLICATE_VAR) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: > cannot find symbol > [javac] symbol : method isStrictMode() > [javac] location: class org.mozilla.javascript.CompilerEnvirons > [javac] if (compilerEnv.isStrictMode() && > !pn.hasSideEffects()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: > cannot find symbol > [javac] symbol : method hasSideEffects() > [javac] location: class org.mozilla.javascript.Node > [javac] if (compilerEnv.isStrictMode() && > !pn.hasSideEffects()) > [javac] ^ > [javac] > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:2065: > cannot find symbol > [javac] symbol : variable PARENTHESIZED_PROP > [javac] location: class org.mozilla.javascript.Node > [javac] pn.putProp(Node.PARENTHESIZED_PROP, Boolean.TRUE); > [javac] ^ > [javac] 23 errors > > BUILD FAILED > /home/langel/yuicompressor-2.4.2/build.xml:23: Compile failed; see the > compiler error output for details. > > Total time: 2 seconds > From dbhole at redhat.com Wed Feb 11 11:58:17 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 11 Feb 2009 14:58:17 -0500 Subject: mozilla.javascript still encumbered...? In-Reply-To: <20090211195724.GA30628@redhat.com> References: <49932936.7060300@redhat.com> <20090211195724.GA30628@redhat.com> Message-ID: <20090211195817.GB30628@redhat.com> * Deepak Bhole [2009-02-11 14:57]: > * Lillian Angel [2009-02-11 14:39]: > > Hi, > > > > I was attempting to build the yui-compressor tool[1], and I found that > > IcedTea/OpenJDK is missing some mozilla.javascript[2] classes still. At the > > moment, I don't have the time to start implementing these, but let me know > > if anyone does. > > > > The tool does build with JDK 1.6.0. > > > > https://bugzilla.redhat.com/show_bug.cgi?id=485135 > > > > Cheers, > > Lillian > > > > > > Looks like we need to upgrade rhino. 1.7R1 appears to have the new > stuff. Just did a quick search for a couple of things: > s/upgrade rhino/require the new rhino > $ grep -rE "isStrictMode|reportWarningAsError|DUPLICATE_CONST" rhino1_7R1/src/ | awk '{print $1}' | sort -u > rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java: > rhino1_7R1/src/org/mozilla/javascript/Parser.java: > > Deepak > > > [1] > > http://www.julienlecomte.net/yuicompressor/ > > > > [2] > > [...yuicompressor-2.4.2]$ ant > > Buildfile: build.xml > > > > -load.properties: > > > > -init: > > [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build > > > > build.classes: > > [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build/classes > > [javac] Compiling 12 source files to > > /home/langel/yuicompressor-2.4.2/build/classes > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:120: > > cannot find symbol > > [javac] symbol : method isStrictMode() > > [javac] location: class org.mozilla.javascript.CompilerEnvirons > > [javac] if (compilerEnv.isStrictMode()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:127: > > cannot find symbol > > [javac] symbol : method reportWarningAsError() > > [javac] location: class org.mozilla.javascript.CompilerEnvirons > > [javac] if (compilerEnv.reportWarningAsError()) { > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: > > cannot find symbol > > [javac] symbol : method isStrictMode() > > [javac] location: class org.mozilla.javascript.CompilerEnvirons > > [javac] if (compilerEnv.isStrictMode() && > > !body.hasConsistentReturnUsage()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: > > cannot find symbol > > [javac] symbol : method hasConsistentReturnUsage() > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (compilerEnv.isStrictMode() && > > !body.hasConsistentReturnUsage()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:639: > > cannot find symbol > > [javac] symbol : variable PARENTHESIZED_PROP > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (pn.getProp(Node.PARENTHESIZED_PROP) == null && > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: > > cannot find symbol > > [javac] symbol : method isStrictMode() > > [javac] location: class org.mozilla.javascript.CompilerEnvirons > > [javac] if (compilerEnv.isStrictMode() && > > !pn.hasSideEffects()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: > > cannot find symbol > > [javac] symbol : method hasSideEffects() > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (compilerEnv.isStrictMode() && > > !pn.hasSideEffects()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1107: > > cannot find symbol > > [javac] symbol : variable END_RETURNS_VALUE > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (functionEndFlags == Node.END_RETURNS_VALUE) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1110: > > cannot find symbol > > [javac] symbol : variable END_RETURNS > > [javac] location: class org.mozilla.javascript.Node > > [javac] functionEndFlags |= Node.END_RETURNS; > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1112: > > cannot find symbol > > [javac] symbol : variable END_RETURNS > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (functionEndFlags == Node.END_RETURNS) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1115: > > cannot find symbol > > [javac] symbol : variable END_RETURNS_VALUE > > [javac] location: class org.mozilla.javascript.Node > > [javac] functionEndFlags |= Node.END_RETURNS_VALUE; > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1269: > > createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied > > to (int,int) > > [javac] pn = nf.createVariables(Token.CONST, > > ts.getLineno()); > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1272: > > createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied > > to (int,int) > > [javac] pn = nf.createVariables(Token.VAR, ts.getLineno()); > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1289: > > cannot find symbol > > [javac] symbol : method addConst(java.lang.String) > > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > > [javac] if (!currentScriptOrFn.addConst(s)) { > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: > > 'void' type not allowed here > > [javac] if (currentScriptOrFn.addVar(s) != > > ScriptOrFnNode.DUPLICATE_CONST) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: > > cannot find symbol > > [javac] symbol : variable DUPLICATE_CONST > > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > > [javac] if (currentScriptOrFn.addVar(s) != > > ScriptOrFnNode.DUPLICATE_CONST) > > [javac] > > ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1299: > > incompatible types > > [javac] found : void > > [javac] required: int > > [javac] int dupState = currentScriptOrFn.addVar(s); > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1300: > > cannot find symbol > > [javac] symbol : variable DUPLICATE_CONST > > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > > [javac] if (dupState == ScriptOrFnNode.DUPLICATE_CONST) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1302: > > cannot find symbol > > [javac] symbol : variable DUPLICATE_PARAMETER > > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > > [javac] else if (dupState == > > ScriptOrFnNode.DUPLICATE_PARAMETER) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1304: > > cannot find symbol > > [javac] symbol : variable DUPLICATE_VAR > > [javac] location: class org.mozilla.javascript.ScriptOrFnNode > > [javac] else if (dupState == > > ScriptOrFnNode.DUPLICATE_VAR) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: > > cannot find symbol > > [javac] symbol : method isStrictMode() > > [javac] location: class org.mozilla.javascript.CompilerEnvirons > > [javac] if (compilerEnv.isStrictMode() && > > !pn.hasSideEffects()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: > > cannot find symbol > > [javac] symbol : method hasSideEffects() > > [javac] location: class org.mozilla.javascript.Node > > [javac] if (compilerEnv.isStrictMode() && > > !pn.hasSideEffects()) > > [javac] ^ > > [javac] > > /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:2065: > > cannot find symbol > > [javac] symbol : variable PARENTHESIZED_PROP > > [javac] location: class org.mozilla.javascript.Node > > [javac] pn.putProp(Node.PARENTHESIZED_PROP, Boolean.TRUE); > > [javac] ^ > > [javac] 23 errors > > > > BUILD FAILED > > /home/langel/yuicompressor-2.4.2/build.xml:23: Compile failed; see the > > compiler error output for details. > > > > Total time: 2 seconds > > From langel at redhat.com Wed Feb 11 12:05:38 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 11 Feb 2009 15:05:38 -0500 Subject: mozilla.javascript still encumbered...? In-Reply-To: <20090211195724.GA30628@redhat.com> References: <49932936.7060300@redhat.com> <20090211195724.GA30628@redhat.com> Message-ID: <49932F92.6070307@redhat.com> Hi, Deepak Bhole wrote: > * Lillian Angel [2009-02-11 14:39]: > >> Hi, >> >> I was attempting to build the yui-compressor tool[1], and I found that >> IcedTea/OpenJDK is missing some mozilla.javascript[2] classes still. At the >> moment, I don't have the time to start implementing these, but let me know >> if anyone does. >> >> The tool does build with JDK 1.6.0. >> >> https://bugzilla.redhat.com/show_bug.cgi?id=485135 >> >> Cheers, >> Lillian >> >> >> > > Looks like we need to upgrade rhino. 1.7R1 appears to have the new > stuff. Just did a quick search for a couple of things: > > $ grep -rE "isStrictMode|reportWarningAsError|DUPLICATE_CONST" rhino1_7R1/src/ | awk '{print $1}' | sort -u > rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java: > rhino1_7R1/src/org/mozilla/javascript/Parser.java: > Great! Thanks for looking into this so quickly. I requested the Fedora maintainer upgrade to 1.7 (or orphan it, so I can pick it up). We can upgrade the dependency in IcedTea/6. Cheers, Lillian > Deepak > > >> [1] >> http://www.julienlecomte.net/yuicompressor/ >> >> [2] >> [...yuicompressor-2.4.2]$ ant >> Buildfile: build.xml >> >> -load.properties: >> >> -init: >> [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build >> >> build.classes: >> [mkdir] Created dir: /home/langel/yuicompressor-2.4.2/build/classes >> [javac] Compiling 12 source files to >> /home/langel/yuicompressor-2.4.2/build/classes >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:120: >> cannot find symbol >> [javac] symbol : method isStrictMode() >> [javac] location: class org.mozilla.javascript.CompilerEnvirons >> [javac] if (compilerEnv.isStrictMode()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:127: >> cannot find symbol >> [javac] symbol : method reportWarningAsError() >> [javac] location: class org.mozilla.javascript.CompilerEnvirons >> [javac] if (compilerEnv.reportWarningAsError()) { >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: >> cannot find symbol >> [javac] symbol : method isStrictMode() >> [javac] location: class org.mozilla.javascript.CompilerEnvirons >> [javac] if (compilerEnv.isStrictMode() && >> !body.hasConsistentReturnUsage()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:568: >> cannot find symbol >> [javac] symbol : method hasConsistentReturnUsage() >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (compilerEnv.isStrictMode() && >> !body.hasConsistentReturnUsage()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:639: >> cannot find symbol >> [javac] symbol : variable PARENTHESIZED_PROP >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (pn.getProp(Node.PARENTHESIZED_PROP) == null && >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: >> cannot find symbol >> [javac] symbol : method isStrictMode() >> [javac] location: class org.mozilla.javascript.CompilerEnvirons >> [javac] if (compilerEnv.isStrictMode() && >> !pn.hasSideEffects()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:676: >> cannot find symbol >> [javac] symbol : method hasSideEffects() >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (compilerEnv.isStrictMode() && >> !pn.hasSideEffects()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1107: >> cannot find symbol >> [javac] symbol : variable END_RETURNS_VALUE >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (functionEndFlags == Node.END_RETURNS_VALUE) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1110: >> cannot find symbol >> [javac] symbol : variable END_RETURNS >> [javac] location: class org.mozilla.javascript.Node >> [javac] functionEndFlags |= Node.END_RETURNS; >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1112: >> cannot find symbol >> [javac] symbol : variable END_RETURNS >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (functionEndFlags == Node.END_RETURNS) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1115: >> cannot find symbol >> [javac] symbol : variable END_RETURNS_VALUE >> [javac] location: class org.mozilla.javascript.Node >> [javac] functionEndFlags |= Node.END_RETURNS_VALUE; >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1269: >> createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied >> to (int,int) >> [javac] pn = nf.createVariables(Token.CONST, >> ts.getLineno()); >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1272: >> createVariables(int) in org.mozilla.javascript.IRFactory cannot be applied >> to (int,int) >> [javac] pn = nf.createVariables(Token.VAR, ts.getLineno()); >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1289: >> cannot find symbol >> [javac] symbol : method addConst(java.lang.String) >> [javac] location: class org.mozilla.javascript.ScriptOrFnNode >> [javac] if (!currentScriptOrFn.addConst(s)) { >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: >> 'void' type not allowed here >> [javac] if (currentScriptOrFn.addVar(s) != >> ScriptOrFnNode.DUPLICATE_CONST) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1293: >> cannot find symbol >> [javac] symbol : variable DUPLICATE_CONST >> [javac] location: class org.mozilla.javascript.ScriptOrFnNode >> [javac] if (currentScriptOrFn.addVar(s) != >> ScriptOrFnNode.DUPLICATE_CONST) >> [javac] >> ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1299: >> incompatible types >> [javac] found : void >> [javac] required: int >> [javac] int dupState = currentScriptOrFn.addVar(s); >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1300: >> cannot find symbol >> [javac] symbol : variable DUPLICATE_CONST >> [javac] location: class org.mozilla.javascript.ScriptOrFnNode >> [javac] if (dupState == ScriptOrFnNode.DUPLICATE_CONST) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1302: >> cannot find symbol >> [javac] symbol : variable DUPLICATE_PARAMETER >> [javac] location: class org.mozilla.javascript.ScriptOrFnNode >> [javac] else if (dupState == >> ScriptOrFnNode.DUPLICATE_PARAMETER) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1304: >> cannot find symbol >> [javac] symbol : variable DUPLICATE_VAR >> [javac] location: class org.mozilla.javascript.ScriptOrFnNode >> [javac] else if (dupState == >> ScriptOrFnNode.DUPLICATE_VAR) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: >> cannot find symbol >> [javac] symbol : method isStrictMode() >> [javac] location: class org.mozilla.javascript.CompilerEnvirons >> [javac] if (compilerEnv.isStrictMode() && >> !pn.hasSideEffects()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:1330: >> cannot find symbol >> [javac] symbol : method hasSideEffects() >> [javac] location: class org.mozilla.javascript.Node >> [javac] if (compilerEnv.isStrictMode() && >> !pn.hasSideEffects()) >> [javac] ^ >> [javac] >> /home/langel/yuicompressor-2.4.2/src/org/mozilla/javascript/Parser.java:2065: >> cannot find symbol >> [javac] symbol : variable PARENTHESIZED_PROP >> [javac] location: class org.mozilla.javascript.Node >> [javac] pn.putProp(Node.PARENTHESIZED_PROP, Boolean.TRUE); >> [javac] ^ >> [javac] 23 errors >> >> BUILD FAILED >> /home/langel/yuicompressor-2.4.2/build.xml:23: Compile failed; see the >> compiler error output for details. >> >> Total time: 2 seconds >> >> From oliver.may at dfc.be Thu Feb 12 00:49:10 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 12 Feb 2009 09:49:10 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers Message-ID: <4993E286.8050208@dfc.be> Hi all! I am having some difficulties with icedtea-6-plugin on debian (armel). I am working on a java applet for communication between a browser (iceweasel) and hardware (gpsd) on the neo freerunner phone. The problem lies mainly in the communication between the browser and the applet, I am calling java methods from javascript code. Whenever I try to call a method on a java object I get following errors: java.lang.NullPointerException: at sun.applet.PluginAppletSecurityContext.checkPermission(PluginAppletSecurityContext.java:1002) at sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:658) at sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:31) at sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:248) at sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:34) Occasionally I also get following error: IcedTeaPlugin.cc:4735: Error: parse int My configuration: Icedtea6-plugin: Version: 6b14-1~exp1 Openjdk6-jre: Version: 6b14-1~exp1 Iceweasel: 3.06-1 Linux debian-gta02 2.6.24-20081103.git7172ec57 #1 PREEMPT Wed Dec 17 18:06:43 UTC 2008 armv4tl GNU/Linux I have also set up a x86 debian installation in a virtual machine with the same package configuration as on the phone. And the same errors occur there, so i guess it's not platform (armel) related. kind regards, -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From oliver.may at dfc.be Thu Feb 12 01:24:33 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 12 Feb 2009 10:24:33 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993E286.8050208@dfc.be> References: <4993E286.8050208@dfc.be> Message-ID: <4993EAD1.8090300@dfc.be> > > I have also set up a x86 debian installation in a virtual machine with > the same package configuration as on the phone. And the same errors > occur there, so i guess it's not platform (armel) related. > Ignore this, it does work on the x86 debian install, so it seems to be platform related... > > kind regards, > -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From xerxes at zafena.se Thu Feb 12 01:44:41 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 12 Feb 2009 10:44:41 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993E286.8050208@dfc.be> References: <4993E286.8050208@dfc.be> Message-ID: <4993EF89.7020603@zafena.se> Hello oliver! Oliver May wrote: > Hi all! > > I am having some difficulties with icedtea-6-plugin on debian (armel). > I am working on a java applet for communication between a browser > (iceweasel) and hardware (gpsd) on the neo freerunner phone. > Do you have a url to this applet and its sourcecode? without it it is really hard to see whats going on. It would be great if you happen to have a small testcase based on code from the applet that exposes this bug so that it can be fixed properly on ARM armel platforms. > The problem lies mainly in the communication between the browser and > the applet, I am calling java methods from javascript code. Whenever I > try to call a method on a java object I get following errors: > > java.lang.NullPointerException: > at > sun.applet.PluginAppletSecurityContext.checkPermission(PluginAppletSecurityContext.java:1002) > > at > sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:658) > > at > sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:31) > > at > sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:248) > > at > sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:34) > > > Occasionally I also get following error: > IcedTeaPlugin.cc:4735: Error: parse int > > > My configuration: > > Icedtea6-plugin: Version: 6b14-1~exp1 > Openjdk6-jre: Version: 6b14-1~exp1 > Iceweasel: 3.06-1 > Linux debian-gta02 2.6.24-20081103.git7172ec57 #1 PREEMPT Wed Dec 17 > 18:06:43 UTC 2008 armv4tl GNU/Linux > > I have also set up a x86 debian installation in a virtual machine with > the same package configuration as on the phone. And the same errors > occur there, so i guess it's not platform (armel) related. > Thank you for the cool report that you are running the icedtea-6 plugin on you phone! Do you have a picture? Do all applets crash or only the one you are working on? > > kind regards, > Cheers and have a great day! Xerxes From xerxes at zafena.se Thu Feb 12 02:37:08 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 12 Feb 2009 11:37:08 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993EF89.7020603@zafena.se> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> Message-ID: <4993FBD4.1070002@zafena.se> Xerxes R?nby wrote: > Hello oliver! > > Oliver May wrote: >> Hi all! >> >> I am having some difficulties with icedtea-6-plugin on debian >> (armel). I am working on a java applet for communication between a >> browser (iceweasel) and hardware (gpsd) on the neo freerunner phone. >> > Do you have a url to this applet and its sourcecode? without it it is > really hard to see whats going on. > It would be great if you happen to have a small testcase based on code > from the applet that exposes this bug so that it can be fixed properly > on ARM armel platforms. >> The problem lies mainly in the communication between the browser and >> the applet, I am calling java methods from javascript code. Whenever >> I try to call a method on a java object I get following errors: >> >> java.lang.NullPointerException: >> at >> sun.applet.PluginAppletSecurityContext.checkPermission(PluginAppletSecurityContext.java:1002) >> >> at >> sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:658) >> Deepak where do the PluginDebug.debug post its debug messages? It might shine some light on what calling method is used on what object in checkPermission above. *snip from PluginAppletSecurityContext.java:658* PluginDebug.debug("Calling method " + m + " on object " + o + " with " + arguments); AccessControlContext acc = callContext != null ? callContext : getClosedAccessControlContext(); checkPermission(src, o.getClass(), acc); *snap* >> at >> sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:31) >> >> at >> sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:248) >> >> at >> sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:34) >> >> >> Occasionally I also get following error: >> IcedTeaPlugin.cc:4735: Error: parse int >> In IcedTeaPlugin.cc:4735 a lookup to a object seems to have failed in your case. We need to know what string was used here for the lookup. I dont want to guess but the errors you have experienced might be related. *snip from PluginAppletSecurityContext.java:4735* case jobject_type: // Have we referred to this object before? id = str.ToInteger (&conversionResult); PLUGIN_CHECK ("parse int", conversionResult); retval.l = factory->references.ReferenceObject (id); break; *snap* Cheers and have a great day! Xerxes From mark at klomp.org Thu Feb 12 03:06:20 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 12 Feb 2009 12:06:20 +0100 Subject: RFC: Only enable NIO2 by default when building with IcedTea In-Reply-To: <20090210190726.GA13625@rivendell.middle-earth.co.uk> References: <20090210190726.GA13625@rivendell.middle-earth.co.uk> Message-ID: <1234436780.2271.25.camel@fedora.wildebeest.org> Hi Andrew, While we are still discussing the rest of the patch could you already apply this part: On Tue, 2009-02-10 at 19:07 +0000, Andrew John Hughes wrote: > @@ -135,7 +135,7 @@ > AC_ARG_ENABLE([nio2], > [AS_HELP_STRING([--disable-nio2], > [Disable inclusion of backported NIO2])], > - [ENABLE_XRENDER="${enableval}"], [ENABLE_NIO2='yes']) > + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2="${with_icedtea}"]) > AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) > AC_MSG_RESULT(${ENABLE_NIO2}) I was looking at it today and this typo was really confusing. Thanks, Mark From oliver.may at dfc.be Thu Feb 12 03:30:35 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 12 Feb 2009 12:30:35 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993EF89.7020603@zafena.se> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> Message-ID: <4994085B.2000500@dfc.be> Hi Xerxes! Xerxes R?nby wrote: > Thank you for the cool report that you are running the icedtea-6 plugin > on you phone! > Do you have a picture? > Do all applets crash or only the one you are working on? Thanks for the quick reply, I'll set up a simple testcase later today, because the application I am developing is quite complex javascript stuff. Also, the java applet is signed because it needs access to the outside world (tcp connection to gps daemon). So far i have not found an online applet wich also gives this kind of error, but signed applets are hard to find... I'll try to send some pictures soon! :) >> >> kind regards, >> > Cheers and have a great day! > Xerxes > -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From oliver.may at dfc.be Thu Feb 12 03:44:12 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 12 Feb 2009 12:44:12 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4994085B.2000500@dfc.be> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4994085B.2000500@dfc.be> Message-ID: <49940B8C.2010700@dfc.be> Here's a quick picture of the phone running a java applet using icedtea6-plugin and the iceweasel browser! Oliver May wrote: > Hi Xerxes! > > > > Xerxes R?nby wrote: >> Thank you for the cool report that you are running the icedtea-6 >> plugin on you phone! >> Do you have a picture? >> Do all applets crash or only the one you are working on? > > > Thanks for the quick reply, I'll set up a simple testcase later today, > because the application I am developing is quite complex javascript > stuff. Also, the java applet is signed because it needs access to the > outside world (tcp connection to gps daemon). > So far i have not found an online applet wich also gives this kind of > error, but signed applets are hard to find... > > I'll try to send some pictures soon! :) > >>> >>> kind regards, >>> >> Cheers and have a great day! >> Xerxes >> > -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be -------------- next part -------------- A non-text attachment was scrubbed... Name: P-02:12:2009-12:40:38.jpg Type: image/jpeg Size: 22354 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/8dc2438b/38.jpg From xerxes at zafena.se Thu Feb 12 03:55:32 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 12 Feb 2009 12:55:32 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <49940B8C.2010700@dfc.be> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4994085B.2000500@dfc.be> <49940B8C.2010700@dfc.be> Message-ID: <49940E34.20801@zafena.se> Im thrilled to see Icedtea6 actually running on armv4t hardware since i did only have access to armv5tejl hardware when I was poking on the armel icedtea6/zero port last year. What a nice display! Kudos! Xerxes Oliver May skrev: > Here's a quick picture of the phone running a java applet using > icedtea6-plugin and the iceweasel browser! > > Oliver May wrote: >> Hi Xerxes! >> >> >> >> Xerxes R?nby wrote: >>> Thank you for the cool report that you are running the icedtea-6 >>> plugin on you phone! >>> Do you have a picture? >>> Do all applets crash or only the one you are working on? >> >> >> Thanks for the quick reply, I'll set up a simple testcase later today, >> because the application I am developing is quite complex javascript >> stuff. Also, the java applet is signed because it needs access to the >> outside world (tcp connection to gps daemon). >> So far i have not found an online applet wich also gives this kind of >> error, but signed applets are hard to find... >> >> I'll try to send some pictures soon! :) >> >>>> >>>> kind regards, >>>> >>> Cheers and have a great day! >>> Xerxes >>> >> > > > ------------------------------------------------------------------------ > From mark at klomp.org Thu Feb 12 04:06:52 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 12 Feb 2009 13:06:52 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993EF89.7020603@zafena.se> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> Message-ID: <1234440412.2271.52.camel@fedora.wildebeest.org> Hi Oliver, On Thu, 2009-02-12 at 10:44 +0100, Xerxes R?nby wrote: > Oliver May wrote: > > I am having some difficulties with icedtea-6-plugin on debian (armel). > > I am working on a java applet for communication between a browser > > (iceweasel) and hardware (gpsd) on the neo freerunner phone. > > > Do you have a url to this applet and its sourcecode? without it it is > really hard to see whats going on. > It would be great if you happen to have a small testcase based on code > from the applet that exposes this bug so that it can be fixed properly > on ARM armel platforms. > [...] > > My configuration: > > > > Icedtea6-plugin: Version: 6b14-1~exp1 > > Openjdk6-jre: Version: 6b14-1~exp1 > > Iceweasel: 3.06-1 > > Linux debian-gta02 2.6.24-20081103.git7172ec57 #1 PREEMPT Wed Dec 17 > > 18:06:43 UTC 2008 armv4tl GNU/Linux > > > > I have also set up a x86 debian installation in a virtual machine with > > the same package configuration as on the phone. And the same errors > > occur there, so i guess it's not platform (armel) related. It might actually be. Could you post the output of java -version and/or the full version info from the browser "about:plugins" for the IcedTeaPlugin? It should give you exactly which versions of the class libraries, icedtea patches and vm runtime are being used (on arm there are several combinations possible including zero and cacao). Thanks, Mark From oliver.may at dfc.be Thu Feb 12 05:12:43 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 12 Feb 2009 14:12:43 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <1234440412.2271.52.camel@fedora.wildebeest.org> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <1234440412.2271.52.camel@fedora.wildebeest.org> Message-ID: <4994204B.5080609@dfc.be> Mark, Mark Wielaard wrote: > It might actually be. Could you post the output of java -version and/or > the full version info from the browser "about:plugins" for the > IcedTeaPlugin? It should give you exactly which versions of the class > libraries, icedtea patches and vm runtime are being used (on arm there > are several combinations possible including zero and cacao). > > Thanks, > > Mark > > debian-gta02:~# java -version java version "1.6.0_0" IcedTea6 1.4 (6b14-1~exp1) Runtime Environment (build 1.6.0_0-b14) OpenJDK Core VM (build 14.0-b08, interpreted mode) The about:plugins output of iceweasel: File name: IcedTeaPlugin.so The IcedTea Web Browser Plugin 1.4 (6b14-1~exp1) executes Java applets. MIME Type Description Suffixes Enabled application/x-java-vm IcedTea class,jar Yes application/x-java-applet IcedTea class,jar Yes application/x-java-applet;version=1.1 IcedTea class,jar Yes application/x-java-applet;version=1.1.1 IcedTea class,jar Yes application/x-java-applet;version=1.1.2 IcedTea class,jar Yes application/x-java-applet;version=1.1.3 IcedTea class,jar Yes application/x-java-applet;version=1.2 IcedTea class,jar Yes application/x-java-applet;version=1.2.1 IcedTea class,jar Yes application/x-java-applet;version=1.2.2 IcedTea class,jar Yes application/x-java-applet;version=1.3 IcedTea class,jar Yes application/x-java-applet;version=1.3.1 IcedTea class,jar Yes application/x-java-applet;version=1.4 IcedTea class,jar Yes application/x-java-applet;version=1.4.1 IcedTea class,jar Yes application/x-java-applet;version=1.4.2 IcedTea class,jar Yes application/x-java-applet;version=1.5 IcedTea class,jar Yes application/x-java-applet;version=1.6 IcedTea class,jar Yes application/x-java-applet;jpi-version=1.6.0_00 IcedTea class,jar Yes application/x-java-bean IcedTea class,jar Yes application/x-java-bean;version=1.1 IcedTea class,jar Yes application/x-java-bean;version=1.1.1 IcedTea class,jar Yes application/x-java-bean;version=1.1.2 IcedTea class,jar Yes application/x-java-bean;version=1.1.3 IcedTea class,jar Yes application/x-java-bean;version=1.2 IcedTea class,jar Yes application/x-java-bean;version=1.2.1 IcedTea class,jar Yes application/x-java-bean;version=1.2.2 IcedTea class,jar Yes application/x-java-bean;version=1.3 IcedTea class,jar Yes application/x-java-bean;version=1.3.1 IcedTea class,jar Yes application/x-java-bean;version=1.4 IcedTea class,jar Yes application/x-java-bean;version=1.4.1 IcedTea class,jar Yes application/x-java-bean;version=1.4.2 IcedTea class,jar Yes application/x-java-bean;version=1.5 IcedTea class,jar Yes application/x-java-bean;version=1.6 IcedTea class,jar Yes application/x-java-bean;jpi-version=1.6.0_00 IcedTea class,jar Yes Cheerio, -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From gnu_andrew at member.fsf.org Thu Feb 12 07:00:46 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 12 Feb 2009 15:00:46 +0000 Subject: RFC: Change name of default HotSpot to 'default' Message-ID: <20090212150029.GA1121@rivendell.middle-earth.co.uk> This patch renames the name of the default HotSpot patch set to be 'default' rather than the specific version. We should of course document what that version is elsewhere. I propose it either tracks 7 or we at least update to the latest b14 release as there are some bug fixes (I'll do this in a subsequent patch). Ok to commit? ChangeLog: 2009-02-12 Andrew John Hughes * patches/hotspot/14.0b08/icedtea-6791168.patch, * patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch, * patches/hotspot/14.0b08/icedtea-core-build.patch, * patches/hotspot/14.0b08/icedtea-debuginfo.patch, * patches/hotspot/14.0b08/icedtea-format.patch, * patches/hotspot/14.0b08/icedtea-gcc-4.3.patch, * patches/hotspot/14.0b08/icedtea-gcc-suffix.patch, * patches/hotspot/14.0b08/icedtea-headers.patch, * patches/hotspot/14.0b08/icedtea-includedb.patch, * patches/hotspot/14.0b08/icedtea-memory-limits.patch, * patches/hotspot/14.0b08/icedtea-no-precompiled.patch, * patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch, * patches/hotspot/14.0b08/icedtea-parisc-opt.patch, * patches/hotspot/14.0b08/icedtea-shark-build.patch, * patches/hotspot/14.0b08/icedtea-shark.patch, * patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch, * patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch, * patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch, * patches/hotspot/14.0b08/icedtea-sparc64-linux.patch, * patches/hotspot/14.0b08/icedtea-static-libstdc++.patch, * patches/hotspot/14.0b08/icedtea-text-relocations.patch, * patches/hotspot/14.0b08/icedtea-use-idx_t.patch, * patches/hotspot/14.0b08/icedtea-version.patch, * patches/hotspot/14.0b08/icedtea-zero-build.patch: Moved... * acinclude.m4: Make 'default' the default. * hotspot.map: Change 14.0b08 to default. * patches/hotspot/default/icedtea-6791168.patch, * patches/hotspot/default/icedtea-bytecodeInterpreter.patch, * patches/hotspot/default/icedtea-core-build.patch, * patches/hotspot/default/icedtea-debuginfo.patch, * patches/hotspot/default/icedtea-format.patch, * patches/hotspot/default/icedtea-gcc-4.3.patch, * patches/hotspot/default/icedtea-gcc-suffix.patch, * patches/hotspot/default/icedtea-headers.patch, * patches/hotspot/default/icedtea-includedb.patch, * patches/hotspot/default/icedtea-memory-limits.patch, * patches/hotspot/default/icedtea-no-precompiled.patch, * patches/hotspot/default/icedtea-params-cast-size_t.patch, * patches/hotspot/default/icedtea-parisc-opt.patch, * patches/hotspot/default/icedtea-shark-build.patch, * patches/hotspot/default/icedtea-shark.patch, * patches/hotspot/default/icedtea-sparc-buildfixes.patch, * patches/hotspot/default/icedtea-sparc-ptracefix.patch, * patches/hotspot/default/icedtea-sparc-trapsfix.patch, * patches/hotspot/default/icedtea-sparc64-linux.patch, * patches/hotspot/default/icedtea-static-libstdc++.patch, * patches/hotspot/default/icedtea-text-relocations.patch, * patches/hotspot/default/icedtea-use-idx_t.patch, * patches/hotspot/default/icedtea-version.patch, * patches/hotspot/default/icedtea-zero-build.patch: to here. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 551c49cb2e2a acinclude.m4 --- a/acinclude.m4 Wed Feb 11 11:49:45 2009 -0500 +++ b/acinclude.m4 Thu Feb 12 14:56:16 2009 +0000 @@ -845,7 +845,7 @@ AC_DEFUN([AC_CHECK_WITH_HOTSPOT_BUILD], [ - DEFAULT_BUILD="14.0b08" + DEFAULT_BUILD="default" AC_MSG_CHECKING([which HotSpot build to use]) AC_ARG_WITH([hotspot-build], [AS_HELP_STRING(--with-hotspot-build,the HotSpot build to use)], diff -r 551c49cb2e2a hotspot.map --- a/hotspot.map Wed Feb 11 11:49:45 2009 -0500 +++ b/hotspot.map Thu Feb 12 14:56:16 2009 +0000 @@ -1,2 +1,2 @@ # version changeset md5sum -14.0b08 f9d938ede196 c8f78d48ac83987bc2adebeebcd354e9 +default f9d938ede196 c8f78d48ac83987bc2adebeebcd354e9 diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-6791168.patch --- a/patches/hotspot/14.0b08/icedtea-6791168.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ ---- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -594,7 +594,7 @@ - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); - - // for c++ interpreter can rsi really be munged? -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state - __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method - __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer - -@@ -658,7 +658,7 @@ - const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); - // Always give one monitor to allow us to start interp if sync method. - // Any additional monitors need a check when moving the expression stack -- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; -+ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; - __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words - __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); - __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); -@@ -1829,7 +1829,7 @@ - Label unwind_and_forward; - - // restore state pointer. -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - __ movptr(rbx, STATE(_method)); // get method - #ifdef _LP64 -@@ -1877,14 +1877,14 @@ - - // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases - if (UseSSE < 2) { -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - __ movptr(rbx, STATE(_result._to_call._callee)); // get method just executed - __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset())); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT)); // Result stub address array index - __ jcc(Assembler::equal, do_float); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE)); // Result stub address array index - __ jcc(Assembler::equal, do_double); --#ifdef COMPILER2 -+#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) - __ empty_FPU_stack(); - #endif // COMPILER2 - __ jmp(done_conv); -@@ -1928,7 +1928,7 @@ - - // Restore rsi/r13 as compiled code may not preserve it - -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - // restore stack to what we had when we left (in case i2c extended it) - -@@ -1942,7 +1942,7 @@ - #else - __ movptr(rcx, STATE(_thread)); // get thread - __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD); --#endif / __LP64 -+#endif // _LP64 - __ jcc(Assembler::notZero, return_with_exception); - - // get method just executed ---- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -139,7 +139,7 @@ - #ifdef CC_INTERP - - inline interpreterState frame::get_interpreterState() const { -- return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize )); -+ return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); - } - - inline intptr_t* frame::sender_sp() const { ---- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -6943,29 +6943,32 @@ - - Label slow_case, done; - -- // x ?<= pi/4 -- fld_d(ExternalAddress((address)&pi_4)); -- fld_s(1); // Stack: X PI/4 X -- fabs(); // Stack: |X| PI/4 X -- fcmp(tmp); -- jcc(Assembler::above, slow_case); -- -- // fastest case: -pi/4 <= x <= pi/4 -- switch(trig) { -- case 's': -- fsin(); -- break; -- case 'c': -- fcos(); -- break; -- case 't': -- ftan(); -- break; -- default: -- assert(false, "bad intrinsic"); -- break; -+ ExternalAddress pi4_adr = (address)&pi_4; -+ if (reachable(pi4_adr)) { -+ // x ?<= pi/4 -+ fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); -+ fld_s(1); // Stack: X PI/4 X -+ fabs(); // Stack: |X| PI/4 X -+ fcmp(tmp); -+ jcc(Assembler::above, slow_case); -+ -+ // fastest case: -pi/4 <= x <= pi/4 -+ switch(trig) { -+ case 's': -+ fsin(); -+ break; -+ case 'c': -+ fcos(); -+ break; -+ case 't': -+ ftan(); -+ break; -+ default: -+ assert(false, "bad intrinsic"); -+ break; -+ } -+ jmp(done); - } -- jmp(done); - - // slow case: runtime call - bind(slow_case); ---- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -2954,10 +2954,16 @@ - __ pushptr(Address(rcx, 0)); // Save return address - __ enter(); // Save old & set new rbp - __ subptr(rsp, rbx); // Prolog -+#ifdef CC_INTERP -+ __ movptr(Address(rbp, -+ -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))), -+ sender_sp); // Make it walkable -+#else // CC_INTERP - __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), - sender_sp); // Make it walkable - // This value is corrected by layout_activation_impl - __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD ); -+#endif // CC_INTERP - __ mov(sender_sp, rsp); // Pass sender_sp to next frame - __ addptr(rsi, wordSize); // Bump array pointer (sizes) - __ addptr(rcx, wordSize); // Bump array pointer (pcs) ---- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -213,7 +213,7 @@ - - inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return op1; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return op1; - else return op1 / op2; - } - -@@ -231,7 +231,7 @@ - - inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return 0; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return 0; - else return op1 % op2; - } - ---- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -30,7 +30,7 @@ - - #ifdef CC_INTERP - void InterpreterMacroAssembler::get_method(Register reg) { -- movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize))); -+ movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize))); - movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method))); - } - #endif // CC_INTERP ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2009-01-13 10:16:45.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -163,7 +163,7 @@ - #ifdef USELABELS - // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an - // initialization (which is is the initialization of the table pointer...) --#define DISPATCH(opcode) goto *dispatch_table[opcode] -+#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode] - #define CONTINUE { \ - opcode = *pc; \ - DO_UPDATE_INSTRUCTION_COUNT(opcode); \ -@@ -341,7 +341,7 @@ - */ - #undef CHECK_NULL - #define CHECK_NULL(obj_) \ -- if ((obj_) == 0) { \ -+ if ((obj_) == NULL) { \ - VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), ""); \ - } - -@@ -1362,7 +1362,7 @@ - - #define NULL_COMPARISON_NOT_OP(name) \ - CASE(_if##name): { \ -- int skip = (!(STACK_OBJECT(-1) == 0)) \ -+ int skip = (!(STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ -@@ -1372,7 +1372,7 @@ - - #define NULL_COMPARISON_OP(name) \ - CASE(_if##name): { \ -- int skip = ((STACK_OBJECT(-1) == 0)) \ -+ int skip = ((STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -66,7 +66,6 @@ - friend class InterpreterGenerator; - friend class InterpreterMacroAssembler; - friend class frame; --friend class SharedRuntime; - friend class VMStructs; - - public: diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch --- a/patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-core-build.patch --- a/patches/hotspot/14.0b08/icedtea-core-build.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 -@@ -97,6 +97,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -111,3 +112,4 @@ - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 -@@ -91,6 +91,15 @@ - all_debug: jvmg jvmg1 jvmgkernel docs export_debug - all_optimized: optimized optimized1 optimizedkernel docs export_optimized - -+# Core (non-compiler) targets made available with this Makefile -+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore -+ -+allcore: all_productcore all_fastdebugcore -+all_productcore: productcore docs export_product -+all_fastdebugcore: fastdebugcore docs export_fastdebug -+all_debugcore: jvmgcore docs export_debug -+all_optimizedcore: optimizedcore docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -113,6 +122,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) - -+$(CORE_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -159,6 +172,12 @@ - $(MAKE_ARGS) $(VM_TARGET) - endif - -+generic_buildcore: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -205,13 +224,21 @@ - XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt - DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs - C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 -+ifdef ICEDTEA_CORE_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core -+else - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 -+endif - KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel - C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) - C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) - KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) - - # Misc files and generated files need to come from C1 or C2 area -+ifdef ICEDTEA_CORE_BUILD -+ MISC_DIR=$(C2_DIR) -+ GEN_DIR=$(C2_BASE_DIR)/generated -+else - ifeq ($(ARCH_DATA_MODEL), 32) - MISC_DIR=$(C1_DIR) - GEN_DIR=$(C1_BASE_DIR)/generated -@@ -219,6 +246,7 @@ - MISC_DIR=$(C2_DIR) - GEN_DIR=$(C2_BASE_DIR)/generated - endif -+endif - - # Bin files (windows) - ifeq ($(OSNAME),windows) -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp 2008-05-27 22:28:30.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-06-22 03:10:05.000000000 +0100 -@@ -94,8 +94,12 @@ - #ifdef TIERED - #define VMTYPE "Server" - #else -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+#if defined(COMPILER1) || defined(COMPILER2) -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") -+#else -+ #define VMTYPE "Core" -+#endif // COMPILER1 || COMPILER2 - #endif // TIERED - #endif // KERNEL - - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-debuginfo.patch --- a/patches/hotspot/14.0b08/icedtea-debuginfo.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-08-20 22:58:22.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-08-20 23:01:45.000000000 +0100 -@@ -62,6 +62,10 @@ - CFLAGS += -D_REENTRANT - CFLAGS += -fcheck-new - -+# Always generate full debuginfo on Linux. It'll be in a separate -+# debuginfo package when building RPMs. -+CFLAGS += -g -+ - ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) - ARCHFLAG/i486 = -m32 -march=i586 - ARCHFLAG/amd64 = -m64 - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-format.patch --- a/patches/hotspot/14.0b08/icedtea-format.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:08:09.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:32:59.000000000 +0000 -@@ -1361,7 +1361,7 @@ - - // Feed the cache size setting into the JDK - char buffer[1024]; -- sprintf(buffer, "java.lang.Integer.IntegerCache.high=%d", AutoBoxCacheMax); -+ sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax); - add_property(buffer); - } - if (AggressiveOpts && FLAG_IS_DEFAULT(DoEscapeAnalysis)) { -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp 2009-01-29 15:03:07.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp 2009-02-03 18:30:55.000000000 +0000 -@@ -730,7 +730,7 @@ - if (DieOnSafepointTimeout) { - char msg[1024]; - VM_Operation *op = VMThread::vm_operation(); -- sprintf(msg, "Safepoint sync time longer than %d ms detected when executing %s.", -+ sprintf(msg, "Safepoint sync time longer than " INTX_FORMAT " ms detected when executing %s.", - SafepointTimeoutDelay, - op != NULL ? op->name() : "no vm operation"); - fatal(msg); -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-01-29 15:03:07.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-02-03 19:32:30.000000000 +0000 -@@ -424,7 +424,7 @@ - // asserts is that error message -- often something about negative array - // indices -- is opaque. - --#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%X\n", tag); } -+#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%p\n", tag); } - - void ObjectMonitor::ctAsserts() { - CTASSERT(offset_of (ObjectMonitor, _header) == 0); -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp ---- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:10:58.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:29:15.000000000 +0000 -@@ -307,7 +307,7 @@ - - strncpy(buf, file, buflen); - if (len + 10 < buflen) { -- sprintf(buf + len, ":" SIZE_FORMAT, _lineno); -+ sprintf(buf + len, ":%d", _lineno); - } - st->print(" (%s)", buf); - } else { diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-gcc-4.3.patch --- a/patches/hotspot/14.0b08/icedtea-gcc-4.3.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:06:51.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:27:08.000000000 +0000 -@@ -98,7 +98,7 @@ - endif - - # Compiler warnings are treated as errors --WARNINGS_ARE_ERRORS = -Werror -+# WARNINGS_ARE_ERRORS = -Werror - - # Except for a few acceptable ones - # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit -diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/gcc.make openjdk/hotspot/make/solaris/makefiles/gcc.make ---- openjdk.orig/hotspot/make/solaris/makefiles/gcc.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2008-12-01 12:25:10.000000000 +0000 -@@ -109,7 +109,8 @@ - - - # Compiler warnings are treated as errors --WARNINGS_ARE_ERRORS = -Werror -+# Commented out for now because of gcc 4.3 warnings OpenJDK isn't ready for -+# WARNINGS_ARE_ERRORS = -Werror - # Enable these warnings. See 'info gcc' about details on these options - ADDITIONAL_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare - CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ADDITIONAL_WARNINGS) -diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp openjdk/hotspot/src/share/vm/adlc/filebuff.cpp ---- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.cpp 2008-12-01 12:25:10.000000000 +0000 -@@ -25,6 +25,8 @@ - // FILEBUFF.CPP - Routines for handling a parser file buffer - #include "adlc.hpp" - -+using namespace std; -+ - //------------------------------FileBuff--------------------------------------- - // Create a new parsing buffer - FileBuff::FileBuff( BufferedFile *fptr, ArchDesc& archDesc) : _fp(fptr), _AD(archDesc) { -diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp openjdk/hotspot/src/share/vm/adlc/filebuff.hpp ---- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.hpp 2008-12-01 12:25:10.000000000 +0000 -@@ -94,8 +94,11 @@ - FileBuffRegion *copy(); // Deep copy - FileBuffRegion *merge(FileBuffRegion*); // Merge 2 regions; delete input - --// void print(std::ostream&); --// friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); -+#if defined(__GNUC__) && __GNUC__ >= 3 -+ void print(std::ostream&); -+ friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); -+#else - void print(ostream&); - friend ostream& operator<< (ostream&, FileBuffRegion&); -+#endif - }; diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-gcc-suffix.patch --- a/patches/hotspot/14.0b08/icedtea-gcc-suffix.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ ---- openjdk/hotspot/agent/src/os/linux/Makefile~ 2007-08-02 09:16:50.000000000 +0200 -+++ openjdk/hotspot/agent/src/os/linux/Makefile 2007-08-08 17:00:11.204338801 +0200 -@@ -23,7 +23,7 @@ - # - - ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi ) --GCC = gcc -+GCC = gcc$(GCC_SUFFIX) - - JAVAH = ${JAVA_HOME}/bin/javah - ---- openjdk/hotspot/make/linux/makefiles/gcc.make~ 2007-08-08 16:13:12.281815996 +0200 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2007-08-08 16:36:52.573240769 +0200 -@@ -25,8 +25,8 @@ - #------------------------------------------------------------------------ - # CC, CPP & AS - --CPP = g++ --CC = gcc -+CPP = g++$(GCC_SUFFIX) -+CC = gcc$(GCC_SUFFIX) - AS = $(CC) -c - - # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-headers.patch --- a/patches/hotspot/14.0b08/icedtea-headers.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/jvmti.make openjdk/hotspot/make/linux/makefiles/jvmti.make ---- openjdk.orig/hotspot/make/linux/makefiles/jvmti.make 2008-05-23 20:51:14.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/jvmti.make 2008-05-23 20:54:13.000000000 +0100 -@@ -59,7 +59,7 @@ - - JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%) - --XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen -+XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) $(ENDORSED) -classpath $(JvmtiOutDir) jvmtiGen - - .PHONY: all jvmtidocs clean cleanall - - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-includedb.patch --- a/patches/hotspot/14.0b08/icedtea-includedb.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ ---- openjdk/hotspot/src/share/vm/includeDB_compiler2.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/includeDB_compiler2 2009-01-13 10:11:17.000000000 +0000 -@@ -140,6 +140,7 @@ - c2_globals_.hpp macros.hpp - - c2_init_.cpp compile.hpp -+c2_init_.cpp node.hpp - - c2compiler.cpp ad_.hpp - c2compiler.cpp c2compiler.hpp -@@ -839,6 +840,7 @@ - phase.cpp compile.hpp - phase.cpp compileBroker.hpp - phase.cpp nmethod.hpp -+phase.cpp node.hpp - phase.cpp phase.hpp - - phase.hpp port.hpp ---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 2009-01-13 10:11:17.000000000 +0000 -@@ -34,6 +34,7 @@ - collectionSetChooser.cpp g1CollectedHeap.hpp - collectionSetChooser.cpp g1CollectorPolicy.hpp - collectionSetChooser.cpp collectionSetChooser.hpp -+collectionSetChooser.cpp space.inline.hpp - - collectionSetChooser.hpp heapRegion.hpp - collectionSetChooser.hpp growableArray.hpp -@@ -44,6 +45,7 @@ - concurrentG1Refine.cpp copy.hpp - concurrentG1Refine.cpp g1CollectedHeap.hpp - concurrentG1Refine.cpp g1RemSet.hpp -+concurrentG1Refine.cpp space.inline.hpp - - concurrentG1Refine.hpp globalDefinitions.hpp - -@@ -264,7 +266,7 @@ - heapRegion.cpp iterator.hpp - heapRegion.cpp oop.inline.hpp - --heapRegion.hpp space.hpp -+heapRegion.hpp space.inline.hpp - heapRegion.hpp spaceDecorator.hpp - heapRegion.hpp g1BlockOffsetTable.inline.hpp - heapRegion.hpp watermark.hpp ---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge 2009-01-13 10:11:17.000000000 +0000 -@@ -306,6 +306,8 @@ - psPermGen.cpp psMarkSweepDecorator.hpp - psPermGen.cpp psParallelCompact.hpp - psPermGen.cpp psPermGen.hpp -+psPermGen.cpp markOop.inline.hpp -+psPermGen.cpp markSweep.inline.hpp - - psPermGen.hpp psOldGen.hpp - ---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep 2009-01-13 10:11:17.000000000 +0000 -@@ -28,6 +28,7 @@ - binaryTreeDictionary.cpp binaryTreeDictionary.hpp - binaryTreeDictionary.cpp globals.hpp - binaryTreeDictionary.cpp ostream.hpp -+binaryTreeDictionary.cpp space.inline.hpp - binaryTreeDictionary.cpp spaceDecorator.hpp - - binaryTreeDictionary.hpp freeBlockDictionary.hpp ---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew 2009-01-13 10:11:17.000000000 +0000 -@@ -29,6 +29,8 @@ - asParNewGeneration.cpp cmsAdaptiveSizePolicy.hpp - asParNewGeneration.cpp cmsGCAdaptivePolicyCounters.hpp - asParNewGeneration.cpp defNewGeneration.inline.hpp -+asParNewGeneration.cpp markOop.inline.hpp -+asParNewGeneration.cpp markSweep.inline.hpp - asParNewGeneration.cpp oop.pcgc.inline.hpp - asParNewGeneration.cpp parNewGeneration.hpp - asParNewGeneration.cpp referencePolicy.hpp -@@ -40,7 +42,7 @@ - parCardTableModRefBS.cpp java.hpp - parCardTableModRefBS.cpp mutexLocker.hpp - parCardTableModRefBS.cpp sharedHeap.hpp --parCardTableModRefBS.cpp space.hpp -+parCardTableModRefBS.cpp space.inline.hpp - parCardTableModRefBS.cpp universe.hpp - parCardTableModRefBS.cpp virtualspace.hpp - ---- openjdk/hotspot/src/share/vm/includeDB_features.orig 2009-01-13 10:10:44.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/includeDB_features 2009-01-13 10:11:17.000000000 +0000 -@@ -59,6 +59,8 @@ - - dump_.cpp assembler_.inline.hpp - dump_.cpp compactingPermGenGen.hpp -+dump_.cpp generation.inline.hpp -+dump_.cpp space.inline.hpp - - forte.cpp collectedHeap.inline.hpp - forte.cpp debugInfoRec.hpp diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-memory-limits.patch --- a/patches/hotspot/14.0b08/icedtea-memory-limits.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp ---- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 -+++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 -@@ -98,7 +98,7 @@ - - // Heap related flags - define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); --define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); -+define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); - - // Ergonomics related flags - define_pd_global(bool, NeverActAsServerClassMachine, false); ---- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 -+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 -@@ -2606,7 +2606,7 @@ - "an OS lock") \ - \ - /* gc parameters */ \ -- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ -+ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ - "Default maximum size for object heap (in bytes)") \ - \ - product_pd(uintx, NewSize, \ diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-no-precompiled.patch --- a/patches/hotspot/14.0b08/icedtea-no-precompiled.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ ---- openjdk/hotspot/make/linux/makefiles/gcc.make.orig 2009-01-04 13:51:38.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2009-01-04 13:53:34.000000000 +0000 -@@ -34,13 +34,6 @@ - CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) - CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) - --# check for precompiled headers support --ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" --USE_PRECOMPILED_HEADER=1 --PRECOMPILED_HEADER_DIR=. --PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch --endif -- - - #------------------------------------------------------------------------ - # Compiler flags ---- openjdk/hotspot/make/solaris/makefiles/gcc.make.orig 2009-01-04 14:44:12.000000000 +0000 -+++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2009-01-04 17:06:50.000000000 +0000 -@@ -45,13 +45,6 @@ - $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) - - --# check for precompiled headers support --ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" --USE_PRECOMPILED_HEADER=1 --PRECOMPILED_HEADER_DIR=. --PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch --endif -- - - #------------------------------------------------------------------------ - # Compiler flags diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch --- a/patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2008-09-01 01:47:18.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2008-09-01 01:53:31.000000000 +0100 -@@ -938,7 +938,7 @@ - if (free_percentage < desired_free_percentage) { - size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); - assert(desired_capacity >= capacity(), "invalid expansion size"); -- expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes); -+ expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes); - } - if (expand_bytes > 0) { - if (PrintGCDetails && Verbose) { -@@ -6044,7 +6044,7 @@ - HeapWord* curAddr = _markBitMap.startWord(); - while (curAddr < _markBitMap.endWord()) { - size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); -- MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining)); -+ MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining)); - _markBitMap.clear_large_range(chunk); - if (ConcurrentMarkSweepThread::should_yield() && - !foregroundGCIsActive() && -@@ -6332,7 +6332,7 @@ - return; - } - // Double capacity if possible -- size_t new_capacity = MIN2(_capacity*2, CMSMarkStackSizeMax); -+ size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) CMSMarkStackSizeMax); - // Do not give up existing stack until we have managed to - // get the double capacity that we desired. - ReservedSpace rs(ReservedSpace::allocation_align_size_up( -diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2008-08-14 08:40:10.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2008-09-01 01:49:59.000000000 +0100 -@@ -904,8 +904,8 @@ - void PSParallelCompact::initialize_dead_wood_limiter() - { - const size_t max = 100; -- _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0; -- _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; -+ _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0; -+ _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; - _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); - DEBUG_ONLY(_dwl_initialized = true;) - _dwl_adjustment = normal_distribution(1.0); -diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp ---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2008-08-14 08:40:10.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2008-09-01 01:52:42.000000000 +0100 -@@ -63,7 +63,7 @@ - _last_used = current_live; - - // We have different alignment constraints than the rest of the heap. -- const size_t alignment = MAX2(MinPermHeapExpansion, -+ const size_t alignment = MAX2((size_t) MinPermHeapExpansion, - virtual_space()->alignment()); - - // Compute the desired size: -diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2008-08-14 08:40:10.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2008-09-01 02:58:03.000000000 +0100 -@@ -287,7 +287,7 @@ - // yield a size that is too small) and bound it by MaxNewSize above. - // Ergonomics plays here by previously calculating the desired - // NewSize and MaxNewSize. -- max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize); -+ max_new_size = MIN2(MAX2(max_new_size, (size_t) NewSize), (size_t) MaxNewSize); - } - assert(max_new_size > 0, "All paths should set max_new_size"); - -diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp ---- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2008-08-14 08:40:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2008-09-01 01:49:59.000000000 +0100 -@@ -222,7 +222,7 @@ - size_t init_sz; - - if (TLABSize > 0) { -- init_sz = MIN2(TLABSize / HeapWordSize, max_size()); -+ init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size()); - } else if (global_stats() == NULL) { - // Startup issue - main thread initialized before heap initialized. - init_sz = min_size(); -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2008-09-01 01:47:17.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2008-09-01 01:58:01.000000000 +0100 -@@ -1025,7 +1025,7 @@ - // for "short" pauses ~ 4M*ParallelGCThreads - if (FLAG_IS_DEFAULT(MaxNewSize)) { // MaxNewSize not set at command-line - if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line -- FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size)); -+ FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size)); - } else { - FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size); - } -@@ -1038,7 +1038,7 @@ - // Old to Young gen size so as to shift the collection load - // to the old generation concurrent collector - if (FLAG_IS_DEFAULT(NewRatio)) { -- FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio)); -+ FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio)); - - size_t min_new = align_size_up(ScaleForWordSize(min_new_default), os::vm_page_size()); - size_t prev_initial_size = initial_heap_size(); -@@ -1067,8 +1067,8 @@ - // Unless explicitly requested otherwise, make young gen - // at least min_new, and at most preferred_max_new_size. - if (FLAG_IS_DEFAULT(NewSize)) { -- FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new)); -- FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize)); -+ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); -+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize)); - if(PrintGCDetails && Verbose) { - // Too early to use gclog_or_tty - tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize); -@@ -1079,7 +1079,7 @@ - // later NewRatio will decide how it grows; see above. - if (FLAG_IS_DEFAULT(OldSize)) { - if (max_heap > NewSize) { -- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); -+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (3*NewSize), max_heap - (size_t) NewSize)); - if(PrintGCDetails && Verbose) { - // Too early to use gclog_or_tty - tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize); diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-parisc-opt.patch --- a/patches/hotspot/14.0b08/icedtea-parisc-opt.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ ---- openjdk/hotspot/make/linux/makefiles/product.make.orig 2008-12-10 19:02:31.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/product.make 2008-12-10 19:24:53.000000000 +0100 -@@ -25,6 +25,11 @@ - # Sets make macros for making optimized version of Gamma VM - # (This is the "product", not the "release" version.) - -+# work around an ICE in gcc-4.1 and gcc-4.3 on parisc-linux -+ifeq ($(BUILDARCH)-$(ZERO_LIBARCH), zero-parisc) -+ OPT_CFLAGS/codeBlob.o = $(OPT_CFLAGS/NOOPT) -+endif -+ - # Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make - OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS) - OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@)) ---- openjdk/hotspot/make/linux/makefiles/optimized.make.orig 2008-12-10 19:02:22.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/optimized.make 2008-12-10 19:24:24.000000000 +0100 -@@ -25,6 +25,11 @@ - # Sets make macros for making optimized version of Gamma VM - # (This is the "product", not the "release" version.) - -+# work around an ICE in gcc-4.1 and gcc-4.3 on parisc-linux -+ifeq ($(BUILDARCH)-$(ZERO_LIBARCH), zero-parisc) -+ OPT_CFLAGS/codeBlob.o = $(OPT_CFLAGS/NOOPT) -+endif -+ - # Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make - OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS) - OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@)) diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-shark-build.patch --- a/patches/hotspot/14.0b08/icedtea-shark-build.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,233 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/Makefile openjdk/hotspot/make/linux/Makefile ---- openjdk.orig/hotspot/make/linux/Makefile 2008-07-03 08:39:52.000000000 +0100 -+++ openjdk/hotspot/make/linux/Makefile 2008-07-13 00:59:03.000000000 +0100 -@@ -158,6 +158,13 @@ - # profiledcore core __core/profiled - # productcore core __core/product - # -+# debugshark shark __shark/debug -+# fastdebugshark shark __shark/fastdebug -+# jvmgshark shark __shark/jvmg -+# optimizedshark shark __shark/optimized -+# profiledshark shark __shark/profiled -+# productshark shark __shark/product -+# - # What you get with each target: - # - # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher -@@ -176,11 +183,13 @@ - SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) - SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) - SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) -+SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(BUILDARCH)_shark/,$(TARGETS)) - - TARGETS_C2 = $(TARGETS) - TARGETS_C1 = $(addsuffix 1,$(TARGETS)) - TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) - TARGETS_CORE = $(addsuffix core,$(TARGETS)) -+TARGETS_SHARK = $(addsuffix shark,$(TARGETS)) - - BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make - BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) -@@ -196,6 +205,7 @@ - @echo " $(TARGETS_C2)" - @echo " $(TARGETS_C1)" - @echo " $(TARGETS_CORE)" -+ @echo " $(TARGETS_SHARK)" - - checks: check_os_version check_j2se_version - -@@ -245,6 +255,10 @@ - $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks - $(BUILDTREE) VARIANT=core - -+$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) -+ $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks -+ $(BUILDTREE) VARIANT=shark -+ - # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME - - $(TARGETS_C2): $(SUBDIRS_C2) -@@ -275,6 +289,12 @@ - cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install - endif - -+$(TARGETS_SHARK): $(SUBDIRS_SHARK) -+ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) -+ifdef INSTALL -+ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install -+endif -+ - # Just build the tree, and nothing else: - tree: $(SUBDIRS_C2) - tree1: $(SUBDIRS_C1) -@@ -305,7 +325,7 @@ - - #------------------------------------------------------------------------------- - --.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) -+.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_SHARK) - .PHONY: tree tree1 treecore - .PHONY: all compiler1 compiler2 core - .PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make ---- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:38:03.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:59:03.000000000 +0100 -@@ -215,8 +215,8 @@ - - ../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm - @echo Creating directory list $@ -- $(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \ -- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ -+ $(QUIETLY) find -L $(GAMMADIR)/src/share/vm/* -prune \ -+ -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find -L {} \ - \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@ - - Makefile: $(BUILDTREE_MAKE) -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:38:03.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:59:03.000000000 +0100 -@@ -118,6 +118,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so - ifndef ICEDTEA_CORE_BUILD -+ifndef ICEDTEA_SHARK_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -133,3 +134,4 @@ - endif - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-07-13 00:38:03.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-13 00:59:03.000000000 +0100 -@@ -64,6 +64,9 @@ - ifdef ICEDTEA_ZERO_BUILD - CFLAGS += $(LIBFFI_CFLAGS) - endif -+ifdef ICEDTEA_SHARK_BUILD -+CFLAGS += $(LLVM_CFLAGS) -+endif - CFLAGS += $(VM_PICFLAG) - CFLAGS += -fno-rtti - CFLAGS += -fno-exceptions -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/top.make openjdk/hotspot/make/linux/makefiles/top.make ---- openjdk.orig/hotspot/make/linux/makefiles/top.make 2008-07-03 08:39:53.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/top.make 2008-07-13 00:59:03.000000000 +0100 -@@ -73,6 +73,7 @@ - Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 - Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 - Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2 -+Include_DBs/SHARK = $(Include_DBs/CORE) $(VM)/includeDB_shark - Include_DBs = $(Include_DBs/$(TYPE)) - - Cached_plat = $(GENERATED)/platform.current -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-07-13 00:38:03.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-07-13 00:59:03.000000000 +0100 -@@ -126,10 +126,14 @@ - - STATIC_CXX = true - --ifeq ($(ZERO_LIBARCH), ppc64) -+ifdef ICEDTEA_SHARK_BUILD - STATIC_CXX = false - else -- STATIC_CXX = true -+ ifeq ($(ZERO_LIBARCH), ppc64) -+ STATIC_CXX = false -+ else -+ STATIC_CXX = true -+ endif - endif - - ifeq ($(LINK_INTO),AOUT) -@@ -157,6 +161,10 @@ - ifdef ICEDTEA_ZERO_BUILD - LIBS_VM += $(LIBFFI_LIBS) - endif -+ifdef ICEDTEA_SHARK_BUILD -+LFLAGS_VM += $(LLVM_LDFLAGS) -+LIBS_VM += $(LLVM_LIBS) -+endif - - LINK_VM = $(LINK_LIB.c) - -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-07-13 00:38:02.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-07-13 00:59:03.000000000 +0100 -@@ -103,6 +103,15 @@ - all_debugcore: jvmgcore docs export_debug - all_optimizedcore: optimizedcore docs export_optimized - -+# Shark (C0) targets made available with this Makefile -+SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark -+ -+allshark: all_productshark all_fastdebugshark -+all_productshark: productshark docs export_product -+all_fastdebugshark: fastdebugshark docs export_fastdebug -+all_debugshark: jvmgshark docs export_debug -+all_optimizedshark: optimizedshark docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -129,6 +138,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) - -+$(SHARK_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildshark $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -181,6 +194,12 @@ - $(MAKE) -f $(ABS_OS_MAKEFILE) \ - $(MAKE_ARGS) $(VM_TARGET) - -+generic_buildshark: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -230,8 +249,12 @@ - ifdef ICEDTEA_CORE_BUILD - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core - else -+ifdef ICEDTEA_SHARK_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark -+else - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 - endif -+endif - KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel - C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) - C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) -@@ -242,6 +265,10 @@ - MISC_DIR=$(C2_DIR) - GEN_DIR=$(C2_BASE_DIR)/generated - else -+ifdef ICEDTEA_SHARK_BUILD -+ MISC_DIR=$(C2_DIR) -+ GEN_DIR=$(C2_BASE_DIR)/generated -+else - ifeq ($(ARCH_DATA_MODEL), 32) - MISC_DIR=$(C1_DIR) - GEN_DIR=$(C1_BASE_DIR)/generated -@@ -250,6 +277,7 @@ - GEN_DIR=$(C2_BASE_DIR)/generated - endif - endif -+endif - - # Bin files (windows) - ifeq ($(OSNAME),windows) - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-shark.patch --- a/patches/hotspot/14.0b08/icedtea-shark.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,366 +0,0 @@ ---- openjdk/hotspot/src/share/vm/oops/methodOop.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/oops/methodOop.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -727,10 +727,14 @@ - } - - OrderAccess::storestore(); -+#ifdef SHARK -+ mh->_from_interpreted_entry = code->instructions_begin(); -+#else - mh->_from_compiled_entry = code->verified_entry_point(); - OrderAccess::storestore(); - // Instantly compiled code can execute. - mh->_from_interpreted_entry = mh->get_i2c_entry(); -+#endif // SHARK - - } - ---- openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp 2008-12-03 14:33:48.000000000 +0000 -@@ -44,6 +44,7 @@ - friend class VMStructs; - friend class CardTableRS; - friend class CheckForUnmarkedOops; // Needs access to raw card bytes. -+ friend class SharkBuilder; - #ifndef PRODUCT - // For debugging. - friend class GuaranteeNotModClosure; ---- openjdk/hotspot/src/share/vm/runtime/globals.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/globals.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -176,6 +176,18 @@ - #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT }, - #endif - -+#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark product}", DEFAULT }, -+#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd product}", DEFAULT }, -+#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark diagnostic}", DEFAULT }, -+#ifdef PRODUCT -+ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ -+ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ -+ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) -+#else -+ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark}", DEFAULT }, -+ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd}", DEFAULT }, -+ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark notproduct}", DEFAULT }, -+#endif - - static Flag flagTable[] = { - RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_EXPERIMENTAL_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT, RUNTIME_LP64_PRODUCT_FLAG_STRUCT) -@@ -189,6 +201,9 @@ - #ifdef COMPILER2 - C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT) - #endif -+#ifdef SHARK -+ SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, SHARK_PD_DEVELOP_FLAG_STRUCT, SHARK_PRODUCT_FLAG_STRUCT, SHARK_PD_PRODUCT_FLAG_STRUCT, SHARK_DIAGNOSTIC_FLAG_STRUCT, SHARK_NOTPRODUCT_FLAG_STRUCT) -+#endif - {0, NULL, NULL} - }; - ---- openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp 2008-12-03 14:33:49.000000000 +0000 -@@ -64,6 +64,11 @@ - assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); - BasicObjectLock* dest = _monitors->at(index); - dest->set_obj(monitor->owner()); -+#ifdef SHARK -+ // XXX This can be removed when Shark knows -+ // which monitors are in use. -+ if (monitor->owner()) -+#endif // SHARK - monitor->lock()->move_to(monitor->owner(), dest->lock()); - } - } -@@ -262,6 +267,11 @@ - top = iframe()->previous_monitor_in_interpreter_frame(top); - BasicObjectLock* src = _monitors->at(index); - top->set_obj(src->obj()); -+#ifdef SHARK -+ // XXX This can be removed when Shark knows -+ // which monitors are in use. -+ if (src->obj()) -+#endif // SHARK - src->lock()->move_to(src->obj(), top->lock()); - } - if (ProfileInterpreter) { ---- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp.orig 2008-12-03 14:23:37.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -94,12 +94,16 @@ - #ifdef TIERED - #define VMTYPE "Server" - #else -+#ifdef SHARK -+ #define VMTYPE "Shark" -+#else - #if defined(COMPILER1) || defined(COMPILER2) -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") - #else - #define VMTYPE "Core" - #endif // COMPILER1 || COMPILER2 -+#endif // SHARK - #endif // TIERED - #endif // KERNEL - ---- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -229,6 +229,7 @@ - - } - -+#ifndef SHARK - // Compute the caller frame based on the sender sp of stub_frame and stored frame sizes info. - CodeBlob* cb = stub_frame.cb(); - // Verify we have the right vframeArray -@@ -239,6 +240,10 @@ - assert(cb->is_deoptimization_stub() || cb->is_uncommon_trap_stub(), "just checking"); - Events::log("fetch unroll sp " INTPTR_FORMAT, unpack_sp); - #endif -+#else -+ intptr_t* unpack_sp = stub_frame.sender(&dummy_map).unextended_sp(); -+#endif // !SHARK -+ - // This is a guarantee instead of an assert because if vframe doesn't match - // we will unpack the wrong deoptimized frame and wind up in strange places - // where it will be very difficult to figure out what went wrong. Better -@@ -349,7 +354,9 @@ - - frame_pcs[0] = deopt_sender.raw_pc(); - -+#ifndef SHARK - assert(CodeCache::find_blob_unsafe(frame_pcs[0]) != NULL, "bad pc"); -+#endif // SHARK - - UnrollBlock* info = new UnrollBlock(array->frame_size() * BytesPerWord, - caller_adjustment * BytesPerWord, -@@ -890,7 +897,20 @@ - // stuff a C2I adapter we can properly fill in the callee-save - // register locations. - frame caller = fr.sender(reg_map); -+#ifdef ZERO -+ int frame_size; -+ { -+ // In zero, frame::sp() is the *end* of the frame, so -+ // caller.sp() - fr.sp() is the size of the *caller*. -+ RegisterMap dummy_map(thread, false); -+ frame frame_1 = thread->last_frame(); -+ frame frame_2 = frame_1.sender(&dummy_map); -+ assert(frame_2.sp() == fr.sp(), "should be"); -+ frame_size = frame_2.sp() - frame_1.sp(); -+ } -+#else - int frame_size = caller.sp() - fr.sp(); -+#endif // ZERO - - frame sender = caller; - -@@ -1057,7 +1077,7 @@ - JRT_END - - --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS) { - // in case of an unresolved klass entry, load the class. - if (constant_pool->tag_at(index).is_unresolved_klass()) { -@@ -1808,7 +1828,7 @@ - if (xtty != NULL) xtty->tail("statistics"); - } - } --#else // COMPILER2 -+#else // COMPILER2 || SHARK - - - // Stubs for C1 only system. -@@ -1844,4 +1864,4 @@ - return buf; - } - --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK ---- openjdk/hotspot/src/share/vm/runtime/globals.hpp.orig 2008-12-03 14:22:17.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-12-03 14:33:48.000000000 +0000 -@@ -22,7 +22,7 @@ - * - */ - --#if !defined(COMPILER1) && !defined(COMPILER2) -+#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) - define_pd_global(bool, BackgroundCompilation, false); - define_pd_global(bool, UseTLAB, false); - define_pd_global(bool, CICompileOSR, false); ---- openjdk/hotspot/src/share/vm/code/nmethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/code/nmethod.hpp 2008-12-03 14:33:48.000000000 +0000 -@@ -318,6 +318,7 @@ - - bool is_compiled_by_c1() const; - bool is_compiled_by_c2() const; -+ bool is_compiled_by_shark() const; - - // boundaries for different parts - address code_begin () const { return _entry_point; } ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -65,6 +65,11 @@ - assert(compiler() != NULL, "must be"); - return compiler()->is_c2(); - } -+bool nmethod::is_compiled_by_shark() const { -+ if (is_native_method()) return false; -+ assert(compiler() != NULL, "must be"); -+ return compiler()->is_shark(); -+} - - - -@@ -1567,6 +1572,7 @@ - // Method that knows how to preserve outgoing arguments at call. This method must be - // called with a frame corresponding to a Java invoke - void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { -+#ifndef SHARK - if (!method()->is_native()) { - SimpleScopeDesc ssd(this, fr.pc()); - Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci()); -@@ -1574,6 +1580,7 @@ - symbolOop signature = call->signature(); - fr.oops_compiled_arguments_do(signature, is_static, reg_map, f); - } -+#endif // !SHARK - } - - -@@ -2003,6 +2010,8 @@ - tty->print("(c1) "); - } else if (is_compiled_by_c2()) { - tty->print("(c2) "); -+ } else if (is_compiled_by_shark()) { -+ tty->print("(shark) "); - } else { - tty->print("(nm) "); - } ---- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -554,6 +554,14 @@ - #endif - #endif // COMPILER2 - -+#ifdef SHARK -+#if defined(COMPILER1) || defined(COMPILER2) -+#error "Can't use COMPILER1 or COMPILER2 with shark" -+#endif -+ _compilers[0] = new SharkCompiler(); -+ _compilers[1] = _compilers[0]; -+#endif -+ - // Initialize the CompileTask free list - _task_free_list = NULL; - ---- openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp 2008-12-03 14:33:48.000000000 +0000 -@@ -45,18 +45,26 @@ - // Missing feature tests - virtual bool supports_native() { return true; } - virtual bool supports_osr () { return true; } --#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2)) -+#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)) - virtual bool is_c1 () { return false; } - virtual bool is_c2 () { return false; } -+ virtual bool is_shark() { return false; } - #else - #ifdef COMPILER1 - bool is_c1 () { return true; } - bool is_c2 () { return false; } -+ bool is_shark() { return false; } - #endif // COMPILER1 - #ifdef COMPILER2 - bool is_c1 () { return false; } - bool is_c2 () { return true; } -+ bool is_shark() { return false; } - #endif // COMPILER2 -+#ifdef SHARK -+ bool is_c1 () { return false; } -+ bool is_c2 () { return false; } -+ bool is_shark() { return true; } -+#endif // SHARK - #endif // TIERED - - // Customization ---- openjdk/hotspot/src/share/vm/ci/ciMethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/ci/ciMethod.hpp 2008-12-03 14:33:48.000000000 +0000 -@@ -69,7 +69,7 @@ - - // Optional liveness analyzer. - MethodLiveness* _liveness; --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - ciTypeFlow* _flow; - #endif - ---- openjdk/hotspot/src/share/vm/ci/ciMethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/ci/ciMethod.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -56,9 +56,9 @@ - _liveness = NULL; - _bcea = NULL; - _method_blocks = NULL; --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - _flow = NULL; --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK - - if (JvmtiExport::can_hotswap_or_post_breakpoint() && _is_compilable) { - // 6328518 check hotswap conditions under the right lock. -@@ -124,9 +124,9 @@ - _bcea = NULL; - _method_blocks = NULL; - _method_data = NULL; --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - _flow = NULL; --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK - } - - -@@ -294,34 +294,34 @@ - // ------------------------------------------------------------------ - // ciMethod::get_flow_analysis - ciTypeFlow* ciMethod::get_flow_analysis() { --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - if (_flow == NULL) { - ciEnv* env = CURRENT_ENV; - _flow = new (env->arena()) ciTypeFlow(env, this); - _flow->do_flow(); - } - return _flow; --#else // COMPILER2 -+#else // COMPILER2 || SHARK - ShouldNotReachHere(); - return NULL; --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK - } - - - // ------------------------------------------------------------------ - // ciMethod::get_osr_flow_analysis - ciTypeFlow* ciMethod::get_osr_flow_analysis(int osr_bci) { --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - // OSR entry points are always place after a call bytecode of some sort - assert(osr_bci >= 0, "must supply valid OSR entry point"); - ciEnv* env = CURRENT_ENV; - ciTypeFlow* flow = new (env->arena()) ciTypeFlow(env, this, osr_bci); - flow->do_flow(); - return flow; --#else // COMPILER2 -+#else // COMPILER2 || SHARK - ShouldNotReachHere(); - return NULL; --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK - } - - // ------------------------------------------------------------------ diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch --- a/patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ ---- openjdk/hotspot/make/linux/makefiles/gcc.make.orig 2008-12-04 20:29:08.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-12-04 20:32:54.000000000 +0000 -@@ -52,6 +52,10 @@ - PICFLAG = -fpic - endif - -+ifneq ($(filter sparc sparcv9,$(BUILDARCH)),) -+PICFLAG = -fPIC -+endif -+ - VM_PICFLAG/LIBJVM = $(PICFLAG) - VM_PICFLAG/AOUT = - VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) ---- openjdk/hotspot/make/linux/makefiles/defs.make.orig 2008-12-04 20:29:04.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-12-04 20:32:54.000000000 +0000 -@@ -59,7 +59,7 @@ - endif - - # sparc --ifeq ($(ARCH), sparc64) -+ifneq (,$(filter $(ARCH), sparc sparc64)) - ifeq ($(ARCH_DATA_MODEL), 64) - ARCH_DATA_MODEL = 64 - MAKE_ARGS += LP64=1 ---- openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp.orig 2008-12-04 20:32:19.000000000 +0000 -+++ openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp 2008-12-04 20:32:54.000000000 +0000 -@@ -264,7 +264,7 @@ - - private: - -- constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const; -+ constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const; - - #ifndef CC_INTERP - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch --- a/patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -diff -up openjdk/hotspot/agent/src/os/linux/libproc.h.BAD openjdk/hotspot/agent/src/os/linux/libproc.h ---- openjdk/hotspot/agent/src/os/linux/libproc.h.BAD 2008-05-29 19:03:34.000000000 -0400 -+++ openjdk/hotspot/agent/src/os/linux/libproc.h 2008-05-29 19:01:45.000000000 -0400 -@@ -34,14 +34,25 @@ - - #if defined(sparc) || defined(sparcv9) - /* -- If _LP64 is defined ptrace.h should be taken from /usr/include/asm-sparc64 -- otherwise it should be from /usr/include/asm-sparc -- These two files define pt_regs structure differently -+ Taken from asm-sparc/ptrace.h and asm-sparc64/ptrace.h - */ - #ifdef _LP64 --#include "asm-sparc64/ptrace.h" -+struct pt_regs { -+ unsigned long u_regs[16]; /* globals and ins */ -+ unsigned long tstate; -+ unsigned long tpc; -+ unsigned long tnpc; -+ unsigned int y; -+ unsigned int fprs; -+}; - #else --#include "asm-sparc/ptrace.h" -+struct pt_regs { -+ unsigned long psr; -+ unsigned long pc; -+ unsigned long npc; -+ unsigned long y; -+ unsigned long u_regs[16]; /* globals and ins */ -+}; - #endif - - #endif //sparc or sparcv9 diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch --- a/patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp ---- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-04 08:40:18.000000000 +0100 -+++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-09 01:29:51.000000000 +0100 -@@ -25,7 +25,16 @@ - #include "incls/_precompiled.incl" - #include "incls/_assembler_linux_sparc.cpp.incl" - --#include -+/* Headers for 32bit sparc with a 32bit userland end up in asm/ -+ * Headers for 32bit sparc with a 64bit userland end up in asm-sparc/ -+ * There is no traps.h in asm-sparc64/ -+ */ -+ -+#if defined(__sparc__) && defined(__arch64__) -+# include -+#else -+# include -+#endif - - void MacroAssembler::read_ccr_trap(Register ccr_save) { - // No implementation diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-sparc64-linux.patch --- a/patches/hotspot/14.0b08/icedtea-sparc64-linux.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:28:06.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:35:27.000000000 +0100 -@@ -73,6 +73,14 @@ - HS_ARCH = sparc - endif - -+# sparc -+ifeq ($(ARCH), sparc) -+ ARCH_DATA_MODEL = 32 -+ PLATFORM = linux-sparc -+ VM_PLATFORM = linux_sparc -+ HS_ARCH = sparc -+endif -+ - # x86_64 - ifeq ($(ARCH), x86_64) - ifeq ($(ARCH_DATA_MODEL), 64) -diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp ---- openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 20:44:41.000000000 +0100 -+++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 22:35:27.000000000 +0100 -@@ -1112,20 +1112,12 @@ - - void LIRGenerator::volatile_field_store(LIR_Opr value, LIR_Address* address, - CodeEmitInfo* info) { --#ifdef _LP64 -- __ store(value, address, info); --#else - __ volatile_store_mem_reg(value, address, info); --#endif - } - - void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result, - CodeEmitInfo* info) { --#ifdef _LP64 -- __ load(address, result, info); --#else - __ volatile_load_mem_reg(address, result, info); --#endif - } - - diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-static-libstdc++.patch --- a/patches/hotspot/14.0b08/icedtea-static-libstdc++.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-05-16 22:13:31.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-05-23 23:25:47.000000000 +0100 -@@ -124,6 +124,12 @@ - - STATIC_CXX = true - -+ifeq ($(ZERO_LIBARCH), ppc64) -+ STATIC_CXX = false -+else -+ STATIC_CXX = true -+endif -+ - ifeq ($(LINK_INTO),AOUT) - LIBJVM.o = - LIBJVM_MAPFILE = diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-text-relocations.patch --- a/patches/hotspot/14.0b08/icedtea-text-relocations.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-07-17 08:40:27.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-21 23:10:50.000000000 +0100 -@@ -46,7 +46,11 @@ - # Compiler flags - - # position-independent code -+ifneq ($(filter parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),) - PICFLAG = -fPIC -+else -+PICFLAG = -fpic -+endif - - VM_PICFLAG/LIBJVM = $(PICFLAG) - VM_PICFLAG/AOUT = ---- rules.make.orig 2008-12-12 11:23:31.000000000 -0500 -+++ openjdk/hotspot/make/linux/makefiles/rules.make 2008-12-12 11:32:26.000000000 -0500 -@@ -138,20 +138,10 @@ - include $(GAMMADIR)/make/pic.make - endif - --# The non-PIC object files are only generated for 32 bit platforms. --ifdef LP64 - %.o: %.cpp - @echo Compiling $< - $(QUIETLY) $(REMOVE_TARGET) - $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) --else --%.o: %.cpp -- @echo Compiling $< -- $(QUIETLY) $(REMOVE_TARGET) -- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ -- $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \ -- $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)) --endif - - %.o: %.s - @echo Assembling $< ---- rules.make.orig 2008-12-12 11:42:55.000000000 -0500 -+++ openjdk/hotspot/make/solaris/makefiles/rules.make 2008-12-12 11:44:01.000000000 -0500 -@@ -138,20 +138,10 @@ - include $(GAMMADIR)/make/pic.make - endif - --# Sun compiler for 64 bit Solaris does not support building non-PIC object files. --ifdef LP64 - %.o: %.cpp - @echo Compiling $< - $(QUIETLY) $(REMOVE_TARGET) - $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) --else --%.o: %.cpp -- @echo Compiling $< -- $(QUIETLY) $(REMOVE_TARGET) -- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ -- $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \ -- $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)) --endif - - %.o: %.s - @echo Assembling $< diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-use-idx_t.patch --- a/patches/hotspot/14.0b08/icedtea-use-idx_t.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp ---- openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp 2008-11-06 08:40:55.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp 2008-11-10 00:55:09.000000000 +0000 -@@ -567,15 +567,15 @@ - - - MethodLiveness::BasicBlock::BasicBlock(MethodLiveness *analyzer, int start, int limit) : -- _gen((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), -+ _gen((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), - analyzer->bit_map_size_bits()), -- _kill((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), -+ _kill((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), - analyzer->bit_map_size_bits()), -- _entry((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), -+ _entry((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), - analyzer->bit_map_size_bits()), -- _normal_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), -+ _normal_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), - analyzer->bit_map_size_bits()), -- _exception_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), -+ _exception_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), - analyzer->bit_map_size_bits()), - _last_bci(-1) { - _analyzer = analyzer; -@@ -992,7 +992,7 @@ - } - - MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) { -- MethodLivenessResult answer(NEW_RESOURCE_ARRAY(uintptr_t, _analyzer->bit_map_size_words()), -+ MethodLivenessResult answer(NEW_RESOURCE_ARRAY(size_t, _analyzer->bit_map_size_words()), - _analyzer->bit_map_size_bits()); - answer.set_is_valid(); - -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp openjdk/hotspot/src/share/vm/utilities/bitMap.hpp ---- openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp 2008-11-06 08:40:58.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/bitMap.hpp 2008-11-10 00:57:20.000000000 +0000 -@@ -73,7 +73,7 @@ - - // Set a word to a specified value or to all ones; clear a word. - void set_word (idx_t word, bm_word_t val) { _map[word] = val; } -- void set_word (idx_t word) { set_word(word, ~(uintptr_t)0); } -+ void set_word (idx_t word) { set_word(word, ~(idx_t)0); } - void clear_word(idx_t word) { _map[word] = 0; } - - // Utilities for ranges of bits. Ranges are half-open [beg, end). diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-version.patch --- a/patches/hotspot/14.0b08/icedtea-version.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-11-06 08:40:50.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-11-19 12:15:54.000000000 +0000 -@@ -86,6 +86,10 @@ - ${JRE_VERSION} \ - ${VM_DISTRO} - -+ifdef DISTRIBUTION_ID -+CPPFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" -+endif -+ - # CFLAGS_WARN holds compiler options to suppress/enable warnings. - CFLAGS += $(CFLAGS_WARN/BYFILE) - -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp ---- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2008-11-06 08:40:58.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-11-19 12:15:54.000000000 +0000 -@@ -165,7 +165,8 @@ - - static void print_bug_submit_message(outputStream *out, Thread *thread) { - if (out == NULL) return; -- out->print_raw_cr("# If you would like to submit a bug report, please visit:"); -+ out->print_raw_cr("# If you would like to submit a bug report, please include"); -+ out->print_raw_cr("# instructions how to reproduce the bug and visit:"); - out->print_raw ("# "); - out->print_raw_cr(Arguments::java_vendor_url_bug()); - // If the crash is in native code, encourage user to submit a bug to the -@@ -339,6 +340,9 @@ - Abstract_VM_Version::vm_platform_string(), - UseCompressedOops ? "compressed oops" : "" - ); -+#ifdef DISTRIBUTION_ID -+ st->print_cr("# Distribution: %s", DISTRIBUTION_ID); -+#endif - - STEP(60, "(printing problematic frame)") - ---- arguments.cpp 2008-12-15 12:25:14.000000000 -0500 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2008-12-15 12:25:32.000000000 -0500 -@@ -25,7 +25,7 @@ - #include "incls/_precompiled.incl" - #include "incls/_arguments.cpp.incl" - --#define DEFAULT_VENDOR_URL_BUG "http://java.sun.com/webapps/bugreport/crash.jsp" -+#define DEFAULT_VENDOR_URL_BUG "http://icedtea.classpath.org/bugzilla" - #define DEFAULT_JAVA_LAUNCHER "generic" - - char** Arguments::_jvm_flags_array = NULL; diff -r 551c49cb2e2a patches/hotspot/14.0b08/icedtea-zero-build.patch --- a/patches/hotspot/14.0b08/icedtea-zero-build.patch Wed Feb 11 11:49:45 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make ---- openjdk.orig/hotspot/make/defs.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/defs.make 2008-11-29 02:14:15.000000000 +0000 -@@ -192,13 +192,14 @@ - - # Use uname output for SRCARCH, but deal with platform differences. If ARCH - # is not explicitly listed below, it is treated as x86. -- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH))) -+ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 zero,$(ARCH))) - ARCH/ = x86 - ARCH/sparc = sparc - ARCH/sparc64= sparc - ARCH/ia64 = ia64 - ARCH/amd64 = x86 - ARCH/x86_64 = x86 -+ ARCH/zero = zero - - # BUILDARCH is usually the same as SRCARCH, except for sparcv9 - BUILDARCH = $(SRCARCH) -@@ -222,8 +223,9 @@ - LIBARCH/sparc = sparc - LIBARCH/sparcv9 = sparcv9 - LIBARCH/ia64 = ia64 -+ LIBARCH/zero = $(ZERO_LIBARCH) - -- LP64_ARCH = sparcv9 amd64 ia64 -+ LP64_ARCH = sparcv9 amd64 ia64 zero - endif - - # Required make macro settings for all platforms -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make ---- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-11-29 02:14:15.000000000 +0000 -@@ -321,6 +321,7 @@ - DATA_MODE/sparcv9 = 64 - DATA_MODE/amd64 = 64 - DATA_MODE/ia64 = 64 -+DATA_MODE/zero = $(ZERO_BITSPERWORD) - - JAVA_FLAG/32 = -d32 - JAVA_FLAG/64 = -d64 -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-11-29 02:14:15.000000000 +0000 -@@ -37,6 +37,18 @@ - ARCH_DATA_MODEL ?= 32 - endif - -+# zero -+ifdef ICEDTEA_ZERO_BUILD -+ ARCH_DATA_MODEL = $(ZERO_BITSPERWORD) -+ ifeq ($(ARCH_DATA_MODEL), 64) -+ MAKE_ARGS += LP64=1 -+ endif -+ PLATFORM = linux-zero -+ VM_PLATFORM = linux_zero -+ HS_ARCH = zero -+ ARCH = zero -+endif -+ - # ia64 - ifeq ($(ARCH), ia64) - ARCH_DATA_MODEL = 64 -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-11-29 02:14:15.000000000 +0000 -@@ -56,6 +56,9 @@ - VM_PICFLAG/AOUT = - VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) - -+ifdef ICEDTEA_ZERO_BUILD -+CFLAGS += $(LIBFFI_CFLAGS) -+endif - CFLAGS += $(VM_PICFLAG) - CFLAGS += -fno-rtti - CFLAGS += -fno-exceptions -@@ -72,6 +75,7 @@ - ARCHFLAG/ia64 = - ARCHFLAG/sparc = -m32 -mcpu=v9 - ARCHFLAG/sparcv9 = -m64 -mcpu=v9 -+ARCHFLAG/zero = $(ZERO_ARCHFLAG) - - CFLAGS += $(ARCHFLAG) - AOUT_FLAGS += $(ARCHFLAG) -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/sa.make openjdk/hotspot/make/linux/makefiles/sa.make ---- openjdk.orig/hotspot/make/linux/makefiles/sa.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/sa.make 2008-11-29 02:14:15.000000000 +0000 -@@ -52,10 +52,10 @@ - SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties - - # if $(AGENT_DIR) does not exist, we don't build SA --# also, we don't build SA on Itanium. -+# also, we don't build SA on Itanium or zero. - - all: -- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ -+ if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ - $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ - fi - -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make ---- openjdk.orig/hotspot/make/linux/makefiles/saproc.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/saproc.make 2008-11-29 02:14:15.000000000 +0000 -@@ -44,10 +44,10 @@ - DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) - - # if $(AGENT_DIR) does not exist, we don't build SA --# also, we don't build SA on Itanium. -+# also, we don't build SA on Itanium or zero. - - checkAndBuildSA: -- $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ -+ $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ - $(MAKE) -f vm.make $(LIBSAPROC); \ - fi - -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make ---- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-11-29 01:55:52.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-11-29 02:14:15.000000000 +0000 -@@ -158,6 +158,9 @@ - - LIBS_VM += $(LIBS) - endif -+ifdef ICEDTEA_ZERO_BUILD -+LIBS_VM += $(LIBFFI_LIBS) -+endif - - LINK_VM = $(LINK_LIB.c) - diff -r 551c49cb2e2a patches/hotspot/default/icedtea-6791168.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-6791168.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,230 @@ +--- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -594,7 +594,7 @@ + __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); + + // for c++ interpreter can rsi really be munged? +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state + __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method + __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer + +@@ -658,7 +658,7 @@ + const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); + // Always give one monitor to allow us to start interp if sync method. + // Any additional monitors need a check when moving the expression stack +- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; ++ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; + __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words + __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); + __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); +@@ -1829,7 +1829,7 @@ + Label unwind_and_forward; + + // restore state pointer. +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + + __ movptr(rbx, STATE(_method)); // get method + #ifdef _LP64 +@@ -1877,14 +1877,14 @@ + + // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases + if (UseSSE < 2) { +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + __ movptr(rbx, STATE(_result._to_call._callee)); // get method just executed + __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset())); + __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT)); // Result stub address array index + __ jcc(Assembler::equal, do_float); + __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE)); // Result stub address array index + __ jcc(Assembler::equal, do_double); +-#ifdef COMPILER2 ++#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) + __ empty_FPU_stack(); + #endif // COMPILER2 + __ jmp(done_conv); +@@ -1928,7 +1928,7 @@ + + // Restore rsi/r13 as compiled code may not preserve it + +- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); ++ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); + + // restore stack to what we had when we left (in case i2c extended it) + +@@ -1942,7 +1942,7 @@ + #else + __ movptr(rcx, STATE(_thread)); // get thread + __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD); +-#endif / __LP64 ++#endif // _LP64 + __ jcc(Assembler::notZero, return_with_exception); + + // get method just executed +--- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -139,7 +139,7 @@ + #ifdef CC_INTERP + + inline interpreterState frame::get_interpreterState() const { +- return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize )); ++ return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); + } + + inline intptr_t* frame::sender_sp() const { +--- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -6943,29 +6943,32 @@ + + Label slow_case, done; + +- // x ?<= pi/4 +- fld_d(ExternalAddress((address)&pi_4)); +- fld_s(1); // Stack: X PI/4 X +- fabs(); // Stack: |X| PI/4 X +- fcmp(tmp); +- jcc(Assembler::above, slow_case); +- +- // fastest case: -pi/4 <= x <= pi/4 +- switch(trig) { +- case 's': +- fsin(); +- break; +- case 'c': +- fcos(); +- break; +- case 't': +- ftan(); +- break; +- default: +- assert(false, "bad intrinsic"); +- break; ++ ExternalAddress pi4_adr = (address)&pi_4; ++ if (reachable(pi4_adr)) { ++ // x ?<= pi/4 ++ fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); ++ fld_s(1); // Stack: X PI/4 X ++ fabs(); // Stack: |X| PI/4 X ++ fcmp(tmp); ++ jcc(Assembler::above, slow_case); ++ ++ // fastest case: -pi/4 <= x <= pi/4 ++ switch(trig) { ++ case 's': ++ fsin(); ++ break; ++ case 'c': ++ fcos(); ++ break; ++ case 't': ++ ftan(); ++ break; ++ default: ++ assert(false, "bad intrinsic"); ++ break; ++ } ++ jmp(done); + } +- jmp(done); + + // slow case: runtime call + bind(slow_case); +--- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -2954,10 +2954,16 @@ + __ pushptr(Address(rcx, 0)); // Save return address + __ enter(); // Save old & set new rbp + __ subptr(rsp, rbx); // Prolog ++#ifdef CC_INTERP ++ __ movptr(Address(rbp, ++ -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))), ++ sender_sp); // Make it walkable ++#else // CC_INTERP + __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), + sender_sp); // Make it walkable + // This value is corrected by layout_activation_impl + __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD ); ++#endif // CC_INTERP + __ mov(sender_sp, rsp); // Pass sender_sp to next frame + __ addptr(rsi, wordSize); // Bump array pointer (sizes) + __ addptr(rcx, wordSize); // Bump array pointer (pcs) +--- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -213,7 +213,7 @@ + + inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) { + /* it's possible we could catch this special case implicitly */ +- if (op1 == 0x80000000 && op2 == -1) return op1; ++ if ((juint)op1 == 0x80000000 && op2 == -1) return op1; + else return op1 / op2; + } + +@@ -231,7 +231,7 @@ + + inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) { + /* it's possible we could catch this special case implicitly */ +- if (op1 == 0x80000000 && op2 == -1) return 0; ++ if ((juint)op1 == 0x80000000 && op2 == -1) return 0; + else return op1 % op2; + } + +--- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -30,7 +30,7 @@ + + #ifdef CC_INTERP + void InterpreterMacroAssembler::get_method(Register reg) { +- movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize))); ++ movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize))); + movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method))); + } + #endif // CC_INTERP +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2009-01-13 10:16:45.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-13 10:17:05.000000000 +0000 +@@ -163,7 +163,7 @@ + #ifdef USELABELS + // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an + // initialization (which is is the initialization of the table pointer...) +-#define DISPATCH(opcode) goto *dispatch_table[opcode] ++#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode] + #define CONTINUE { \ + opcode = *pc; \ + DO_UPDATE_INSTRUCTION_COUNT(opcode); \ +@@ -341,7 +341,7 @@ + */ + #undef CHECK_NULL + #define CHECK_NULL(obj_) \ +- if ((obj_) == 0) { \ ++ if ((obj_) == NULL) { \ + VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), ""); \ + } + +@@ -1362,7 +1362,7 @@ + + #define NULL_COMPARISON_NOT_OP(name) \ + CASE(_if##name): { \ +- int skip = (!(STACK_OBJECT(-1) == 0)) \ ++ int skip = (!(STACK_OBJECT(-1) == NULL)) \ + ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ + address branch_pc = pc; \ + UPDATE_PC_AND_TOS(skip, -1); \ +@@ -1372,7 +1372,7 @@ + + #define NULL_COMPARISON_OP(name) \ + CASE(_if##name): { \ +- int skip = ((STACK_OBJECT(-1) == 0)) \ ++ int skip = ((STACK_OBJECT(-1) == NULL)) \ + ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ + address branch_pc = pc; \ + UPDATE_PC_AND_TOS(skip, -1); \ +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig 2009-01-13 10:15:42.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2009-01-13 10:17:05.000000000 +0000 +@@ -66,7 +66,6 @@ + friend class InterpreterGenerator; + friend class InterpreterMacroAssembler; + friend class frame; +-friend class SharedRuntime; + friend class VMStructs; + + public: diff -r 551c49cb2e2a patches/hotspot/default/icedtea-bytecodeInterpreter.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-bytecodeInterpreter.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,11 @@ +diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp +--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 +@@ -60,7 +60,6 @@ + }; + + class BytecodeInterpreter : StackObj { +-friend class SharedRuntime; + friend class AbstractInterpreterGenerator; + friend class CppInterpreterGenerator; + friend class InterpreterGenerator; diff -r 551c49cb2e2a patches/hotspot/default/icedtea-core-build.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-core-build.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,108 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make +--- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 +@@ -97,6 +97,7 @@ + EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so ++ifndef ICEDTEA_CORE_BUILD + ifeq ($(ARCH_DATA_MODEL), 32) + EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt +@@ -111,3 +112,4 @@ + EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar + endif + endif ++endif +diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile +--- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 ++++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 +@@ -91,6 +91,15 @@ + all_debug: jvmg jvmg1 jvmgkernel docs export_debug + all_optimized: optimized optimized1 optimizedkernel docs export_optimized + ++# Core (non-compiler) targets made available with this Makefile ++CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore ++ ++allcore: all_productcore all_fastdebugcore ++all_productcore: productcore docs export_product ++all_fastdebugcore: fastdebugcore docs export_fastdebug ++all_debugcore: jvmgcore docs export_debug ++all_optimizedcore: optimizedcore docs export_optimized ++ + # Do everything + world: all create_jdk + +@@ -113,6 +122,10 @@ + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) + ++$(CORE_VM_TARGETS): ++ $(CD) $(GAMMADIR)/make; \ ++ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) ++ + $(KERNEL_VM_TARGETS): + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) +@@ -159,6 +172,12 @@ + $(MAKE_ARGS) $(VM_TARGET) + endif + ++generic_buildcore: ++ $(MKDIR) -p $(OUTPUTDIR) ++ $(CD) $(OUTPUTDIR); \ ++ $(MAKE) -f $(ABS_OS_MAKEFILE) \ ++ $(MAKE_ARGS) $(VM_TARGET) ++ + generic_buildkernel: + $(MKDIR) -p $(OUTPUTDIR) + ifeq ($(OSNAME),windows) +@@ -205,13 +224,21 @@ + XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt + DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs + C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 ++ifdef ICEDTEA_CORE_BUILD ++C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core ++else + C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 ++endif + KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel + C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) + C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) + KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) + + # Misc files and generated files need to come from C1 or C2 area ++ifdef ICEDTEA_CORE_BUILD ++ MISC_DIR=$(C2_DIR) ++ GEN_DIR=$(C2_BASE_DIR)/generated ++else + ifeq ($(ARCH_DATA_MODEL), 32) + MISC_DIR=$(C1_DIR) + GEN_DIR=$(C1_BASE_DIR)/generated +@@ -219,6 +246,7 @@ + MISC_DIR=$(C2_DIR) + GEN_DIR=$(C2_BASE_DIR)/generated + endif ++endif + + # Bin files (windows) + ifeq ($(OSNAME),windows) +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp 2008-05-27 22:28:30.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-06-22 03:10:05.000000000 +0100 +@@ -94,8 +94,12 @@ + #ifdef TIERED + #define VMTYPE "Server" + #else +- #define VMTYPE COMPILER1_PRESENT("Client") \ +- COMPILER2_PRESENT("Server") ++#if defined(COMPILER1) || defined(COMPILER2) ++ #define VMTYPE COMPILER1_PRESENT("Client") \ ++ COMPILER2_PRESENT("Server") ++#else ++ #define VMTYPE "Core" ++#endif // COMPILER1 || COMPILER2 + #endif // TIERED + #endif // KERNEL + + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-debuginfo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-debuginfo.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,15 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make +--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-08-20 22:58:22.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-08-20 23:01:45.000000000 +0100 +@@ -62,6 +62,10 @@ + CFLAGS += -D_REENTRANT + CFLAGS += -fcheck-new + ++# Always generate full debuginfo on Linux. It'll be in a separate ++# debuginfo package when building RPMs. ++CFLAGS += -g ++ + ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) + ARCHFLAG/i486 = -m32 -march=i586 + ARCHFLAG/amd64 = -m64 + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-format.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-format.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,48 @@ +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:08:09.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:32:59.000000000 +0000 +@@ -1361,7 +1361,7 @@ + + // Feed the cache size setting into the JDK + char buffer[1024]; +- sprintf(buffer, "java.lang.Integer.IntegerCache.high=%d", AutoBoxCacheMax); ++ sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax); + add_property(buffer); + } + if (AggressiveOpts && FLAG_IS_DEFAULT(DoEscapeAnalysis)) { +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp 2009-01-29 15:03:07.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp 2009-02-03 18:30:55.000000000 +0000 +@@ -730,7 +730,7 @@ + if (DieOnSafepointTimeout) { + char msg[1024]; + VM_Operation *op = VMThread::vm_operation(); +- sprintf(msg, "Safepoint sync time longer than %d ms detected when executing %s.", ++ sprintf(msg, "Safepoint sync time longer than " INTX_FORMAT " ms detected when executing %s.", + SafepointTimeoutDelay, + op != NULL ? op->name() : "no vm operation"); + fatal(msg); +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-01-29 15:03:07.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-02-03 19:32:30.000000000 +0000 +@@ -424,7 +424,7 @@ + // asserts is that error message -- often something about negative array + // indices -- is opaque. + +-#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%X\n", tag); } ++#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%p\n", tag); } + + void ObjectMonitor::ctAsserts() { + CTASSERT(offset_of (ObjectMonitor, _header) == 0); +diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp +--- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:10:58.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:29:15.000000000 +0000 +@@ -307,7 +307,7 @@ + + strncpy(buf, file, buflen); + if (len + 10 < buflen) { +- sprintf(buf + len, ":" SIZE_FORMAT, _lineno); ++ sprintf(buf + len, ":%d", _lineno); + } + st->print(" (%s)", buf); + } else { diff -r 551c49cb2e2a patches/hotspot/default/icedtea-gcc-4.3.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-gcc-4.3.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,54 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make +--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:06:51.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:27:08.000000000 +0000 +@@ -98,7 +98,7 @@ + endif + + # Compiler warnings are treated as errors +-WARNINGS_ARE_ERRORS = -Werror ++# WARNINGS_ARE_ERRORS = -Werror + + # Except for a few acceptable ones + # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit +diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/gcc.make openjdk/hotspot/make/solaris/makefiles/gcc.make +--- openjdk.orig/hotspot/make/solaris/makefiles/gcc.make 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2008-12-01 12:25:10.000000000 +0000 +@@ -109,7 +109,8 @@ + + + # Compiler warnings are treated as errors +-WARNINGS_ARE_ERRORS = -Werror ++# Commented out for now because of gcc 4.3 warnings OpenJDK isn't ready for ++# WARNINGS_ARE_ERRORS = -Werror + # Enable these warnings. See 'info gcc' about details on these options + ADDITIONAL_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare + CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ADDITIONAL_WARNINGS) +diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp openjdk/hotspot/src/share/vm/adlc/filebuff.cpp +--- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/adlc/filebuff.cpp 2008-12-01 12:25:10.000000000 +0000 +@@ -25,6 +25,8 @@ + // FILEBUFF.CPP - Routines for handling a parser file buffer + #include "adlc.hpp" + ++using namespace std; ++ + //------------------------------FileBuff--------------------------------------- + // Create a new parsing buffer + FileBuff::FileBuff( BufferedFile *fptr, ArchDesc& archDesc) : _fp(fptr), _AD(archDesc) { +diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp openjdk/hotspot/src/share/vm/adlc/filebuff.hpp +--- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/adlc/filebuff.hpp 2008-12-01 12:25:10.000000000 +0000 +@@ -94,8 +94,11 @@ + FileBuffRegion *copy(); // Deep copy + FileBuffRegion *merge(FileBuffRegion*); // Merge 2 regions; delete input + +-// void print(std::ostream&); +-// friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); ++#if defined(__GNUC__) && __GNUC__ >= 3 ++ void print(std::ostream&); ++ friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); ++#else + void print(ostream&); + friend ostream& operator<< (ostream&, FileBuffRegion&); ++#endif + }; diff -r 551c49cb2e2a patches/hotspot/default/icedtea-gcc-suffix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-gcc-suffix.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,25 @@ +--- openjdk/hotspot/agent/src/os/linux/Makefile~ 2007-08-02 09:16:50.000000000 +0200 ++++ openjdk/hotspot/agent/src/os/linux/Makefile 2007-08-08 17:00:11.204338801 +0200 +@@ -23,7 +23,7 @@ + # + + ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi ) +-GCC = gcc ++GCC = gcc$(GCC_SUFFIX) + + JAVAH = ${JAVA_HOME}/bin/javah + +--- openjdk/hotspot/make/linux/makefiles/gcc.make~ 2007-08-08 16:13:12.281815996 +0200 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2007-08-08 16:36:52.573240769 +0200 +@@ -25,8 +25,8 @@ + #------------------------------------------------------------------------ + # CC, CPP & AS + +-CPP = g++ +-CC = gcc ++CPP = g++$(GCC_SUFFIX) ++CC = gcc$(GCC_SUFFIX) + AS = $(CC) -c + + # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-headers.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-headers.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,13 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/jvmti.make openjdk/hotspot/make/linux/makefiles/jvmti.make +--- openjdk.orig/hotspot/make/linux/makefiles/jvmti.make 2008-05-23 20:51:14.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/jvmti.make 2008-05-23 20:54:13.000000000 +0100 +@@ -59,7 +59,7 @@ + + JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%) + +-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen ++XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) $(ENDORSED) -classpath $(JvmtiOutDir) jvmtiGen + + .PHONY: all jvmtidocs clean cleanall + + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-includedb.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-includedb.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,97 @@ +--- openjdk/hotspot/src/share/vm/includeDB_compiler2.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/includeDB_compiler2 2009-01-13 10:11:17.000000000 +0000 +@@ -140,6 +140,7 @@ + c2_globals_.hpp macros.hpp + + c2_init_.cpp compile.hpp ++c2_init_.cpp node.hpp + + c2compiler.cpp ad_.hpp + c2compiler.cpp c2compiler.hpp +@@ -839,6 +840,7 @@ + phase.cpp compile.hpp + phase.cpp compileBroker.hpp + phase.cpp nmethod.hpp ++phase.cpp node.hpp + phase.cpp phase.hpp + + phase.hpp port.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1 2009-01-13 10:11:17.000000000 +0000 +@@ -34,6 +34,7 @@ + collectionSetChooser.cpp g1CollectedHeap.hpp + collectionSetChooser.cpp g1CollectorPolicy.hpp + collectionSetChooser.cpp collectionSetChooser.hpp ++collectionSetChooser.cpp space.inline.hpp + + collectionSetChooser.hpp heapRegion.hpp + collectionSetChooser.hpp growableArray.hpp +@@ -44,6 +45,7 @@ + concurrentG1Refine.cpp copy.hpp + concurrentG1Refine.cpp g1CollectedHeap.hpp + concurrentG1Refine.cpp g1RemSet.hpp ++concurrentG1Refine.cpp space.inline.hpp + + concurrentG1Refine.hpp globalDefinitions.hpp + +@@ -264,7 +266,7 @@ + heapRegion.cpp iterator.hpp + heapRegion.cpp oop.inline.hpp + +-heapRegion.hpp space.hpp ++heapRegion.hpp space.inline.hpp + heapRegion.hpp spaceDecorator.hpp + heapRegion.hpp g1BlockOffsetTable.inline.hpp + heapRegion.hpp watermark.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge 2009-01-13 10:11:17.000000000 +0000 +@@ -306,6 +306,8 @@ + psPermGen.cpp psMarkSweepDecorator.hpp + psPermGen.cpp psParallelCompact.hpp + psPermGen.cpp psPermGen.hpp ++psPermGen.cpp markOop.inline.hpp ++psPermGen.cpp markSweep.inline.hpp + + psPermGen.hpp psOldGen.hpp + +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep 2009-01-13 10:11:17.000000000 +0000 +@@ -28,6 +28,7 @@ + binaryTreeDictionary.cpp binaryTreeDictionary.hpp + binaryTreeDictionary.cpp globals.hpp + binaryTreeDictionary.cpp ostream.hpp ++binaryTreeDictionary.cpp space.inline.hpp + binaryTreeDictionary.cpp spaceDecorator.hpp + + binaryTreeDictionary.hpp freeBlockDictionary.hpp +--- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew 2009-01-13 10:11:17.000000000 +0000 +@@ -29,6 +29,8 @@ + asParNewGeneration.cpp cmsAdaptiveSizePolicy.hpp + asParNewGeneration.cpp cmsGCAdaptivePolicyCounters.hpp + asParNewGeneration.cpp defNewGeneration.inline.hpp ++asParNewGeneration.cpp markOop.inline.hpp ++asParNewGeneration.cpp markSweep.inline.hpp + asParNewGeneration.cpp oop.pcgc.inline.hpp + asParNewGeneration.cpp parNewGeneration.hpp + asParNewGeneration.cpp referencePolicy.hpp +@@ -40,7 +42,7 @@ + parCardTableModRefBS.cpp java.hpp + parCardTableModRefBS.cpp mutexLocker.hpp + parCardTableModRefBS.cpp sharedHeap.hpp +-parCardTableModRefBS.cpp space.hpp ++parCardTableModRefBS.cpp space.inline.hpp + parCardTableModRefBS.cpp universe.hpp + parCardTableModRefBS.cpp virtualspace.hpp + +--- openjdk/hotspot/src/share/vm/includeDB_features.orig 2009-01-13 10:10:44.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/includeDB_features 2009-01-13 10:11:17.000000000 +0000 +@@ -59,6 +59,8 @@ + + dump_.cpp assembler_.inline.hpp + dump_.cpp compactingPermGenGen.hpp ++dump_.cpp generation.inline.hpp ++dump_.cpp space.inline.hpp + + forte.cpp collectedHeap.inline.hpp + forte.cpp debugInfoRec.hpp diff -r 551c49cb2e2a patches/hotspot/default/icedtea-memory-limits.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-memory-limits.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,23 @@ +diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp +--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:44.000000000 +0100 ++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp 2008-05-23 22:30:59.000000000 +0100 +@@ -98,7 +98,7 @@ + + // Heap related flags + define_pd_global(uintx, PermSize, ScaleForWordSize(16*M)); +-define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M)); ++define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M)); + + // Ergonomics related flags + define_pd_global(bool, NeverActAsServerClassMachine, false); +--- penjdk6/hotspot/src/share/vm/runtime/globals.hpp 2008-02-12 04:14:24.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-02-14 16:34:00.000000000 -0500 +@@ -2606,7 +2606,7 @@ + "an OS lock") \ + \ + /* gc parameters */ \ +- product(uintx, MaxHeapSize, ScaleForWordSize(64*M), \ ++ product(uintx, MaxHeapSize, ScaleForWordSize(512*M), \ + "Default maximum size for object heap (in bytes)") \ + \ + product_pd(uintx, NewSize, \ diff -r 551c49cb2e2a patches/hotspot/default/icedtea-no-precompiled.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-no-precompiled.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,32 @@ +--- openjdk/hotspot/make/linux/makefiles/gcc.make.orig 2009-01-04 13:51:38.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2009-01-04 13:53:34.000000000 +0000 +@@ -34,13 +34,6 @@ + CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1) + CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) + +-# check for precompiled headers support +-ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" +-USE_PRECOMPILED_HEADER=1 +-PRECOMPILED_HEADER_DIR=. +-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch +-endif +- + + #------------------------------------------------------------------------ + # Compiler flags +--- openjdk/hotspot/make/solaris/makefiles/gcc.make.orig 2009-01-04 14:44:12.000000000 +0000 ++++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2009-01-04 17:06:50.000000000 +0000 +@@ -45,13 +45,6 @@ + $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2) + + +-# check for precompiled headers support +-ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0" +-USE_PRECOMPILED_HEADER=1 +-PRECOMPILED_HEADER_DIR=. +-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch +-endif +- + + #------------------------------------------------------------------------ + # Compiler flags diff -r 551c49cb2e2a patches/hotspot/default/icedtea-params-cast-size_t.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-params-cast-size_t.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,121 @@ +diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2008-09-01 01:47:18.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2008-09-01 01:53:31.000000000 +0100 +@@ -938,7 +938,7 @@ + if (free_percentage < desired_free_percentage) { + size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage)); + assert(desired_capacity >= capacity(), "invalid expansion size"); +- expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes); ++ expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes); + } + if (expand_bytes > 0) { + if (PrintGCDetails && Verbose) { +@@ -6044,7 +6044,7 @@ + HeapWord* curAddr = _markBitMap.startWord(); + while (curAddr < _markBitMap.endWord()) { + size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); +- MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining)); ++ MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining)); + _markBitMap.clear_large_range(chunk); + if (ConcurrentMarkSweepThread::should_yield() && + !foregroundGCIsActive() && +@@ -6332,7 +6332,7 @@ + return; + } + // Double capacity if possible +- size_t new_capacity = MIN2(_capacity*2, CMSMarkStackSizeMax); ++ size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) CMSMarkStackSizeMax); + // Do not give up existing stack until we have managed to + // get the double capacity that we desired. + ReservedSpace rs(ReservedSpace::allocation_align_size_up( +diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2008-08-14 08:40:10.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2008-09-01 01:49:59.000000000 +0100 +@@ -904,8 +904,8 @@ + void PSParallelCompact::initialize_dead_wood_limiter() + { + const size_t max = 100; +- _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0; +- _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; ++ _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0; ++ _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; + _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); + DEBUG_ONLY(_dwl_initialized = true;) + _dwl_adjustment = normal_distribution(1.0); +diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2008-08-14 08:40:10.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2008-09-01 01:52:42.000000000 +0100 +@@ -63,7 +63,7 @@ + _last_used = current_live; + + // We have different alignment constraints than the rest of the heap. +- const size_t alignment = MAX2(MinPermHeapExpansion, ++ const size_t alignment = MAX2((size_t) MinPermHeapExpansion, + virtual_space()->alignment()); + + // Compute the desired size: +diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp +--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2008-08-14 08:40:10.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2008-09-01 02:58:03.000000000 +0100 +@@ -287,7 +287,7 @@ + // yield a size that is too small) and bound it by MaxNewSize above. + // Ergonomics plays here by previously calculating the desired + // NewSize and MaxNewSize. +- max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize); ++ max_new_size = MIN2(MAX2(max_new_size, (size_t) NewSize), (size_t) MaxNewSize); + } + assert(max_new_size > 0, "All paths should set max_new_size"); + +diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp +--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2008-08-14 08:40:11.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2008-09-01 01:49:59.000000000 +0100 +@@ -222,7 +222,7 @@ + size_t init_sz; + + if (TLABSize > 0) { +- init_sz = MIN2(TLABSize / HeapWordSize, max_size()); ++ init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size()); + } else if (global_stats() == NULL) { + // Startup issue - main thread initialized before heap initialized. + init_sz = min_size(); +diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2008-09-01 01:47:17.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2008-09-01 01:58:01.000000000 +0100 +@@ -1025,7 +1025,7 @@ + // for "short" pauses ~ 4M*ParallelGCThreads + if (FLAG_IS_DEFAULT(MaxNewSize)) { // MaxNewSize not set at command-line + if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line +- FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size)); ++ FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size)); + } else { + FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size); + } +@@ -1038,7 +1038,7 @@ + // Old to Young gen size so as to shift the collection load + // to the old generation concurrent collector + if (FLAG_IS_DEFAULT(NewRatio)) { +- FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio)); ++ FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio)); + + size_t min_new = align_size_up(ScaleForWordSize(min_new_default), os::vm_page_size()); + size_t prev_initial_size = initial_heap_size(); +@@ -1067,8 +1067,8 @@ + // Unless explicitly requested otherwise, make young gen + // at least min_new, and at most preferred_max_new_size. + if (FLAG_IS_DEFAULT(NewSize)) { +- FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new)); +- FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize)); ++ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new)); ++ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize)); + if(PrintGCDetails && Verbose) { + // Too early to use gclog_or_tty + tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize); +@@ -1079,7 +1079,7 @@ + // later NewRatio will decide how it grows; see above. + if (FLAG_IS_DEFAULT(OldSize)) { + if (max_heap > NewSize) { +- FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize)); ++ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (3*NewSize), max_heap - (size_t) NewSize)); + if(PrintGCDetails && Verbose) { + // Too early to use gclog_or_tty + tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize); diff -r 551c49cb2e2a patches/hotspot/default/icedtea-parisc-opt.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-parisc-opt.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,28 @@ +--- openjdk/hotspot/make/linux/makefiles/product.make.orig 2008-12-10 19:02:31.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/product.make 2008-12-10 19:24:53.000000000 +0100 +@@ -25,6 +25,11 @@ + # Sets make macros for making optimized version of Gamma VM + # (This is the "product", not the "release" version.) + ++# work around an ICE in gcc-4.1 and gcc-4.3 on parisc-linux ++ifeq ($(BUILDARCH)-$(ZERO_LIBARCH), zero-parisc) ++ OPT_CFLAGS/codeBlob.o = $(OPT_CFLAGS/NOOPT) ++endif ++ + # Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make + OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS) + OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@)) +--- openjdk/hotspot/make/linux/makefiles/optimized.make.orig 2008-12-10 19:02:22.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/optimized.make 2008-12-10 19:24:24.000000000 +0100 +@@ -25,6 +25,11 @@ + # Sets make macros for making optimized version of Gamma VM + # (This is the "product", not the "release" version.) + ++# work around an ICE in gcc-4.1 and gcc-4.3 on parisc-linux ++ifeq ($(BUILDARCH)-$(ZERO_LIBARCH), zero-parisc) ++ OPT_CFLAGS/codeBlob.o = $(OPT_CFLAGS/NOOPT) ++endif ++ + # Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make + OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS) + OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@)) diff -r 551c49cb2e2a patches/hotspot/default/icedtea-shark-build.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-shark-build.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,233 @@ +diff -Nru openjdk.orig/hotspot/make/linux/Makefile openjdk/hotspot/make/linux/Makefile +--- openjdk.orig/hotspot/make/linux/Makefile 2008-07-03 08:39:52.000000000 +0100 ++++ openjdk/hotspot/make/linux/Makefile 2008-07-13 00:59:03.000000000 +0100 +@@ -158,6 +158,13 @@ + # profiledcore core __core/profiled + # productcore core __core/product + # ++# debugshark shark __shark/debug ++# fastdebugshark shark __shark/fastdebug ++# jvmgshark shark __shark/jvmg ++# optimizedshark shark __shark/optimized ++# profiledshark shark __shark/profiled ++# productshark shark __shark/product ++# + # What you get with each target: + # + # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher +@@ -176,11 +183,13 @@ + SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) + SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) + SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) ++SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(BUILDARCH)_shark/,$(TARGETS)) + + TARGETS_C2 = $(TARGETS) + TARGETS_C1 = $(addsuffix 1,$(TARGETS)) + TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) + TARGETS_CORE = $(addsuffix core,$(TARGETS)) ++TARGETS_SHARK = $(addsuffix shark,$(TARGETS)) + + BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make + BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) +@@ -196,6 +205,7 @@ + @echo " $(TARGETS_C2)" + @echo " $(TARGETS_C1)" + @echo " $(TARGETS_CORE)" ++ @echo " $(TARGETS_SHARK)" + + checks: check_os_version check_j2se_version + +@@ -245,6 +255,10 @@ + $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks + $(BUILDTREE) VARIANT=core + ++$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) ++ $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks ++ $(BUILDTREE) VARIANT=shark ++ + # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME + + $(TARGETS_C2): $(SUBDIRS_C2) +@@ -275,6 +289,12 @@ + cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install + endif + ++$(TARGETS_SHARK): $(SUBDIRS_SHARK) ++ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) ++ifdef INSTALL ++ cd $(OSNAME)_$(BUILDARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install ++endif ++ + # Just build the tree, and nothing else: + tree: $(SUBDIRS_C2) + tree1: $(SUBDIRS_C1) +@@ -305,7 +325,7 @@ + + #------------------------------------------------------------------------------- + +-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) ++.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_SHARK) + .PHONY: tree tree1 treecore + .PHONY: all compiler1 compiler2 core + .PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make +--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:38:03.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-07-13 00:59:03.000000000 +0100 +@@ -215,8 +215,8 @@ + + ../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm + @echo Creating directory list $@ +- $(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \ +- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \ ++ $(QUIETLY) find -L $(GAMMADIR)/src/share/vm/* -prune \ ++ -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find -L {} \ + \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@ + + Makefile: $(BUILDTREE_MAKE) +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make +--- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:38:03.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-07-13 00:59:03.000000000 +0100 +@@ -118,6 +118,7 @@ + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so + EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so + ifndef ICEDTEA_CORE_BUILD ++ifndef ICEDTEA_SHARK_BUILD + ifeq ($(ARCH_DATA_MODEL), 32) + EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client + EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt +@@ -133,3 +134,4 @@ + endif + endif + endif ++endif +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make +--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-07-13 00:38:03.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-13 00:59:03.000000000 +0100 +@@ -64,6 +64,9 @@ + ifdef ICEDTEA_ZERO_BUILD + CFLAGS += $(LIBFFI_CFLAGS) + endif ++ifdef ICEDTEA_SHARK_BUILD ++CFLAGS += $(LLVM_CFLAGS) ++endif + CFLAGS += $(VM_PICFLAG) + CFLAGS += -fno-rtti + CFLAGS += -fno-exceptions +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/top.make openjdk/hotspot/make/linux/makefiles/top.make +--- openjdk.orig/hotspot/make/linux/makefiles/top.make 2008-07-03 08:39:53.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/top.make 2008-07-13 00:59:03.000000000 +0100 +@@ -73,6 +73,7 @@ + Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 + Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 + Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2 ++Include_DBs/SHARK = $(Include_DBs/CORE) $(VM)/includeDB_shark + Include_DBs = $(Include_DBs/$(TYPE)) + + Cached_plat = $(GENERATED)/platform.current +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make +--- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-07-13 00:38:03.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-07-13 00:59:03.000000000 +0100 +@@ -126,10 +126,14 @@ + + STATIC_CXX = true + +-ifeq ($(ZERO_LIBARCH), ppc64) ++ifdef ICEDTEA_SHARK_BUILD + STATIC_CXX = false + else +- STATIC_CXX = true ++ ifeq ($(ZERO_LIBARCH), ppc64) ++ STATIC_CXX = false ++ else ++ STATIC_CXX = true ++ endif + endif + + ifeq ($(LINK_INTO),AOUT) +@@ -157,6 +161,10 @@ + ifdef ICEDTEA_ZERO_BUILD + LIBS_VM += $(LIBFFI_LIBS) + endif ++ifdef ICEDTEA_SHARK_BUILD ++LFLAGS_VM += $(LLVM_LDFLAGS) ++LIBS_VM += $(LLVM_LIBS) ++endif + + LINK_VM = $(LINK_LIB.c) + +diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile +--- openjdk.orig/hotspot/make/Makefile 2008-07-13 00:38:02.000000000 +0100 ++++ openjdk/hotspot/make/Makefile 2008-07-13 00:59:03.000000000 +0100 +@@ -103,6 +103,15 @@ + all_debugcore: jvmgcore docs export_debug + all_optimizedcore: optimizedcore docs export_optimized + ++# Shark (C0) targets made available with this Makefile ++SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark ++ ++allshark: all_productshark all_fastdebugshark ++all_productshark: productshark docs export_product ++all_fastdebugshark: fastdebugshark docs export_fastdebug ++all_debugshark: jvmgshark docs export_debug ++all_optimizedshark: optimizedshark docs export_optimized ++ + # Do everything + world: all create_jdk + +@@ -129,6 +138,10 @@ + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) + ++$(SHARK_VM_TARGETS): ++ $(CD) $(GAMMADIR)/make; \ ++ $(MAKE) VM_TARGET=$@ generic_buildshark $(ALT_OUT) ++ + $(KERNEL_VM_TARGETS): + $(CD) $(GAMMADIR)/make; \ + $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) +@@ -181,6 +194,12 @@ + $(MAKE) -f $(ABS_OS_MAKEFILE) \ + $(MAKE_ARGS) $(VM_TARGET) + ++generic_buildshark: ++ $(MKDIR) -p $(OUTPUTDIR) ++ $(CD) $(OUTPUTDIR); \ ++ $(MAKE) -f $(ABS_OS_MAKEFILE) \ ++ $(MAKE_ARGS) $(VM_TARGET) ++ + generic_buildkernel: + $(MKDIR) -p $(OUTPUTDIR) + ifeq ($(OSNAME),windows) +@@ -230,8 +249,12 @@ + ifdef ICEDTEA_CORE_BUILD + C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core + else ++ifdef ICEDTEA_SHARK_BUILD ++C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark ++else + C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 + endif ++endif + KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel + C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) + C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) +@@ -242,6 +265,10 @@ + MISC_DIR=$(C2_DIR) + GEN_DIR=$(C2_BASE_DIR)/generated + else ++ifdef ICEDTEA_SHARK_BUILD ++ MISC_DIR=$(C2_DIR) ++ GEN_DIR=$(C2_BASE_DIR)/generated ++else + ifeq ($(ARCH_DATA_MODEL), 32) + MISC_DIR=$(C1_DIR) + GEN_DIR=$(C1_BASE_DIR)/generated +@@ -250,6 +277,7 @@ + GEN_DIR=$(C2_BASE_DIR)/generated + endif + endif ++endif + + # Bin files (windows) + ifeq ($(OSNAME),windows) + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-shark.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-shark.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,366 @@ +--- openjdk/hotspot/src/share/vm/oops/methodOop.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/oops/methodOop.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -727,10 +727,14 @@ + } + + OrderAccess::storestore(); ++#ifdef SHARK ++ mh->_from_interpreted_entry = code->instructions_begin(); ++#else + mh->_from_compiled_entry = code->verified_entry_point(); + OrderAccess::storestore(); + // Instantly compiled code can execute. + mh->_from_interpreted_entry = mh->get_i2c_entry(); ++#endif // SHARK + + } + +--- openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -44,6 +44,7 @@ + friend class VMStructs; + friend class CardTableRS; + friend class CheckForUnmarkedOops; // Needs access to raw card bytes. ++ friend class SharkBuilder; + #ifndef PRODUCT + // For debugging. + friend class GuaranteeNotModClosure; +--- openjdk/hotspot/src/share/vm/runtime/globals.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -176,6 +176,18 @@ + #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT }, + #endif + ++#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark product}", DEFAULT }, ++#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd product}", DEFAULT }, ++#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark diagnostic}", DEFAULT }, ++#ifdef PRODUCT ++ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ ++ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ ++ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) ++#else ++ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark}", DEFAULT }, ++ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd}", DEFAULT }, ++ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark notproduct}", DEFAULT }, ++#endif + + static Flag flagTable[] = { + RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_EXPERIMENTAL_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT, RUNTIME_LP64_PRODUCT_FLAG_STRUCT) +@@ -189,6 +201,9 @@ + #ifdef COMPILER2 + C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT) + #endif ++#ifdef SHARK ++ SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, SHARK_PD_DEVELOP_FLAG_STRUCT, SHARK_PRODUCT_FLAG_STRUCT, SHARK_PD_PRODUCT_FLAG_STRUCT, SHARK_DIAGNOSTIC_FLAG_STRUCT, SHARK_NOTPRODUCT_FLAG_STRUCT) ++#endif + {0, NULL, NULL} + }; + +--- openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp 2008-12-03 14:33:49.000000000 +0000 +@@ -64,6 +64,11 @@ + assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); + BasicObjectLock* dest = _monitors->at(index); + dest->set_obj(monitor->owner()); ++#ifdef SHARK ++ // XXX This can be removed when Shark knows ++ // which monitors are in use. ++ if (monitor->owner()) ++#endif // SHARK + monitor->lock()->move_to(monitor->owner(), dest->lock()); + } + } +@@ -262,6 +267,11 @@ + top = iframe()->previous_monitor_in_interpreter_frame(top); + BasicObjectLock* src = _monitors->at(index); + top->set_obj(src->obj()); ++#ifdef SHARK ++ // XXX This can be removed when Shark knows ++ // which monitors are in use. ++ if (src->obj()) ++#endif // SHARK + src->lock()->move_to(src->obj(), top->lock()); + } + if (ProfileInterpreter) { +--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp.orig 2008-12-03 14:23:37.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -94,12 +94,16 @@ + #ifdef TIERED + #define VMTYPE "Server" + #else ++#ifdef SHARK ++ #define VMTYPE "Shark" ++#else + #if defined(COMPILER1) || defined(COMPILER2) +- #define VMTYPE COMPILER1_PRESENT("Client") \ +- COMPILER2_PRESENT("Server") ++ #define VMTYPE COMPILER1_PRESENT("Client") \ ++ COMPILER2_PRESENT("Server") + #else + #define VMTYPE "Core" + #endif // COMPILER1 || COMPILER2 ++#endif // SHARK + #endif // TIERED + #endif // KERNEL + +--- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -229,6 +229,7 @@ + + } + ++#ifndef SHARK + // Compute the caller frame based on the sender sp of stub_frame and stored frame sizes info. + CodeBlob* cb = stub_frame.cb(); + // Verify we have the right vframeArray +@@ -239,6 +240,10 @@ + assert(cb->is_deoptimization_stub() || cb->is_uncommon_trap_stub(), "just checking"); + Events::log("fetch unroll sp " INTPTR_FORMAT, unpack_sp); + #endif ++#else ++ intptr_t* unpack_sp = stub_frame.sender(&dummy_map).unextended_sp(); ++#endif // !SHARK ++ + // This is a guarantee instead of an assert because if vframe doesn't match + // we will unpack the wrong deoptimized frame and wind up in strange places + // where it will be very difficult to figure out what went wrong. Better +@@ -349,7 +354,9 @@ + + frame_pcs[0] = deopt_sender.raw_pc(); + ++#ifndef SHARK + assert(CodeCache::find_blob_unsafe(frame_pcs[0]) != NULL, "bad pc"); ++#endif // SHARK + + UnrollBlock* info = new UnrollBlock(array->frame_size() * BytesPerWord, + caller_adjustment * BytesPerWord, +@@ -890,7 +897,20 @@ + // stuff a C2I adapter we can properly fill in the callee-save + // register locations. + frame caller = fr.sender(reg_map); ++#ifdef ZERO ++ int frame_size; ++ { ++ // In zero, frame::sp() is the *end* of the frame, so ++ // caller.sp() - fr.sp() is the size of the *caller*. ++ RegisterMap dummy_map(thread, false); ++ frame frame_1 = thread->last_frame(); ++ frame frame_2 = frame_1.sender(&dummy_map); ++ assert(frame_2.sp() == fr.sp(), "should be"); ++ frame_size = frame_2.sp() - frame_1.sp(); ++ } ++#else + int frame_size = caller.sp() - fr.sp(); ++#endif // ZERO + + frame sender = caller; + +@@ -1057,7 +1077,7 @@ + JRT_END + + +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS) { + // in case of an unresolved klass entry, load the class. + if (constant_pool->tag_at(index).is_unresolved_klass()) { +@@ -1808,7 +1828,7 @@ + if (xtty != NULL) xtty->tail("statistics"); + } + } +-#else // COMPILER2 ++#else // COMPILER2 || SHARK + + + // Stubs for C1 only system. +@@ -1844,4 +1864,4 @@ + return buf; + } + +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK +--- openjdk/hotspot/src/share/vm/runtime/globals.hpp.orig 2008-12-03 14:22:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -22,7 +22,7 @@ + * + */ + +-#if !defined(COMPILER1) && !defined(COMPILER2) ++#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) + define_pd_global(bool, BackgroundCompilation, false); + define_pd_global(bool, UseTLAB, false); + define_pd_global(bool, CICompileOSR, false); +--- openjdk/hotspot/src/share/vm/code/nmethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/code/nmethod.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -318,6 +318,7 @@ + + bool is_compiled_by_c1() const; + bool is_compiled_by_c2() const; ++ bool is_compiled_by_shark() const; + + // boundaries for different parts + address code_begin () const { return _entry_point; } +--- openjdk/hotspot/src/share/vm/code/nmethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/code/nmethod.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -65,6 +65,11 @@ + assert(compiler() != NULL, "must be"); + return compiler()->is_c2(); + } ++bool nmethod::is_compiled_by_shark() const { ++ if (is_native_method()) return false; ++ assert(compiler() != NULL, "must be"); ++ return compiler()->is_shark(); ++} + + + +@@ -1567,6 +1572,7 @@ + // Method that knows how to preserve outgoing arguments at call. This method must be + // called with a frame corresponding to a Java invoke + void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { ++#ifndef SHARK + if (!method()->is_native()) { + SimpleScopeDesc ssd(this, fr.pc()); + Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci()); +@@ -1574,6 +1580,7 @@ + symbolOop signature = call->signature(); + fr.oops_compiled_arguments_do(signature, is_static, reg_map, f); + } ++#endif // !SHARK + } + + +@@ -2003,6 +2010,8 @@ + tty->print("(c1) "); + } else if (is_compiled_by_c2()) { + tty->print("(c2) "); ++ } else if (is_compiled_by_shark()) { ++ tty->print("(shark) "); + } else { + tty->print("(nm) "); + } +--- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -554,6 +554,14 @@ + #endif + #endif // COMPILER2 + ++#ifdef SHARK ++#if defined(COMPILER1) || defined(COMPILER2) ++#error "Can't use COMPILER1 or COMPILER2 with shark" ++#endif ++ _compilers[0] = new SharkCompiler(); ++ _compilers[1] = _compilers[0]; ++#endif ++ + // Initialize the CompileTask free list + _task_free_list = NULL; + +--- openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -45,18 +45,26 @@ + // Missing feature tests + virtual bool supports_native() { return true; } + virtual bool supports_osr () { return true; } +-#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2)) ++#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)) + virtual bool is_c1 () { return false; } + virtual bool is_c2 () { return false; } ++ virtual bool is_shark() { return false; } + #else + #ifdef COMPILER1 + bool is_c1 () { return true; } + bool is_c2 () { return false; } ++ bool is_shark() { return false; } + #endif // COMPILER1 + #ifdef COMPILER2 + bool is_c1 () { return false; } + bool is_c2 () { return true; } ++ bool is_shark() { return false; } + #endif // COMPILER2 ++#ifdef SHARK ++ bool is_c1 () { return false; } ++ bool is_c2 () { return false; } ++ bool is_shark() { return true; } ++#endif // SHARK + #endif // TIERED + + // Customization +--- openjdk/hotspot/src/share/vm/ci/ciMethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/ci/ciMethod.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -69,7 +69,7 @@ + + // Optional liveness analyzer. + MethodLiveness* _liveness; +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + ciTypeFlow* _flow; + #endif + +--- openjdk/hotspot/src/share/vm/ci/ciMethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/ci/ciMethod.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -56,9 +56,9 @@ + _liveness = NULL; + _bcea = NULL; + _method_blocks = NULL; +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + _flow = NULL; +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK + + if (JvmtiExport::can_hotswap_or_post_breakpoint() && _is_compilable) { + // 6328518 check hotswap conditions under the right lock. +@@ -124,9 +124,9 @@ + _bcea = NULL; + _method_blocks = NULL; + _method_data = NULL; +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + _flow = NULL; +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK + } + + +@@ -294,34 +294,34 @@ + // ------------------------------------------------------------------ + // ciMethod::get_flow_analysis + ciTypeFlow* ciMethod::get_flow_analysis() { +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + if (_flow == NULL) { + ciEnv* env = CURRENT_ENV; + _flow = new (env->arena()) ciTypeFlow(env, this); + _flow->do_flow(); + } + return _flow; +-#else // COMPILER2 ++#else // COMPILER2 || SHARK + ShouldNotReachHere(); + return NULL; +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK + } + + + // ------------------------------------------------------------------ + // ciMethod::get_osr_flow_analysis + ciTypeFlow* ciMethod::get_osr_flow_analysis(int osr_bci) { +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + // OSR entry points are always place after a call bytecode of some sort + assert(osr_bci >= 0, "must supply valid OSR entry point"); + ciEnv* env = CURRENT_ENV; + ciTypeFlow* flow = new (env->arena()) ciTypeFlow(env, this, osr_bci); + flow->do_flow(); + return flow; +-#else // COMPILER2 ++#else // COMPILER2 || SHARK + ShouldNotReachHere(); + return NULL; +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK + } + + // ------------------------------------------------------------------ diff -r 551c49cb2e2a patches/hotspot/default/icedtea-sparc-buildfixes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-sparc-buildfixes.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,35 @@ +--- openjdk/hotspot/make/linux/makefiles/gcc.make.orig 2008-12-04 20:29:08.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-12-04 20:32:54.000000000 +0000 +@@ -52,6 +52,10 @@ + PICFLAG = -fpic + endif + ++ifneq ($(filter sparc sparcv9,$(BUILDARCH)),) ++PICFLAG = -fPIC ++endif ++ + VM_PICFLAG/LIBJVM = $(PICFLAG) + VM_PICFLAG/AOUT = + VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) +--- openjdk/hotspot/make/linux/makefiles/defs.make.orig 2008-12-04 20:29:04.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-12-04 20:32:54.000000000 +0000 +@@ -59,7 +59,7 @@ + endif + + # sparc +-ifeq ($(ARCH), sparc64) ++ifneq (,$(filter $(ARCH), sparc sparc64)) + ifeq ($(ARCH_DATA_MODEL), 64) + ARCH_DATA_MODEL = 64 + MAKE_ARGS += LP64=1 +--- openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp.orig 2008-12-04 20:32:19.000000000 +0000 ++++ openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp 2008-12-04 20:32:54.000000000 +0000 +@@ -264,7 +264,7 @@ + + private: + +- constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const; ++ constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const; + + #ifndef CC_INTERP + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-sparc-ptracefix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-sparc-ptracefix.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,34 @@ +diff -up openjdk/hotspot/agent/src/os/linux/libproc.h.BAD openjdk/hotspot/agent/src/os/linux/libproc.h +--- openjdk/hotspot/agent/src/os/linux/libproc.h.BAD 2008-05-29 19:03:34.000000000 -0400 ++++ openjdk/hotspot/agent/src/os/linux/libproc.h 2008-05-29 19:01:45.000000000 -0400 +@@ -34,14 +34,25 @@ + + #if defined(sparc) || defined(sparcv9) + /* +- If _LP64 is defined ptrace.h should be taken from /usr/include/asm-sparc64 +- otherwise it should be from /usr/include/asm-sparc +- These two files define pt_regs structure differently ++ Taken from asm-sparc/ptrace.h and asm-sparc64/ptrace.h + */ + #ifdef _LP64 +-#include "asm-sparc64/ptrace.h" ++struct pt_regs { ++ unsigned long u_regs[16]; /* globals and ins */ ++ unsigned long tstate; ++ unsigned long tpc; ++ unsigned long tnpc; ++ unsigned int y; ++ unsigned int fprs; ++}; + #else +-#include "asm-sparc/ptrace.h" ++struct pt_regs { ++ unsigned long psr; ++ unsigned long pc; ++ unsigned long npc; ++ unsigned long y; ++ unsigned long u_regs[16]; /* globals and ins */ ++}; + #endif + + #endif //sparc or sparcv9 diff -r 551c49cb2e2a patches/hotspot/default/icedtea-sparc-trapsfix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-sparc-trapsfix.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,21 @@ +diff -Nru openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp +--- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-04 08:40:18.000000000 +0100 ++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp 2008-08-09 01:29:51.000000000 +0100 +@@ -25,7 +25,16 @@ + #include "incls/_precompiled.incl" + #include "incls/_assembler_linux_sparc.cpp.incl" + +-#include ++/* Headers for 32bit sparc with a 32bit userland end up in asm/ ++ * Headers for 32bit sparc with a 64bit userland end up in asm-sparc/ ++ * There is no traps.h in asm-sparc64/ ++ */ ++ ++#if defined(__sparc__) && defined(__arch64__) ++# include ++#else ++# include ++#endif + + void MacroAssembler::read_ccr_trap(Register ccr_save) { + // No implementation diff -r 551c49cb2e2a patches/hotspot/default/icedtea-sparc64-linux.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-sparc64-linux.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,42 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make +--- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:28:06.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:35:27.000000000 +0100 +@@ -73,6 +73,14 @@ + HS_ARCH = sparc + endif + ++# sparc ++ifeq ($(ARCH), sparc) ++ ARCH_DATA_MODEL = 32 ++ PLATFORM = linux-sparc ++ VM_PLATFORM = linux_sparc ++ HS_ARCH = sparc ++endif ++ + # x86_64 + ifeq ($(ARCH), x86_64) + ifeq ($(ARCH_DATA_MODEL), 64) +diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp +--- openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 20:44:41.000000000 +0100 ++++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 22:35:27.000000000 +0100 +@@ -1112,20 +1112,12 @@ + + void LIRGenerator::volatile_field_store(LIR_Opr value, LIR_Address* address, + CodeEmitInfo* info) { +-#ifdef _LP64 +- __ store(value, address, info); +-#else + __ volatile_store_mem_reg(value, address, info); +-#endif + } + + void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result, + CodeEmitInfo* info) { +-#ifdef _LP64 +- __ load(address, result, info); +-#else + __ volatile_load_mem_reg(address, result, info); +-#endif + } + + diff -r 551c49cb2e2a patches/hotspot/default/icedtea-static-libstdc++.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-static-libstdc++.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,16 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make +--- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-05-16 22:13:31.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-05-23 23:25:47.000000000 +0100 +@@ -124,6 +124,12 @@ + + STATIC_CXX = true + ++ifeq ($(ZERO_LIBARCH), ppc64) ++ STATIC_CXX = false ++else ++ STATIC_CXX = true ++endif ++ + ifeq ($(LINK_INTO),AOUT) + LIBJVM.o = + LIBJVM_MAPFILE = diff -r 551c49cb2e2a patches/hotspot/default/icedtea-text-relocations.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-text-relocations.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,61 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make +--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-07-17 08:40:27.000000000 +0100 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-07-21 23:10:50.000000000 +0100 +@@ -46,7 +46,11 @@ + # Compiler flags + + # position-independent code ++ifneq ($(filter parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),) + PICFLAG = -fPIC ++else ++PICFLAG = -fpic ++endif + + VM_PICFLAG/LIBJVM = $(PICFLAG) + VM_PICFLAG/AOUT = +--- rules.make.orig 2008-12-12 11:23:31.000000000 -0500 ++++ openjdk/hotspot/make/linux/makefiles/rules.make 2008-12-12 11:32:26.000000000 -0500 +@@ -138,20 +138,10 @@ + include $(GAMMADIR)/make/pic.make + endif + +-# The non-PIC object files are only generated for 32 bit platforms. +-ifdef LP64 + %.o: %.cpp + @echo Compiling $< + $(QUIETLY) $(REMOVE_TARGET) + $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) +-else +-%.o: %.cpp +- @echo Compiling $< +- $(QUIETLY) $(REMOVE_TARGET) +- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ +- $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \ +- $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)) +-endif + + %.o: %.s + @echo Assembling $< +--- rules.make.orig 2008-12-12 11:42:55.000000000 -0500 ++++ openjdk/hotspot/make/solaris/makefiles/rules.make 2008-12-12 11:44:01.000000000 -0500 +@@ -138,20 +138,10 @@ + include $(GAMMADIR)/make/pic.make + endif + +-# Sun compiler for 64 bit Solaris does not support building non-PIC object files. +-ifdef LP64 + %.o: %.cpp + @echo Compiling $< + $(QUIETLY) $(REMOVE_TARGET) + $(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) +-else +-%.o: %.cpp +- @echo Compiling $< +- $(QUIETLY) $(REMOVE_TARGET) +- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \ +- $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \ +- $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)) +-endif + + %.o: %.s + @echo Assembling $< diff -r 551c49cb2e2a patches/hotspot/default/icedtea-use-idx_t.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-use-idx_t.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,45 @@ +diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp +--- openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp 2008-11-06 08:40:55.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp 2008-11-10 00:55:09.000000000 +0000 +@@ -567,15 +567,15 @@ + + + MethodLiveness::BasicBlock::BasicBlock(MethodLiveness *analyzer, int start, int limit) : +- _gen((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ _gen((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), + analyzer->bit_map_size_bits()), +- _kill((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ _kill((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), + analyzer->bit_map_size_bits()), +- _entry((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ _entry((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), + analyzer->bit_map_size_bits()), +- _normal_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ _normal_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), + analyzer->bit_map_size_bits()), +- _exception_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), ++ _exception_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()), + analyzer->bit_map_size_bits()), + _last_bci(-1) { + _analyzer = analyzer; +@@ -992,7 +992,7 @@ + } + + MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) { +- MethodLivenessResult answer(NEW_RESOURCE_ARRAY(uintptr_t, _analyzer->bit_map_size_words()), ++ MethodLivenessResult answer(NEW_RESOURCE_ARRAY(size_t, _analyzer->bit_map_size_words()), + _analyzer->bit_map_size_bits()); + answer.set_is_valid(); + +diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp openjdk/hotspot/src/share/vm/utilities/bitMap.hpp +--- openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp 2008-11-06 08:40:58.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/utilities/bitMap.hpp 2008-11-10 00:57:20.000000000 +0000 +@@ -73,7 +73,7 @@ + + // Set a word to a specified value or to all ones; clear a word. + void set_word (idx_t word, bm_word_t val) { _map[word] = val; } +- void set_word (idx_t word) { set_word(word, ~(uintptr_t)0); } ++ void set_word (idx_t word) { set_word(word, ~(idx_t)0); } + void clear_word(idx_t word) { _map[word] = 0; } + + // Utilities for ranges of bits. Ranges are half-open [beg, end). diff -r 551c49cb2e2a patches/hotspot/default/icedtea-version.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-version.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,48 @@ +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make +--- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-11-06 08:40:50.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-11-19 12:15:54.000000000 +0000 +@@ -86,6 +86,10 @@ + ${JRE_VERSION} \ + ${VM_DISTRO} + ++ifdef DISTRIBUTION_ID ++CPPFLAGS += -DDISTRIBUTION_ID="\"$(DISTRIBUTION_ID)\"" ++endif ++ + # CFLAGS_WARN holds compiler options to suppress/enable warnings. + CFLAGS += $(CFLAGS_WARN/BYFILE) + +diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp +--- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2008-11-06 08:40:58.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-11-19 12:15:54.000000000 +0000 +@@ -165,7 +165,8 @@ + + static void print_bug_submit_message(outputStream *out, Thread *thread) { + if (out == NULL) return; +- out->print_raw_cr("# If you would like to submit a bug report, please visit:"); ++ out->print_raw_cr("# If you would like to submit a bug report, please include"); ++ out->print_raw_cr("# instructions how to reproduce the bug and visit:"); + out->print_raw ("# "); + out->print_raw_cr(Arguments::java_vendor_url_bug()); + // If the crash is in native code, encourage user to submit a bug to the +@@ -339,6 +340,9 @@ + Abstract_VM_Version::vm_platform_string(), + UseCompressedOops ? "compressed oops" : "" + ); ++#ifdef DISTRIBUTION_ID ++ st->print_cr("# Distribution: %s", DISTRIBUTION_ID); ++#endif + + STEP(60, "(printing problematic frame)") + +--- arguments.cpp 2008-12-15 12:25:14.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2008-12-15 12:25:32.000000000 -0500 +@@ -25,7 +25,7 @@ + #include "incls/_precompiled.incl" + #include "incls/_arguments.cpp.incl" + +-#define DEFAULT_VENDOR_URL_BUG "http://java.sun.com/webapps/bugreport/crash.jsp" ++#define DEFAULT_VENDOR_URL_BUG "http://icedtea.classpath.org/bugzilla" + #define DEFAULT_JAVA_LAUNCHER "generic" + + char** Arguments::_jvm_flags_array = NULL; diff -r 551c49cb2e2a patches/hotspot/default/icedtea-zero-build.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/default/icedtea-zero-build.patch Thu Feb 12 14:56:16 2009 +0000 @@ -0,0 +1,129 @@ +diff -Nru openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make +--- openjdk.orig/hotspot/make/defs.make 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/make/defs.make 2008-11-29 02:14:15.000000000 +0000 +@@ -192,13 +192,14 @@ + + # Use uname output for SRCARCH, but deal with platform differences. If ARCH + # is not explicitly listed below, it is treated as x86. +- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH))) ++ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 zero,$(ARCH))) + ARCH/ = x86 + ARCH/sparc = sparc + ARCH/sparc64= sparc + ARCH/ia64 = ia64 + ARCH/amd64 = x86 + ARCH/x86_64 = x86 ++ ARCH/zero = zero + + # BUILDARCH is usually the same as SRCARCH, except for sparcv9 + BUILDARCH = $(SRCARCH) +@@ -222,8 +223,9 @@ + LIBARCH/sparc = sparc + LIBARCH/sparcv9 = sparcv9 + LIBARCH/ia64 = ia64 ++ LIBARCH/zero = $(ZERO_LIBARCH) + +- LP64_ARCH = sparcv9 amd64 ia64 ++ LP64_ARCH = sparcv9 amd64 ia64 zero + endif + + # Required make macro settings for all platforms +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make +--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/buildtree.make 2008-11-29 02:14:15.000000000 +0000 +@@ -321,6 +321,7 @@ + DATA_MODE/sparcv9 = 64 + DATA_MODE/amd64 = 64 + DATA_MODE/ia64 = 64 ++DATA_MODE/zero = $(ZERO_BITSPERWORD) + + JAVA_FLAG/32 = -d32 + JAVA_FLAG/64 = -d64 +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make +--- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-11-29 01:55:52.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-11-29 02:14:15.000000000 +0000 +@@ -37,6 +37,18 @@ + ARCH_DATA_MODEL ?= 32 + endif + ++# zero ++ifdef ICEDTEA_ZERO_BUILD ++ ARCH_DATA_MODEL = $(ZERO_BITSPERWORD) ++ ifeq ($(ARCH_DATA_MODEL), 64) ++ MAKE_ARGS += LP64=1 ++ endif ++ PLATFORM = linux-zero ++ VM_PLATFORM = linux_zero ++ HS_ARCH = zero ++ ARCH = zero ++endif ++ + # ia64 + ifeq ($(ARCH), ia64) + ARCH_DATA_MODEL = 64 +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make +--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-11-29 01:55:52.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-11-29 02:14:15.000000000 +0000 +@@ -56,6 +56,9 @@ + VM_PICFLAG/AOUT = + VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO)) + ++ifdef ICEDTEA_ZERO_BUILD ++CFLAGS += $(LIBFFI_CFLAGS) ++endif + CFLAGS += $(VM_PICFLAG) + CFLAGS += -fno-rtti + CFLAGS += -fno-exceptions +@@ -72,6 +75,7 @@ + ARCHFLAG/ia64 = + ARCHFLAG/sparc = -m32 -mcpu=v9 + ARCHFLAG/sparcv9 = -m64 -mcpu=v9 ++ARCHFLAG/zero = $(ZERO_ARCHFLAG) + + CFLAGS += $(ARCHFLAG) + AOUT_FLAGS += $(ARCHFLAG) +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/sa.make openjdk/hotspot/make/linux/makefiles/sa.make +--- openjdk.orig/hotspot/make/linux/makefiles/sa.make 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/sa.make 2008-11-29 02:14:15.000000000 +0000 +@@ -52,10 +52,10 @@ + SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium. ++# also, we don't build SA on Itanium or zero. + + all: +- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ ++ if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \ + fi + +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/saproc.make openjdk/hotspot/make/linux/makefiles/saproc.make +--- openjdk.orig/hotspot/make/linux/makefiles/saproc.make 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/saproc.make 2008-11-29 02:14:15.000000000 +0000 +@@ -44,10 +44,10 @@ + DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC) + + # if $(AGENT_DIR) does not exist, we don't build SA +-# also, we don't build SA on Itanium. ++# also, we don't build SA on Itanium or zero. + + checkAndBuildSA: +- $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \ ++ $(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \ + $(MAKE) -f vm.make $(LIBSAPROC); \ + fi + +diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make +--- openjdk.orig/hotspot/make/linux/makefiles/vm.make 2008-11-29 01:55:52.000000000 +0000 ++++ openjdk/hotspot/make/linux/makefiles/vm.make 2008-11-29 02:14:15.000000000 +0000 +@@ -158,6 +158,9 @@ + + LIBS_VM += $(LIBS) + endif ++ifdef ICEDTEA_ZERO_BUILD ++LIBS_VM += $(LIBFFI_LIBS) ++endif + + LINK_VM = $(LINK_LIB.c) + From gnu_andrew at member.fsf.org Thu Feb 12 07:49:00 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 12 Feb 2009 15:49:00 +0000 Subject: FYI: Fix typo in configure.ac Message-ID: <20090212154900.GA1489@rivendell.middle-earth.co.uk> Fixing a typo which prevents NIO2 being disabled... :( ChangeLog: 2009-02-12 Andrew John Hughes * configure.ac: Fix typo in --enable-nio2. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 551c49cb2e2a configure.ac --- a/configure.ac Wed Feb 11 11:49:45 2009 -0500 +++ b/configure.ac Thu Feb 12 15:47:42 2009 +0000 @@ -135,7 +135,7 @@ AC_ARG_ENABLE([nio2], [AS_HELP_STRING([--disable-nio2], [Disable inclusion of backported NIO2])], - [ENABLE_XRENDER="${enableval}"], [ENABLE_NIO2='yes']) + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='yes']) AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) AC_MSG_RESULT(${ENABLE_NIO2}) From ahughes at redhat.com Thu Feb 12 07:50:27 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Thu, 12 Feb 2009 15:50:27 +0000 Subject: changeset in /hg/icedtea6: Trivial fix: typo in --enable-nio2. Message-ID: changeset 493d9814f1ae in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=493d9814f1ae description: Trivial fix: typo in --enable-nio2. 2009-02-12 Andrew John Hughes * configure.ac: Fix typo in --enable-nio2. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ configure.ac | 2 +- diffs (24 lines): diff -r 551c49cb2e2a -r 493d9814f1ae ChangeLog --- a/ChangeLog Wed Feb 11 11:49:45 2009 -0500 +++ b/ChangeLog Thu Feb 12 15:49:51 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-11 Omair Majid + + * configure.ac: + Fix typo in --enable-nio2. + 2009-02-11 Omair Majid * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java diff -r 551c49cb2e2a -r 493d9814f1ae configure.ac --- a/configure.ac Wed Feb 11 11:49:45 2009 -0500 +++ b/configure.ac Thu Feb 12 15:49:51 2009 +0000 @@ -135,7 +135,7 @@ AC_ARG_ENABLE([nio2], AC_ARG_ENABLE([nio2], [AS_HELP_STRING([--disable-nio2], [Disable inclusion of backported NIO2])], - [ENABLE_XRENDER="${enableval}"], [ENABLE_NIO2='yes']) + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='yes']) AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) AC_MSG_RESULT(${ENABLE_NIO2}) From doko at ubuntu.com Thu Feb 12 08:02:44 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 12 Feb 2009 17:02:44 +0100 Subject: FYI: Fix typo in configure.ac In-Reply-To: <20090212154900.GA1489@rivendell.middle-earth.co.uk> References: <20090212154900.GA1489@rivendell.middle-earth.co.uk> Message-ID: <49944824.30208@ubuntu.com> Andrew John Hughes schrieb: > Fixing a typo which prevents NIO2 being disabled... :( > > ChangeLog: > > 2009-02-12 Andrew John Hughes > > * configure.ac: > Fix typo in --enable-nio2. maybe we should disable nio2 by default on all archs except amd64 and ix86. It currently builds on other archs, but the vm crashes on the first test in the jtreg testsuite. The code itself has comments inside UnixNativeDispatcher.c that it doesn't work on anything else. The code continues to hardcode the use of functions (here fstatat) based on experience from the coder (#if defined(__linux__) ...). The assertion is not enough. You seem to need a recent glibc as well. How could upstream be convinced to use autoconf checks (AC_CHECK_FUNC) and use these instead? Matthias From gnu_andrew at member.fsf.org Thu Feb 12 08:13:15 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 12 Feb 2009 16:13:15 +0000 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <20090212150029.GA1121@rivendell.middle-earth.co.uk> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> Message-ID: <17c6771e0902120813p3dad83a6t3458d36c390915e3@mail.gmail.com> 2009/2/12 Andrew John Hughes : > This patch renames the name of the default HotSpot patch > set to be 'default' rather than the specific version. ?We > should of course document what that version is elsewhere. > I propose it either tracks 7 or we at least update to the latest > b14 release as there are some bug fixes (I'll do this in a > subsequent patch). > > Ok to commit? > The motivation for this patch is that we otherwise have to do an equivalent change every time we want to change the HotSpot revision. It also makes it clearer which patches will be applied, should an option not be passed to configure. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Thu Feb 12 08:14:49 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 12 Feb 2009 16:14:49 +0000 Subject: FYI: Fix typo in configure.ac In-Reply-To: <49944824.30208@ubuntu.com> References: <20090212154900.GA1489@rivendell.middle-earth.co.uk> <49944824.30208@ubuntu.com> Message-ID: <17c6771e0902120814s264565c7k98484209126f5d6e@mail.gmail.com> 2009/2/12 Matthias Klose : > Andrew John Hughes schrieb: >> Fixing a typo which prevents NIO2 being disabled... :( >> >> ChangeLog: >> >> 2009-02-12 ?Andrew John Hughes ? >> >> ? ? ? * configure.ac: >> ? ? ? Fix typo in --enable-nio2. > > maybe we should disable nio2 by default on all archs except amd64 and ix86. ?It > currently builds on other archs, but the vm crashes on the first test in the > jtreg testsuite. The code itself has comments inside UnixNativeDispatcher.c that > it doesn't work on anything else. > Does it crash if fstats64 is actually used rather than being taken out and replaced by a hack through the #defined(__linux__) stuff? > The code continues to hardcode the use of functions (here fstatat) based on > experience from the coder (#if defined(__linux__) ...). The assertion is not > enough. You seem to need a recent glibc as well. How could upstream be convinced > to use autoconf checks (AC_CHECK_FUNC) and use these instead? > I was wondering this too -- maybe a reason to push them to have an autoconf wrapper? :D > ?Matthias > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From aph at redhat.com Thu Feb 12 08:19:34 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 12 Feb 2009 16:19:34 +0000 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <17c6771e0902120813p3dad83a6t3458d36c390915e3@mail.gmail.com> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <17c6771e0902120813p3dad83a6t3458d36c390915e3@mail.gmail.com> Message-ID: <49944C16.6010908@redhat.com> Andrew John Hughes wrote: > 2009/2/12 Andrew John Hughes : >> This patch renames the name of the default HotSpot patch >> set to be 'default' rather than the specific version. We >> should of course document what that version is elsewhere. >> I propose it either tracks 7 or we at least update to the latest >> b14 release as there are some bug fixes (I'll do this in a >> subsequent patch). >> >> Ok to commit? > > The motivation for this patch is that we otherwise have to do an > equivalent change every time we want to change the HotSpot revision. > It also makes it clearer which patches will be applied, should an > option not be passed to configure. Ahh, good idea, yes. Andrew. From dbhole at redhat.com Thu Feb 12 09:16:04 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 12 Feb 2009 12:16:04 -0500 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <4993FBD4.1070002@zafena.se> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> Message-ID: <20090212171604.GD30628@redhat.com> * Xerxes R?nby [2009-02-12 05:37]: > Xerxes R?nby wrote: >> Hello oliver! >> >> Oliver May wrote: >>> Hi all! >>> >>> I am having some difficulties with icedtea-6-plugin on debian (armel). I >>> am working on a java applet for communication between a browser >>> (iceweasel) and hardware (gpsd) on the neo freerunner phone. >>> >> Do you have a url to this applet and its sourcecode? without it it is >> really hard to see whats going on. >> It would be great if you happen to have a small testcase based on code >> from the applet that exposes this bug so that it can be fixed properly on >> ARM armel platforms. >>> The problem lies mainly in the communication between the browser and the >>> applet, I am calling java methods from javascript code. Whenever I try to >>> call a method on a java object I get following errors: >>> >>> java.lang.NullPointerException: >>> at >>> sun.applet.PluginAppletSecurityContext.checkPermission(PluginAppletSecurityContext.java:1002) >>> at >>> sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:658) > > Deepak where do the PluginDebug.debug post its debug messages? It might > shine some light on what calling method is used on what object in > checkPermission above. > > *snip from PluginAppletSecurityContext.java:658* > PluginDebug.debug("Calling method " + m + " on object " + o > + " with " + arguments); > > AccessControlContext acc = callContext != > null ? callContext : getClosedAccessControlContext(); > checkPermission(src, o.getClass(), acc); > *snap* > > >>> at >>> sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:31) >>> at >>> sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:248) >>> at >>> sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:34) >>> >>> Occasionally I also get following error: >>> IcedTeaPlugin.cc:4735: Error: parse int >>> > > In IcedTeaPlugin.cc:4735 a lookup to a object seems to have failed in your > case. We need to know what string was used here for the lookup. > I dont want to guess but the errors you have experienced might be related. > > *snip from PluginAppletSecurityContext.java:4735* > case jobject_type: > // Have we referred to this object before? > id = str.ToInteger (&conversionResult); > PLUGIN_CHECK ("parse int", conversionResult); > retval.l = factory->references.ReferenceObject (id); > break; > *snap* > > Hi! What website do you see this error on? As for PluginDebug.debug() ... its messages go to STDERR. However, debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in that case, all OUT/ERR is redirected to /tmp/java.stdout and /tmp/java.stderr Cheers, Deepak > Cheers and have a great day! > Xerxes From dbhole at redhat.com Thu Feb 12 09:18:14 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 12 Feb 2009 12:18:14 -0500 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <20090212171604.GD30628@redhat.com> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> Message-ID: <20090212171814.GE30628@redhat.com> * Deepak Bhole [2009-02-12 12:16]: > * Xerxes R?nby [2009-02-12 05:37]: > > Xerxes R?nby wrote: > >> Hello oliver! > >> > >> Oliver May wrote: > >>> Hi all! > >>> > >>> I am having some difficulties with icedtea-6-plugin on debian (armel). I > >>> am working on a java applet for communication between a browser > >>> (iceweasel) and hardware (gpsd) on the neo freerunner phone. > >>> > >> Do you have a url to this applet and its sourcecode? without it it is > >> really hard to see whats going on. > >> It would be great if you happen to have a small testcase based on code > >> from the applet that exposes this bug so that it can be fixed properly on > >> ARM armel platforms. > >>> The problem lies mainly in the communication between the browser and the > >>> applet, I am calling java methods from javascript code. Whenever I try to > >>> call a method on a java object I get following errors: > >>> > >>> java.lang.NullPointerException: > >>> at > >>> sun.applet.PluginAppletSecurityContext.checkPermission(PluginAppletSecurityContext.java:1002) > >>> at > >>> sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:658) > > > > Deepak where do the PluginDebug.debug post its debug messages? It might > > shine some light on what calling method is used on what object in > > checkPermission above. > > > > *snip from PluginAppletSecurityContext.java:658* > > PluginDebug.debug("Calling method " + m + " on object " + o > > + " with " + arguments); > > > > AccessControlContext acc = callContext != > > null ? callContext : getClosedAccessControlContext(); > > checkPermission(src, o.getClass(), acc); > > *snap* > > > > > >>> at > >>> sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:31) > >>> at > >>> sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:248) > >>> at > >>> sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:34) > >>> > >>> Occasionally I also get following error: > >>> IcedTeaPlugin.cc:4735: Error: parse int > >>> > > > > In IcedTeaPlugin.cc:4735 a lookup to a object seems to have failed in your > > case. We need to know what string was used here for the lookup. > > I dont want to guess but the errors you have experienced might be related. > > > > *snip from PluginAppletSecurityContext.java:4735* > > case jobject_type: > > // Have we referred to this object before? > > id = str.ToInteger (&conversionResult); > > PLUGIN_CHECK ("parse int", conversionResult); > > retval.l = factory->references.ReferenceObject (id); > > break; > > *snap* > > > > > > Hi! > > What website do you see this error on? > > As for PluginDebug.debug() ... its messages go to STDERR. However, > debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in > that case, all OUT/ERR is redirected to /tmp/java.stdout and > /tmp/java.stderr > > Cheers, > Deepak > Whoops.. should have checked the ML first. Okay, can you start the browser with the env variable ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log and /tmp/java.std* files? Deepak > > > Cheers and have a great day! > > Xerxes From mvfranz at gmail.com Thu Feb 12 17:30:14 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 12 Feb 2009 20:30:14 -0500 Subject: BSD Port and Linux Differences In-Reply-To: <20090211051345.GA56272@misty.eyesbeyond.com> References: <20090210160035.DCC5D5654E@rebar.astron.com> <20090211051345.GA56272@misty.eyesbeyond.com> Message-ID: I did not find any other issues when trying to compile the bsd port on Fedora using IcedTea7. The statfs vs statvfs has already been addressed by Greg. Thanks! The strncpy vs strlcpy was also addressed by Greg. I have attached an alternative patch that keeps TimeZone_md.c closer to the linux version. It uses the typo fixes from the bsd-port.. This basically reverts the bsd version back to the linux version. I have attached the machine/endian.h patches too. Greg's comments can be found here http://mail.openjdk.java.net/pipermail/bsd-port-dev/2009-February/000512.html With these patches I: 1. changed the fuzz level from 0 to 3 (reduces the number of patches I needed to deal with) 2. removed the parts of the icedtea patches that failed. 3. manually changed the source files affected by the attached patches 4. manually applied patches to fix splashscreen and jsound makefiles. Next, I plan to create patch files for the splashscreen and jsound makefiles (this was stuff that did not apply and was removed). The following patches had sections/files removed. M patches/hotspot/original/icedtea-includedb.patch M patches/icedtea-jsoundhs.patch M patches/icedtea-libraries.patch M patches/icedtea-linker-libs-order.patch java -version IcedTea 1.9-pre-r70396cb4abf8 Runtime Environment (build 1.7.0_0-bsd-b44) OpenJDK Server VM (build 14.0-b10, mixed mode) Michael On Wed, Feb 11, 2009 at 12:13 AM, Greg Lewis wrote: > On Tue, Feb 10, 2009 at 11:00:35AM -0500, Christos Zoulas wrote: > > On Feb 9, 7:56pm, mvfranz at gmail.com (Michael Franz) wrote: > > -- Subject: BSD Port and Linux Differences > > > > | Hi, > > | > > | I am still working through the issues to get the bsd-port repo to > compile on > > | Linux and have run into these issues. > > | > > | BSD is using statfs instead of statvfs. Both are available on Linux > and OS > > | X. The difference is how they are included. Linux uses either > sys/statfs.h > > | or sys/statfs.h while OS X (and I assume other BSDs) are use > > | sys/param.h,sys/mount.h or sys/statvfs.h. See > > | jdk/src/solaris/native/java/io/UnixFileSystem_md.c for more details. > > > > NetBSD uses statvfs too. > > > > | Is it better to use one over the other? Do we really want to use > statfs on > > | bsd and statvfs on linux? > > > > statvfs should be preferred over statfs because: > > 1. it is part of POSIX: > > http://www.opengroup.org/onlinepubs/009695399/functions/statvfs.html > > 2. it is newer and has 64 bit fields where appropriate (in most > implementations) > > > > I think we need some #ifdef's there to handle which include is > appropriate > > for which OS. > > It looks like everything supports statvfs now, so I don't think we need > any #ifdef's at all. I've got a patch to revert this change. > > > | I have run into a similar issue with strncpy vs strlcpy. The bsd port > is > > | using strlcpy, as far as I can tell, strlcpy does not exist on linux. > Both > > | have strncpy, should this be used instead? > > | > > | This issue exists in jdk/src/solaris/native/java/util/TimeZone_md.c > > > > strl{cpy,cat} should be preferred over strn{cpy,cat}. If that is the only > > use though, I say put it back to use strncpy() correctly, since java > probably > > uses strn{cpy,cat} all over the place and providing portability just for > > one use is overkill. > > *sigh* It looks like the GNU libc maintainers don't like strlcpy, so > although *BSD and Solaris have it, Linux does not. I'll change it to > strncpy universally rather than adding an #ifdef just for that. > > > | A previous difference that I have found was in the use of > machine/endian.h > > | in the BSD port. > > > > This is a more complicated :-) and I will let someone else answer it. > > I've already answered this before :). Its the right thing to do. We > just need to also do the right thing for Linux and Solaris. > > I've got access to an Ubuntu box -- I can try a compile there as well. > > -- > Greg Lewis Email : glewis at eyesbeyond.com > Eyes Beyond Web : http://www.eyesbeyond.com > Information Technology FreeBSD : glewis at FreeBSD.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/0243d39a/attachment.html -------------- next part -------------- A non-text attachment was scrubbed... Name: bsd-strncpy-changes-for-linux-build.diff Type: application/octet-stream Size: 1646 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/0243d39a/bsd-strncpy-changes-for-linux-build.diff -------------- next part -------------- A non-text attachment was scrubbed... Name: bsd-endian-changes-for-linux-build.diff Type: application/octet-stream Size: 1366 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/0243d39a/bsd-endian-changes-for-linux-build.diff From Joe.Darcy at Sun.COM Thu Feb 12 19:07:26 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Thu, 12 Feb 2009 19:07:26 -0800 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. In-Reply-To: References: Message-ID: <4994E3EE.4020201@sun.com> Hello. The annotations test patch is unnecessary. The tests in question that in JDK 7 live in test/java/lang/annotation (singular) have since build 13 lived in OpenJDK 6 at test/java/lang/annotations (plural) See http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/f6b99ef3deee/test/java/lang/annotations/ The original closed tests lived in an "annotations" directory, but by the naming conventions for tests they should have been in "annotation" so I put the JDK 7 tests in the latter directory when I opened them up for that release. Especially since there is a public OpenJDK 6 Mercurial forest now, in the future when there is interest in having a Sun patch ported to IcedTea 6, I suggest contacting us at Sun about getting the change in the upstream OpenJDK 6 master directly. -Joe Andrew John Hughes wrote: > changeset 5d4d8012aa03 in /hg/icedtea6 > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5d4d8012aa03 > description: > Backport newly Freed tests. > > 2009-02-11 Andrew John Hughes > > * Makefile.am: > Add new patches. > * patches/openjdk/bidi-tests.patch, > * patches/openjdk/annotation-tests.patch: > New. > > diffstat: > > 4 files changed, 6174 insertions(+), 1 deletion(-) > ChangeLog | 9 > Makefile.am | 4 > patches/openjdk/annotation-tests.patch | 5867 ++++++++++++++++++++++++++++++++ > patches/openjdk/bidi-tests.patch | 295 + > > diffs (truncated from 6201 to 500 lines): > > diff -r 3b8dcbd3d44d -r 5d4d8012aa03 ChangeLog > --- a/ChangeLog Tue Feb 10 16:19:54 2009 -0500 > +++ b/ChangeLog Wed Feb 11 02:18:27 2009 +0000 > @@ -1,4 +1,13 @@ 2009-02-10 Deepak Bhole +2009-02-11 Andrew John Hughes > + > + * Makefile.am: > + Add new patches. > + * patches/openjdk/bidi-tests.patch, > + * patches/openjdk/annotation-tests.patch: > + New. > + > 2009-02-10 Deepak Bhole > + > * plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Fix > exit permissions for applets. > * plugin/icedtea/sun/applet/PluginStreamHandler.java: Fix harmless, but > diff -r 3b8dcbd3d44d -r 5d4d8012aa03 Makefile.am > --- a/Makefile.am Tue Feb 10 16:19:54 2009 -0500 > +++ b/Makefile.am Wed Feb 11 02:18:27 2009 +0000 > @@ -563,7 +563,9 @@ ICEDTEA_PATCHES += \ > patches/icedtea-io_util-overflow.patch \ > patches/icedtea-cc-interp-jvmti.patch \ > patches/icedtea-pr261.patch \ > - patches/icedtea-doc-headers.patch > + patches/icedtea-doc-headers.patch \ > + patches/openjdk/bidi-tests.patch \ > + patches/openjdk/annotation-tests.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r 3b8dcbd3d44d -r 5d4d8012aa03 patches/openjdk/annotation-tests.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/openjdk/annotation-tests.patch Wed Feb 11 02:18:27 2009 +0000 > @@ -0,0 +1,5867 @@ > +# HG changeset patch > +# User darcy > +# Date 1233028166 28800 > +# Node ID f3ad2ee4600b102d50a18d83aa797e187819e072 > +# Parent 175b6adf65b31782480878f5a65044b4c97fd7cf > +6740185: Move java/lang/annotations tests to open > +Reviewed-by: jjg > + > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java > +--- openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,44 @@ > ++/* > ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++/* > ++ * @test > ++ * @bug 6179014 > ++ * @summary AnnotationTypeMismatchException.foundType method shouldn't loop. > ++ * @author Scott Seligman > ++ * @run main/timeout=30 FoundType > ++ */ > ++ > ++import java.lang.annotation.*; > ++ > ++public class FoundType { > ++ > ++ private static final String TYPE = "a.halting.Problem"; > ++ > ++ public static void main(String[] args) { > ++ AnnotationTypeMismatchException ex = > ++ new AnnotationTypeMismatchException(null, TYPE); > ++ if (!TYPE.equals(ex.foundType())) > ++ throw new Error(); > ++ } > ++} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java > +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,28 @@ > ++/* > ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++public > ++ at java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) > ++ at interface A { > ++ B b(); > ++} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java > +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,24 @@ > ++/* > ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++public @interface B {} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java > +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,24 @@ > ++/* > ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++public @A(b=@B()) class C {} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh > +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh 2009-02-05 08:45:04.000000000 +0000 > +@@ -0,0 +1,84 @@ > ++#!/bin/sh > ++ > ++# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++# > ++# This code is free software; you can redistribute it and/or modify it > ++# under the terms of the GNU General Public License version 2 only, as > ++# published by the Free Software Foundation. > ++# > ++# This code is distributed in the hope that it will be useful, but WITHOUT > ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++# version 2 for more details (a copy is included in the LICENSE file that > ++# accompanied this code). > ++# > ++# You should have received a copy of the GNU General Public License version > ++# 2 along with this work; if not, write to the Free Software Foundation, > ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++# > ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++# CA 95054 USA or visit www.sun.com if you need additional information or > ++# have any questions. > ++ > ++if [ "${TESTSRC}" = "" ] > ++then > ++ echo "TESTSRC not set. Test cannot execute. Failed." > ++ exit 1 > ++fi > ++echo "TESTSRC=${TESTSRC}" > ++if [ "${TESTJAVA}" = "" ] > ++then > ++ echo "TESTJAVA not set. Test cannot execute. Failed." > ++ exit 1 > ++fi > ++echo "TESTJAVA=${TESTJAVA}" > ++if [ "${TESTCLASSES}" = "" ] > ++then > ++ echo "TESTCLASSES not set. Test cannot execute. Failed." > ++ exit 1 > ++fi > ++echo "TESTCLASSES=${TESTCLASSES}" > ++echo "CLASSPATH=${CLASSPATH}" > ++ > ++# set platform-dependent variables > ++OS=`uname -s` > ++case "$OS" in > ++ SunOS | Linux ) > ++ NULL=/dev/null > ++ PS=":" > ++ FS="/" > ++ ;; > ++ Windows* ) > ++ NULL=NUL > ++ PS=";" > ++ FS="\\" > ++ ;; > ++ * ) > ++ echo "Unrecognized system!" > ++ exit 1; > ++ ;; > ++esac > ++ > ++mkdir -p classes > ++cp ${TESTSRC}${FS}*.java . > ++${TESTJAVA}${FS}bin${FS}javac -d classes A.java B.java C.java > ++${TESTJAVA}${FS}bin${FS}javac Main.java > ++${TESTJAVA}${FS}bin${FS}java Main > ++result=$? > ++if [ $result -eq 0 ] > ++then > ++ echo "Passed 1 of 2" > ++else > ++ echo "Failed 1 of 2" > ++ exit $result > ++fi > ++${TESTJAVA}${FS}bin${FS}java Main foo > ++result=$? > ++if [ $result -eq 0 ] > ++then > ++ echo "Passed 2 of 2" > ++else > ++ echo "Failed 2 of 2" > ++fi > ++exit $result > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java > +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,127 @@ > ++/* > ++ * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++/* > ++ * @test > ++ * @bug 5040740 > ++ * @summary annotations cause memory leak > ++ * @author gafter > ++ * > ++ * @run shell LoaderLeak.sh > ++ */ > ++ > ++import java.net.*; > ++import java.lang.ref.*; > ++import java.util.*; > ++import java.io.*; > ++ > ++public class Main { > ++ public static void main(String[] args) throws Exception { > ++ for (int i=0; i<100; i++) > ++ doTest(args.length != 0); > ++ } > ++ > ++ static void doTest(boolean readAnn) throws Exception { > ++ // URL classes = new URL("file://" + System.getProperty("user.dir") + "/classes"); > ++ // URL[] path = { classes }; > ++ // URLClassLoader loader = new URLClassLoader(path); > ++ ClassLoader loader = new SimpleClassLoader(); > ++ WeakReference> c = new WeakReference(loader.loadClass("C")); > ++ if (c.get() == null) throw new AssertionError(); > ++ if (c.get().getClassLoader() != loader) throw new AssertionError(); > ++ if (readAnn) System.out.println(c.get().getAnnotations()[0]); > ++ if (c.get() == null) throw new AssertionError(); > ++ System.gc(); > ++ System.gc(); > ++ if (c.get() == null) throw new AssertionError(); > ++ System.gc(); > ++ System.gc(); > ++ loader = null; > ++ System.gc(); > ++ System.gc(); > ++ if (c.get() != null) throw new AssertionError(); > ++ } > ++} > ++ > ++class SimpleClassLoader extends ClassLoader { > ++ private Hashtable classes = new Hashtable(); > ++ > ++ public SimpleClassLoader() { > ++ } > ++ private byte getClassImplFromDataBase(String className)[] { > ++ byte result[]; > ++ try { > ++ FileInputStream fi = new FileInputStream("classes/"+className+".class"); > ++ result = new byte[fi.available()]; > ++ fi.read(result); > ++ return result; > ++ } catch (Exception e) { > ++ > ++ /* > ++ * If we caught an exception, either the class wasnt found or it > ++ * was unreadable by our process. > ++ */ > ++ return null; > ++ } > ++ } > ++ public Class loadClass(String className) throws ClassNotFoundException { > ++ return (loadClass(className, true)); > ++ } > ++ public synchronized Class loadClass(String className, boolean resolveIt) > ++ throws ClassNotFoundException { > ++ Class result; > ++ byte classData[]; > ++ > ++ /* Check our local cache of classes */ > ++ result = (Class)classes.get(className); > ++ if (result != null) { > ++ return result; > ++ } > ++ > ++ /* Check with the primordial class loader */ > ++ try { > ++ result = super.findSystemClass(className); > ++ return result; > ++ } catch (ClassNotFoundException e) { > ++ } > ++ > ++ /* Try to load it from our repository */ > ++ classData = getClassImplFromDataBase(className); > ++ if (classData == null) { > ++ throw new ClassNotFoundException(); > ++ } > ++ > ++ /* Define it (parse the class file) */ > ++ result = defineClass(classData, 0, classData.length); > ++ if (result == null) { > ++ throw new ClassFormatError(); > ++ } > ++ > ++ if (resolveIt) { > ++ resolveClass(result); > ++ } > ++ > ++ classes.put(className, result); > ++ return result; > ++ } > ++} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java openjdk/jdk/test/java/lang/annotation/Missing/A.java > +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/Missing/A.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,30 @@ > ++/* > ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++/** > ++ * Class to have a missing annotation applied for running MissingTest. > ++ */ > ++ at Missing > ++ at Marker > ++public class A { > ++} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java openjdk/jdk/test/java/lang/annotation/Missing/B.java > +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/Missing/B.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,31 @@ > ++/* > ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++/** > ++ * Class to have an indirectly missing annotation applied for for > ++ * running MisssingTest. > ++ */ > ++ at MissingWrapper(@Missing) > ++ at Marker > ++public class B { > ++} > +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java openjdk/jdk/test/java/lang/annotation/Missing/C.java > +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/lang/annotation/Missing/C.java 2009-02-11 00:58:01.000000000 +0000 > +@@ -0,0 +1,31 @@ > ++/* > ++ * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. > ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++ * > ++ * This code is free software; you can redistribute it and/or modify it > ++ * under the terms of the GNU General Public License version 2 only, as > ++ * published by the Free Software Foundation. > ++ * > ++ * This code is distributed in the hope that it will be useful, but WITHOUT > ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++ * version 2 for more details (a copy is included in the LICENSE file that > ++ * accompanied this code). > ++ * > ++ * You should have received a copy of the GNU General Public License version > ++ * 2 along with this work; if not, write to the Free Software Foundation, > ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++ * > ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++ * CA 95054 USA or visit www.sun.com if you need additional information or > ++ * have any questions. > ++ */ > ++ > ++/** > ++ * Class to have a missing annotation applied for running MissingTest. > ++ */ > ++public class C { > ++ public void method1(@Missing @Marker Object param1) { > ++ return; > From oliver.may at dfc.be Fri Feb 13 01:35:09 2009 From: oliver.may at dfc.be (Oliver May) Date: Fri, 13 Feb 2009 10:35:09 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <20090212171814.GE30628@redhat.com> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> Message-ID: <49953ECD.90905@dfc.be> Seems my message got hold back by the mailing list because the large attachment, I uploaded the file to the website too: http://geomajas.org/users/oliverm/freerunner-gpsApplet/applet-test.tgz Hi Deepak! >> >> What website do you see this error on? >> >> As for PluginDebug.debug() ... its messages go to STDERR. However, >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in >> that case, all OUT/ERR is redirected to /tmp/java.stdout and >> /tmp/java.stderr >> >> Cheers, >> Deepak >> > > Whoops.. should have checked the ML first. > > Okay, can you start the browser with the env variable > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log > and /tmp/java.std* files? > > Deepak > I did some more testing, and put the applet I am using online with some simple javascript <> java interaction, including the source files. http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html The applet expects a gpsd running on localhost, but it wont crash without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 for some real data (real, but static, mainframe.cx is not moving :)). Using this site I just did a test with debugging output: debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& /tmp/iceweasel.err so i have also gathered the iceweasel process out and err streams. What I did is: +Started iceweasel and opened http://geomajas.org.... +Waited until the applet was completely loaded (cpu idle) +Clicked on "Start gps" and waited like 10 minutes until cpu idle +Clicked on "Get gps data", this returned null in the textbox after half a second. +Clicked on "Stop gps" +Clicked on "Get gps data" again, wich actet the same way as before +Closed iceweasel Btw, there seem to be some real performance issues too, the first call from javascript to java takes ages, esp. with debugging turned on. But that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). Greetings! -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From gnu_andrew at member.fsf.org Fri Feb 13 07:45:42 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 13 Feb 2009 15:45:42 +0000 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. In-Reply-To: <4994E3EE.4020201@sun.com> References: <4994E3EE.4020201@sun.com> Message-ID: <17c6771e0902130745m1f187efat7ca77abd4a0584e@mail.gmail.com> 2009/2/13 Joseph D. Darcy : > Hello. > > The annotations test patch is unnecessary. > > The tests in question that in JDK 7 live in > ? test/java/lang/annotation (singular) > have since build 13 lived in OpenJDK 6 at > ? test/java/lang/annotations (plural) > > See > http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/f6b99ef3deee/test/java/lang/annotations/ > > The original closed tests lived in an "annotations" directory, but by the > naming conventions for tests they should have been in "annotation" so I put > the JDK 7 tests in the latter directory when I opened them up for that > release. > Ok, this wasn't mentioned in the commit or anywhere else. Can you fix the naming in OpenJDK6 to match? > Especially since there is a public OpenJDK 6 Mercurial forest now, in the > future when there is interest in having a Sun patch ported to IcedTea 6, I > suggest contacting us at Sun about getting the change in the upstream > OpenJDK 6 master directly. > I expect these tests will be in the next build drop. The point of backporting them was so we could start running them in the meantime. > -Joe > > Andrew John Hughes wrote: >> >> changeset 5d4d8012aa03 in /hg/icedtea6 >> details: >> http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5d4d8012aa03 >> description: >> ? ? ? ?Backport newly Freed tests. >> >> ? ? ? ?2009-02-11 ?Andrew John Hughes ? >> >> ? ? ? ? ? ? ? ?* Makefile.am: >> ? ? ? ? ? ? ? ?Add new patches. >> ? ? ? ? ? ? ? ?* patches/openjdk/bidi-tests.patch, >> ? ? ? ? ? ? ? ?* patches/openjdk/annotation-tests.patch: >> ? ? ? ? ? ? ? ?New. >> >> diffstat: >> >> 4 files changed, 6174 insertions(+), 1 deletion(-) >> ChangeLog ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?9 Makefile.am >> ? ? ? ? ? ?| ? ?4 patches/openjdk/annotation-tests.patch | 5867 >> ++++++++++++++++++++++++++++++++ >> patches/openjdk/bidi-tests.patch ? ? ? | ?295 + >> >> diffs (truncated from 6201 to 500 lines): >> >> diff -r 3b8dcbd3d44d -r 5d4d8012aa03 ChangeLog >> --- a/ChangeLog Tue Feb 10 16:19:54 2009 -0500 >> +++ b/ChangeLog Wed Feb 11 02:18:27 2009 +0000 >> @@ -1,4 +1,13 @@ 2009-02-10 ?Deepak Bhole > +2009-02-11 ?Andrew John Hughes ? >> + >> + ? ? ? * Makefile.am: >> + ? ? ? Add new patches. >> + ? ? ? * patches/openjdk/bidi-tests.patch, >> + ? ? ? * patches/openjdk/annotation-tests.patch: >> + ? ? ? New. >> + >> ?2009-02-10 ?Deepak Bhole >> + >> ? ? ? ?* plugin/icedtea/sun/applet/PluginAppletSecurityContext.java: Fix >> ? ? ? ?exit permissions for applets. >> ? ? ? ?* plugin/icedtea/sun/applet/PluginStreamHandler.java: Fix harmless, >> but >> diff -r 3b8dcbd3d44d -r 5d4d8012aa03 Makefile.am >> --- a/Makefile.am ? ? ? Tue Feb 10 16:19:54 2009 -0500 >> +++ b/Makefile.am ? ? ? Wed Feb 11 02:18:27 2009 +0000 >> @@ -563,7 +563,9 @@ ICEDTEA_PATCHES += \ >> ? ? ? ?patches/icedtea-io_util-overflow.patch \ >> ? ? ? ?patches/icedtea-cc-interp-jvmti.patch \ >> ? ? ? ?patches/icedtea-pr261.patch \ >> - ? ? ? patches/icedtea-doc-headers.patch >> + ? ? ? patches/icedtea-doc-headers.patch \ >> + ? ? ? patches/openjdk/bidi-tests.patch \ >> + ? ? ? patches/openjdk/annotation-tests.patch >> ??if WITH_ALT_HSBUILD >> ?ICEDTEA_PATCHES += \ >> diff -r 3b8dcbd3d44d -r 5d4d8012aa03 >> patches/openjdk/annotation-tests.patch >> --- /dev/null ? Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/openjdk/annotation-tests.patch ? ?Wed Feb 11 02:18:27 2009 >> +0000 >> @@ -0,0 +1,5867 @@ >> +# HG changeset patch >> +# User darcy >> +# Date 1233028166 28800 >> +# Node ID f3ad2ee4600b102d50a18d83aa797e187819e072 >> +# Parent 175b6adf65b31782480878f5a65044b4c97fd7cf >> +6740185: Move java/lang/annotations tests to open >> +Reviewed-by: jjg >> + >> +diff -Nru >> openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java >> openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java >> +--- >> openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java >> ?1970-01-01 01:00:00.000000000 +0100 >> ++++ >> openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java >> ? ? ? 2009-02-11 00:58:01.000000000 +0000 >> +@@ -0,0 +1,44 @@ >> ++/* >> ++ * Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++/* >> ++ * @test >> ++ * @bug 6179014 >> ++ * @summary AnnotationTypeMismatchException.foundType method shouldn't >> loop. >> ++ * @author Scott Seligman >> ++ * @run main/timeout=30 FoundType >> ++ */ >> ++ >> ++import java.lang.annotation.*; >> ++ >> ++public class FoundType { >> ++ >> ++ ? ?private static final String TYPE = "a.halting.Problem"; >> ++ >> ++ ? ?public static void main(String[] args) { >> ++ ? ? ? ?AnnotationTypeMismatchException ex = >> ++ ? ? ? ? ? ?new AnnotationTypeMismatchException(null, TYPE); >> ++ ? ? ? ?if (!TYPE.equals(ex.foundType())) >> ++ ? ? ? ? ? ?throw new Error(); >> ++ ? ?} >> ++} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java >> openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java >> 1970-01-01 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java ? ?2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,28 @@ >> ++/* >> ++ * Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++public >> >> ++ at java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) >> ++ at interface A { >> ++ ? ?B b(); >> ++} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java >> openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java >> 1970-01-01 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java ? ?2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,24 @@ >> ++/* >> ++ * Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++public @interface B {} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java >> openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java >> 1970-01-01 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java ? ?2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,24 @@ >> ++/* >> ++ * Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++public @A(b=@B()) class C {} >> +diff -Nru >> openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh >> openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh >> +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh >> ? ? ?1970-01-01 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh >> 2009-02-05 08:45:04.000000000 +0000 >> +@@ -0,0 +1,84 @@ >> ++#!/bin/sh >> ++ >> ++# Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++# >> ++# This code is free software; you can redistribute it and/or modify it >> ++# under the terms of the GNU General Public License version 2 only, as >> ++# published by the Free Software Foundation. >> ++# >> ++# This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++# FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++# version 2 for more details (a copy is included in the LICENSE file >> that >> ++# accompanied this code). >> ++# >> ++# You should have received a copy of the GNU General Public License >> version >> ++# 2 along with this work; if not, write to the Free Software Foundation, >> ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++# >> ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++# CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++# have any questions. >> ++ >> ++if [ "${TESTSRC}" = "" ] >> ++then >> ++ ?echo "TESTSRC not set. ?Test cannot execute. ?Failed." >> ++ ?exit 1 >> ++fi >> ++echo "TESTSRC=${TESTSRC}" >> ++if [ "${TESTJAVA}" = "" ] >> ++then >> ++ ?echo "TESTJAVA not set. ?Test cannot execute. ?Failed." >> ++ ?exit 1 >> ++fi >> ++echo "TESTJAVA=${TESTJAVA}" >> ++if [ "${TESTCLASSES}" = "" ] >> ++then >> ++ ?echo "TESTCLASSES not set. ?Test cannot execute. ?Failed." >> ++ ?exit 1 >> ++fi >> ++echo "TESTCLASSES=${TESTCLASSES}" >> ++echo "CLASSPATH=${CLASSPATH}" >> ++ >> ++# set platform-dependent variables >> ++OS=`uname -s` >> ++case "$OS" in >> ++ ?SunOS | Linux ) >> ++ ? ?NULL=/dev/null >> ++ ? ?PS=":" >> ++ ? ?FS="/" >> ++ ? ?;; >> ++ ?Windows* ) >> ++ ? ?NULL=NUL >> ++ ? ?PS=";" >> ++ ? ?FS="\\" >> ++ ? ?;; >> ++ ?* ) >> ++ ? ?echo "Unrecognized system!" >> ++ ? ?exit 1; >> ++ ? ?;; >> ++esac >> ++ >> ++mkdir -p classes >> ++cp ${TESTSRC}${FS}*.java . >> ++${TESTJAVA}${FS}bin${FS}javac -d classes A.java B.java C.java >> ++${TESTJAVA}${FS}bin${FS}javac Main.java >> ++${TESTJAVA}${FS}bin${FS}java Main >> ++result=$? >> ++if [ $result -eq 0 ] >> ++then >> ++ ?echo "Passed 1 of 2" >> ++else >> ++ ?echo "Failed 1 of 2" >> ++ ?exit $result >> ++fi >> ++${TESTJAVA}${FS}bin${FS}java Main foo >> ++result=$? >> ++if [ $result -eq 0 ] >> ++then >> ++ ?echo "Passed 2 of 2" >> ++else >> ++ ?echo "Failed 2 of 2" >> ++fi >> ++exit $result >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java >> openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java >> ?1970-01-01 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java 2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,127 @@ >> ++/* >> ++ * Copyright 2004 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++/* >> ++ * @test >> ++ * @bug 5040740 >> ++ * @summary annotations cause memory leak >> ++ * @author gafter >> ++ * >> ++ * @run shell LoaderLeak.sh >> ++ */ >> ++ >> ++import java.net.*; >> ++import java.lang.ref.*; >> ++import java.util.*; >> ++import java.io.*; >> ++ >> ++public class Main { >> ++ ? ?public static void main(String[] args) throws Exception { >> ++ ? ? ? ?for (int i=0; i<100; i++) >> ++ ? ? ? ? ? ?doTest(args.length != 0); >> ++ ? ?} >> ++ >> ++ ? ?static void doTest(boolean readAnn) throws Exception { >> ++ ? ? ? ?// URL classes = new URL("file://" + >> System.getProperty("user.dir") + "/classes"); >> ++ ? ? ? ?// URL[] path = { classes }; >> ++ ? ? ? ?// URLClassLoader loader = new URLClassLoader(path); >> ++ ? ? ? ?ClassLoader loader = new SimpleClassLoader(); >> ++ ? ? ? ?WeakReference> c = new >> WeakReference(loader.loadClass("C")); >> ++ ? ? ? ?if (c.get() == null) throw new AssertionError(); >> ++ ? ? ? ?if (c.get().getClassLoader() != loader) throw new >> AssertionError(); >> ++ ? ? ? ?if (readAnn) System.out.println(c.get().getAnnotations()[0]); >> ++ ? ? ? ?if (c.get() == null) throw new AssertionError(); >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?if (c.get() == null) throw new AssertionError(); >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?loader = null; >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?System.gc(); >> ++ ? ? ? ?if (c.get() != null) throw new AssertionError(); >> ++ ? ?} >> ++} >> ++ >> ++class SimpleClassLoader extends ClassLoader { >> ++ ? ?private Hashtable classes = new Hashtable(); >> ++ >> ++ ? ?public SimpleClassLoader() { >> ++ ? ?} >> ++ ? ?private byte getClassImplFromDataBase(String className)[] { >> ++ ? ? ? ?byte result[]; >> ++ ? ? ? ?try { >> ++ ? ? ? ? ? ?FileInputStream fi = new >> FileInputStream("classes/"+className+".class"); >> ++ ? ? ? ? ? ?result = new byte[fi.available()]; >> ++ ? ? ? ? ? ?fi.read(result); >> ++ ? ? ? ? ? ?return result; >> ++ ? ? ? ?} catch (Exception e) { >> ++ >> ++ ? ? ? ? ? ?/* >> ++ ? ? ? ? ? ? * If we caught an exception, either the class wasnt found >> or it >> ++ ? ? ? ? ? ? * was unreadable by our process. >> ++ ? ? ? ? ? ? */ >> ++ ? ? ? ? ? ?return null; >> ++ ? ? ? ?} >> ++ ? ?} >> ++ ? ?public Class loadClass(String className) throws >> ClassNotFoundException { >> ++ ? ? ? ?return (loadClass(className, true)); >> ++ ? ?} >> ++ ? ?public synchronized Class loadClass(String className, boolean >> resolveIt) >> ++ ? ? ? ?throws ClassNotFoundException { >> ++ ? ? ? ?Class result; >> ++ ? ? ? ?byte ?classData[]; >> ++ >> ++ ? ? ? ?/* Check our local cache of classes */ >> ++ ? ? ? ?result = (Class)classes.get(className); >> ++ ? ? ? ?if (result != null) { >> ++ ? ? ? ? ? ?return result; >> ++ ? ? ? ?} >> ++ >> ++ ? ? ? ?/* Check with the primordial class loader */ >> ++ ? ? ? ?try { >> ++ ? ? ? ? ? ?result = super.findSystemClass(className); >> ++ ? ? ? ? ? ?return result; >> ++ ? ? ? ?} catch (ClassNotFoundException e) { >> ++ ? ? ? ?} >> ++ >> ++ ? ? ? ?/* Try to load it from our repository */ >> ++ ? ? ? ?classData = getClassImplFromDataBase(className); >> ++ ? ? ? ?if (classData == null) { >> ++ ? ? ? ? ? ?throw new ClassNotFoundException(); >> ++ ? ? ? ?} >> ++ >> ++ ? ? ? ?/* Define it (parse the class file) */ >> ++ ? ? ? ?result = defineClass(classData, 0, classData.length); >> ++ ? ? ? ?if (result == null) { >> ++ ? ? ? ? ? ?throw new ClassFormatError(); >> ++ ? ? ? ?} >> ++ >> ++ ? ? ? ?if (resolveIt) { >> ++ ? ? ? ? ? ?resolveClass(result); >> ++ ? ? ? ?} >> ++ >> ++ ? ? ? ?classes.put(className, result); >> ++ ? ? ? ?return result; >> ++ ? ?} >> ++} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java >> openjdk/jdk/test/java/lang/annotation/Missing/A.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java ?1970-01-01 >> 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/Missing/A.java ? ? ? 2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,30 @@ >> ++/* >> ++ * Copyright 2005 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++/** >> ++ * Class to have a missing annotation applied for running MissingTest. >> ++ */ >> ++ at Missing >> ++ at Marker >> ++public class A { >> ++} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java >> openjdk/jdk/test/java/lang/annotation/Missing/B.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java ?1970-01-01 >> 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/Missing/B.java ? ? ? 2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,31 @@ >> ++/* >> ++ * Copyright 2005 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++/** >> ++ * Class to have an indirectly missing annotation applied for for >> ++ * running MisssingTest. >> ++ */ >> ++ at MissingWrapper(@Missing) >> ++ at Marker >> ++public class B { >> ++} >> +diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java >> openjdk/jdk/test/java/lang/annotation/Missing/C.java >> +--- openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java ?1970-01-01 >> 01:00:00.000000000 +0100 >> ++++ openjdk/jdk/test/java/lang/annotation/Missing/C.java ? ? ? 2009-02-11 >> 00:58:01.000000000 +0000 >> +@@ -0,0 +1,31 @@ >> ++/* >> ++ * Copyright 2005 Sun Microsystems, Inc. ?All Rights Reserved. >> ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> ++ * >> ++ * This code is free software; you can redistribute it and/or modify it >> ++ * under the terms of the GNU General Public License version 2 only, as >> ++ * published by the Free Software Foundation. >> ++ * >> ++ * This code is distributed in the hope that it will be useful, but >> WITHOUT >> ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> ++ * FITNESS FOR A PARTICULAR PURPOSE. ?See the GNU General Public License >> ++ * version 2 for more details (a copy is included in the LICENSE file >> that >> ++ * accompanied this code). >> ++ * >> ++ * You should have received a copy of the GNU General Public License >> version >> ++ * 2 along with this work; if not, write to the Free Software >> Foundation, >> ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> ++ * >> ++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> ++ * CA 95054 USA or visit www.sun.com if you need additional information >> or >> ++ * have any questions. >> ++ */ >> ++ >> ++/** >> ++ * Class to have a missing annotation applied for running MissingTest. >> ++ */ >> ++public class C { >> ++ ? ?public void method1(@Missing @Marker Object param1) { >> ++ ? ? ? ?return; >> > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From oliver.may at dfc.be Fri Feb 13 01:26:35 2009 From: oliver.may at dfc.be (Oliver May) Date: Fri, 13 Feb 2009 10:26:35 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <20090212171814.GE30628@redhat.com> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> Message-ID: <49953CCB.4070604@dfc.be> Hi Deepak! >> >> What website do you see this error on? >> >> As for PluginDebug.debug() ... its messages go to STDERR. However, >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in >> that case, all OUT/ERR is redirected to /tmp/java.stdout and >> /tmp/java.stderr >> >> Cheers, >> Deepak >> > > Whoops.. should have checked the ML first. > > Okay, can you start the browser with the env variable > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log > and /tmp/java.std* files? > > Deepak > I did some more testing, and put the applet I am using online with some simple javascript <> java interaction, including the source files. http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html The applet expects a gpsd running on localhost, but it wont crash without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 for some real data (real, but static, mainframe.cx is not moving :)). Using this site I just did a test with debugging output: debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& /tmp/iceweasel.err so i have also gathered the iceweasel process out and err streams. What I did is: +Started iceweasel and opened http://geomajas.org.... +Waited until the applet was completely loaded (cpu idle) +Clicked on "Start gps" and waited like 10 minutes until cpu idle +Clicked on "Get gps data", this returned null in the textbox after half a second. +Clicked on "Stop gps" +Clicked on "Get gps data" again, wich actet the same way as before +Closed iceweasel Btw, there seem to be some real performance issues too, the first call from javascript to java takes ages, esp. with debugging turned on. But that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). Greetings! -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be -------------- next part -------------- A non-text attachment was scrubbed... Name: applet-test.tgz Type: application/x-compressed-tar Size: 513066 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090213/10d3a52d/applet-test.tgz From bugzilla-daemon at icedtea.classpath.org Fri Feb 13 11:21:00 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 13 Feb 2009 19:21:00 +0000 Subject: [Bug 292] New: Crash of Google Web Tookit hosted mode application , in mozilla-1.7.12 libxpcom library Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=292 Summary: Crash of Google Web Tookit hosted mode application , in mozilla-1.7.12 libxpcom library Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: innusius at gmail.com Occurred when submitting file to web application , for now its show stopper for me . Iced Tea 1.4 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Feb 13 11:44:29 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 13 Feb 2009 19:44:29 +0000 Subject: [Bug 292] Crash of Google Web Tookit hosted mode application , in mozilla-1.7.12 libxpcom library Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=292 innusius at gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Fri Feb 13 11:54:51 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 13 Feb 2009 14:54:51 -0500 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers In-Reply-To: <49953ECD.90905@dfc.be> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> <49953ECD.90905@dfc.be> Message-ID: <20090213195451.GB13389@redhat.com> * Oliver May [2009-02-13 04:35]: > Seems my message got hold back by the mailing list because the large > attachment, I uploaded the file to the website too: > http://geomajas.org/users/oliverm/freerunner-gpsApplet/applet-test.tgz > > Hi Deepak! > > >> > >> What website do you see this error on? > >> > >> As for PluginDebug.debug() ... its messages go to STDERR. However, > >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in > >> that case, all OUT/ERR is redirected to /tmp/java.stdout and > >> /tmp/java.stderr > >> > >> Cheers, > >> Deepak > >> > > > > Whoops.. should have checked the ML first. > > > > Okay, can you start the browser with the env variable > > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log > > and /tmp/java.std* files? > > > > Deepak > > > > I did some more testing, and put the applet I am using online with some > simple javascript <> java interaction, including the source files. > > http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html > What version of IcedTea are you trying this with again? I think I have seen this sort of error once before, but I was never able to reproduce it. After that though, I changed one of the structures in PluginAppletSecurityContext (where the NPE is happening) to be a Hashtable instead of HashMap. So in theory, any NPE should get thrown when the table is updated, rather than when the value is read. From the logs, it appears that the latter is the case. Can you try running it with IcedTea 1.4 or later and attach those logs please? Thanks, Deepak > The applet expects a gpsd running on localhost, but it wont crash > without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 > for some real data (real, but static, mainframe.cx is not moving :)). > > Using this site I just did a test with debugging output: > > debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true > debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG > debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& /tmp/iceweasel.err > > so i have also gathered the iceweasel process out and err streams. > > What I did is: > +Started iceweasel and opened http://geomajas.org.... > +Waited until the applet was completely loaded (cpu idle) > +Clicked on "Start gps" and waited like 10 minutes until cpu idle > +Clicked on "Get gps data", this returned null in the textbox after half > a second. > +Clicked on "Stop gps" > +Clicked on "Get gps data" again, wich actet the same way as before > +Closed iceweasel > > Btw, there seem to be some real performance issues too, the first call > from javascript to java takes ages, esp. with debugging turned on. But > that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). > > Greetings! > > -- > Oliver May > > DFC Software Engineering > GeoMajas partner www.geomajas.org > > Brugsesteenweg 587 > B-9030 Gent > Belgium > T: +32 9 236 61 96 > F: +32 9 236 54 12 > E: oliver.may at dfc.be > W: www.dfc.be > From langel at redhat.com Fri Feb 13 12:26:53 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 13 Feb 2009 15:26:53 -0500 Subject: mozilla.javascript still encumbered...? In-Reply-To: <49932F92.6070307@redhat.com> References: <49932936.7060300@redhat.com> <20090211195724.GA30628@redhat.com> <49932F92.6070307@redhat.com> Message-ID: <4995D78D.9080908@redhat.com> Lillian Angel wrote: > Hi, > > Deepak Bhole wrote: >> * Lillian Angel [2009-02-11 14:39]: >> >>> Hi, >>> >>> I was attempting to build the yui-compressor tool[1], and I found >>> that IcedTea/OpenJDK is missing some mozilla.javascript[2] classes >>> still. At the moment, I don't have the time to start implementing >>> these, but let me know if anyone does. >>> >>> The tool does build with JDK 1.6.0. >>> >>> https://bugzilla.redhat.com/show_bug.cgi?id=485135 >>> >>> Cheers, >>> Lillian >>> >>> >>> >> >> Looks like we need to upgrade rhino. 1.7R1 appears to have the new >> stuff. Just did a quick search for a couple of things: >> >> $ grep -rE "isStrictMode|reportWarningAsError|DUPLICATE_CONST" >> rhino1_7R1/src/ | awk '{print $1}' | sort -u >> rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java: >> rhino1_7R1/src/org/mozilla/javascript/Parser.java: >> > > Great! Thanks for looking into this so quickly. I requested the Fedora > maintainer upgrade to 1.7 (or orphan it, so I can pick it up). We can > upgrade the dependency in IcedTea/6. I updated Rhino in Fedora 10 and 11 (should be available via yum within a couple of days) to 1.7-r2pre, which is the most current version. I have also changed the requirement in acinclude.m4 to fall back on 1.7, rather than 1.6. IcedTea will still build with older versions of Rhino, but not all applications that depend on OpenJDK will work with 1.6. 2009-02-13 Lillian Angel * acinclude.m4: Upgraded rhino to 1.7 from 1.6. From langel at redhat.com Fri Feb 13 12:27:08 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 13 Feb 2009 20:27:08 +0000 Subject: changeset in /hg/icedtea6: 2009-02-13 Lillian Angel changeset 30659285afdb in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=30659285afdb description: 2009-02-13 Lillian Angel * acinclude.m4: Upgraded rhino to 1.7 from 1.6. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 4 ++++ acinclude.m4 | 4 ++-- diffs (25 lines): diff -r 493d9814f1ae -r 30659285afdb ChangeLog --- a/ChangeLog Thu Feb 12 15:49:51 2009 +0000 +++ b/ChangeLog Fri Feb 13 15:27:01 2009 -0500 @@ -1,3 +1,7 @@ 2009-02-12 Andrew John Hughes + + * acinclude.m4: Upgraded rhino to 1.7 from 1.6. + 2009-02-12 Andrew John Hughes * configure.ac: diff -r 493d9814f1ae -r 30659285afdb acinclude.m4 --- a/acinclude.m4 Thu Feb 12 15:49:51 2009 +0000 +++ b/acinclude.m4 Fri Feb 13 15:27:01 2009 -0500 @@ -588,8 +588,8 @@ AC_DEFUN([FIND_RHINO_JAR], RHINO_JAR=/usr/share/java/rhino.jar elif test -e "/usr/share/java/js.jar"; then RHINO_JAR=/usr/share/java/js.jar - elif test -e "/usr/share/rhino-1.6/lib/js.jar"; then - RHINO_JAR=/usr/share/rhino-1.6/lib/js.jar + elif test -e "/usr/share/rhino-1.7/lib/js.jar"; then + RHINO_JAR=/usr/share/rhino-1.7/lib/js.jar fi if test x"${RHINO_JAR}" = "xyes"; then AC_MSG_RESULT([not found]) From Joe.Darcy at Sun.COM Fri Feb 13 12:49:16 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Fri, 13 Feb 2009 12:49:16 -0800 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. In-Reply-To: <17c6771e0902130745m1f187efat7ca77abd4a0584e@mail.gmail.com> References: <4994E3EE.4020201@sun.com> <17c6771e0902130745m1f187efat7ca77abd4a0584e@mail.gmail.com> Message-ID: <4995DCCC.4080403@sun.com> Andrew John Hughes wrote: > 2009/2/13 Joseph D. Darcy : > >> Hello. >> >> The annotations test patch is unnecessary. >> >> The tests in question that in JDK 7 live in >> test/java/lang/annotation (singular) >> have since build 13 lived in OpenJDK 6 at >> test/java/lang/annotations (plural) >> >> See >> http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/f6b99ef3deee/test/java/lang/annotations/ >> >> The original closed tests lived in an "annotations" directory, but by the >> naming conventions for tests they should have been in "annotation" so I put >> the JDK 7 tests in the latter directory when I opened them up for that >> release. >> >> > > Ok, this wasn't mentioned in the commit or anywhere else. Why would it be? > Can you fix > the naming in OpenJDK6 to match? > I do not plan to move the existing OpenJDK 6 tests. >> Especially since there is a public OpenJDK 6 Mercurial forest now, in the >> future when there is interest in having a Sun patch ported to IcedTea 6, I >> suggest contacting us at Sun about getting the change in the upstream >> OpenJDK 6 master directly. >> >> > > I expect these tests will be in the next build drop. The point of > backporting them was so we could start running them in the meantime. > > If the goal is having more tests (or other changes) in the upstream OpenJDK 6 repository there are two general paths: 1) Apply patch to IcedTea6 2) Changes later get added to OpenJDK 6 directly 3) Remove newly unnecessary patch from IcedTea6 or 1) Change OpenJDK 6 directly If it happens promptly, the second path strikes me as more efficient all around :-) -Joe From ahughes at redhat.com Fri Feb 13 13:04:21 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 13 Feb 2009 21:04:21 +0000 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. In-Reply-To: <4995DCCC.4080403@sun.com> References: <4994E3EE.4020201@sun.com> <17c6771e0902130745m1f187efat7ca77abd4a0584e@mail.gmail.com> <4995DCCC.4080403@sun.com> Message-ID: <1234559061.24911.6.camel@rivendell.middle-earth.co.uk> On Fri, 2009-02-13 at 12:49 -0800, Joseph D. Darcy wrote: > Andrew John Hughes wrote: > > 2009/2/13 Joseph D. Darcy : > > > >> Hello. > >> > >> The annotations test patch is unnecessary. > >> > >> The tests in question that in JDK 7 live in > >> test/java/lang/annotation (singular) > >> have since build 13 lived in OpenJDK 6 at > >> test/java/lang/annotations (plural) > >> > >> See > >> http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/f6b99ef3deee/test/java/lang/annotations/ > >> > >> The original closed tests lived in an "annotations" directory, but by the > >> naming conventions for tests they should have been in "annotation" so I put > >> the JDK 7 tests in the latter directory when I opened them up for that > >> release. > >> > >> > > > > Ok, this wasn't mentioned in the commit or anywhere else. > > Why would it be? > Why wouldn't it be? Sun commits seem to lack any comments other than bare bug IDs. If the motivation for patches was included, along with known issues for this, it would make working with them a lot easier. IcedTea commits at least have a ChangeLog, though I would like commits there to be more verbose as well. There is a review process for these commits but it seems it is still completely internal to Sun. > > Can you fix > > the naming in OpenJDK6 to match? > > > > I do not plan to move the existing OpenJDK 6 tests. > Is there any reason to keep this arbitrary difference, given it will create headaches merging between the two? > >> Especially since there is a public OpenJDK 6 Mercurial forest now, in the > >> future when there is interest in having a Sun patch ported to IcedTea 6, I > >> suggest contacting us at Sun about getting the change in the upstream > >> OpenJDK 6 master directly. > >> > >> > > > > I expect these tests will be in the next build drop. The point of > > backporting them was so we could start running them in the meantime. > > > > > > If the goal is having more tests (or other changes) in the upstream > OpenJDK 6 repository there are two general paths: > > 1) Apply patch to IcedTea6 > 2) Changes later get added to OpenJDK 6 directly > 3) Remove newly unnecessary patch from IcedTea6 > > or > > 1) Change OpenJDK 6 directly > > > If it happens promptly, the second path strikes me as more efficient all > around :-) > I agree, except it's actually: 1) Change OpenJDK6 directly 2) Change appears in a build drop 3) IcedTea6 picks up the new build drop i.e. we base IcedTea on the latest build drop, not hg. Not only is hg slower, but build daemons don't generally have web access (this is also an issue for testing) and we need a clear snapshot to work against. 1 is also still held back by the current lack of external committers. > -Joe -- Andrew :) IcedTea/OpenJDK/GNU Classpath Developer Red Hat, Inc. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090213/ab5935b7/attachment.bin From Joe.Darcy at Sun.COM Fri Feb 13 13:20:32 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Fri, 13 Feb 2009 13:20:32 -0800 Subject: changeset in /hg/icedtea6: Backport newly Freed tests. In-Reply-To: <1234559061.24911.6.camel@rivendell.middle-earth.co.uk> References: <4994E3EE.4020201@sun.com> <17c6771e0902130745m1f187efat7ca77abd4a0584e@mail.gmail.com> <4995DCCC.4080403@sun.com> <1234559061.24911.6.camel@rivendell.middle-earth.co.uk> Message-ID: <4995E420.6050608@sun.com> Andrew John Hughes wrote: > On Fri, 2009-02-13 at 12:49 -0800, Joseph D. Darcy wrote: > >> Andrew John Hughes wrote: >> >>> 2009/2/13 Joseph D. Darcy : >>> >>> >>>> Hello. >>>> >>>> The annotations test patch is unnecessary. >>>> >>>> The tests in question that in JDK 7 live in >>>> test/java/lang/annotation (singular) >>>> have since build 13 lived in OpenJDK 6 at >>>> test/java/lang/annotations (plural) >>>> >>>> See >>>> http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/f6b99ef3deee/test/java/lang/annotations/ >>>> >>>> The original closed tests lived in an "annotations" directory, but by the >>>> naming conventions for tests they should have been in "annotation" so I put >>>> the JDK 7 tests in the latter directory when I opened them up for that >>>> release. >>>> >>>> >>>> >>> Ok, this wasn't mentioned in the commit or anywhere else. >>> >> Why would it be? >> >> > > Why wouldn't it be? There is an arbitrary amount of additional information that could be included in a commit message. > Sun commits seem to lack any comments other than > bare bug IDs. Yes, all commits require a bug id and the bug database is expected to hold most of the information about the bug. > If the motivation for patches was included, along with > known issues for this, it would make working with them a lot easier. > IcedTea commits at least have a ChangeLog, though I would like commits > there to be more verbose as well. > > There is a review process for these commits but it seems it is still > completely internal to Sun. > > >>> Can you fix >>> the naming in OpenJDK6 to match? >>> >>> >> I do not plan to move the existing OpenJDK 6 tests. >> >> > > Is there any reason to keep this arbitrary difference, given it will > create headaches merging between the two? > I do not expect these tests to evolve very much. >>>> Especially since there is a public OpenJDK 6 Mercurial forest now, in the >>>> future when there is interest in having a Sun patch ported to IcedTea 6, I >>>> suggest contacting us at Sun about getting the change in the upstream >>>> OpenJDK 6 master directly. >>>> >>>> >>>> >>> I expect these tests will be in the next build drop. The point of >>> backporting them was so we could start running them in the meantime. >>> >>> >>> >> If the goal is having more tests (or other changes) in the upstream >> OpenJDK 6 repository there are two general paths: >> >> 1) Apply patch to IcedTea6 >> 2) Changes later get added to OpenJDK 6 directly >> 3) Remove newly unnecessary patch from IcedTea6 >> >> or >> >> 1) Change OpenJDK 6 directly >> >> >> If it happens promptly, the second path strikes me as more efficient all >> around :-) >> >> > > I agree, except it's actually: > > 1) Change OpenJDK6 directly > 2) Change appears in a build drop > 3) IcedTea6 picks up the new build drop > > i.e. we base IcedTea on the latest build drop, not hg. That was certainly necessary before OpenJDK 6 had live hg. > Not only is hg > slower, but build daemons don't generally have web access (this is also > an issue for testing) and we need a clear snapshot to work against. > Each revision of the repository is identifiable of course. > 1 is also still held back by the current lack of external committers. > That should change over time. -Joe From Joe.Darcy at Sun.COM Fri Feb 13 13:36:08 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Fri, 13 Feb 2009 13:36:08 -0800 Subject: FYI: Fix typo in configure.ac In-Reply-To: <49944824.30208@ubuntu.com> References: <20090212154900.GA1489@rivendell.middle-earth.co.uk> <49944824.30208@ubuntu.com> Message-ID: <4995E7C8.7000703@sun.com> Hello. Matthias Klose wrote: > Andrew John Hughes schrieb: > >> Fixing a typo which prevents NIO2 being disabled... :( >> >> ChangeLog: >> >> 2009-02-12 Andrew John Hughes >> >> * configure.ac: >> Fix typo in --enable-nio2. >> > > maybe we should disable nio2 by default on all archs except amd64 and ix86. It > currently builds on other archs, but the vm crashes on the first test in the > jtreg testsuite. The code itself has comments inside UnixNativeDispatcher.c that > it doesn't work on anything else. > > The code continues to hardcode the use of functions (here fstatat) based on > experience from the coder (#if defined(__linux__) ...). The assertion is not > enough. You seem to need a recent glibc as well. How could upstream be convinced > to use autoconf checks (AC_CHECK_FUNC) and use these instead? > > Matthias > > Alan Bateman is the right upstream person to talk to for nio2 issues. Kelly and Mark R. should be involved in any discussions about changing the fundamental build infrastructure to use autoconf or other techniques than what are currently being used. Patches to update the upstream code base to use new techniques wouldn't hurt the chances of the new techniques being adopted :-) Note that besides Linux, the OpenJDK build also needs to work well on Solaris and windows. -Joe From gnu_andrew at member.fsf.org Fri Feb 13 14:00:05 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 13 Feb 2009 22:00:05 +0000 Subject: FYI: Fix typo in configure.ac In-Reply-To: <4995E7C8.7000703@sun.com> References: <20090212154900.GA1489@rivendell.middle-earth.co.uk> <49944824.30208@ubuntu.com> <4995E7C8.7000703@sun.com> Message-ID: <17c6771e0902131400i3a67a47ema83b8d3855ca3c7@mail.gmail.com> 2009/2/13 Joseph D. Darcy : > Hello. > > Matthias Klose wrote: >> >> Andrew John Hughes schrieb: >> >>> >>> Fixing a typo which prevents NIO2 being disabled... :( >>> >>> ChangeLog: >>> >>> 2009-02-12 ?Andrew John Hughes ? >>> >>> ? ? ? ?* configure.ac: >>> ? ? ? ?Fix typo in --enable-nio2. >>> >> >> maybe we should disable nio2 by default on all archs except amd64 and >> ix86. ?It >> currently builds on other archs, but the vm crashes on the first test in >> the >> jtreg testsuite. The code itself has comments inside >> UnixNativeDispatcher.c that >> it doesn't work on anything else. >> >> The code continues to hardcode the use of functions (here fstatat) based >> on >> experience from the coder (#if defined(__linux__) ...). The assertion is >> not >> enough. You seem to need a recent glibc as well. How could upstream be >> convinced >> to use autoconf checks (AC_CHECK_FUNC) and use these instead? >> >> ?Matthias >> >> > > Alan Bateman is the right upstream person to talk to for nio2 issues. > > Kelly and Mark R. should be involved in any discussions about changing the > fundamental build infrastructure to use autoconf or other techniques than > what are currently being used. ?Patches to update the upstream code base to > use new techniques wouldn't hurt the chances of the new techniques being > adopted :-) > > Note that besides Linux, the OpenJDK build also needs to work well on > Solaris and windows. > > -Joe > > Well the intention wouldn't be to alter the experience for Solaris and Windows users, just to make it easier for GNU/Linux users :) -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Fri Feb 13 16:04:26 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sat, 14 Feb 2009 00:04:26 +0000 Subject: changeset in /hg/icedtea6: 2009-02-13 Lillian Angel References: Message-ID: <17c6771e0902131604j18427975j61906656f45eb765@mail.gmail.com> 2009/2/13 Lillian Angel : > changeset 30659285afdb in /hg/icedtea6 > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=30659285afdb > description: > ? ? ? ?2009-02-13 ?Lillian Angel ? > > ? ? ? ? ? ? ? ?* acinclude.m4: Upgraded rhino to 1.7 from 1.6. > > diffstat: > > 2 files changed, 6 insertions(+), 2 deletions(-) > ChangeLog ? ?| ? ?4 ++++ > acinclude.m4 | ? ?4 ++-- > > diffs (25 lines): > > diff -r 493d9814f1ae -r 30659285afdb ChangeLog > --- a/ChangeLog Thu Feb 12 15:49:51 2009 +0000 > +++ b/ChangeLog Fri Feb 13 15:27:01 2009 -0500 > @@ -1,3 +1,7 @@ 2009-02-12 ?Andrew John Hughes ? +2009-02-13 ?Lillian Angel ? > + > + ? ? ? * acinclude.m4: Upgraded rhino to 1.7 from 1.6. > + > ?2009-02-12 ?Andrew John Hughes ? > > ? ? ? ?* configure.ac: > diff -r 493d9814f1ae -r 30659285afdb acinclude.m4 > --- a/acinclude.m4 ? ? ?Thu Feb 12 15:49:51 2009 +0000 > +++ b/acinclude.m4 ? ? ?Fri Feb 13 15:27:01 2009 -0500 > @@ -588,8 +588,8 @@ AC_DEFUN([FIND_RHINO_JAR], > ? ? ? RHINO_JAR=/usr/share/java/rhino.jar > ? ? elif test -e "/usr/share/java/js.jar"; then > ? ? ? RHINO_JAR=/usr/share/java/js.jar > - ? ?elif test -e "/usr/share/rhino-1.6/lib/js.jar"; then > - ? ? ?RHINO_JAR=/usr/share/rhino-1.6/lib/js.jar > + ? ?elif test -e "/usr/share/rhino-1.7/lib/js.jar"; then > + ? ? ?RHINO_JAR=/usr/share/rhino-1.7/lib/js.jar > ? ? fi > ? ? if test x"${RHINO_JAR}" = "xyes"; then > ? ? ? AC_MSG_RESULT([not found]) > What was the purpose of this patch? Fedora doesn't even install Rhino to this directory and by forcing 1.7, I now can't build with Javascript support. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Feb 13 16:44:55 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Sat, 14 Feb 2009 00:44:55 +0000 Subject: changeset in /hg/icedtea6: Rename 14.0b08 to 'default' for futur... Message-ID: changeset 2f6c82818e1d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2f6c82818e1d description: Rename 14.0b08 to 'default' for future upgrades. 2009-02-12 Andrew John Hughes * patches/ecj/icedtea-hotspot-14.0b08.patch, * patches/hotspot/14.0b08/icedtea-6791168.patch, * patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch, * patches/hotspot/14.0b08/icedtea-core-build.patch, * patches/hotspot/14.0b08/icedtea-debuginfo.patch, * patches/hotspot/14.0b08/icedtea-format.patch, * patches/hotspot/14.0b08/icedtea-gcc-4.3.patch, * patches/hotspot/14.0b08/icedtea-gcc-suffix.patch, * patches/hotspot/14.0b08/icedtea-headers.patch, * patches/hotspot/14.0b08/icedtea-includedb.patch, * patches/hotspot/14.0b08/icedtea-memory-limits.patch, * patches/hotspot/14.0b08/icedtea-no-precompiled.patch, * patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch, * patches/hotspot/14.0b08/icedtea-parisc-opt.patch, * patches/hotspot/14.0b08/icedtea-shark-build.patch, * patches/hotspot/14.0b08/icedtea-shark.patch, * patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch, * patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch, * patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch, * patches/hotspot/14.0b08/icedtea-sparc64-linux.patch, * patches/hotspot/14.0b08/icedtea-static-libstdc++.patch, * patches/hotspot/14.0b08/icedtea-text-relocations.patch, * patches/hotspot/14.0b08/icedtea-use-idx_t.patch, * patches/hotspot/14.0b08/icedtea-version.patch, * patches/hotspot/14.0b08/icedtea-zero-build.patch: Moved... * acinclude.m4: Make 'default' the default. * hotspot.map: Change 14.0b08 to default. * patches/ecj/icedtea-hotspot-default.patch, * patches/hotspot/default/icedtea-6791168.patch, * patches/hotspot/default/icedtea-bytecodeInterpreter.patch, * patches/hotspot/default/icedtea-core-build.patch, * patches/hotspot/default/icedtea-debuginfo.patch, * patches/hotspot/default/icedtea-format.patch, * patches/hotspot/default/icedtea-gcc-4.3.patch, * patches/hotspot/default/icedtea-gcc-suffix.patch, * patches/hotspot/default/icedtea-headers.patch, * patches/hotspot/default/icedtea-includedb.patch, * patches/hotspot/default/icedtea-memory-limits.patch, * patches/hotspot/default/icedtea-no-precompiled.patch, * patches/hotspot/default/icedtea-params-cast-size_t.patch, * patches/hotspot/default/icedtea-parisc-opt.patch, * patches/hotspot/default/icedtea-shark-build.patch, * patches/hotspot/default/icedtea-shark.patch, * patches/hotspot/default/icedtea-sparc-buildfixes.patch, * patches/hotspot/default/icedtea-sparc-ptracefix.patch, * patches/hotspot/default/icedtea-sparc-trapsfix.patch, * patches/hotspot/default/icedtea-sparc64-linux.patch, * patches/hotspot/default/icedtea-static-libstdc++.patch, * patches/hotspot/default/icedtea-text-relocations.patch, * patches/hotspot/default/icedtea-use-idx_t.patch, * patches/hotspot/default/icedtea-version.patch, * patches/hotspot/default/icedtea-zero-build.patch: to here. diffstat: 53 files changed, 1938 insertions(+), 1885 deletions(-) ChangeLog | 53 + acinclude.m4 | 2 hotspot.map | 2 patches/ecj/icedtea-hotspot-14.0b08.patch | 48 - patches/ecj/icedtea-hotspot-default.patch | 48 + patches/hotspot/14.0b08/icedtea-6791168.patch | 230 ------ patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/14.0b08/icedtea-core-build.patch | 108 -- patches/hotspot/14.0b08/icedtea-debuginfo.patch | 15 patches/hotspot/14.0b08/icedtea-format.patch | 48 - patches/hotspot/14.0b08/icedtea-gcc-4.3.patch | 54 - patches/hotspot/14.0b08/icedtea-gcc-suffix.patch | 25 patches/hotspot/14.0b08/icedtea-headers.patch | 13 patches/hotspot/14.0b08/icedtea-includedb.patch | 97 -- patches/hotspot/14.0b08/icedtea-memory-limits.patch | 23 patches/hotspot/14.0b08/icedtea-no-precompiled.patch | 32 patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch | 121 --- patches/hotspot/14.0b08/icedtea-parisc-opt.patch | 28 patches/hotspot/14.0b08/icedtea-shark-build.patch | 233 ------ patches/hotspot/14.0b08/icedtea-shark.patch | 366 ---------- patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/14.0b08/icedtea-sparc64-linux.patch | 42 - patches/hotspot/14.0b08/icedtea-static-libstdc++.patch | 16 patches/hotspot/14.0b08/icedtea-text-relocations.patch | 61 - patches/hotspot/14.0b08/icedtea-use-idx_t.patch | 45 - patches/hotspot/14.0b08/icedtea-version.patch | 48 - patches/hotspot/14.0b08/icedtea-zero-build.patch | 129 --- patches/hotspot/default/14.0b08/icedtea-6791168.patch | 230 ++++++ patches/hotspot/default/14.0b08/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/default/14.0b08/icedtea-core-build.patch | 108 ++ patches/hotspot/default/14.0b08/icedtea-debuginfo.patch | 15 patches/hotspot/default/14.0b08/icedtea-format.patch | 48 + patches/hotspot/default/14.0b08/icedtea-gcc-4.3.patch | 54 + patches/hotspot/default/14.0b08/icedtea-gcc-suffix.patch | 25 patches/hotspot/default/14.0b08/icedtea-headers.patch | 13 patches/hotspot/default/14.0b08/icedtea-includedb.patch | 97 ++ patches/hotspot/default/14.0b08/icedtea-memory-limits.patch | 23 patches/hotspot/default/14.0b08/icedtea-no-precompiled.patch | 32 patches/hotspot/default/14.0b08/icedtea-params-cast-size_t.patch | 121 +++ patches/hotspot/default/14.0b08/icedtea-parisc-opt.patch | 28 patches/hotspot/default/14.0b08/icedtea-shark-build.patch | 233 ++++++ patches/hotspot/default/14.0b08/icedtea-shark.patch | 366 ++++++++++ patches/hotspot/default/14.0b08/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/default/14.0b08/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/default/14.0b08/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/default/14.0b08/icedtea-sparc64-linux.patch | 42 + patches/hotspot/default/14.0b08/icedtea-static-libstdc++.patch | 16 patches/hotspot/default/14.0b08/icedtea-text-relocations.patch | 61 + patches/hotspot/default/14.0b08/icedtea-use-idx_t.patch | 45 + patches/hotspot/default/14.0b08/icedtea-version.patch | 48 + patches/hotspot/default/14.0b08/icedtea-zero-build.patch | 129 +++ diffs (truncated from 4045 to 500 lines): diff -r 30659285afdb -r 2f6c82818e1d ChangeLog --- a/ChangeLog Fri Feb 13 15:27:01 2009 -0500 +++ b/ChangeLog Sat Feb 14 00:44:26 2009 +0000 @@ -1,3 +1,56 @@ 2009-02-13 Lillian Angel + + * patches/hotspot/14.0b08/icedtea-6791168.patch, + * patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch, + * patches/hotspot/14.0b08/icedtea-core-build.patch, + * patches/hotspot/14.0b08/icedtea-debuginfo.patch, + * patches/hotspot/14.0b08/icedtea-format.patch, + * patches/hotspot/14.0b08/icedtea-gcc-4.3.patch, + * patches/hotspot/14.0b08/icedtea-gcc-suffix.patch, + * patches/hotspot/14.0b08/icedtea-headers.patch, + * patches/hotspot/14.0b08/icedtea-includedb.patch, + * patches/hotspot/14.0b08/icedtea-memory-limits.patch, + * patches/hotspot/14.0b08/icedtea-no-precompiled.patch, + * patches/hotspot/14.0b08/icedtea-params-cast-size_t.patch, + * patches/hotspot/14.0b08/icedtea-parisc-opt.patch, + * patches/hotspot/14.0b08/icedtea-shark-build.patch, + * patches/hotspot/14.0b08/icedtea-shark.patch, + * patches/hotspot/14.0b08/icedtea-sparc-buildfixes.patch, + * patches/hotspot/14.0b08/icedtea-sparc-ptracefix.patch, + * patches/hotspot/14.0b08/icedtea-sparc-trapsfix.patch, + * patches/hotspot/14.0b08/icedtea-sparc64-linux.patch, + * patches/hotspot/14.0b08/icedtea-static-libstdc++.patch, + * patches/hotspot/14.0b08/icedtea-text-relocations.patch, + * patches/hotspot/14.0b08/icedtea-use-idx_t.patch, + * patches/hotspot/14.0b08/icedtea-version.patch, + * patches/hotspot/14.0b08/icedtea-zero-build.patch: Moved... + * acinclude.m4: Make 'default' the default. + * hotspot.map: Change 14.0b08 to default. + * patches/hotspot/default/icedtea-6791168.patch, + * patches/hotspot/default/icedtea-bytecodeInterpreter.patch, + * patches/hotspot/default/icedtea-core-build.patch, + * patches/hotspot/default/icedtea-debuginfo.patch, + * patches/hotspot/default/icedtea-format.patch, + * patches/hotspot/default/icedtea-gcc-4.3.patch, + * patches/hotspot/default/icedtea-gcc-suffix.patch, + * patches/hotspot/default/icedtea-headers.patch, + * patches/hotspot/default/icedtea-includedb.patch, + * patches/hotspot/default/icedtea-memory-limits.patch, + * patches/hotspot/default/icedtea-no-precompiled.patch, + * patches/hotspot/default/icedtea-params-cast-size_t.patch, + * patches/hotspot/default/icedtea-parisc-opt.patch, + * patches/hotspot/default/icedtea-shark-build.patch, + * patches/hotspot/default/icedtea-shark.patch, + * patches/hotspot/default/icedtea-sparc-buildfixes.patch, + * patches/hotspot/default/icedtea-sparc-ptracefix.patch, + * patches/hotspot/default/icedtea-sparc-trapsfix.patch, + * patches/hotspot/default/icedtea-sparc64-linux.patch, + * patches/hotspot/default/icedtea-static-libstdc++.patch, + * patches/hotspot/default/icedtea-text-relocations.patch, + * patches/hotspot/default/icedtea-use-idx_t.patch, + * patches/hotspot/default/icedtea-version.patch, + * patches/hotspot/default/icedtea-zero-build.patch: to here. + 2009-02-13 Lillian Angel * acinclude.m4: Upgraded rhino to 1.7 from 1.6. diff -r 30659285afdb -r 2f6c82818e1d acinclude.m4 --- a/acinclude.m4 Fri Feb 13 15:27:01 2009 -0500 +++ b/acinclude.m4 Sat Feb 14 00:44:26 2009 +0000 @@ -845,7 +845,7 @@ AC_DEFUN([AC_CHECK_WITH_GCJ], AC_DEFUN([AC_CHECK_WITH_HOTSPOT_BUILD], [ - DEFAULT_BUILD="14.0b08" + DEFAULT_BUILD="default" AC_MSG_CHECKING([which HotSpot build to use]) AC_ARG_WITH([hotspot-build], [AS_HELP_STRING(--with-hotspot-build,the HotSpot build to use)], diff -r 30659285afdb -r 2f6c82818e1d hotspot.map --- a/hotspot.map Fri Feb 13 15:27:01 2009 -0500 +++ b/hotspot.map Sat Feb 14 00:44:26 2009 +0000 @@ -1,2 +1,2 @@ # version changeset md5sum -14.0b08 f9d938ede196 c8f78d48ac83987bc2adebeebcd354e9 +default f9d938ede196 c8f78d48ac83987bc2adebeebcd354e9 diff -r 30659285afdb -r 2f6c82818e1d patches/ecj/icedtea-hotspot-14.0b08.patch --- a/patches/ecj/icedtea-hotspot-14.0b08.patch Fri Feb 13 15:27:01 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -diff -Nru openjdk-ecj.orig/hotspot/make/linux/Makefile openjdk-ecj/hotspot/make/linux/Makefile ---- openjdk-ecj.orig/hotspot/make/linux/Makefile 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/hotspot/make/linux/Makefile 2008-10-24 13:32:48.000000000 +0100 -@@ -263,28 +263,24 @@ - - $(TARGETS_C2): $(SUBDIRS_C2) - cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) -- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma - ifdef INSTALL - cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install - endif - - $(TARGETS_TIERED): $(SUBDIRS_TIERED) - cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) -- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma - ifdef INSTALL - cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install - endif - - $(TARGETS_C1): $(SUBDIRS_C1) - cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) -- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma - ifdef INSTALL - cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install - endif - - $(TARGETS_CORE): $(SUBDIRS_CORE) - cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) -- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma - ifdef INSTALL - cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install - endif -diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make ---- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make 2008-10-24 10:16:06.000000000 +0100 -+++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2008-10-24 13:32:48.000000000 +0100 -@@ -74,8 +74,8 @@ - mkdir -p $(SA_CLASSDIR); \ - fi - -- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) -- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) -+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) -+ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) - - $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer - $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) - - diff -r 30659285afdb -r 2f6c82818e1d patches/ecj/icedtea-hotspot-default.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/ecj/icedtea-hotspot-default.patch Sat Feb 14 00:44:26 2009 +0000 @@ -0,0 +1,48 @@ +diff -Nru openjdk-ecj.orig/hotspot/make/linux/Makefile openjdk-ecj/hotspot/make/linux/Makefile +--- openjdk-ecj.orig/hotspot/make/linux/Makefile 2008-10-24 10:16:06.000000000 +0100 ++++ openjdk-ecj/hotspot/make/linux/Makefile 2008-10-24 13:32:48.000000000 +0100 +@@ -263,28 +263,24 @@ + + $(TARGETS_C2): $(SUBDIRS_C2) + cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install + endif + + $(TARGETS_TIERED): $(SUBDIRS_TIERED) + cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install + endif + + $(TARGETS_C1): $(SUBDIRS_C1) + cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install + endif + + $(TARGETS_CORE): $(SUBDIRS_CORE) + cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) +- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma + ifdef INSTALL + cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install + endif +diff -Nru openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make openjdk-ecj/hotspot/make/linux/makefiles/sa.make +--- openjdk-ecj.orig/hotspot/make/linux/makefiles/sa.make 2008-10-24 10:16:06.000000000 +0100 ++++ openjdk-ecj/hotspot/make/linux/makefiles/sa.make 2008-10-24 13:32:48.000000000 +0100 +@@ -74,8 +74,8 @@ + mkdir -p $(SA_CLASSDIR); \ + fi + +- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) +- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) ++ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1) ++ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH):$(BOOT_JAVA_HOME)/jre/lib/rt.jar -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2) + + $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer + $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) + + diff -r 30659285afdb -r 2f6c82818e1d patches/hotspot/14.0b08/icedtea-6791168.patch --- a/patches/hotspot/14.0b08/icedtea-6791168.patch Fri Feb 13 15:27:01 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ ---- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -594,7 +594,7 @@ - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); - - // for c++ interpreter can rsi really be munged? -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state - __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method - __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer - -@@ -658,7 +658,7 @@ - const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); - // Always give one monitor to allow us to start interp if sync method. - // Any additional monitors need a check when moving the expression stack -- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; -+ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; - __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words - __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); - __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); -@@ -1829,7 +1829,7 @@ - Label unwind_and_forward; - - // restore state pointer. -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - __ movptr(rbx, STATE(_method)); // get method - #ifdef _LP64 -@@ -1877,14 +1877,14 @@ - - // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases - if (UseSSE < 2) { -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - __ movptr(rbx, STATE(_result._to_call._callee)); // get method just executed - __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset())); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT)); // Result stub address array index - __ jcc(Assembler::equal, do_float); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE)); // Result stub address array index - __ jcc(Assembler::equal, do_double); --#ifdef COMPILER2 -+#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) - __ empty_FPU_stack(); - #endif // COMPILER2 - __ jmp(done_conv); -@@ -1928,7 +1928,7 @@ - - // Restore rsi/r13 as compiled code may not preserve it - -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - // restore stack to what we had when we left (in case i2c extended it) - -@@ -1942,7 +1942,7 @@ - #else - __ movptr(rcx, STATE(_thread)); // get thread - __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD); --#endif / __LP64 -+#endif // _LP64 - __ jcc(Assembler::notZero, return_with_exception); - - // get method just executed ---- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -139,7 +139,7 @@ - #ifdef CC_INTERP - - inline interpreterState frame::get_interpreterState() const { -- return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize )); -+ return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); - } - - inline intptr_t* frame::sender_sp() const { ---- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -6943,29 +6943,32 @@ - - Label slow_case, done; - -- // x ?<= pi/4 -- fld_d(ExternalAddress((address)&pi_4)); -- fld_s(1); // Stack: X PI/4 X -- fabs(); // Stack: |X| PI/4 X -- fcmp(tmp); -- jcc(Assembler::above, slow_case); -- -- // fastest case: -pi/4 <= x <= pi/4 -- switch(trig) { -- case 's': -- fsin(); -- break; -- case 'c': -- fcos(); -- break; -- case 't': -- ftan(); -- break; -- default: -- assert(false, "bad intrinsic"); -- break; -+ ExternalAddress pi4_adr = (address)&pi_4; -+ if (reachable(pi4_adr)) { -+ // x ?<= pi/4 -+ fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); -+ fld_s(1); // Stack: X PI/4 X -+ fabs(); // Stack: |X| PI/4 X -+ fcmp(tmp); -+ jcc(Assembler::above, slow_case); -+ -+ // fastest case: -pi/4 <= x <= pi/4 -+ switch(trig) { -+ case 's': -+ fsin(); -+ break; -+ case 'c': -+ fcos(); -+ break; -+ case 't': -+ ftan(); -+ break; -+ default: -+ assert(false, "bad intrinsic"); -+ break; -+ } -+ jmp(done); - } -- jmp(done); - - // slow case: runtime call - bind(slow_case); ---- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -2954,10 +2954,16 @@ - __ pushptr(Address(rcx, 0)); // Save return address - __ enter(); // Save old & set new rbp - __ subptr(rsp, rbx); // Prolog -+#ifdef CC_INTERP -+ __ movptr(Address(rbp, -+ -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))), -+ sender_sp); // Make it walkable -+#else // CC_INTERP - __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), - sender_sp); // Make it walkable - // This value is corrected by layout_activation_impl - __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD ); -+#endif // CC_INTERP - __ mov(sender_sp, rsp); // Pass sender_sp to next frame - __ addptr(rsi, wordSize); // Bump array pointer (sizes) - __ addptr(rcx, wordSize); // Bump array pointer (pcs) ---- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -213,7 +213,7 @@ - - inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return op1; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return op1; - else return op1 / op2; - } - -@@ -231,7 +231,7 @@ - - inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return 0; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return 0; - else return op1 % op2; - } - ---- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -30,7 +30,7 @@ - - #ifdef CC_INTERP - void InterpreterMacroAssembler::get_method(Register reg) { -- movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize))); -+ movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize))); - movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method))); - } - #endif // CC_INTERP ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2009-01-13 10:16:45.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -163,7 +163,7 @@ - #ifdef USELABELS - // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an - // initialization (which is is the initialization of the table pointer...) --#define DISPATCH(opcode) goto *dispatch_table[opcode] -+#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode] - #define CONTINUE { \ - opcode = *pc; \ - DO_UPDATE_INSTRUCTION_COUNT(opcode); \ -@@ -341,7 +341,7 @@ - */ - #undef CHECK_NULL - #define CHECK_NULL(obj_) \ -- if ((obj_) == 0) { \ -+ if ((obj_) == NULL) { \ - VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), ""); \ - } - -@@ -1362,7 +1362,7 @@ - - #define NULL_COMPARISON_NOT_OP(name) \ - CASE(_if##name): { \ -- int skip = (!(STACK_OBJECT(-1) == 0)) \ -+ int skip = (!(STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ -@@ -1372,7 +1372,7 @@ - - #define NULL_COMPARISON_OP(name) \ - CASE(_if##name): { \ -- int skip = ((STACK_OBJECT(-1) == 0)) \ -+ int skip = ((STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -66,7 +66,6 @@ - friend class InterpreterGenerator; - friend class InterpreterMacroAssembler; - friend class frame; --friend class SharedRuntime; - friend class VMStructs; - - public: diff -r 30659285afdb -r 2f6c82818e1d patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch --- a/patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch Fri Feb 13 15:27:01 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; diff -r 30659285afdb -r 2f6c82818e1d patches/hotspot/14.0b08/icedtea-core-build.patch --- a/patches/hotspot/14.0b08/icedtea-core-build.patch Fri Feb 13 15:27:01 2009 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 -@@ -97,6 +97,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -111,3 +112,4 @@ - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 -@@ -91,6 +91,15 @@ - all_debug: jvmg jvmg1 jvmgkernel docs export_debug - all_optimized: optimized optimized1 optimizedkernel docs export_optimized - -+# Core (non-compiler) targets made available with this Makefile -+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore -+ -+allcore: all_productcore all_fastdebugcore -+all_productcore: productcore docs export_product -+all_fastdebugcore: fastdebugcore docs export_fastdebug -+all_debugcore: jvmgcore docs export_debug -+all_optimizedcore: optimizedcore docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -113,6 +122,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) - -+$(CORE_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -159,6 +172,12 @@ - $(MAKE_ARGS) $(VM_TARGET) - endif - -+generic_buildcore: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -205,13 +224,21 @@ - XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt - DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs - C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 -+ifdef ICEDTEA_CORE_BUILD From ahughes at redhat.com Fri Feb 13 17:12:57 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Sat, 14 Feb 2009 01:12:57 +0000 Subject: changeset in /hg/icedtea6: Fix build breakage. Message-ID: changeset 9708fffb863d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9708fffb863d description: Fix build breakage. 2009-02-13 Andrew John Hughes * acinclude.m4: Revert Rhino change so IcedTea6 builds on Gentoo again. diffstat: 2 files changed, 10 insertions(+), 2 deletions(-) ChangeLog | 8 ++++++++ acinclude.m4 | 4 ++-- diffs (38 lines): diff -r 2f6c82818e1d -r 9708fffb863d ChangeLog --- a/ChangeLog Sat Feb 14 00:44:26 2009 +0000 +++ b/ChangeLog Sat Feb 14 01:12:44 2009 +0000 @@ -1,5 +1,12 @@ 2009-02-12 Andrew John Hughes + * acinclude.m4: + Revert Rhino change so IcedTea6 builds + on Gentoo again. + +2009-02-12 Andrew John Hughes + + * patches/ecj/icedtea-hotspot-14.0b08.patch, * patches/hotspot/14.0b08/icedtea-6791168.patch, * patches/hotspot/14.0b08/icedtea-bytecodeInterpreter.patch, * patches/hotspot/14.0b08/icedtea-core-build.patch, @@ -26,6 +33,7 @@ 2009-02-12 Andrew John Hughes http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 Summary: JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: naveed at cs.columbia.edu A few minutes after a NetworkManager network disabling and renabling, Azureus crashes. See the attached log file. This never happened with the old IcedTea releases, so I suspect something introduced in HotSpot 14. --- # Problematic frame: # V [libjvm.so+0x25731f] . . . Current CompileTask: C2: 47% ! com.aelitis.net.udp.uc.impl.PRUDPPacketHandlerImpl$5.runSupport()V @ 36 (385 bytes) --- java version "1.6.0_0" IcedTea6 1.4 (fedora-9.b14.fc10-x86_64) Runtime Environment (build 1.6.0_0-b14) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) --- java-1.6.0-openjdk-1.6.0.0-9.b14.fc10.x86_64 azureus-3.0.4.2-18.fc10.x86_64 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sat Feb 14 21:20:59 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 15 Feb 2009 05:20:59 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #1 from naveed at cs.columbia.edu 2009-02-15 05:20 ------- Created an attachment (id=158) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=158&action=view) A fatal error has been detected by the Java Runtime Environment # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x000000000086031f, pid=7076, tid=139640588122448 # # Java VM: OpenJDK 64-Bit Server VM (14.0-b08 mixed mode linux-amd64 ) # Distribution: Custom build (Mon Feb 2 07:40:49 EST 2009) # Problematic frame: # V [libjvm.so+0x25731f] # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sun Feb 15 08:58:34 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 15 Feb 2009 16:58:34 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 Christian.Thalinger at Sun.COM changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |Christian.Thalinger at Sun.COM ------- Comment #2 from Christian.Thalinger at Sun.COM 2009-02-15 16:58 ------- Could you upload the Azureus .jar for debugging? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From a.radke at arcor.de Sun Feb 15 09:38:50 2009 From: a.radke at arcor.de (Andreas Radke) Date: Sun, 15 Feb 2009 18:38:50 +0100 Subject: handling certificates Message-ID: <20090215183850.5636b956@workstation64.home> Hello, I'm the ArchLinux OpenJDK6 maintainer and we are thinking about how to add certificate support to our package. In the sources we found the removal of a Fedora patch. Checking the Fedora specs it seems they kept doing it that way. We also looked how Debian does it with their ca-certificates-java package. What the recommended way you suggest the distributions? http://bugs.archlinux.org/task/12021 - this is our initial bugreport. -Andy From mark at klomp.org Sun Feb 15 12:54:39 2009 From: mark at klomp.org (Mark Wielaard) Date: Sun, 15 Feb 2009 20:54:39 +0000 Subject: changeset in /hg/icedtea6: * patches/hotspot/default/14.0b08/*: ... Message-ID: changeset b858f5551ba7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b858f5551ba7 description: * patches/hotspot/default/14.0b08/*: Moved to ... patches/hotspot/default/*. diffstat: 49 files changed, 1840 insertions(+), 1835 deletions(-) ChangeLog | 5 patches/hotspot/default/14.0b08/icedtea-6791168.patch | 230 ------ patches/hotspot/default/14.0b08/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/default/14.0b08/icedtea-core-build.patch | 108 -- patches/hotspot/default/14.0b08/icedtea-debuginfo.patch | 15 patches/hotspot/default/14.0b08/icedtea-format.patch | 48 - patches/hotspot/default/14.0b08/icedtea-gcc-4.3.patch | 54 - patches/hotspot/default/14.0b08/icedtea-gcc-suffix.patch | 25 patches/hotspot/default/14.0b08/icedtea-headers.patch | 13 patches/hotspot/default/14.0b08/icedtea-includedb.patch | 97 -- patches/hotspot/default/14.0b08/icedtea-memory-limits.patch | 23 patches/hotspot/default/14.0b08/icedtea-no-precompiled.patch | 32 patches/hotspot/default/14.0b08/icedtea-params-cast-size_t.patch | 121 --- patches/hotspot/default/14.0b08/icedtea-parisc-opt.patch | 28 patches/hotspot/default/14.0b08/icedtea-shark-build.patch | 233 ------ patches/hotspot/default/14.0b08/icedtea-shark.patch | 366 ---------- patches/hotspot/default/14.0b08/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/default/14.0b08/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/default/14.0b08/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/default/14.0b08/icedtea-sparc64-linux.patch | 42 - patches/hotspot/default/14.0b08/icedtea-static-libstdc++.patch | 16 patches/hotspot/default/14.0b08/icedtea-text-relocations.patch | 61 - patches/hotspot/default/14.0b08/icedtea-use-idx_t.patch | 45 - patches/hotspot/default/14.0b08/icedtea-version.patch | 48 - patches/hotspot/default/14.0b08/icedtea-zero-build.patch | 129 --- patches/hotspot/default/icedtea-6791168.patch | 230 ++++++ patches/hotspot/default/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/default/icedtea-core-build.patch | 108 ++ patches/hotspot/default/icedtea-debuginfo.patch | 15 patches/hotspot/default/icedtea-format.patch | 48 + patches/hotspot/default/icedtea-gcc-4.3.patch | 54 + patches/hotspot/default/icedtea-gcc-suffix.patch | 25 patches/hotspot/default/icedtea-headers.patch | 13 patches/hotspot/default/icedtea-includedb.patch | 97 ++ patches/hotspot/default/icedtea-memory-limits.patch | 23 patches/hotspot/default/icedtea-no-precompiled.patch | 32 patches/hotspot/default/icedtea-params-cast-size_t.patch | 121 +++ patches/hotspot/default/icedtea-parisc-opt.patch | 28 patches/hotspot/default/icedtea-shark-build.patch | 233 ++++++ patches/hotspot/default/icedtea-shark.patch | 366 ++++++++++ patches/hotspot/default/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/default/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/default/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/default/icedtea-sparc64-linux.patch | 42 + patches/hotspot/default/icedtea-static-libstdc++.patch | 16 patches/hotspot/default/icedtea-text-relocations.patch | 61 + patches/hotspot/default/icedtea-use-idx_t.patch | 45 + patches/hotspot/default/icedtea-version.patch | 48 + patches/hotspot/default/icedtea-zero-build.patch | 129 +++ diffs (truncated from 3874 to 500 lines): diff -r 9708fffb863d -r b858f5551ba7 ChangeLog --- a/ChangeLog Sat Feb 14 01:12:44 2009 +0000 +++ b/ChangeLog Sun Feb 15 21:53:41 2009 +0100 @@ -1,3 +1,8 @@ 2009-02-12 Andrew John Hughes + + * patches/hotspot/default/14.0b08/*: Moved to ... + patches/hotspot/default/*. + 2009-02-12 Andrew John Hughes * acinclude.m4: diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-6791168.patch --- a/patches/hotspot/default/14.0b08/icedtea-6791168.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ ---- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -594,7 +594,7 @@ - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); - - // for c++ interpreter can rsi really be munged? -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state - __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method - __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer - -@@ -658,7 +658,7 @@ - const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); - // Always give one monitor to allow us to start interp if sync method. - // Any additional monitors need a check when moving the expression stack -- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; -+ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; - __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words - __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); - __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); -@@ -1829,7 +1829,7 @@ - Label unwind_and_forward; - - // restore state pointer. -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - __ movptr(rbx, STATE(_method)); // get method - #ifdef _LP64 -@@ -1877,14 +1877,14 @@ - - // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases - if (UseSSE < 2) { -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - __ movptr(rbx, STATE(_result._to_call._callee)); // get method just executed - __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset())); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT)); // Result stub address array index - __ jcc(Assembler::equal, do_float); - __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE)); // Result stub address array index - __ jcc(Assembler::equal, do_double); --#ifdef COMPILER2 -+#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2) - __ empty_FPU_stack(); - #endif // COMPILER2 - __ jmp(done_conv); -@@ -1928,7 +1928,7 @@ - - // Restore rsi/r13 as compiled code may not preserve it - -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); - - // restore stack to what we had when we left (in case i2c extended it) - -@@ -1942,7 +1942,7 @@ - #else - __ movptr(rcx, STATE(_thread)); // get thread - __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD); --#endif / __LP64 -+#endif // _LP64 - __ jcc(Assembler::notZero, return_with_exception); - - // get method just executed ---- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -139,7 +139,7 @@ - #ifdef CC_INTERP - - inline interpreterState frame::get_interpreterState() const { -- return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize )); -+ return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize )); - } - - inline intptr_t* frame::sender_sp() const { ---- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -6943,29 +6943,32 @@ - - Label slow_case, done; - -- // x ?<= pi/4 -- fld_d(ExternalAddress((address)&pi_4)); -- fld_s(1); // Stack: X PI/4 X -- fabs(); // Stack: |X| PI/4 X -- fcmp(tmp); -- jcc(Assembler::above, slow_case); -- -- // fastest case: -pi/4 <= x <= pi/4 -- switch(trig) { -- case 's': -- fsin(); -- break; -- case 'c': -- fcos(); -- break; -- case 't': -- ftan(); -- break; -- default: -- assert(false, "bad intrinsic"); -- break; -+ ExternalAddress pi4_adr = (address)&pi_4; -+ if (reachable(pi4_adr)) { -+ // x ?<= pi/4 -+ fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); -+ fld_s(1); // Stack: X PI/4 X -+ fabs(); // Stack: |X| PI/4 X -+ fcmp(tmp); -+ jcc(Assembler::above, slow_case); -+ -+ // fastest case: -pi/4 <= x <= pi/4 -+ switch(trig) { -+ case 's': -+ fsin(); -+ break; -+ case 'c': -+ fcos(); -+ break; -+ case 't': -+ ftan(); -+ break; -+ default: -+ assert(false, "bad intrinsic"); -+ break; -+ } -+ jmp(done); - } -- jmp(done); - - // slow case: runtime call - bind(slow_case); ---- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -2954,10 +2954,16 @@ - __ pushptr(Address(rcx, 0)); // Save return address - __ enter(); // Save old & set new rbp - __ subptr(rsp, rbx); // Prolog -+#ifdef CC_INTERP -+ __ movptr(Address(rbp, -+ -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))), -+ sender_sp); // Make it walkable -+#else // CC_INTERP - __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), - sender_sp); // Make it walkable - // This value is corrected by layout_activation_impl - __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD ); -+#endif // CC_INTERP - __ mov(sender_sp, rsp); // Pass sender_sp to next frame - __ addptr(rsi, wordSize); // Bump array pointer (sizes) - __ addptr(rcx, wordSize); // Bump array pointer (pcs) ---- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -213,7 +213,7 @@ - - inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return op1; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return op1; - else return op1 / op2; - } - -@@ -231,7 +231,7 @@ - - inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) { - /* it's possible we could catch this special case implicitly */ -- if (op1 == 0x80000000 && op2 == -1) return 0; -+ if ((juint)op1 == 0x80000000 && op2 == -1) return 0; - else return op1 % op2; - } - ---- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -30,7 +30,7 @@ - - #ifdef CC_INTERP - void InterpreterMacroAssembler::get_method(Register reg) { -- movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize))); -+ movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize))); - movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method))); - } - #endif // CC_INTERP ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2009-01-13 10:16:45.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -163,7 +163,7 @@ - #ifdef USELABELS - // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an - // initialization (which is is the initialization of the table pointer...) --#define DISPATCH(opcode) goto *dispatch_table[opcode] -+#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode] - #define CONTINUE { \ - opcode = *pc; \ - DO_UPDATE_INSTRUCTION_COUNT(opcode); \ -@@ -341,7 +341,7 @@ - */ - #undef CHECK_NULL - #define CHECK_NULL(obj_) \ -- if ((obj_) == 0) { \ -+ if ((obj_) == NULL) { \ - VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), ""); \ - } - -@@ -1362,7 +1362,7 @@ - - #define NULL_COMPARISON_NOT_OP(name) \ - CASE(_if##name): { \ -- int skip = (!(STACK_OBJECT(-1) == 0)) \ -+ int skip = (!(STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ -@@ -1372,7 +1372,7 @@ - - #define NULL_COMPARISON_OP(name) \ - CASE(_if##name): { \ -- int skip = ((STACK_OBJECT(-1) == 0)) \ -+ int skip = ((STACK_OBJECT(-1) == NULL)) \ - ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3; \ - address branch_pc = pc; \ - UPDATE_PC_AND_TOS(skip, -1); \ ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2009-01-13 10:17:05.000000000 +0000 -@@ -66,7 +66,6 @@ - friend class InterpreterGenerator; - friend class InterpreterMacroAssembler; - friend class frame; --friend class SharedRuntime; - friend class VMStructs; - - public: diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-bytecodeInterpreter.patch --- a/patches/hotspot/default/14.0b08/icedtea-bytecodeInterpreter.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp ---- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-23 08:41:04.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp 2008-10-30 15:48:48.000000000 +0000 -@@ -60,7 +60,6 @@ - }; - - class BytecodeInterpreter : StackObj { --friend class SharedRuntime; - friend class AbstractInterpreterGenerator; - friend class CppInterpreterGenerator; - friend class InterpreterGenerator; diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-core-build.patch --- a/patches/hotspot/default/14.0b08/icedtea-core-build.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 03:10:05.000000000 +0100 -@@ -97,6 +97,7 @@ - EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so - EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so -+ifndef ICEDTEA_CORE_BUILD - ifeq ($(ARCH_DATA_MODEL), 32) - EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client - EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt -@@ -111,3 +112,4 @@ - EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar - endif - endif -+endif -diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile ---- openjdk.orig/hotspot/make/Makefile 2008-05-27 22:28:29.000000000 +0100 -+++ openjdk/hotspot/make/Makefile 2008-06-22 03:10:05.000000000 +0100 -@@ -91,6 +91,15 @@ - all_debug: jvmg jvmg1 jvmgkernel docs export_debug - all_optimized: optimized optimized1 optimizedkernel docs export_optimized - -+# Core (non-compiler) targets made available with this Makefile -+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore -+ -+allcore: all_productcore all_fastdebugcore -+all_productcore: productcore docs export_product -+all_fastdebugcore: fastdebugcore docs export_fastdebug -+all_debugcore: jvmgcore docs export_debug -+all_optimizedcore: optimizedcore docs export_optimized -+ - # Do everything - world: all create_jdk - -@@ -113,6 +122,10 @@ - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT) - -+$(CORE_VM_TARGETS): -+ $(CD) $(GAMMADIR)/make; \ -+ $(MAKE) VM_TARGET=$@ generic_buildcore $(ALT_OUT) -+ - $(KERNEL_VM_TARGETS): - $(CD) $(GAMMADIR)/make; \ - $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT) -@@ -159,6 +172,12 @@ - $(MAKE_ARGS) $(VM_TARGET) - endif - -+generic_buildcore: -+ $(MKDIR) -p $(OUTPUTDIR) -+ $(CD) $(OUTPUTDIR); \ -+ $(MAKE) -f $(ABS_OS_MAKEFILE) \ -+ $(MAKE_ARGS) $(VM_TARGET) -+ - generic_buildkernel: - $(MKDIR) -p $(OUTPUTDIR) - ifeq ($(OSNAME),windows) -@@ -205,13 +224,21 @@ - XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt - DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs - C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1 -+ifdef ICEDTEA_CORE_BUILD -+C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core -+else - C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2 -+endif - KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel - C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR) - C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR) - KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR) - - # Misc files and generated files need to come from C1 or C2 area -+ifdef ICEDTEA_CORE_BUILD -+ MISC_DIR=$(C2_DIR) -+ GEN_DIR=$(C2_BASE_DIR)/generated -+else - ifeq ($(ARCH_DATA_MODEL), 32) - MISC_DIR=$(C1_DIR) - GEN_DIR=$(C1_BASE_DIR)/generated -@@ -219,6 +246,7 @@ - MISC_DIR=$(C2_DIR) - GEN_DIR=$(C2_BASE_DIR)/generated - endif -+endif - - # Bin files (windows) - ifeq ($(OSNAME),windows) -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp 2008-05-27 22:28:30.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-06-22 03:10:05.000000000 +0100 -@@ -94,8 +94,12 @@ - #ifdef TIERED - #define VMTYPE "Server" - #else -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+#if defined(COMPILER1) || defined(COMPILER2) -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") -+#else -+ #define VMTYPE "Core" -+#endif // COMPILER1 || COMPILER2 - #endif // TIERED - #endif // KERNEL - - diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-debuginfo.patch --- a/patches/hotspot/default/14.0b08/icedtea-debuginfo.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-08-20 22:58:22.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-08-20 23:01:45.000000000 +0100 -@@ -62,6 +62,10 @@ - CFLAGS += -D_REENTRANT - CFLAGS += -fcheck-new - -+# Always generate full debuginfo on Linux. It'll be in a separate -+# debuginfo package when building RPMs. -+CFLAGS += -g -+ - ARCHFLAG = $(ARCHFLAG/$(BUILDARCH)) - ARCHFLAG/i486 = -m32 -march=i586 - ARCHFLAG/amd64 = -m64 - diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-format.patch --- a/patches/hotspot/default/14.0b08/icedtea-format.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:08:09.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-02-03 18:32:59.000000000 +0000 -@@ -1361,7 +1361,7 @@ - - // Feed the cache size setting into the JDK - char buffer[1024]; -- sprintf(buffer, "java.lang.Integer.IntegerCache.high=%d", AutoBoxCacheMax); -+ sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax); - add_property(buffer); - } - if (AggressiveOpts && FLAG_IS_DEFAULT(DoEscapeAnalysis)) { -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp 2009-01-29 15:03:07.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp 2009-02-03 18:30:55.000000000 +0000 -@@ -730,7 +730,7 @@ - if (DieOnSafepointTimeout) { - char msg[1024]; - VM_Operation *op = VMThread::vm_operation(); -- sprintf(msg, "Safepoint sync time longer than %d ms detected when executing %s.", -+ sprintf(msg, "Safepoint sync time longer than " INTX_FORMAT " ms detected when executing %s.", - SafepointTimeoutDelay, - op != NULL ? op->name() : "no vm operation"); - fatal(msg); -diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp ---- openjdk.orig/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-01-29 15:03:07.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp 2009-02-03 19:32:30.000000000 +0000 -@@ -424,7 +424,7 @@ - // asserts is that error message -- often something about negative array - // indices -- is opaque. - --#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%X\n", tag); } -+#define CTASSERT(x) { int tag[1-(2*!(x))]; printf ("Tag @%p\n", tag); } - - void ObjectMonitor::ctAsserts() { - CTASSERT(offset_of (ObjectMonitor, _header) == 0); -diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp openjdk/hotspot/src/share/vm/utilities/vmError.cpp ---- openjdk.orig/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:10:58.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2009-02-03 19:29:15.000000000 +0000 -@@ -307,7 +307,7 @@ - - strncpy(buf, file, buflen); - if (len + 10 < buflen) { -- sprintf(buf + len, ":" SIZE_FORMAT, _lineno); -+ sprintf(buf + len, ":%d", _lineno); - } - st->print(" (%s)", buf); - } else { diff -r 9708fffb863d -r b858f5551ba7 patches/hotspot/default/14.0b08/icedtea-gcc-4.3.patch --- a/patches/hotspot/default/14.0b08/icedtea-gcc-4.3.patch Sat Feb 14 01:12:44 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make ---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:06:51.000000000 +0000 -+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2008-12-01 12:27:08.000000000 +0000 -@@ -98,7 +98,7 @@ - endif - - # Compiler warnings are treated as errors --WARNINGS_ARE_ERRORS = -Werror -+# WARNINGS_ARE_ERRORS = -Werror - - # Except for a few acceptable ones - # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit -diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/gcc.make openjdk/hotspot/make/solaris/makefiles/gcc.make ---- openjdk.orig/hotspot/make/solaris/makefiles/gcc.make 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/make/solaris/makefiles/gcc.make 2008-12-01 12:25:10.000000000 +0000 -@@ -109,7 +109,8 @@ - - - # Compiler warnings are treated as errors --WARNINGS_ARE_ERRORS = -Werror -+# Commented out for now because of gcc 4.3 warnings OpenJDK isn't ready for -+# WARNINGS_ARE_ERRORS = -Werror - # Enable these warnings. See 'info gcc' about details on these options - ADDITIONAL_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare - CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ADDITIONAL_WARNINGS) -diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp openjdk/hotspot/src/share/vm/adlc/filebuff.cpp ---- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.cpp 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.cpp 2008-12-01 12:25:10.000000000 +0000 -@@ -25,6 +25,8 @@ - // FILEBUFF.CPP - Routines for handling a parser file buffer - #include "adlc.hpp" - -+using namespace std; -+ - //------------------------------FileBuff--------------------------------------- - // Create a new parsing buffer - FileBuff::FileBuff( BufferedFile *fptr, ArchDesc& archDesc) : _fp(fptr), _AD(archDesc) { -diff -Nru openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp openjdk/hotspot/src/share/vm/adlc/filebuff.hpp ---- openjdk.orig/hotspot/src/share/vm/adlc/filebuff.hpp 2008-11-22 00:11:18.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.hpp 2008-12-01 12:25:10.000000000 +0000 -@@ -94,8 +94,11 @@ - FileBuffRegion *copy(); // Deep copy - FileBuffRegion *merge(FileBuffRegion*); // Merge 2 regions; delete input - --// void print(std::ostream&); --// friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); -+#if defined(__GNUC__) && __GNUC__ >= 3 -+ void print(std::ostream&); -+ friend std::ostream& operator<< (std::ostream&, FileBuffRegion&); -+#else - void print(ostream&); - friend ostream& operator<< (ostream&, FileBuffRegion&); From mark at klomp.org Sun Feb 15 12:53:56 2009 From: mark at klomp.org (Mark Wielaard) Date: Sun, 15 Feb 2009 21:53:56 +0100 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <20090212150029.GA1121@rivendell.middle-earth.co.uk> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> Message-ID: <1234731237.3562.6.camel@hermans.wildebeest.org> Hi Andrew, On Thu, 2009-02-12 at 15:00 +0000, Andrew John Hughes wrote: > This patch renames the name of the default HotSpot patch > set to be 'default' rather than the specific version. We > should of course document what that version is elsewhere. > I propose it either tracks 7 or we at least update to the latest > b14 release as there are some bug fixes (I'll do this in a > subsequent patch). Thanks for this. What hg branch/tree/forest is HS14 on? > 2009-02-12 Andrew John Hughes > > * patches/hotspot/14.0b08/icedtea-6791168.patch, > [...] > * patches/hotspot/14.0b08/icedtea-zero-build.patch: Moved... > * acinclude.m4: Make 'default' the default. > * hotspot.map: Change 14.0b08 to default. > * patches/hotspot/default/icedtea-6791168.patch, > [...] > * patches/hotspot/default/icedtea-zero-build.patch: to here. It seems you committed it wrongly since now the patches are under patches/hotspot/default/14.0b08 instead as under patches/hotspot/default as the ChangeLog says. I fixed it up as follows: 2009-02-15 Mark Wielaard * patches/hotspot/default/14.0b08/*: Moved to ... patches/hotspot/default/*. Cheers, Mark From mark at klomp.org Sun Feb 15 13:40:40 2009 From: mark at klomp.org (Mark Wielaard) Date: Sun, 15 Feb 2009 22:40:40 +0100 Subject: handling certificates In-Reply-To: <20090215183850.5636b956@workstation64.home> References: <20090215183850.5636b956@workstation64.home> Message-ID: <1234734041.3562.20.camel@hermans.wildebeest.org> Hi Andy, On Sun, 2009-02-15 at 18:38 +0100, Andreas Radke wrote: > Hello, I'm the ArchLinux OpenJDK6 maintainer and we are thinking about > how to add certificate support to our package. > > In the sources we found the removal of a Fedora patch. Checking the > Fedora specs it seems they kept doing it that way. We also looked how > Debian does it with their ca-certificates-java package. > > What the recommended way you suggest the distributions? Do it like Debian, and now Fedora also, does. We used to provide a key store that would directly read the trusted certificates that the distro had installed. But that proved not to be compatible with several programs that wanted to either write to the trusted key store themselves or tried to open it directly as JKS file based on the path they expected it to be. Arguably both usages are bugs in those programs, but it seemed better at that time to go with the traditional approach. So what Fedora and Debian now both do is have a separate sub-package that provides a traditional cacerts keystore file generated from the trusted root certificates that the distribution ships by default (and that is regenerated when the trusted root certificates are updated). Since at least the way Debian and Fedora store their default root certificates is somewhat different we don't currently ship a script that works in IcedTea itself. But if there is interest from other distros we could try to merge them. Cheers, Mark From gnu_andrew at member.fsf.org Sun Feb 15 14:53:39 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 15 Feb 2009 22:53:39 +0000 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <1234731237.3562.6.camel@hermans.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> Message-ID: <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> 2009/2/15 Mark Wielaard : > Hi Andrew, > > On Thu, 2009-02-12 at 15:00 +0000, Andrew John Hughes wrote: >> This patch renames the name of the default HotSpot patch >> set to be 'default' rather than the specific version. We >> should of course document what that version is elsewhere. >> I propose it either tracks 7 or we at least update to the latest >> b14 release as there are some bug fixes (I'll do this in a >> subsequent patch). > > Thanks for this. > What hg branch/tree/forest is HS14 on? > None now, they just bumped to HS15... So we either stick with the last HS14 changeset (around b45 of 7) or track 7. I would prefer to track 7, but obviously this is more unstable. However, there seems to be no effort to backport bug fixes to previous HS releases. >> 2009-02-12 Andrew John Hughes >> >> * patches/hotspot/14.0b08/icedtea-6791168.patch, >> [...] >> * patches/hotspot/14.0b08/icedtea-zero-build.patch: Moved... >> * acinclude.m4: Make 'default' the default. >> * hotspot.map: Change 14.0b08 to default. >> * patches/hotspot/default/icedtea-6791168.patch, >> [...] >> * patches/hotspot/default/icedtea-zero-build.patch: to here. > > It seems you committed it wrongly since now the patches are under > patches/hotspot/default/14.0b08 instead as under patches/hotspot/default > as the ChangeLog says. I fixed it up as follows: > > 2009-02-15 Mark Wielaard > > * patches/hotspot/default/14.0b08/*: Moved to ... > patches/hotspot/default/*. > Thanks for the fix. It was right to begin with and got screwed when I reapplied the patch to commit :( > Cheers, > > Mark > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Sun Feb 15 22:05:32 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 16 Feb 2009 06:05:32 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #3 from naveed at cs.columbia.edu 2009-02-16 06:05 ------- Created an attachment (id=159) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=159&action=view) azureus-3.0.4.2-18.fc10.x86_64.rpm azureus-3.0.4.2-18.fc10.x86_64.rpm from http://koji.fedoraproject.org/koji/buildinfo?buildID=69514 contains the main /usr/share/azureus/Azureus2.jar file, among others. It was too big to attach directly to this ticket, hence the link. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From Christian.Thalinger at Sun.COM Sun Feb 15 23:18:10 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Mon, 16 Feb 2009 08:18:10 +0100 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> Message-ID: <1234768690.24153.28.camel@localhost.localdomain> On Sun, 2009-02-15 at 22:53 +0000, Andrew John Hughes wrote: > None now, they just bumped to HS15... > So we either stick with the last HS14 changeset (around b45 of 7) or > track 7. I would prefer to track 7, but obviously this is more > unstable. However, there seems to be no effort to backport bug fixes > to previous HS releases. This is not the case. Important bugfixes are backported to the HS14 tree. -- Christian From mark at klomp.org Mon Feb 16 00:25:48 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 16 Feb 2009 09:25:48 +0100 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <1234768690.24153.28.camel@localhost.localdomain> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> Message-ID: <1234772748.3612.3.camel@hermans.wildebeest.org> Hi Christian, On Mon, 2009-02-16 at 08:18 +0100, Christian Thalinger wrote: > On Sun, 2009-02-15 at 22:53 +0000, Andrew John Hughes wrote: > > None now, they just bumped to HS15... > > So we either stick with the last HS14 changeset (around b45 of 7) or > > track 7. I would prefer to track 7, but obviously this is more > > unstable. However, there seems to be no effort to backport bug fixes > > to previous HS releases. > > This is not the case. Important bugfixes are backported to the HS14 > tree. Great. I was surprised if it was otherwise. I was just confused which tree to track to make sure to get the latest HS14 since we are trying to keep all branches (zero/shark/default) of IcedTea6 at a stable Hotspot release. Is this in the default jdk7/jdk7/hotspot tree or in some other one? Thanks, Mark From Christian.Thalinger at Sun.COM Mon Feb 16 00:55:54 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Mon, 16 Feb 2009 09:55:54 +0100 Subject: RFC: Change name of default HotSpot to 'default' In-Reply-To: <1234772748.3612.3.camel@hermans.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> Message-ID: <1234774554.11228.3.camel@localhost.localdomain> On Mon, 2009-02-16 at 09:25 +0100, Mark Wielaard wrote: > Great. I was surprised if it was otherwise. > I was just confused which tree to track to make sure to get the latest > HS14 since we are trying to keep all branches (zero/shark/default) of > IcedTea6 at a stable Hotspot release. Is this in the default > jdk7/jdk7/hotspot tree or in some other one? The jdk7 repository contains HS15 and therefore not a stable one. I just looked into the jdk6 repository but it only contains HS11. I don't know of any open HS14 repository off the top of my head. I will see what I can find out. -- Christian From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 01:28:28 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 16 Feb 2009 09:28:28 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #4 from Christian.Thalinger at Sun.COM 2009-02-16 09:28 ------- Some questions: 1. Is the bug reproducible? 2. Do you have a debug build of IcedTea? 3. Does it crash with the debug build too? If the answer for 2. and 3. is yes, could you try this: $ unzip Azureus2.jar com/aelitis/net/udp/uc/impl/PRUDPPacketHandlerImpl\$5.class $ zip -r test.zip com/ $ java -Xbootclasspath/p:test.zip -Xbootclasspath/a:Azureus2.jar -XX:+CompileTheWorld -XX:+PrintCompilation -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Mon Feb 16 02:57:15 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Mon, 16 Feb 2009 11:57:15 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers - debian 6b14-1~exp1 sources still uses HashMap in PluginAppletSecurityContext In-Reply-To: <20090213195451.GB13389@redhat.com> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> <49953ECD.90905@dfc.be> <20090213195451.GB13389@redhat.com> Message-ID: <4999468B.5050405@zafena.se> Doko I have attached you to this conversation since you do have the skills and power to decide and pick whats goes into the debian sourcetree: To summarise: this is a source update request for debian experimental branch of openjdk-6 to match icedtea6 1.4. Oliver May are currently experiencing a bug in debian experimental that probably have already been fixed in icedtea6 mercurial tip and icedtea 1.4 sources. The changeset http://icedtea.classpath.org/hg/icedtea6/rev/15437352b69c from 2009-01-22 by Deepak Bhole have probably already fixed this bug. It would be nice to get updated debian sources in the experimental branch to at least match the last icedtea 1.4 release from 2009-02-02; the currect debian 6b14-1~exp1 sources are from 2008-12-17. This discussion can be followed from the beginning here: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-February/004734.html Deepak Bhole: Thank you for the insight into the icedtea plugin and for writing it! The binarys was from debian 6b14-1~exp1 and I have verified that the debian 6b14-1~exp1 sources still uses HashMap in PluginAppletSecurityContext. The configuration used by Oliver May was Icedtea6-plugin: Version: 6b14-1~exp1 Openjdk6-jre: Version: 6b14-1~exp1 Iceweasel: 3.06-1 Linux debian-gta02 2.6.24-20081103.git7172ec57 #1 PREEMPT Wed Dec 17 18:06:43 UTC 2008 armv4tl GNU/Linux Oliver May are actually running Iceweasel with the icedtea6 plugin on his phone! Awesome: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/8dc2438b/attachment-0001.jpg - picture of Icedtea6 plugin running on Neo freerunner, the freerunner definately looks a lot cooler now with the plugin running on it! http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-February/004743.html - output from about:plugins in iceweasel and java --version Oliver May: The bug you have experienced are belived to have been fixed in the developement mercurial sourcetree http://icedtea.classpath.org/hg/icedtea6/ and the last stable release of icedtea6 v1.4 from 2009-02-02 http://langel.wordpress.com/2009/02/02/icedtea6-14-released/ . I dont know of any prebuilt binarys for armel that contains the latest icedtea6 1.4 release so you have to compile the current icedtea6 sourcecode for yourself and report back if the bug still exists. If the debian sources gets updated then we might have a new binary to test within some weeks from the debian binary repositorys. Meanwhile I would recommend you to try cross-compile the latest icedtea6 sources using Jalimo and openembedded: Check out Robert Schusters blog reguarding how to cross compile icedtea6: http://rschuster.blogs.evolvis.org/ To all Debian developers: Congratulations Debian 5.0 lenny are finally released and are shipped with icedtea6 support! http://www.debian.org/News/2009/20090214 Cheers and have a great day! Xerxes Deepak Bhole skrev: > * Oliver May [2009-02-13 04:35]: > >> Seems my message got hold back by the mailing list because the large >> attachment, I uploaded the file to the website too: >> http://geomajas.org/users/oliverm/freerunner-gpsApplet/applet-test.tgz >> >> Hi Deepak! >> >> >> >> >> What website do you see this error on? >> >> >> >> As for PluginDebug.debug() ... its messages go to STDERR. However, >> >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in >> >> that case, all OUT/ERR is redirected to /tmp/java.stdout and >> >> /tmp/java.stderr >> >> >> >> Cheers, >> >> Deepak >> >> >> > >> > Whoops.. should have checked the ML first. >> > >> > Okay, can you start the browser with the env variable >> > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log >> > and /tmp/java.std* files? >> > >> > Deepak >> > >> >> I did some more testing, and put the applet I am using online with some >> simple javascript <> java interaction, including the source files. >> >> http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html >> >> > > What version of IcedTea are you trying this with again? I think I have > seen this sort of error once before, but I was never able to reproduce > it. After that though, I changed one of the structures in > PluginAppletSecurityContext (where the NPE is happening) to be a > Hashtable instead of HashMap. So in theory, any NPE should get thrown > when the table is updated, rather than when the value is read. From the > logs, it appears that the latter is the case. > > Can you try running it with IcedTea 1.4 or later and attach those logs > please? > > Thanks, > Deepak > > >> The applet expects a gpsd running on localhost, but it wont crash >> without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 >> for some real data (real, but static, mainframe.cx is not moving :)). >> >> Using this site I just did a test with debugging output: >> >> debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true >> debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG >> debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& /tmp/iceweasel.err >> >> so i have also gathered the iceweasel process out and err streams. >> >> What I did is: >> +Started iceweasel and opened http://geomajas.org.... >> +Waited until the applet was completely loaded (cpu idle) >> +Clicked on "Start gps" and waited like 10 minutes until cpu idle >> +Clicked on "Get gps data", this returned null in the textbox after half >> a second. >> +Clicked on "Stop gps" >> +Clicked on "Get gps data" again, wich actet the same way as before >> +Closed iceweasel >> >> Btw, there seem to be some real performance issues too, the first call >> from javascript to java takes ages, esp. with debugging turned on. But >> that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). >> >> Greetings! >> >> -- >> Oliver May >> >> DFC Software Engineering >> GeoMajas partner www.geomajas.org >> >> Brugsesteenweg 587 >> B-9030 Gent >> Belgium >> T: +32 9 236 61 96 >> F: +32 9 236 54 12 >> E: oliver.may at dfc.be >> W: www.dfc.be >> >> From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 11:45:13 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 16 Feb 2009 19:45:13 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #5 from naveed at cs.columbia.edu 2009-02-16 19:45 ------- (In reply to comment #4) > Some questions: > > 1. Is the bug reproducible? Yes, always reproducible on my machine. I first encountered it when resuming from suspend. This led me to the apparent root cause: NetworkManager in it's normal operation will disable the network at suspend time and reenable it at resume. Testing with just NetworkManager causes the crash every time. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 13:44:49 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 16 Feb 2009 21:44:49 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #6 from naveed at cs.columbia.edu 2009-02-16 21:44 ------- (In reply to comment #4) > 2. Do you have a debug build of IcedTea? No, and I'm not sure where to get one. Here's what I see as of now: $ java -Xbootclasspath/p:test.zip -Xbootclasspath/a:Azureus2.jar -XX:+CompileTheWorld -XX:+PrintCompilation Unrecognized VM option '+CompileTheWorld' Could not create the Java virtual machine. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 14:15:43 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 16 Feb 2009 22:15:43 +0000 Subject: [Bug 271] JavaFX sample no longer runs with javaws, runs fine with java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=271 ------- Comment #6 from naveed at cs.columbia.edu 2009-02-16 22:15 ------- (In reply to comment #5) > But I am not sure that is the full solution for this bug report. Please do > report any additional issues seen after this patch. SwirlingSquares is behaving much better with the latest IcedTea and JavaFX 1.1 in that it works with both javaws and java now. However, other examples are still broken under javaws. One example is BrickBreaker: it is not functioning correctly when launched from IcedTea Web Start probably because of the various denied permissions. $ java -version java version "1.6.0_0" IcedTea6 1.4 (fedora-9.b14.fc10-x86_64) Runtime Environment (build 1.6.0_0-b14) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) $ javaws -verbose http://javafx.com/samples/BrickBreaker/webstart/BrickBreaker.jnlp . . . Requesting permission: (java.lang.RuntimePermission getClassLoader) Denying permission: (java.lang.RuntimePermission getClassLoader) Image background.png not found Image bat/left.png not found Image bat/center.png not found Image bat/right.png not found . . . Requesting permission: (java.util.PropertyPermission com.sun.scenario.animation.nogaps read) Denying permission: (java.util.PropertyPermission com.sun.scenario.animation.nogaps read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.animation.fullspeed read) Denying permission: (java.util.PropertyPermission com.sun.scenario.animation.fullspeed read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.animation.adaptivepulse read) Denying permission: (java.util.PropertyPermission com.sun.scenario.animation.adaptivepulse read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.animation.pulse read) Denying permission: (java.util.PropertyPermission com.sun.scenario.animation.pulse read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.animation.hires read) Denying permission: (java.util.PropertyPermission com.sun.scenario.animation.hires read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.scenegraph.skippaint read) Denying permission: (java.util.PropertyPermission com.sun.scenario.scenegraph.skippaint read) Requesting permission: (java.util.PropertyPermission com.sun.scenario.scenegraph.debugbounds read) Denying permission: (java.util.PropertyPermission com.sun.scenario.scenegraph.debugbounds read) . . . [brings up window with no graphics, has text and responds to input alright] $ java -cp /tmp/cache/http/dl.javafx.com/javafx-rt__V1.1.0.jar:/tmp/cache/http/javafx.com/samples/BrickBreaker/webstart/BrickBreaker.jar brickbreaker.Main [game comes up, looks and plays fine] -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Mon Feb 16 15:55:38 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Tue, 17 Feb 2009 00:55:38 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers - this bug is reproducable with icedtea 1.4 on F10 i686 out of the box! In-Reply-To: <20090213195451.GB13389@redhat.com> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> <49953ECD.90905@dfc.be> <20090213195451.GB13389@redhat.com> Message-ID: <4999FCFA.30508@zafena.se> Of pure luck i found a way to reproduce this nullpointer bug on my home machine running a newly installed F10 with icedtea 1.4 on my i686 box. [xranby at pusspuss Skrivbord]$ java -version java version "1.6.0_0" IcedTea6 1.4 (fedora-9.b14.fc10-i386) Runtime Environment (build 1.6.0_0-b14) OpenJDK Server VM (build 14.0-b08, mixed mode) the plugin used in firefox 3.0.6 are: Filename: IcedTeaPlugin.so The IcedTea Java Web Browser Plugin 1.4 (fedora-9.b14.fc10-i386) executes Java applets. to reproduce: 1. make sure all certificates are removed from netx by running javaws -viewer and remove any trusted certificates for the test-applet 2. load firefox and load a page with a signed applet like : http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html 3. wait more than 10 secods while the warning-security window is up (from netx) 4. now click on run applet without checking the checkbox that you trusts the provider. 5. push the get gps data and you will recive the null message in the message box if you reload the browserwindow and klick on run applet within less than10seconds on the warning-security window then the get gps data button work. you can the try reload the browser again and wait more than 10 sec during the security-window and then see the applet fail again. on my machine firefox consumes about 40% cpu time while the plugin waits during the security-window, when the applet decides to stop waiting and applet initialization fails cpu usage goes down to 0. basically what happens are that the applet initialization fails after about 10 seconds when waiting for the user to decide if it trusts a signed applet if the user have not responded within 10 seconds. So basically this bus manifested itself more often on ARM since it took too long for the user push the run button on ARM machines. i have compare the java.stderr logs from a failed and successful run from the same machine with the same build of icedtea 1.4 and it is quite clear that the applet initialization fails when the plugin has to wait too long for the security warning window to close. *snip* --- firefox f10 bug/java.stderr 2009-02-16 23:46:11.000000000 +0100 +++ firefox f10 without bug/java.stderr 2009-02-17 00:02:12.000000000 +0100 @@ -18,15 +18,15 @@ REQUEST HANDLE NOT SET: 0. BYPASSING Consumption completed by consumer thread 0 Waiting for data... - PIPE: appletviewer read: instance 1 handle 35654084 -Consumer received message instance 1 handle 35654084 -Message instance 1 handle 35654084 added to queue. Looking for free worker... + PIPE: appletviewer read: instance 1 handle 35652530 +Consumer received message instance 1 handle 35652530 +Message instance 1 handle 35652530 added to queue. Looking for free worker... Found free worker with id 0 Consumer thread 0 woken... -Consumer thread 0 consuming instance 1 handle 35654084 -Breakdown -- type: instance identifier: 1 reference: -1 src: null privileges: null rest: "handle 35654084" -PAV handling: handle 35654084 -REQUEST HANDLE: 35654084 +Consumer thread 0 consuming instance 1 handle 35652530 +Breakdown -- type: instance identifier: 1 reference: -1 src: null privileges: null rest: "handle 35652530" +PAV handling: handle 35652530 +REQUEST HANDLE: 35652530 REQUEST HANDLE, PARSING Thread[Thread-1,5,main] PUT id = 'communicatorApplet' PUT code = 'org.geomajas.applet.FreerunnerCommunicator.class' @@ -98,51 +98,6 @@ Waiting for applet to initialize... Waiting for applet to initialize... Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... -Waiting for applet to initialize... - PIPE: appletviewer wrote: instance 1 reference -1 fatalError Initialization failed -REQUEST HANDLE, DONE PARSING Thread[Thread-1,5,main] -Consumption completed by consumer thread 0 WRITING 2: instance 1 status Appleten ?r inl?st. PIPE: appletviewer wrote: instance 1 status Appleten ?r inl?st. WRITING 2 DONE @@ -152,6 +107,14 @@ WRITING 2: instance 1 status Appleten har startat. PIPE: appletviewer wrote: instance 1 status Appleten har startat. WRITING 2 DONE +Waiting for applet to initialize... +Applet initialized +Associating net.sourceforge.jnlp.runtime.JNLPClassLoader at 1c8f59c with http://geomajas.org +WRITING 2: instance 1 initialized + PIPE: appletviewer wrote: instance 1 initialized +WRITING 2 DONE +REQUEST HANDLE, DONE PARSING Thread[Thread-1,5,main] +Consumption completed by consumer thread 0 *snap* Cheers and have a great day! Xerxes Deepak Bhole skrev: > * Oliver May [2009-02-13 04:35]: > >> Seems my message got hold back by the mailing list because the large >> attachment, I uploaded the file to the website too: >> http://geomajas.org/users/oliverm/freerunner-gpsApplet/applet-test.tgz >> >> Hi Deepak! >> >> >> >> >> What website do you see this error on? >> >> >> >> As for PluginDebug.debug() ... its messages go to STDERR. However, >> >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in >> >> that case, all OUT/ERR is redirected to /tmp/java.stdout and >> >> /tmp/java.stderr >> >> >> >> Cheers, >> >> Deepak >> >> >> > >> > Whoops.. should have checked the ML first. >> > >> > Okay, can you start the browser with the env variable >> > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log >> > and /tmp/java.std* files? >> > >> > Deepak >> > >> >> I did some more testing, and put the applet I am using online with some >> simple javascript <> java interaction, including the source files. >> >> http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html >> >> > > What version of IcedTea are you trying this with again? I think I have > seen this sort of error once before, but I was never able to reproduce > it. After that though, I changed one of the structures in > PluginAppletSecurityContext (where the NPE is happening) to be a > Hashtable instead of HashMap. So in theory, any NPE should get thrown > when the table is updated, rather than when the value is read. From the > logs, it appears that the latter is the case. > > Can you try running it with IcedTea 1.4 or later and attach those logs > please? > > Thanks, > Deepak > > >> The applet expects a gpsd running on localhost, but it wont crash >> without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 >> for some real data (real, but static, mainframe.cx is not moving :)). >> >> Using this site I just did a test with debugging output: >> >> debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true >> debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG >> debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& /tmp/iceweasel.err >> >> so i have also gathered the iceweasel process out and err streams. >> >> What I did is: >> +Started iceweasel and opened http://geomajas.org.... >> +Waited until the applet was completely loaded (cpu idle) >> +Clicked on "Start gps" and waited like 10 minutes until cpu idle >> +Clicked on "Get gps data", this returned null in the textbox after half >> a second. >> +Clicked on "Stop gps" >> +Clicked on "Get gps data" again, wich actet the same way as before >> +Closed iceweasel >> >> Btw, there seem to be some real performance issues too, the first call >> from javascript to java takes ages, esp. with debugging turned on. But >> that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). >> >> Greetings! >> >> -- >> Oliver May >> >> DFC Software Engineering >> GeoMajas partner www.geomajas.org >> >> Brugsesteenweg 587 >> B-9030 Gent >> Belgium >> T: +32 9 236 61 96 >> F: +32 9 236 54 12 >> E: oliver.may at dfc.be >> W: www.dfc.be >> >> From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 20:58:03 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 04:58:03 +0000 Subject: [Bug 294] New: JavaWS sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 Summary: JavaWS sample not starting as applet due to ZipException, runs fine with javaws or java Product: IcedTea Version: unspecified Platform: PC URL: http://javafx.com/samples/WhiteOutGame OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: naveed at cs.columbia.edu The JavaFX 1.1 WhiteOut sample fails to start on its web page with "applet not initialized" and the java.util.zip.ZipException stack trace below. The same sample runs fine both via the Web Start method and by direct invocation via java. Why is the applet method broken? [From .xsession-errors when visting http://javafx.com/samples/WhiteOutGame in Firefox 3.0.6] java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:131) at java.util.jar.JarFile.(JarFile.java:150) at java.util.jar.JarFile.(JarFile.java:101) at net.sourceforge.jnlp.tools.JarSigner.verifyJar(JarSigner.java:245) at net.sourceforge.jnlp.tools.JarSigner.verifyJars(JarSigner.java:220) at net.sourceforge.jnlp.runtime.JNLPClassLoader.verifyJars(JNLPClassLoader.java:660) at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:330) at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:161) at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:218) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:445) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:418) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:597) java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:131) at java.util.jar.JarFile.(JarFile.java:150) at java.util.jar.JarFile.(JarFile.java:101) at net.sourceforge.jnlp.tools.JarSigner.verifyJar(JarSigner.java:245) at net.sourceforge.jnlp.tools.JarSigner.verifyJars(JarSigner.java:220) at net.sourceforge.jnlp.runtime.JNLPClassLoader.verifyJars(JNLPClassLoader.java:660) at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:330) at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:161) at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:218) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:445) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:418) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:597) net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:472) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:418) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:597) Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: A fatal error occurred while trying to verify jars. at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:336) at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:161) at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:218) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:445) ... 2 more Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: A fatal error occurred while trying to verify jars. at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:336) at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:161) at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:218) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:445) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:418) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:597) java.lang.NullPointerException at net.sourceforge.jnlp.NetxPanel.runLoader(NetxPanel.java:97) at sun.applet.AppletPanel.run(AppletPanel.java:380) at java.lang.Thread.run(Thread.java:636) java.lang.NullPointerException at sun.applet.AppletPanel.run(AppletPanel.java:430) at java.lang.Thread.run(Thread.java:636) $ java -version java version "1.6.0_0" IcedTea6 1.4 (fedora-9.b14.fc10-x86_64) Runtime Environment (build 1.6.0_0-b14) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) $ javaws http://javafx.com/samples/WhiteOutGame/webstart/WhiteOutGame.jnlp [game starts and works] $ java -cp /tmp/cache/http/dl.javafx.com/javafx-rt__V1.1.0.jar:/tmp/cache/http/javafx.com/samples/WhiteOutGame/webstart/WhiteOutGame.jar whiteout.Main [game starts and works] -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Feb 16 21:00:29 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 05:00:29 +0000 Subject: [Bug 294] JavaFX sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 naveed at cs.columbia.edu changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|JavaWS sample not starting |JavaFX sample not starting |as applet due to |as applet due to |ZipException, runs fine with|ZipException, runs fine with |javaws or java |javaws or java -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mvfranz at gmail.com Mon Feb 16 21:23:44 2009 From: mvfranz at gmail.com (Michael Franz) Date: Tue, 17 Feb 2009 00:23:44 -0500 Subject: Ant Build Script For JAX-WS With Incorrect tools.jar location Message-ID: Hi, I have noticed that the patch file patches/ecj/icedtea.patch patches the compile arg line for the JAX-WS build. It seems that this line (the original as well as the patch) put the tools.jar in the incorrect location. In all other build files the tools.jar file is in JAVA_HOME/lib/tools.jar . For this one file it is put in JAVA_HOME/jre/lib.tools.jar . For some reason this does not matter for linux, but does when compiling the BSD port using IcedTea7 on OS X. The following line should be changed from + to + I guess this should also be fixed in OpenJDK. What is the proper channel to get this fixed at Sun? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090217/93a6f209/attachment.html From mark at klomp.org Tue Feb 17 01:15:05 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 17 Feb 2009 10:15:05 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234774554.11228.3.camel@localhost.localdomain> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> Message-ID: <1234862105.4062.8.camel@fedora.wildebeest.org> Hi Christian (CCed hotspot-dev for advice) On Mon, 2009-02-16 at 09:55 +0100, Christian Thalinger wrote: > On Mon, 2009-02-16 at 09:25 +0100, Mark Wielaard wrote: > > Great. I was surprised if it was otherwise. > > I was just confused which tree to track to make sure to get the latest > > HS14 since we are trying to keep all branches (zero/shark/default) of > > IcedTea6 at a stable Hotspot release. Is this in the default > > jdk7/jdk7/hotspot tree or in some other one? > > The jdk7 repository contains HS15 and therefore not a stable one. I > just looked into the jdk6 repository but it only contains HS11. I don't > know of any open HS14 repository off the top of my head. So it would be good to have an open repo that hosts the HS14 stable build so that people interested in a stable, but modern, hotspot could base their work on that. Since IcedTea6 is trying to standardize on HS14 for the default hotspot and the one that Zero and Shark are based on I could create a icedtea/hotspot repo branched from the latest HS14 code in the jdk7/jdk7/hotspot repo. Would that be interesting to others? How do we coordinate backporting fixes to it? Any other suggestions for hosting an open hotspot HS14 repo (maybe as subtree of one of the other 6 hotspot repos under jdk7/hostspot-* (I admit to not know what they are all for currently). Thanks, Mark From bugzilla-daemon at icedtea.classpath.org Tue Feb 17 02:41:04 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 10:41:04 +0000 Subject: [Bug 293] JVM fatal error in VM code (HS 14) after NetworkManager disable / reenable cycle Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=293 ------- Comment #7 from Christian.Thalinger at Sun.COM 2009-02-17 10:41 ------- (In reply to comment #6) > No, and I'm not sure where to get one. Here's what I see as of now: > > $ java -Xbootclasspath/p:test.zip -Xbootclasspath/a:Azureus2.jar > -XX:+CompileTheWorld -XX:+PrintCompilation > Unrecognized VM option '+CompileTheWorld' > Could not create the Java virtual machine. Exactly. That switch only exists in debug builds. It would be nice to reproduce the bug like this, but I'm not sure it works anyway. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From gbenson at redhat.com Tue Feb 17 02:44:37 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 17 Feb 2009 10:44:37 +0000 Subject: Zero identification Message-ID: <20090217104436.GA3246@redhat.com> Hi all, Classic HotSpot identifies itself like this: OpenJDK Client VM (build 14.0-b08, mixed mode) or this: OpenJDK Server VM (build 14.0-b08, mixed mode) Shark identifies itself like this: OpenJDK Shark VM (build 14.0-b08, mixed mode) The odd one out is Zero, which identifies itself like this: OpenJDK Core VM (build 14.0-b08, interpreted mode) Would anyone object if I changed the "Core" to "Zero"? Cheers, Gary -- http://gbenson.net/ From neugens at limasoftware.net Tue Feb 17 02:54:18 2009 From: neugens at limasoftware.net (Mario Torre) Date: Tue, 17 Feb 2009 11:54:18 +0100 Subject: Zero identification In-Reply-To: <20090217104436.GA3246@redhat.com> References: <20090217104436.GA3246@redhat.com> Message-ID: <1234868058.3573.1.camel@galactica> Il giorno mar, 17/02/2009 alle 10.44 +0000, Gary Benson ha scritto: > Hi all, > > Classic HotSpot identifies itself like this: > > OpenJDK Client VM (build 14.0-b08, mixed mode) > > or this: > > OpenJDK Server VM (build 14.0-b08, mixed mode) > > Shark identifies itself like this: > > OpenJDK Shark VM (build 14.0-b08, mixed mode) > > The odd one out is Zero, which identifies itself like this: > > OpenJDK Core VM (build 14.0-b08, interpreted mode) > > Would anyone object if I changed the "Core" to "Zero"? > > Cheers, > Gary Hi Gary, I guess it makes sense, because "core" is a bit confusing in this context. Cheers, Mario From xerxes at zafena.se Tue Feb 17 07:17:43 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Tue, 17 Feb 2009 16:17:43 +0100 Subject: Patch proposal to fix PluginAppletViewer signed applets initialization failure bug due to timeouts from user interaction. Message-ID: <499AD517.2020404@zafena.se> This is a proposal for a patch to icedtea6 PluginAppletViewer to make the applet initialization work in cases when a user has to manually grant a signed application to run, this can take indefinately long times. This initialization timeout bug also break initialization on platforms with slow startuptimes like ARM using Zero Hotspot. The current implementation of the PluginAppletViewer only gives the NetxPanel 10 seconds to initialize the applet. This initialization fails ofcourse when Netx displays the security warning popup asking for user action unless the user responds within 10 seconds. One way i could think of improving this patch further is to only allow the plugin to wait for the applet during APPLET_LOADING state of the AppletPanel. A way to archive this further improvement is to make the PluginAppletViewer an AppletListener and register it to listen for the APPLET_LOADING and APPLET_LOADING_COMPLETED events. Suggestions are welcome. Cheers and have a great day! Xerxes -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: PluginAppletViewer.WaitForPanelToInitialize.patch Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090217/1a6817be/PluginAppletViewer.WaitForPanelToInitialize.patch From gbenson at redhat.com Tue Feb 17 07:55:22 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 17 Feb 2009 15:55:22 +0000 Subject: changeset in /hg/icedtea6: 2009-02-17 Gary Benson changeset 0a28d5bcf18e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0a28d5bcf18e description: 2009-02-17 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Updated copyright year. * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: Likewise. * ports/hotspot/src/share/vm/includeDB_shark * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkEntry.cpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkEntry.hpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Likewise. * ports/hotspot/src/share/vm/shark/shark_globals.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: Deleted contents (was all comment). diffstat: 15 files changed, 34 insertions(+), 38 deletions(-) ChangeLog | 21 ++++++++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 25 ---------- ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 2 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 2 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 2 ports/hotspot/src/share/vm/includeDB_shark | 2 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 2 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 2 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 2 ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp | 2 ports/hotspot/src/share/vm/shark/sharkEntry.cpp | 2 ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 2 ports/hotspot/src/share/vm/shark/shark_globals.hpp | 2 diffs (200 lines): diff -r b858f5551ba7 -r 0a28d5bcf18e ChangeLog --- a/ChangeLog Sun Feb 15 21:53:41 2009 +0100 +++ b/ChangeLog Tue Feb 17 15:55:13 2009 +0000 @@ -1,3 +1,24 @@ 2009-02-15 Mark Wielaard + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Updated copyright year. + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: + Likewise. + * ports/hotspot/src/share/vm/includeDB_shark + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkEntry.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/shark_globals.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: + Deleted contents (was all comment). + 2009-02-15 Mark Wielaard * patches/hotspot/default/14.0b08/*: Moved to ... diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,25 +0,0 @@ -/* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - * - */ - -// No zero specific bytecodes diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007, 2008 Red Hat, Inc. + * Copyright 2007, 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/includeDB_shark --- a/ports/hotspot/src/share/vm/includeDB_shark Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/includeDB_shark Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ // // Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. -// Copyright 2008 Red Hat, Inc. +// Copyright 2008, 2009 Red Hat, Inc. // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // // This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/llvmHeaders.hpp --- a/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/llvmHeaders.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkEntry.cpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.cpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.cpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/sharkFunction.hpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r b858f5551ba7 -r 0a28d5bcf18e ports/hotspot/src/share/vm/shark/shark_globals.hpp --- a/ports/hotspot/src/share/vm/shark/shark_globals.hpp Sun Feb 15 21:53:41 2009 +0100 +++ b/ports/hotspot/src/share/vm/shark/shark_globals.hpp Tue Feb 17 15:55:13 2009 +0000 @@ -1,6 +1,6 @@ /* * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it From volker.simonis at gmail.com Tue Feb 17 02:50:10 2009 From: volker.simonis at gmail.com (Volker Simonis) Date: Tue, 17 Feb 2009 11:50:10 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234862105.4062.8.camel@fedora.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> Message-ID: As far as I understand the procedure, the HS14 has been branched at some time in the past and is now "stabilized" in an Sun-internal repository in order to become the next, officially released "Express" VM for JDK6. A good starting point for what you want (i.e. an open, stable HS14 repository) would be to know the exact point at which the HS14 was branched for the next JDK 6 express release. I'm not sure this was right before the HS number was bumped to 15. If it would then also be possible to track the fixes for Sun's "stabilization" branch, you could easily maintain an open, stabilized HS14 branch yourself. By the way, the bugs which are identified for Sun's "stabilization" branch are already visible in the bug database today, although they are not easy to find. The problem is, that some of the bugs are reported and fixed against the JDK 7 head revisions and only back ported to the "stabilization" branch if they are regarded critical. Consider for example bug 6661247. It was fixed in hs12(b02) which was the development code line at that time. But there's another bug ID for the same bug (2160622) and it states the bug was also fixed in hs11(b12) which was a "stabilization" branch at that time. Unfortunately there's no link from 6661247 to 2160622. A nicer example id probably 6599425. It lists all the parallel bug IDs and releases where the bug has been fixed ( hs12(b02), hs10(b22) (Bug ID:2158279) , hs11(b12) (Bug ID:2158280) , 6-open(b11) (Bug ID:2164154)). I think this is exactly the kind of information, that is required - and it should be browsable and searchable release-wise (i.e. by the HS release number). Regards, Volker On 2/17/09, Mark Wielaard wrote: > Hi Christian (CCed hotspot-dev for advice) > > On Mon, 2009-02-16 at 09:55 +0100, Christian Thalinger wrote: > > On Mon, 2009-02-16 at 09:25 +0100, Mark Wielaard wrote: > > > Great. I was surprised if it was otherwise. > > > I was just confused which tree to track to make sure to get the latest > > > HS14 since we are trying to keep all branches (zero/shark/default) of > > > IcedTea6 at a stable Hotspot release. Is this in the default > > > jdk7/jdk7/hotspot tree or in some other one? > > > > The jdk7 repository contains HS15 and therefore not a stable one. I > > just looked into the jdk6 repository but it only contains HS11. I don't > > know of any open HS14 repository off the top of my head. > > So it would be good to have an open repo that hosts the HS14 stable > build so that people interested in a stable, but modern, hotspot could > base their work on that. Since IcedTea6 is trying to standardize on HS14 > for the default hotspot and the one that Zero and Shark are based on I > could create a icedtea/hotspot repo branched from the latest HS14 code > in the jdk7/jdk7/hotspot repo. Would that be interesting to others? How > do we coordinate backporting fixes to it? Any other suggestions for > hosting an open hotspot HS14 repo (maybe as subtree of one of the other > 6 hotspot repos under jdk7/hostspot-* (I admit to not know what they are > all for currently). > > Thanks, > > > Mark > > From bugzilla-daemon at icedtea.classpath.org Tue Feb 17 09:38:08 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 17:38:08 +0000 Subject: [Bug 294] JavaFX sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 ------- Comment #1 from naveed at cs.columbia.edu 2009-02-17 17:38 ------- Created an attachment (id=160) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=160&action=view) java.stderr Trying https://bugzilla.redhat.com/show_bug.cgi?id=480487#c6 for insight. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Feb 17 09:42:01 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 17:42:01 +0000 Subject: [Bug 294] JavaFX sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 ------- Comment #2 from naveed at cs.columbia.edu 2009-02-17 17:42 ------- Created an attachment (id=161) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=161&action=view) firefox.out Trying https://bugzilla.redhat.com/show_bug.cgi?id=480487#c6 for insight. Had to kill -9 firefox, it would not exit cleanly after this test. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Feb 17 09:45:13 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 17 Feb 2009 17:45:13 +0000 Subject: [Bug 294] JavaFX sample not starting as applet due to ZipException, runs fine with javaws or java Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=294 ------- Comment #3 from naveed at cs.columbia.edu 2009-02-17 17:45 ------- Created an attachment (id=162) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=162&action=view) find.out As requested in https://bugzilla.redhat.com/show_bug.cgi?id=480487#c10 - the output of 'find .icedteaplugin/cache -type f | while read line; do echo; ls -l "$line"; file "$line"; done' -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From Joe.Darcy at Sun.COM Tue Feb 17 18:29:17 2009 From: Joe.Darcy at Sun.COM (Joe Darcy) Date: Tue, 17 Feb 2009 18:29:17 -0800 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234862105.4062.8.camel@fedora.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> Message-ID: <499B727D.6060901@sun.com> On 02/17/09 01:15 AM, Mark Wielaard wrote: > Hi Christian (CCed hotspot-dev for advice) > > On Mon, 2009-02-16 at 09:55 +0100, Christian Thalinger wrote: > >> On Mon, 2009-02-16 at 09:25 +0100, Mark Wielaard wrote: >> >>> Great. I was surprised if it was otherwise. >>> I was just confused which tree to track to make sure to get the latest >>> HS14 since we are trying to keep all branches (zero/shark/default) of >>> IcedTea6 at a stable Hotspot release. Is this in the default >>> jdk7/jdk7/hotspot tree or in some other one? >>> >> The jdk7 repository contains HS15 and therefore not a stable one. I >> just looked into the jdk6 repository but it only contains HS11. I don't >> know of any open HS14 repository off the top of my head. >> > > So it would be good to have an open repo that hosts the HS14 stable > build so that people interested in a stable, but modern, hotspot could > base their work on that. Since IcedTea6 is trying to standardize on HS14 > for the default hotspot and the one that Zero and Shark are based on I > could create a icedtea/hotspot repo branched from the latest HS14 code > in the jdk7/jdk7/hotspot repo. Would that be interesting to others? How > do we coordinate backporting fixes to it? Any other suggestions for > hosting an open hotspot HS14 repo (maybe as subtree of one of the other > 6 hotspot repos under jdk7/hostspot-* (I admit to not know what they are > all for currently). > > Hello. I have been talking with the HotSpot team inside Sun about the logistics needed to support a public HotSpot Mercurial repository usable by both OpenJDK 6 and the 6 update release, which would mean the stabilized HotSpot 14 at this point. We should have something figured out relatively soon; I'll post when we do. -Joe -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090217/1cc600b5/attachment.html From mark at klomp.org Wed Feb 18 01:47:42 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 18 Feb 2009 10:47:42 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> Message-ID: <1234950462.2322.9.camel@fedora.wildebeest.org> Hi Volker, Thanks for the informative reply. On Tue, 2009-02-17 at 11:50 +0100, Volker Simonis wrote: > As far as I understand the procedure, the HS14 has been branched at > some time in the past and is now "stabilized" in an Sun-internal > repository in order to become the next, officially released "Express" > VM for JDK6. That would be good, then we are all pushing at the same code base for stabilization. What does "Express" stand for? > A good starting point for what you want (i.e. an open, stable HS14 > repository) would be to know the exact point at which the HS14 was > branched for the next JDK 6 express release. I'm not sure this was > right before the HS number was bumped to 15. Yes, my plan was to branch at the commit just before the HS15 tag in jdk7/jdk7/hotspot appeared. But it would be good to get confirmation that is the right branch point. > If it would then also be possible to track the fixes for Sun's > "stabilization" branch, you could easily maintain an open, stabilized > HS14 branch yourself. By the way, the bugs which are identified for > Sun's "stabilization" branch are already visible in the bug database > today, although they are not easy to find. The problem is, that some > of the bugs are reported and fixed against the JDK 7 head revisions > and only back ported to the "stabilization" branch if they are > regarded critical. We already backported fixes from the hotspot trees for common crashers in important applications before the HS14 adoption, including test cases. Which reminds me to add some of those test cases back that were recently lost for old crasher bugs. > Consider for example bug 6661247. It was fixed in hs12(b02) which was > the development code line at that time. But there's another bug ID for > the same bug (2160622) and it states the bug was also fixed in > hs11(b12) which was a "stabilization" branch at that time. > Unfortunately there's no link from 6661247 to 2160622. A nicer example > id probably 6599425. It lists all the parallel bug IDs and releases > where the bug has been fixed ( hs12(b02), hs10(b22) (Bug ID:2158279) , > hs11(b12) (Bug ID:2158280) , 6-open(b11) (Bug ID:2164154)). I think > this is exactly the kind of information, that is required - and it > should be browsable and searchable release-wise (i.e. by the HS > release number). Thanks, that is interesting. We could create a bug screen scrapper that tries to collect all bugs that have relevant tags. But it would be better to have a more open publicly visible way of coordinating fixes around shared trees. I found bugs.sun.com not ideal for coordinating bugs and patches, if only because I haven't found any way to search for specific tags like hs14. I might be missing some advanced search page, but it does look like you can only search for a general keyword/bug-id, not on any specifics (except for the component and state). In general watching the commit lists has been more productive, but often misses any discussion about the bug being fixed. Cheers, Mark From mark at klomp.org Wed Feb 18 01:58:27 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 18 Feb 2009 10:58:27 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <499B727D.6060901@sun.com> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <499B727D.6060901@sun.com> Message-ID: <1234951107.2322.20.camel@fedora.wildebeest.org> Hi Joe, On Tue, 2009-02-17 at 18:29 -0800, Joe Darcy wrote: > I have been talking with the HotSpot team inside Sun about the > logistics needed to support a public HotSpot Mercurial repository > usable by both OpenJDK 6 and the 6 update release, which would mean > the stabilized HotSpot 14 at this point. > > We should have something figured out relatively soon; I'll post when > we do. That would be ideal, then we will all be pushing against the same code base, making it rock solid! Let me know if you need any help with hosting it anywhere or how to facilitate pushing to it. Cheers, Mark From Christian.Thalinger at Sun.COM Wed Feb 18 02:09:43 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Wed, 18 Feb 2009 11:09:43 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234950462.2322.9.camel@fedora.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <1234950462.2322.9.camel@fedora.wildebeest.org> Message-ID: <1234951783.5094.17.camel@localhost.localdomain> On Wed, 2009-02-18 at 10:47 +0100, Mark Wielaard wrote: > That would be good, then we are all pushing at the same code base for > stabilization. What does "Express" stand for? The release cycle for HotSpot has been decoupled from the JDK release cycle and that's what Express means. > Yes, my plan was to branch at the commit just before the HS15 tag in > jdk7/jdk7/hotspot appeared. But it would be good to get confirmation > that is the right branch point. I can look that up again... The changeset right before the fork is: fc6a5ae3fef5 which bumps the HotSpot version to 14.0-b10. In the HotSpot team meeting yesterday we talked about that problem and, as Joe Darcy already stated, there will be a HS14 repository in the near future. But I was also told that 14 isn't stable yet, it's just in the stabilization phase. When you really want something rock solid you should go with HS11. -- Christian From volker.simonis at gmail.com Wed Feb 18 02:11:18 2009 From: volker.simonis at gmail.com (Volker Simonis) Date: Wed, 18 Feb 2009 11:11:18 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234950462.2322.9.camel@fedora.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <1234950462.2322.9.camel@fedora.wildebeest.org> Message-ID: > That would be good, then we are all pushing at the same code base for > stabilization. What does "Express" stand for? > It's just the code name for the fact that a specific JDK (JDK 6 in this case) contains a HotSpot from a newer JDK (JDK 7, which you are not allowed to call JDK7 until now:). This didn't happend in the past (i.e. in Java releases before 6) and was started with JDK 6u4 which contained HS10 from JDK7. From mark at klomp.org Wed Feb 18 02:14:21 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 18 Feb 2009 11:14:21 +0100 Subject: Zero identification In-Reply-To: <20090217104436.GA3246@redhat.com> References: <20090217104436.GA3246@redhat.com> Message-ID: <1234952061.2322.22.camel@fedora.wildebeest.org> On Tue, 2009-02-17 at 10:44 +0000, Gary Benson wrote: > The odd one out is Zero, which identifies itself like this: > > OpenJDK Core VM (build 14.0-b08, interpreted mode) > > Would anyone object if I changed the "Core" to "Zero"? That would be good. I hadn't realized "Core" was a generic identifier instead of identifying Zero specifically. There are probably others who didn't realize or knew they were using Zero when they saw Core. Cheers, Mark From langel at redhat.com Wed Feb 18 11:12:14 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 18 Feb 2009 19:12:14 +0000 Subject: changeset in /hg/icedtea6: 2009-02-18 Lillian Angel changeset a2763653f8cf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a2763653f8cf description: 2009-02-18 Lillian Angel Tomas Hurka * INSTALL: Updated requirements. * Makefile.am: Added building support for VisualVM with NetBeans 6.5. * acinclude.m4: Added check for NetBeans. * configure.ac: Added --enable-visualvm option. * visualvm.desktop: New file. diffstat: 6 files changed, 231 insertions(+), 5 deletions(-) ChangeLog | 9 +++ INSTALL | 3 + Makefile.am | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- acinclude.m4 | 25 ++++++++ configure.ac | 31 ++++++++++ visualvm.desktop | 9 +++ diffs (399 lines): diff -r 0a28d5bcf18e -r a2763653f8cf ChangeLog --- a/ChangeLog Tue Feb 17 15:55:13 2009 +0000 +++ b/ChangeLog Wed Feb 18 14:12:09 2009 -0500 @@ -1,3 +1,12 @@ 2009-02-17 Gary Benson + Tomas Hurka + + * INSTALL: Updated requirements. + * Makefile.am: Added building support for VisualVM with NetBeans 6.5. + * acinclude.m4: Added check for NetBeans. + * configure.ac: Added --enable-visualvm option. + * visualvm.desktop: New file. + 2009-02-17 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Updated copyright year. diff -r 0a28d5bcf18e -r a2763653f8cf INSTALL --- a/INSTALL Tue Feb 17 15:55:13 2009 +0000 +++ b/INSTALL Wed Feb 18 14:12:09 2009 -0500 @@ -34,6 +34,9 @@ For building the PulseAudio based mixer, For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 pulseaudio >= 0.9.11 + +For building VisualVM, you will need +netbeans = 6.5 For building the zero-assembler port (see below), you will need libffi. diff -r 0a28d5bcf18e -r a2763653f8cf Makefile.am --- a/Makefile.am Tue Feb 17 15:55:13 2009 +0000 +++ b/Makefile.am Wed Feb 18 14:12:09 2009 -0500 @@ -4,6 +4,9 @@ OPENJDK_VERSION = b14 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 + +NETBEANS_PROFILER_MD5SUM = 35f9dc474dfc19ed3713f362139b099a +VISUALVM_MD5SUM = 1174486e82a65840b44c47166d79f212 if ENABLE_GCJWEBPLUGIN GCJWEBPLUGIN_CLEAN = clean-gcjwebplugin @@ -48,7 +51,7 @@ endif all-local: icedtea-against-icedtea -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java rm -rf stamps rm -f rt-source-files.txt \ hotspot-tools-source-files.txt \ @@ -60,6 +63,8 @@ distclean-local: clean-copy clean-jtreg rm -rf openjdk rm -rf hotspot-tools rm -rf rt/netscape + rm -rf visualvm + rm -rf netbeans if ENABLE_PLUGIN rm -f IcedTeaPlugin.o IcedTeaPlugin.so else @@ -78,7 +83,7 @@ install: clean-bootstrap-directory-symlink clean-bootstrap-directory-ecj \ clean-bootstrap-directory-symlink-ecj icedtea icedtea-debug \ clean-icedtea icedtea-against-icedtea clean-icedtea-ecj clean-plugs \ - clean-tools-jar clean-shared-objects \ + clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ clean-copy clean-hotspot-tools clean-rt $(GCJWEBPLUGIN_CLEAN) \ $(ICEDTEAPLUGIN_CLEAN) hotspot hotspot-helper clean-extra \ clean-jtreg clean-jtreg-reports @@ -87,7 +92,7 @@ EXTRA_DIST = rt generated \ patches/* \ gcjwebplugin.cc tools-copy contrib ports \ extra overlays \ - javaws.png javaws.desktop \ + javaws.png javaws.desktop visualvm.desktop \ jconsole.desktop policytool.desktop \ test/jtreg \ IcedTeaPlugin.cc \ @@ -304,6 +309,14 @@ else CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz endif +# VisualVM sources. Alternatives cannot be used here. +NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ +NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_release65_mod.tar.gz + +VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127067/ +VISUALVM_SRC_ZIP = visualvm-11-src.tar.gz + + stamps/hgforest.stamp: if OPENJDK_SRC_DIR_FOUND else @@ -381,6 +394,29 @@ endif endif endif endif +if WITH_VISUALVM + if ! echo "$(NETBEANS_PROFILER_MD5SUM) $(NETBEANS_PROFILER_SRC_ZIP)" \ + | $(MD5SUM) --check ; \ + then \ + if [ $(NETBEANS_PROFILER_SRC_ZIP) ] ; \ + then \ + mv $(NETBEANS_PROFILER_SRC_ZIP) $(NETBEANS_PROFILER_SRC_ZIP).old ; \ + fi ; \ + $(WGET) $(NETBEANS_PROFILER_URL)$(NETBEANS_PROFILER_SRC_ZIP) \ + -O $(NETBEANS_PROFILER_SRC_ZIP) ; \ + fi + + if ! echo "$(VISUALVM_MD5SUM) $(VISUALVM_SRC_ZIP)" \ + | $(MD5SUM) --check ; \ + then \ + if [ $(VISUALVM_SRC_ZIP) ] ; \ + then \ + mv $(VISUALVM_SRC_ZIP) $(VISUALVM_SRC_ZIP).old ; \ + fi ; \ + $(WGET) $(VISUALVM_URL)$(VISUALVM_SRC_ZIP) \ + -O $(VISUALVM_SRC_ZIP) ; \ + fi +endif mkdir -p stamps touch stamps/download.stamp @@ -392,6 +428,10 @@ clean-download: rm -f $(OPENJDK_SRC_ZIP) if WITH_CACAO rm -f $(CACAO_SRC_ZIP) +endif +if WITH_VISUALVM + rm -f $(VISUALVM_SRC_ZIP) + rm -f $(NETBEANS_PROFILER_SRC_ZIP) endif # Link ports sources into tree @@ -659,6 +699,18 @@ if !USE_SYSTEM_CACAO fi endif endif +if WITH_VISUALVM + if ! test -d netbeans ; \ + then \ + mkdir netbeans ; \ + $(TAR) xf $(NETBEANS_PROFILER_SRC_ZIP) -C netbeans ; \ + fi + + if ! test -d visualvm ; \ + then \ + $(TAR) xf $(VISUALVM_SRC_ZIP) ; \ + fi +endif if [ ! -e $(abs_top_builddir)/generated ]; then \ cp -a $(abs_top_srcdir)/generated $(abs_top_builddir); \ find $(abs_top_builddir)/generated -type f -exec chmod 640 '{}' ';' \ @@ -1028,7 +1080,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(GCJWEBPLUGIN_TARGET) $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp \ + extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1057,6 +1109,26 @@ if ENABLE_PULSE_JAVA cp -pPRf pulse-java.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib/ext endif +if WITH_VISUALVM + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + sed "s/APPNAME=\`basename.*\`/APPNAME=visualvm/" \ + visualvm/launcher/visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + chmod a+x $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + cp visualvm/launcher/visualvm.conf \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + echo visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + echo profiler3 >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + cp -r visualvm/build/cluster/* \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/platform9 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm +endif cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ @@ -1071,7 +1143,7 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(GCJWEBPLUGIN_TARGET) $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp \ + extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1099,6 +1171,26 @@ if ENABLE_PULSE_JAVA $(BUILD_OUTPUT_DIR)-debug/j2sdk-image/jre/lib/ext cp -pPRf pulse-java.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib/ext +endif +if WITH_VISUALVM + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + sed "s/APPNAME=\`basename.*\`/APPNAME=visualvm/" \ + visualvm/launcher/visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + chmod a+x $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + cp visualvm/launcher/visualvm.conf \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + echo visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + echo profiler3 >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + cp -r visualvm/build/cluster/* \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/platform9 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ extra-lib/about.jar \ @@ -1666,6 +1758,59 @@ jtregcheck: jtreg check-hotspot check-la check-local: jtregcheck +# VisualVM + +stamps/visualvm.stamp: $(BOOTSTRAP_DIRECTORY_STAMP) stamps/download.stamp \ + stamps/extract.stamp stamps/nbplatform.stamp +if WITH_VISUALVM + cd visualvm ; \ + ln -s $(abs_top_srcdir)/netbeans/nbbuild/netbeans_visualvm netbeans ; \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) build +endif + mkdir -p stamps + touch $@ + +clean-visualvm: + rm -rf visualvm + rm -f stamps/visualvm.stamp + +stamps/nbplatform.stamp: $(BOOTSTRAP_DIRECTORY_STAMP) stamps/extract.stamp \ + stamps/download.stamp +if WITH_VISUALVM + mkdir netbeans ; \ + cd netbeans ; \ + rm nbbuild/external/binaries-list ; \ + rm -r lib.profiler/release/lib/deployed ; \ + mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ + mkdir -p lib.profiler/release/lib/deployed/jdk16/linux ; \ + mkdir -p ./nbbuild/netbeans_visualvm/ ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/platform9/ ./nbbuild/netbeans_visualvm/platform9 ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/apisupport1/ ./nbbuild/netbeans_visualvm/apisupport1 ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/harness/ ./nbbuild/netbeans_visualvm/harness ; \ + cd lib.profiler/native/build ; \ + if ! (uname -a | grep x86_64) ; then \ + buildscript=./buildnative-linux-15.sh ; \ + else \ + buildscript=./buildnative-linux64-15.sh ; \ + fi ; \ + JAVA_HOME_15=$(ICEDTEA_HOME) JAVA_HOME_16=$(ICEDTEA_HOME) \ + $$buildscript ; \ + cd ../../.. ; \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) -Dpermit.jdk6.builds=true \ + -f nbbuild/build.xml bootstrap ; \ + for dir in lib.profiler lib.profiler.ui lib.profiler.common profiler ; do \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) -Dpermit.jdk6.builds=true -Dbuildnumber=081204 \ + -Dnetbeans.dest.dir=../nbbuild/netbeans_visualvm \ + -f $$dir/build.xml ; \ + done +endif + mkdir -p stamps + touch $@ + +clean-nbplatform: + rm -rf netbeans + rm -f stamps/nbplatform.stamp + # fsg-tarball # Creates archive of openjdk that is compliant with Free Software guidelines. @@ -1685,6 +1830,10 @@ bootstrap-directory-symlink: stamps/boot cacao: stamps/cacao.stamp +visualvm: stamps/visualvm.stamp + +nbplatform: stamps/nbplatform.stamp + copy-source-files: stamps/copy-source-files.stamp download: stamps/download.stamp diff -r 0a28d5bcf18e -r a2763653f8cf acinclude.m4 --- a/acinclude.m4 Tue Feb 17 15:55:13 2009 +0000 +++ b/acinclude.m4 Wed Feb 18 14:12:09 2009 -0500 @@ -557,6 +557,31 @@ AC_DEFUN([FIND_XERCES2_JAR], AC_SUBST(XERCES2_JAR) ]) +AC_DEFUN([FIND_NETBEANS], +[ + AC_ARG_WITH([netbeans], + [AS_HELP_STRING(--with-netbeans,specify location of netbeans)], + [ + if test -f "${withval}"; then + AC_MSG_CHECKING(netbeans) + NETBEANS="${withval}" + AC_MSG_RESULT(${withval}) + else + AC_PATH_PROG(NETBEANS, "${withval}") + fi + ], + [ + NETBEANS= + ]) + if test -z "${NETBEANS}"; then + AC_PATH_PROG(NETBEANS, "netbeans") + fi + if test -z "${NETBEANS}"; then + AC_MSG_ERROR("NetBeans was not found.") + fi + AC_SUBST(NETBEANS) +]) + AC_DEFUN([FIND_RHINO_JAR], [ AC_MSG_CHECKING(whether to include Javascript support via Rhino) diff -r 0a28d5bcf18e -r a2763653f8cf configure.ac --- a/configure.ac Tue Feb 17 15:55:13 2009 +0000 +++ b/configure.ac Wed Feb 18 14:12:09 2009 -0500 @@ -55,6 +55,24 @@ AM_CONDITIONAL(WITH_ICEDTEA, test "${wit AM_CONDITIONAL(WITH_ICEDTEA, test "${with_icedtea}" = true) AC_MSG_RESULT(${with_icedtea}) +AC_MSG_CHECKING([for a NetBeans installation]) +AC_ARG_WITH([netbeans-home], + [AS_HELP_STRING([--with-netbeans-home], + [NetBeans home directory (default is /usr/share/netbeans)])], + [ + if test "x${withval}" = x + then + SYSTEM_NETBEANS_DIR=/usr/share/netbeans + else + SYSTEM_NETBEANS_DIR=${withval} + fi + ], + [ + SYSTEM_NETBEANS_DIR=/usr/share/netbeans + ]) +AC_MSG_RESULT([${SYSTEM_NETBEANS_DIR}]) +AC_SUBST(SYSTEM_NETBEANS_DIR) + AC_MSG_CHECKING([whether to build using an existing installation of OpenJDK]) AC_ARG_WITH([openjdk], [AS_HELP_STRING([--with-openjdk], @@ -90,6 +108,14 @@ AC_ARG_WITH([ant-home], ]) AC_SUBST(SYSTEM_ANT_DIR) AC_MSG_RESULT(${SYSTEM_ANT_DIR}) + +AC_MSG_CHECKING(whether to build VisualVM) +AC_ARG_ENABLE([visualvm], + [AS_HELP_STRING([--enable-visualvm], + [Enable compilation of visualvm.])], + [enable_visualvm="${enableval}"], [enable_visualvm="no"]) +AM_CONDITIONAL(WITH_VISUALVM, test "x${enable_visualvm}" = "xyes") +AC_MSG_RESULT(${enable_visualvm}) AC_MSG_CHECKING([whether to build the LiveConnect plugin]) AC_ARG_ENABLE([liveconnect], @@ -239,6 +265,11 @@ ENABLE_HG ENABLE_HG AC_CHECK_WITH_HG_REVISION +if test "x${enable_visualvm}" = "xyes" +then + FIND_NETBEANS +fi + if test "x${enable_pulse_java}" = "xyes" then FIND_PULSEAUDIO diff -r 0a28d5bcf18e -r a2763653f8cf visualvm.desktop --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/visualvm.desktop Wed Feb 18 14:12:09 2009 -0500 @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=OpenJDK VisualVM +Comment=Integrates commandline JDK tools and profiling capabilites. +Exec=/usr/bin/jvisualvm +Icon=java +Terminal=false +Type=Application +Categories=Development;Java; +Version=1.0 From langel at redhat.com Wed Feb 18 11:14:29 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 18 Feb 2009 14:14:29 -0500 Subject: VisualVM is back! Message-ID: <499C5E15.2090201@redhat.com> Hi, Thanks to Tomas Hurka (from the visualvm team), we were able to get visualvm building with IcedTea again. The only requirement is to have NetBeans 6.5 installed on your system. To enable visualvm when building, use the --enable-visualvm option. Thanks, Lillian 2009-02-18 Lillian Angel Tomas Hurka * INSTALL: Updated requirements. * Makefile.am: Added building support for VisualVM with NetBeans 6.5. * acinclude.m4: Added check for NetBeans. * configure.ac: Added --enable-visualvm option. * visualvm.desktop: New file. From langel at redhat.com Wed Feb 18 11:42:12 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 18 Feb 2009 19:42:12 +0000 Subject: changeset in /hg/icedtea6: 2009-02-18 Lillian Angel changeset 9901e971f893 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9901e971f893 description: 2009-02-18 Lillian Angel * AUTHORS: Updated. diffstat: 2 files changed, 18 insertions(+), 2 deletions(-) AUTHORS | 16 ++++++++++++++-- ChangeLog | 4 ++++ diffs (55 lines): diff -r a2763653f8cf -r 9901e971f893 AUTHORS --- a/AUTHORS Wed Feb 18 14:12:09 2009 -0500 +++ b/AUTHORS Wed Feb 18 14:42:06 2009 -0500 @@ -2,26 +2,38 @@ Please keep this list in alphabetical or Please keep this list in alphabetical order. Lillian Angel +Alon Bar-Lev Gary Benson Tania Bento +Deepak Bhole +Tom Callaway +Pablo del Campo Thomas Fitzsimmons Matthew Flaschen Kyle Galloway +Dennis Gilmore Andrew Haley -Andrew John Hughes +Andrew John Hughes +Tomas Hurka +Ioana Ivan Matthias Klose Francis Kung DJ Lucas +Omair Majid Casey Marshall Dan Munckton Raif Naffah +Parag Nemade +Xerxes R??nby Bernhard Rosenkr??nzer Marc Schoenefeld Keith Seitz Joshua Sumali Christian Thalinger Dalibor Topic -Mark Wielaard +Arnaud Vandyck +Mark Wielaard +Yi Zhan This project also includes code from the following projects: diff -r a2763653f8cf -r 9901e971f893 ChangeLog --- a/ChangeLog Wed Feb 18 14:12:09 2009 -0500 +++ b/ChangeLog Wed Feb 18 14:42:06 2009 -0500 @@ -1,3 +1,7 @@ 2009-02-18 Lillian Angel + + * AUTHORS: Updated. + 2009-02-18 Lillian Angel Tomas Hurka From mark at klomp.org Thu Feb 19 01:09:46 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 19 Feb 2009 09:09:46 +0000 Subject: changeset in /hg/icedtea6: * AUTHORS: Fix my email address. Message-ID: changeset 1b323738dcc6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1b323738dcc6 description: * AUTHORS: Fix my email address. diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) AUTHORS | 2 +- ChangeLog | 4 ++++ diffs (23 lines): diff -r 9901e971f893 -r 1b323738dcc6 AUTHORS --- a/AUTHORS Wed Feb 18 14:42:06 2009 -0500 +++ b/AUTHORS Thu Feb 19 10:09:32 2009 +0100 @@ -32,7 +32,7 @@ Christian Thalinger Dalibor Topic Arnaud Vandyck -Mark Wielaard +Mark Wielaard Yi Zhan This project also includes code from the following projects: diff -r 9901e971f893 -r 1b323738dcc6 ChangeLog --- a/ChangeLog Wed Feb 18 14:42:06 2009 -0500 +++ b/ChangeLog Thu Feb 19 10:09:32 2009 +0100 @@ -1,3 +1,7 @@ 2009-02-18 Lillian Angel + + * AUTHORS: Fix my email address. + 2009-02-18 Lillian Angel * AUTHORS: Updated. From mark at klomp.org Thu Feb 19 01:23:50 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 19 Feb 2009 10:23:50 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1234951783.5094.17.camel@localhost.localdomain> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <1234950462.2322.9.camel@fedora.wildebeest.org> <1234951783.5094.17.camel@localhost.localdomain> Message-ID: <1235035430.3597.14.camel@hermans.wildebeest.org> Hi Christian, On Wed, 2009-02-18 at 11:09 +0100, Christian Thalinger wrote: > On Wed, 2009-02-18 at 10:47 +0100, Mark Wielaard wrote: > > Yes, my plan was to branch at the commit just before the HS15 tag in > > jdk7/jdk7/hotspot appeared. But it would be good to get confirmation > > that is the right branch point. > > I can look that up again... The changeset right before the fork is: > > fc6a5ae3fef5 > > which bumps the HotSpot version to 14.0-b10. Thanks. I am waiting for Joe to reveal the open hs14 repo that he wants to base openjdk6 on first though before creating another one for now. Unless that takes too long of course, then we can always start tracking from that revision. > But I was also told that 14 isn't stable yet, it's just in the > stabilization phase. When you really want something rock solid you > should go with HS11. Yes, you can even get this with icedtea configure --with-hotspot-build=original but that needs more patches (e.g for sparc support) and for zero/shark it is too old, so it needs too much backporting to keep current in the long run. Cheers, Mark From gbenson at redhat.com Thu Feb 19 02:27:09 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 19 Feb 2009 10:27:09 +0000 Subject: changeset in /hg/icedtea6: 2009-02-19 Gary Benson changeset 33449a79431a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=33449a79431a description: 2009-02-19 Gary Benson * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: Deleted contents (was all comment). diffstat: 2 files changed, 5 insertions(+), 28 deletions(-) ChangeLog | 5 +++ ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp | 28 ------------------- diffs (44 lines): diff -r 1b323738dcc6 -r 33449a79431a ChangeLog --- a/ChangeLog Thu Feb 19 10:09:32 2009 +0100 +++ b/ChangeLog Thu Feb 19 10:27:02 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-19 Mark Wielaard + + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: + Deleted contents (was all comment). + 2009-02-19 Mark Wielaard * AUTHORS: Fix my email address. diff -r 1b323738dcc6 -r 33449a79431a ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Thu Feb 19 10:09:32 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Thu Feb 19 10:27:02 2009 +0000 @@ -1,28 +0,0 @@ -/* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - * - */ - -#include "incls/_precompiled.incl" -#include "incls/_disassembler_zero.cpp.incl" - From mark at klomp.org Thu Feb 19 02:32:52 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 19 Feb 2009 10:32:52 +0000 Subject: changeset in /hg/icedtea6: * AUTHORS: Fix my email address. Message-ID: changeset 92c4cc753f06 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=92c4cc753f06 description: * AUTHORS: Fix my email address. diffstat: 1 file changed, 1 insertion(+), 1 deletion(-) AUTHORS | 2 +- diffs (12 lines): diff -r 33449a79431a -r 92c4cc753f06 AUTHORS --- a/AUTHORS Thu Feb 19 10:27:02 2009 +0000 +++ b/AUTHORS Thu Feb 19 11:32:45 2009 +0100 @@ -32,7 +32,7 @@ Christian Thalinger Dalibor Topic Arnaud Vandyck -Mark Wielaard +Mark Wielaard Yi Zhan This project also includes code from the following projects: From oliver.may at dfc.be Thu Feb 19 05:02:16 2009 From: oliver.may at dfc.be (Oliver May) Date: Thu, 19 Feb 2009 14:02:16 +0100 Subject: IcedTea6-plugin PluginAppletSecurityContext NullPointers - debian 6b14-1~exp1 sources still uses HashMap in PluginAppletSecurityContext In-Reply-To: <4999468B.5050405@zafena.se> References: <4993E286.8050208@dfc.be> <4993EF89.7020603@zafena.se> <4993FBD4.1070002@zafena.se> <20090212171604.GD30628@redhat.com> <20090212171814.GE30628@redhat.com> <49953ECD.90905@dfc.be> <20090213195451.GB13389@redhat.com> <4999468B.5050405@zafena.se> Message-ID: <499D5858.5030202@dfc.be> Hi Xerxes, Thanks a lot for the research! Our project is on hold at this moment, so I'll just wait until the binary hits the debian repository in a few weeks time! I'll get you updated as soon as I get the new plugin! regards, Oliver May Xerxes R?nby wrote: > Doko I have attached you to this conversation since you do have the > skills and power to decide and pick whats goes into the debian sourcetree: > To summarise: this is a source update request for debian experimental > branch of openjdk-6 to match icedtea6 1.4. > Oliver May are currently experiencing a bug in debian experimental that > probably have already been fixed in icedtea6 mercurial tip and icedtea > 1.4 sources. > The changeset http://icedtea.classpath.org/hg/icedtea6/rev/15437352b69c > from 2009-01-22 by Deepak Bhole have probably already fixed this bug. > It would be nice to get updated debian sources in the experimental > branch to at least match the last icedtea 1.4 release from 2009-02-02; > the currect debian 6b14-1~exp1 sources are from 2008-12-17. > This discussion can be followed from the beginning here: > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-February/004734.html > > > Deepak Bhole: > Thank you for the insight into the icedtea plugin and for writing it! > The binarys was from debian 6b14-1~exp1 and I have verified that the > debian 6b14-1~exp1 sources still uses HashMap in > PluginAppletSecurityContext. > The configuration used by Oliver May was > Icedtea6-plugin: Version: 6b14-1~exp1 > Openjdk6-jre: Version: 6b14-1~exp1 > Iceweasel: 3.06-1 > Linux debian-gta02 2.6.24-20081103.git7172ec57 #1 PREEMPT Wed Dec 17 > 18:06:43 UTC 2008 armv4tl GNU/Linux > Oliver May are actually running Iceweasel with the icedtea6 plugin on > his phone! Awesome: > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090212/8dc2438b/attachment-0001.jpg > - picture of Icedtea6 plugin running on Neo freerunner, the freerunner > definately looks a lot cooler now with the plugin running on it! > http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-February/004743.html > - output from about:plugins in iceweasel and java --version > > Oliver May: > The bug you have experienced are belived to have been fixed in the > developement mercurial sourcetree > http://icedtea.classpath.org/hg/icedtea6/ and the last stable release of > icedtea6 v1.4 from 2009-02-02 > http://langel.wordpress.com/2009/02/02/icedtea6-14-released/ . > I dont know of any prebuilt binarys for armel that contains the latest > icedtea6 1.4 release so you have to compile the current icedtea6 > sourcecode for yourself and report back if the bug still exists. If the > debian sources gets updated then we might have a new binary to test > within some weeks from the debian binary repositorys. > Meanwhile I would recommend you to try cross-compile the latest icedtea6 > sources using Jalimo and openembedded: Check out Robert Schusters blog > reguarding how to cross compile icedtea6: > http://rschuster.blogs.evolvis.org/ > > To all Debian developers: > Congratulations Debian 5.0 lenny are finally released and are shipped > with icedtea6 support! > http://www.debian.org/News/2009/20090214 > > Cheers and have a great day! > Xerxes > > Deepak Bhole skrev: >> * Oliver May [2009-02-13 04:35]: >> >>> Seems my message got hold back by the mailing list because the large >>> attachment, I uploaded the file to the website too: >>> http://geomajas.org/users/oliverm/freerunner-gpsApplet/applet-test.tgz >>> >>> Hi Deepak! >>> >>> >> >>> >> What website do you see this error on? >>> >> >>> >> As for PluginDebug.debug() ... its messages go to STDERR. However, >>> >> debug() prints only if you have set ICEDTEAPLUGIN_DEBUG=true, and in >>> >> that case, all OUT/ERR is redirected to /tmp/java.stdout and >>> >> /tmp/java.stderr >>> >> >>> >> Cheers, >>> >> Deepak >>> >> >>> > >>> > Whoops.. should have checked the ML first. >>> > >>> > Okay, can you start the browser with the env variable >>> > ICEDTEAPLUGIN_DEBUG=true , and then send the resulting log >>> > and /tmp/java.std* files? >>> > >>> > Deepak >>> > >>> >>> I did some more testing, and put the applet I am using online with some >>> simple javascript <> java interaction, including the source files. >>> >>> http://geomajas.org/users/oliverm/freerunner-gpsApplet/test-applet.html >>> >>> >> >> What version of IcedTea are you trying this with again? I think I have >> seen this sort of error once before, but I was never able to reproduce >> it. After that though, I changed one of the structures in >> PluginAppletSecurityContext (where the NPE is happening) to be a >> Hashtable instead of HashMap. So in theory, any NPE should get thrown >> when the table is updated, rather than when the value is read. From the >> logs, it appears that the latter is the case. >> >> Can you try running it with IcedTea 1.4 or later and attach those logs >> please? >> >> Thanks, >> Deepak >> >> >>> The applet expects a gpsd running on localhost, but it wont crash >>> without it. You may forward local port 2947 to gpsd.mainframe.cx:2947 >>> for some real data (real, but static, mainframe.cx is not moving :)). >>> >>> Using this site I just did a test with debugging output: >>> >>> debian-gta02:/tmp# ICEDTEAPLUGIN_DEBUG=true >>> debian-gta02:/tmp# export ICEDTEAPLUGIN_DEBUG >>> debian-gta02:/tmp# (iceweasel > /tmp/iceweasel.out) >& >>> /tmp/iceweasel.err >>> >>> so i have also gathered the iceweasel process out and err streams. >>> >>> What I did is: >>> +Started iceweasel and opened http://geomajas.org.... >>> +Waited until the applet was completely loaded (cpu idle) >>> +Clicked on "Start gps" and waited like 10 minutes until cpu idle >>> +Clicked on "Get gps data", this returned null in the textbox after half >>> a second. >>> +Clicked on "Stop gps" >>> +Clicked on "Get gps data" again, wich actet the same way as before >>> +Closed iceweasel >>> >>> Btw, there seem to be some real performance issues too, the first call >>> from javascript to java takes ages, esp. with debugging turned on. But >>> that could even well be the rather slow cpu (200 bogoMIPS, 400MHz arm). >>> >>> Greetings! >>> >>> -- >>> Oliver May >>> >>> DFC Software Engineering >>> GeoMajas partner www.geomajas.org >>> >>> Brugsesteenweg 587 >>> B-9030 Gent >>> Belgium >>> T: +32 9 236 61 96 >>> F: +32 9 236 54 12 >>> E: oliver.may at dfc.be >>> W: www.dfc.be >>> >>> > > -- Oliver May DFC Software Engineering GeoMajas partner www.geomajas.org Brugsesteenweg 587 B-9030 Gent Belgium T: +32 9 236 61 96 F: +32 9 236 54 12 E: oliver.may at dfc.be W: www.dfc.be From bugzilla-daemon at icedtea.classpath.org Thu Feb 19 12:15:00 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 19 Feb 2009 20:15:00 +0000 Subject: [Bug 295] New: XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 Summary: XML encoder can cause a StackOverflowError Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: omajid at redhat.com The XML encoder in IcedTea can cause StackOverflowError if presented with certain characters. openjdk/jaxp/src/share/classes/com/sun/org/apache/xml/internal/serializer/EncodingInfo$EncodingImpl can delegate to itself too many times causing the stack overflow. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Feb 19 12:15:57 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 19 Feb 2009 20:15:57 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 ------- Comment #1 from omajid at redhat.com 2009-02-19 20:15 ------- Created an attachment (id=163) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=163&action=view) test case to reproduce the bug -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Feb 19 12:16:54 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 19 Feb 2009 20:16:54 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 ------- Comment #2 from omajid at redhat.com 2009-02-19 20:16 ------- Created an attachment (id=164) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=164&action=view) stack trace -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Feb 19 13:25:17 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 19 Feb 2009 21:25:17 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 ------- Comment #3 from omajid at redhat.com 2009-02-19 21:25 ------- Created an attachment (id=165) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=165&action=view) Proposed patch -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From xerxes at zafena.se Thu Feb 19 15:46:00 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 20 Feb 2009 00:46:00 +0100 Subject: [patch] proposal for ecj and NIO2 compatiblity check during configure Message-ID: <499DEF38.7070207@zafena.se> Greetings, I was compiling the mercurial tip of icedtea6 on a Ubuntu LTS 8.04 Hardy Heron machine and to my surprise a default configured build stopped in midair. It turned out my installed ecj version 3.3.1 was not up to the task of compiling the cool backported NIO2 stuff. I have created a patch that checks for this incompatible version of ecj with NIO2 during configure thus giving the user a choice how to resolve the situation gracefully. If the check fails then this gets displayed: checking version of ECJ... 3.3.1 configure: error: "ECJ version 3.3.1 cant compile NIO2 - try upgrade ecj to >= 3.4.1 or use --disable-nio2" Suggestions are welcome! Cheers and have a great day! Xerxes -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: configure.ecjAndNIO2CompatiblityCheck.patch Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090220/6ece64dc/configure.ecjAndNIO2CompatiblityCheck.patch From xerxes at zafena.se Fri Feb 20 03:00:30 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Fri, 20 Feb 2009 12:00:30 +0100 Subject: [patch] proposal for ecj and NIO2 compatiblity check during configure In-Reply-To: <499DEF38.7070207@zafena.se> References: <499DEF38.7070207@zafena.se> Message-ID: <499E8D4E.9030906@zafena.se> I noticed today that the patch i posted failed to extract the version number correctly on all ECJ versions. Some ECJ versions have an added comma after the versionnumber like this: xerxes at labbserver:~/icedtea6$ ecj -version Eclipse Java Compiler v_774_R33x, 3.3.1, Copyright IBM Corp 2000, 2007. All rights reserved. and on these versions with a comma of ecj the versionnumber check will miss since "3.3.1" != "3.3.1," gnu_andrew pointed out during a irc session that some 3.3.0 versions of ecj compiles NIO2 without a hitch so a version check is not that reliable to determine if a NIO2 compile will fail with ecj. Consensus turned out that the best way to make sure NIO2 can get built was to run a small regressiontest during configure that tested the ecj compiler. I will try create such a test based on code from the classpath CVS: m4/ac_prog_javac_works.m4 and hopefully post another patch. Cheers! Xerxes Xerxes R?nby skrev: > Greetings, I was compiling the mercurial tip of icedtea6 on a Ubuntu > LTS 8.04 Hardy Heron machine and to my surprise a default configured > build stopped in midair. It turned out my installed ecj version 3.3.1 > was not up to the task of compiling the cool backported NIO2 stuff. > > I have created a patch that checks for this incompatible version of > ecj with NIO2 during configure thus giving the user a choice how to > resolve the situation gracefully. If the check fails then this gets > displayed: > > checking version of ECJ... 3.3.1 > configure: error: "ECJ version 3.3.1 cant compile NIO2 - try upgrade > ecj to >= 3.4.1 or use --disable-nio2" > > Suggestions are welcome! > > Cheers and have a great day! > Xerxes > From gnu_andrew at member.fsf.org Fri Feb 20 03:01:40 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 20 Feb 2009 11:01:40 +0000 Subject: RFC: Disable NIO2 by default Message-ID: <20090220110140.GA5683@rivendell.middle-earth.co.uk> This patch disables NIO2 in the default build. Ok to commit? 2009-02-20 Andrew John Hughes * configure.ac: Disable NIO2 by default. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 9708fffb863d configure.ac --- a/configure.ac Sat Feb 14 01:12:44 2009 +0000 +++ b/configure.ac Fri Feb 20 10:55:20 2009 +0000 @@ -135,7 +135,7 @@ AC_ARG_ENABLE([nio2], [AS_HELP_STRING([--disable-nio2], [Disable inclusion of backported NIO2])], - [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='yes']) + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='no']) AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) AC_MSG_RESULT(${ENABLE_NIO2}) From mark at klomp.org Fri Feb 20 03:55:37 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 20 Feb 2009 12:55:37 +0100 Subject: RFC: Disable NIO2 by default In-Reply-To: <20090220110140.GA5683@rivendell.middle-earth.co.uk> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> Message-ID: <1235130937.2290.0.camel@fedora.wildebeest.org> On Fri, 2009-02-20 at 11:01 +0000, Andrew John Hughes wrote: > This patch disables NIO2 in the default build. > > Ok to commit? > > 2009-02-20 Andrew John Hughes > > * configure.ac: > Disable NIO2 by default. I think this is a good idea until we have some compiler configure check that can figure out if it is possible to compile the code before the full build. Thanks, Mark From Dalibor.Topic at Sun.COM Fri Feb 20 04:20:19 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 20 Feb 2009 13:20:19 +0100 Subject: RFC: Disable NIO2 by default In-Reply-To: <20090220110140.GA5683@rivendell.middle-earth.co.uk> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> Message-ID: <499EA003.9080506@sun.com> Andrew John Hughes wrote: > This patch disables NIO2 in the default build. > > For IcedTea6? IcedTea7? cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From matthew.flaschen at gatech.edu Fri Feb 20 04:35:12 2009 From: matthew.flaschen at gatech.edu (Matthew Flaschen) Date: Fri, 20 Feb 2009 07:35:12 -0500 Subject: RFC: Disable NIO2 by default In-Reply-To: <499EA003.9080506@sun.com> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> Message-ID: <499EA380.3020501@gatech.edu> Dalibor Topic wrote: > Andrew John Hughes wrote: >> This patch disables NIO2 in the default build. >> >> > For IcedTea6? IcedTea7? Dalibor, 9708fffb863d is only a valid revision id for icedtea6. Matt Flaschen From ahughes at redhat.com Fri Feb 20 04:43:59 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 20 Feb 2009 12:43:59 +0000 Subject: changeset in /hg/icedtea6: Disable NIO2 by default. Message-ID: changeset f1fad53c5ab1 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f1fad53c5ab1 description: Disable NIO2 by default. 2009-02-20 Andrew John Hughes * configure.ac: Disable NIO2 by default. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ configure.ac | 2 +- diffs (24 lines): diff -r 9708fffb863d -r f1fad53c5ab1 ChangeLog --- a/ChangeLog Sat Feb 14 01:12:44 2009 +0000 +++ b/ChangeLog Fri Feb 20 12:41:09 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-12 Andrew John Hughes + + * configure.ac: + Disable NIO2 by default. + 2009-02-12 Andrew John Hughes * acinclude.m4: diff -r 9708fffb863d -r f1fad53c5ab1 configure.ac --- a/configure.ac Sat Feb 14 01:12:44 2009 +0000 +++ b/configure.ac Fri Feb 20 12:41:09 2009 +0000 @@ -135,7 +135,7 @@ AC_ARG_ENABLE([nio2], AC_ARG_ENABLE([nio2], [AS_HELP_STRING([--disable-nio2], [Disable inclusion of backported NIO2])], - [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='yes']) + [ENABLE_NIO2="${enableval}"], [ENABLE_NIO2='no']) AM_CONDITIONAL([ENABLE_NIO2], [test x$ENABLE_NIO2 = xyes]) AC_MSG_RESULT(${ENABLE_NIO2}) From ahughes at redhat.com Fri Feb 20 04:44:00 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 20 Feb 2009 12:44:00 +0000 Subject: changeset in /hg/icedtea6: Merge. Message-ID: changeset c5e17bb7fead in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c5e17bb7fead description: Merge. diffstat: 70 files changed, 2132 insertions(+), 1908 deletions(-) AUTHORS | 14 ChangeLog | 50 + INSTALL | 3 Makefile.am | 159 ++++ acinclude.m4 | 25 configure.ac | 31 patches/hotspot/default/14.0b08/icedtea-6791168.patch | 230 ------ patches/hotspot/default/14.0b08/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/default/14.0b08/icedtea-core-build.patch | 108 -- patches/hotspot/default/14.0b08/icedtea-debuginfo.patch | 15 patches/hotspot/default/14.0b08/icedtea-format.patch | 48 - patches/hotspot/default/14.0b08/icedtea-gcc-4.3.patch | 54 - patches/hotspot/default/14.0b08/icedtea-gcc-suffix.patch | 25 patches/hotspot/default/14.0b08/icedtea-headers.patch | 13 patches/hotspot/default/14.0b08/icedtea-includedb.patch | 97 -- patches/hotspot/default/14.0b08/icedtea-memory-limits.patch | 23 patches/hotspot/default/14.0b08/icedtea-no-precompiled.patch | 32 patches/hotspot/default/14.0b08/icedtea-params-cast-size_t.patch | 121 --- patches/hotspot/default/14.0b08/icedtea-parisc-opt.patch | 28 patches/hotspot/default/14.0b08/icedtea-shark-build.patch | 233 ------ patches/hotspot/default/14.0b08/icedtea-shark.patch | 366 ---------- patches/hotspot/default/14.0b08/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/default/14.0b08/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/default/14.0b08/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/default/14.0b08/icedtea-sparc64-linux.patch | 42 - patches/hotspot/default/14.0b08/icedtea-static-libstdc++.patch | 16 patches/hotspot/default/14.0b08/icedtea-text-relocations.patch | 61 - patches/hotspot/default/14.0b08/icedtea-use-idx_t.patch | 45 - patches/hotspot/default/14.0b08/icedtea-version.patch | 48 - patches/hotspot/default/14.0b08/icedtea-zero-build.patch | 129 --- patches/hotspot/default/icedtea-6791168.patch | 230 ++++++ patches/hotspot/default/icedtea-bytecodeInterpreter.patch | 11 patches/hotspot/default/icedtea-core-build.patch | 108 ++ patches/hotspot/default/icedtea-debuginfo.patch | 15 patches/hotspot/default/icedtea-format.patch | 48 + patches/hotspot/default/icedtea-gcc-4.3.patch | 54 + patches/hotspot/default/icedtea-gcc-suffix.patch | 25 patches/hotspot/default/icedtea-headers.patch | 13 patches/hotspot/default/icedtea-includedb.patch | 97 ++ patches/hotspot/default/icedtea-memory-limits.patch | 23 patches/hotspot/default/icedtea-no-precompiled.patch | 32 patches/hotspot/default/icedtea-params-cast-size_t.patch | 121 +++ patches/hotspot/default/icedtea-parisc-opt.patch | 28 patches/hotspot/default/icedtea-shark-build.patch | 233 ++++++ patches/hotspot/default/icedtea-shark.patch | 366 ++++++++++ patches/hotspot/default/icedtea-sparc-buildfixes.patch | 35 patches/hotspot/default/icedtea-sparc-ptracefix.patch | 34 patches/hotspot/default/icedtea-sparc-trapsfix.patch | 21 patches/hotspot/default/icedtea-sparc64-linux.patch | 42 + patches/hotspot/default/icedtea-static-libstdc++.patch | 16 patches/hotspot/default/icedtea-text-relocations.patch | 61 + patches/hotspot/default/icedtea-use-idx_t.patch | 45 + patches/hotspot/default/icedtea-version.patch | 48 + patches/hotspot/default/icedtea-zero-build.patch | 129 +++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 25 ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp | 28 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 2 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 2 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 2 ports/hotspot/src/share/vm/includeDB_shark | 2 ports/hotspot/src/share/vm/shark/llvmHeaders.hpp | 2 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 2 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 2 ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp | 2 ports/hotspot/src/share/vm/shark/sharkEntry.cpp | 2 ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 2 ports/hotspot/src/share/vm/shark/sharkFunction.hpp | 2 ports/hotspot/src/share/vm/shark/shark_globals.hpp | 2 visualvm.desktop | 9 diffs (truncated from 4552 to 500 lines): diff -r f1fad53c5ab1 -r c5e17bb7fead AUTHORS --- a/AUTHORS Fri Feb 20 12:41:09 2009 +0000 +++ b/AUTHORS Fri Feb 20 12:42:30 2009 +0000 @@ -2,26 +2,38 @@ Please keep this list in alphabetical or Please keep this list in alphabetical order. Lillian Angel +Alon Bar-Lev Gary Benson Tania Bento +Deepak Bhole +Tom Callaway +Pablo del Campo Thomas Fitzsimmons Matthew Flaschen Kyle Galloway +Dennis Gilmore Andrew Haley -Andrew John Hughes +Andrew John Hughes +Tomas Hurka +Ioana Ivan Matthias Klose Francis Kung DJ Lucas +Omair Majid Casey Marshall Dan Munckton Raif Naffah +Parag Nemade +Xerxes R??nby Bernhard Rosenkr??nzer Marc Schoenefeld Keith Seitz Joshua Sumali Christian Thalinger Dalibor Topic +Arnaud Vandyck Mark Wielaard +Yi Zhan This project also includes code from the following projects: diff -r f1fad53c5ab1 -r c5e17bb7fead ChangeLog --- a/ChangeLog Fri Feb 20 12:41:09 2009 +0000 +++ b/ChangeLog Fri Feb 20 12:42:30 2009 +0000 @@ -2,7 +2,55 @@ 2009-02-20 Andrew John Hughes + + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: + Deleted contents (was all comment). + +2009-02-19 Mark Wielaard + + * AUTHORS: Fix my email address. + +2009-02-18 Lillian Angel + + * AUTHORS: Updated. + +2009-02-18 Lillian Angel + Tomas Hurka + + * INSTALL: Updated requirements. + * Makefile.am: Added building support for VisualVM with NetBeans 6.5. + * acinclude.m4: Added check for NetBeans. + * configure.ac: Added --enable-visualvm option. + * visualvm.desktop: New file. + +2009-02-17 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Updated copyright year. + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: + Likewise. + * ports/hotspot/src/share/vm/includeDB_shark + * ports/hotspot/src/share/vm/shark/llvmHeaders.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkBytecodeTracer.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkEntry.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkFunction.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/shark_globals.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: + Deleted contents (was all comment). + +2009-02-15 Mark Wielaard + + * patches/hotspot/default/14.0b08/*: Moved to ... + patches/hotspot/default/*. + 2009-02-12 Andrew John Hughes * acinclude.m4: diff -r f1fad53c5ab1 -r c5e17bb7fead INSTALL --- a/INSTALL Fri Feb 20 12:41:09 2009 +0000 +++ b/INSTALL Fri Feb 20 12:42:30 2009 +0000 @@ -34,6 +34,9 @@ For building the PulseAudio based mixer, For building the PulseAudio based mixer, you will need pulseaudio-libs-devel >= 0.9.11 pulseaudio >= 0.9.11 + +For building VisualVM, you will need +netbeans = 6.5 For building the zero-assembler port (see below), you will need libffi. diff -r f1fad53c5ab1 -r c5e17bb7fead Makefile.am --- a/Makefile.am Fri Feb 20 12:41:09 2009 +0000 +++ b/Makefile.am Fri Feb 20 12:42:30 2009 +0000 @@ -4,6 +4,9 @@ OPENJDK_VERSION = b14 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 + +NETBEANS_PROFILER_MD5SUM = 35f9dc474dfc19ed3713f362139b099a +VISUALVM_MD5SUM = 1174486e82a65840b44c47166d79f212 if ENABLE_GCJWEBPLUGIN GCJWEBPLUGIN_CLEAN = clean-gcjwebplugin @@ -48,7 +51,7 @@ endif all-local: icedtea-against-icedtea -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java rm -rf stamps rm -f rt-source-files.txt \ hotspot-tools-source-files.txt \ @@ -60,6 +63,8 @@ distclean-local: clean-copy clean-jtreg rm -rf openjdk rm -rf hotspot-tools rm -rf rt/netscape + rm -rf visualvm + rm -rf netbeans if ENABLE_PLUGIN rm -f IcedTeaPlugin.o IcedTeaPlugin.so else @@ -78,7 +83,7 @@ install: clean-bootstrap-directory-symlink clean-bootstrap-directory-ecj \ clean-bootstrap-directory-symlink-ecj icedtea icedtea-debug \ clean-icedtea icedtea-against-icedtea clean-icedtea-ecj clean-plugs \ - clean-tools-jar clean-shared-objects \ + clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ clean-copy clean-hotspot-tools clean-rt $(GCJWEBPLUGIN_CLEAN) \ $(ICEDTEAPLUGIN_CLEAN) hotspot hotspot-helper clean-extra \ clean-jtreg clean-jtreg-reports @@ -87,7 +92,7 @@ EXTRA_DIST = rt generated \ patches/* \ gcjwebplugin.cc tools-copy contrib ports \ extra overlays \ - javaws.png javaws.desktop \ + javaws.png javaws.desktop visualvm.desktop \ jconsole.desktop policytool.desktop \ test/jtreg \ IcedTeaPlugin.cc \ @@ -304,6 +309,14 @@ else CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz endif +# VisualVM sources. Alternatives cannot be used here. +NETBEANS_PROFILER_URL = http://icedtea.classpath.org/visualvm/ +NETBEANS_PROFILER_SRC_ZIP = netbeans-profiler-visualvm_release65_mod.tar.gz + +VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127067/ +VISUALVM_SRC_ZIP = visualvm-11-src.tar.gz + + stamps/hgforest.stamp: if OPENJDK_SRC_DIR_FOUND else @@ -381,6 +394,29 @@ endif endif endif endif +if WITH_VISUALVM + if ! echo "$(NETBEANS_PROFILER_MD5SUM) $(NETBEANS_PROFILER_SRC_ZIP)" \ + | $(MD5SUM) --check ; \ + then \ + if [ $(NETBEANS_PROFILER_SRC_ZIP) ] ; \ + then \ + mv $(NETBEANS_PROFILER_SRC_ZIP) $(NETBEANS_PROFILER_SRC_ZIP).old ; \ + fi ; \ + $(WGET) $(NETBEANS_PROFILER_URL)$(NETBEANS_PROFILER_SRC_ZIP) \ + -O $(NETBEANS_PROFILER_SRC_ZIP) ; \ + fi + + if ! echo "$(VISUALVM_MD5SUM) $(VISUALVM_SRC_ZIP)" \ + | $(MD5SUM) --check ; \ + then \ + if [ $(VISUALVM_SRC_ZIP) ] ; \ + then \ + mv $(VISUALVM_SRC_ZIP) $(VISUALVM_SRC_ZIP).old ; \ + fi ; \ + $(WGET) $(VISUALVM_URL)$(VISUALVM_SRC_ZIP) \ + -O $(VISUALVM_SRC_ZIP) ; \ + fi +endif mkdir -p stamps touch stamps/download.stamp @@ -392,6 +428,10 @@ clean-download: rm -f $(OPENJDK_SRC_ZIP) if WITH_CACAO rm -f $(CACAO_SRC_ZIP) +endif +if WITH_VISUALVM + rm -f $(VISUALVM_SRC_ZIP) + rm -f $(NETBEANS_PROFILER_SRC_ZIP) endif # Link ports sources into tree @@ -659,6 +699,18 @@ if !USE_SYSTEM_CACAO fi endif endif +if WITH_VISUALVM + if ! test -d netbeans ; \ + then \ + mkdir netbeans ; \ + $(TAR) xf $(NETBEANS_PROFILER_SRC_ZIP) -C netbeans ; \ + fi + + if ! test -d visualvm ; \ + then \ + $(TAR) xf $(VISUALVM_SRC_ZIP) ; \ + fi +endif if [ ! -e $(abs_top_builddir)/generated ]; then \ cp -a $(abs_top_srcdir)/generated $(abs_top_builddir); \ find $(abs_top_builddir)/generated -type f -exec chmod 640 '{}' ';' \ @@ -1028,7 +1080,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(GCJWEBPLUGIN_TARGET) $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp \ + extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1057,6 +1109,26 @@ if ENABLE_PULSE_JAVA cp -pPRf pulse-java.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib/ext endif +if WITH_VISUALVM + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + sed "s/APPNAME=\`basename.*\`/APPNAME=visualvm/" \ + visualvm/launcher/visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + chmod a+x $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + cp visualvm/launcher/visualvm.conf \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + echo visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + echo profiler3 >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + cp -r visualvm/build/cluster/* \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/platform9 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm +endif cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ @@ -1071,7 +1143,7 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(GCJWEBPLUGIN_TARGET) $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp \ + extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1099,6 +1171,26 @@ if ENABLE_PULSE_JAVA $(BUILD_OUTPUT_DIR)-debug/j2sdk-image/jre/lib/ext cp -pPRf pulse-java.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib/ext +endif +if WITH_VISUALVM + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + sed "s/APPNAME=\`basename.*\`/APPNAME=visualvm/" \ + visualvm/launcher/visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + chmod a+x $(BUILD_OUTPUT_DIR)/j2sdk-image/bin/jvisualvm ; \ + cp visualvm/launcher/visualvm.conf \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc ; \ + echo visualvm >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + echo profiler3 >> \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/etc/visualvm.clusters ; \ + cp -r visualvm/build/cluster/* \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/platform9 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ + cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ extra-lib/about.jar \ @@ -1666,6 +1758,59 @@ jtregcheck: jtreg check-hotspot check-la check-local: jtregcheck +# VisualVM + +stamps/visualvm.stamp: $(BOOTSTRAP_DIRECTORY_STAMP) stamps/download.stamp \ + stamps/extract.stamp stamps/nbplatform.stamp +if WITH_VISUALVM + cd visualvm ; \ + ln -s $(abs_top_srcdir)/netbeans/nbbuild/netbeans_visualvm netbeans ; \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) build +endif + mkdir -p stamps + touch $@ + +clean-visualvm: + rm -rf visualvm + rm -f stamps/visualvm.stamp + +stamps/nbplatform.stamp: $(BOOTSTRAP_DIRECTORY_STAMP) stamps/extract.stamp \ + stamps/download.stamp +if WITH_VISUALVM + mkdir netbeans ; \ + cd netbeans ; \ + rm nbbuild/external/binaries-list ; \ + rm -r lib.profiler/release/lib/deployed ; \ + mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ + mkdir -p lib.profiler/release/lib/deployed/jdk16/linux ; \ + mkdir -p ./nbbuild/netbeans_visualvm/ ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/platform9/ ./nbbuild/netbeans_visualvm/platform9 ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/apisupport1/ ./nbbuild/netbeans_visualvm/apisupport1 ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/harness/ ./nbbuild/netbeans_visualvm/harness ; \ + cd lib.profiler/native/build ; \ + if ! (uname -a | grep x86_64) ; then \ + buildscript=./buildnative-linux-15.sh ; \ + else \ + buildscript=./buildnative-linux64-15.sh ; \ + fi ; \ + JAVA_HOME_15=$(ICEDTEA_HOME) JAVA_HOME_16=$(ICEDTEA_HOME) \ + $$buildscript ; \ + cd ../../.. ; \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) -Dpermit.jdk6.builds=true \ + -f nbbuild/build.xml bootstrap ; \ + for dir in lib.profiler lib.profiler.ui lib.profiler.common profiler ; do \ + JAVA_HOME=$(ICEDTEA_HOME) $(ANT) -Dpermit.jdk6.builds=true -Dbuildnumber=081204 \ + -Dnetbeans.dest.dir=../nbbuild/netbeans_visualvm \ + -f $$dir/build.xml ; \ + done +endif + mkdir -p stamps + touch $@ + +clean-nbplatform: + rm -rf netbeans + rm -f stamps/nbplatform.stamp + # fsg-tarball # Creates archive of openjdk that is compliant with Free Software guidelines. @@ -1685,6 +1830,10 @@ bootstrap-directory-symlink: stamps/boot cacao: stamps/cacao.stamp +visualvm: stamps/visualvm.stamp + +nbplatform: stamps/nbplatform.stamp + copy-source-files: stamps/copy-source-files.stamp download: stamps/download.stamp diff -r f1fad53c5ab1 -r c5e17bb7fead acinclude.m4 --- a/acinclude.m4 Fri Feb 20 12:41:09 2009 +0000 +++ b/acinclude.m4 Fri Feb 20 12:42:30 2009 +0000 @@ -557,6 +557,31 @@ AC_DEFUN([FIND_XERCES2_JAR], AC_SUBST(XERCES2_JAR) ]) +AC_DEFUN([FIND_NETBEANS], +[ + AC_ARG_WITH([netbeans], + [AS_HELP_STRING(--with-netbeans,specify location of netbeans)], + [ + if test -f "${withval}"; then + AC_MSG_CHECKING(netbeans) + NETBEANS="${withval}" + AC_MSG_RESULT(${withval}) + else + AC_PATH_PROG(NETBEANS, "${withval}") + fi + ], + [ + NETBEANS= + ]) + if test -z "${NETBEANS}"; then + AC_PATH_PROG(NETBEANS, "netbeans") + fi + if test -z "${NETBEANS}"; then + AC_MSG_ERROR("NetBeans was not found.") + fi + AC_SUBST(NETBEANS) +]) + AC_DEFUN([FIND_RHINO_JAR], [ AC_MSG_CHECKING(whether to include Javascript support via Rhino) diff -r f1fad53c5ab1 -r c5e17bb7fead configure.ac --- a/configure.ac Fri Feb 20 12:41:09 2009 +0000 +++ b/configure.ac Fri Feb 20 12:42:30 2009 +0000 @@ -55,6 +55,24 @@ AM_CONDITIONAL(WITH_ICEDTEA, test "${wit AM_CONDITIONAL(WITH_ICEDTEA, test "${with_icedtea}" = true) AC_MSG_RESULT(${with_icedtea}) +AC_MSG_CHECKING([for a NetBeans installation]) +AC_ARG_WITH([netbeans-home], + [AS_HELP_STRING([--with-netbeans-home], + [NetBeans home directory (default is /usr/share/netbeans)])], + [ + if test "x${withval}" = x + then + SYSTEM_NETBEANS_DIR=/usr/share/netbeans + else + SYSTEM_NETBEANS_DIR=${withval} + fi + ], + [ + SYSTEM_NETBEANS_DIR=/usr/share/netbeans + ]) +AC_MSG_RESULT([${SYSTEM_NETBEANS_DIR}]) +AC_SUBST(SYSTEM_NETBEANS_DIR) + AC_MSG_CHECKING([whether to build using an existing installation of OpenJDK]) AC_ARG_WITH([openjdk], [AS_HELP_STRING([--with-openjdk], @@ -90,6 +108,14 @@ AC_ARG_WITH([ant-home], ]) AC_SUBST(SYSTEM_ANT_DIR) AC_MSG_RESULT(${SYSTEM_ANT_DIR}) + +AC_MSG_CHECKING(whether to build VisualVM) +AC_ARG_ENABLE([visualvm], + [AS_HELP_STRING([--enable-visualvm], + [Enable compilation of visualvm.])], + [enable_visualvm="${enableval}"], [enable_visualvm="no"]) +AM_CONDITIONAL(WITH_VISUALVM, test "x${enable_visualvm}" = "xyes") +AC_MSG_RESULT(${enable_visualvm}) AC_MSG_CHECKING([whether to build the LiveConnect plugin]) AC_ARG_ENABLE([liveconnect], @@ -239,6 +265,11 @@ ENABLE_HG ENABLE_HG AC_CHECK_WITH_HG_REVISION +if test "x${enable_visualvm}" = "xyes" +then + FIND_NETBEANS +fi + if test "x${enable_pulse_java}" = "xyes" then FIND_PULSEAUDIO diff -r f1fad53c5ab1 -r c5e17bb7fead patches/hotspot/default/14.0b08/icedtea-6791168.patch --- a/patches/hotspot/default/14.0b08/icedtea-6791168.patch Fri Feb 20 12:41:09 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ ---- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig 2009-01-13 10:15:42.000000000 +0000 -+++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp 2009-01-13 10:17:05.000000000 +0000 -@@ -594,7 +594,7 @@ - __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax); - - // for c++ interpreter can rsi really be munged? -- __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter))); // restore state -+ __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter))); // restore state - __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method))); // restore method - __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals))); // get locals pointer - -@@ -658,7 +658,7 @@ - const Address size_of_stack (rbx, methodOopDesc::max_stack_offset()); - // Always give one monitor to allow us to start interp if sync method. - // Any additional monitors need a check when moving the expression stack -- const one_monitor = frame::interpreter_frame_monitor_size() * wordSize; -+ const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize; - __ load_unsigned_word(rax, size_of_stack); // get size of expression stack in words - __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor)); - __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size)); -@@ -1829,7 +1829,7 @@ - Label unwind_and_forward; - From ahughes at redhat.com Fri Feb 20 04:44:00 2009 From: ahughes at redhat.com (Andrew John Hughes) Date: Fri, 20 Feb 2009 12:44:00 +0000 Subject: changeset in /hg/icedtea6: Add back my main e-mail address. Message-ID: changeset 30c6aac0bf08 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=30c6aac0bf08 description: Add back my main e-mail address. 2009-02-20 Andrew John Hughes * AUTHORS: Add back my main e-mail address. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) AUTHORS | 2 +- ChangeLog | 5 +++++ diffs (24 lines): diff -r c5e17bb7fead -r 30c6aac0bf08 AUTHORS --- a/AUTHORS Fri Feb 20 12:42:30 2009 +0000 +++ b/AUTHORS Fri Feb 20 12:43:47 2009 +0000 @@ -13,7 +13,7 @@ Kyle Galloway Kyle Galloway Dennis Gilmore Andrew Haley -Andrew John Hughes +Andrew John Hughes Tomas Hurka Ioana Ivan Matthias Klose diff -r c5e17bb7fead -r 30c6aac0bf08 ChangeLog --- a/ChangeLog Fri Feb 20 12:42:30 2009 +0000 +++ b/ChangeLog Fri Feb 20 12:43:47 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-20 Andrew John Hughes + + * AUTHORS: + Add back my main e-mail address. + 2009-02-20 Andrew John Hughes * configure.ac: From gnu_andrew at member.fsf.org Fri Feb 20 04:56:03 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 20 Feb 2009 12:56:03 +0000 Subject: RFC: Disable NIO2 by default In-Reply-To: <499EA003.9080506@sun.com> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> Message-ID: <17c6771e0902200456j50e1165cw7529791d740f5942@mail.gmail.com> 2009/2/20 Dalibor Topic : > Andrew John Hughes wrote: >> >> This patch disables NIO2 in the default build. >> >> > > For IcedTea6? IcedTea7? > > cheers, > dalibor topic > > -- > ******************************************************************* > Dalibor Topic ? ? ? ? ? ? ? ? ? Tel: (+49 40) 23 646 738 > Java F/OSS Ambassador ? ? ? ? ? AIM: robiladonaim > Sun Microsystems GmbH ? ? ? ? ? Mobile: (+49 177) 2664 192 > Nagelsweg 55 ? ? ? ? ? ? ? ? ? ?http://openjdk.java.net > D-20097 Hamburg ? ? ? ? ? ? ? ? mailto:Dalibor.Topic at sun.com > Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten > Amtsgericht M?nchen: HRB 161028 > Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer > Vorsitzender des Aufsichtsrates: Martin H?ring > > > > Sorry, IcedTea6, that's all most folks on here seem to care about... :( There's no point disabling it in IcedTea7, it will be in the main tree eventually anyway: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f06f30b29f36 -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From Dalibor.Topic at Sun.COM Fri Feb 20 05:07:50 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 20 Feb 2009 14:07:50 +0100 Subject: RFC: Disable NIO2 by default In-Reply-To: <17c6771e0902200456j50e1165cw7529791d740f5942@mail.gmail.com> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> <17c6771e0902200456j50e1165cw7529791d740f5942@mail.gmail.com> Message-ID: <499EAB26.7020507@sun.com> Andrew John Hughes wrote: > > Sorry, IcedTea6, that's all most folks on here seem to care about... :( > Ah, thanks - it makes sense to disable it by default for IcedTea 6. Thank you for the patch. cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From Dalibor.Topic at Sun.COM Fri Feb 20 05:26:34 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 20 Feb 2009 14:26:34 +0100 Subject: RFC: Disable NIO2 by default In-Reply-To: <499EA380.3020501@gatech.edu> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> <499EA380.3020501@gatech.edu> Message-ID: <499EAF8A.7030104@sun.com> Matthew Flaschen wrote: > Dalibor Topic wrote: > >> Andrew John Hughes wrote: >> >>> This patch disables NIO2 in the default build. >>> >>> >>> >> For IcedTea6? IcedTea7? >> > > Dalibor, 9708fffb863d is only a valid revision id for icedtea6. > I think that's a short changeset ID in Mercurial terminology. ;) I'm not sure how one gets from short changeset ID to discovering which repository it is valid in though - the id seems to short to, say, encode the URL of the repository. Is there a general way to do that, other the manually checking each repository one suspects a changeset may be valid for? cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From gbenson at redhat.com Fri Feb 20 06:20:39 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 20 Feb 2009 14:20:39 +0000 Subject: Upstreaming Zero Message-ID: <20090220142039.GD3277@redhat.com> Hi all, I kicked off the process of getting Zero into the upstream OpenJDK sources, by filing a bug for the core build patch: https://bugs.openjdk.java.net/show_bug.cgi?id=100011 The patches in IcedTea will need attention once this stuff starts being committed to OpenJDK. For IcedTea7 it should be simple; the corresponding patches can simply be deleted. IcedTea6 will be trickier -- the HotSpot changes will come when the HotSpot tarball changes, but changes outside that won't, so the non-HotSpot parts will need retaining and in some cases modifying. I can help with all of this, but only if I know you need help! If anyone plans to either bump IcedTea7 to a new OpenJDK build, or to bump the HotSpot in IcedTea6, then please let me know. Building IcedTea7 directly from hg (rather than using a release) will be problematic during the transition period. I don't see an easy way around this, but it should be fairly simple to work around for non-Zero builds. Shout me if you're having problems and I'll help. Cheers, Gary -- http://gbenson.net/ From bugzilla-daemon at icedtea.classpath.org Fri Feb 20 07:14:18 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 20 Feb 2009 15:14:18 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #165|application/octet-stream |text/plain mime type| | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Feb 20 07:14:35 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 20 Feb 2009 15:14:35 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #164|application/octet-stream |text/plain mime type| | -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From matthew.flaschen at gatech.edu Fri Feb 20 07:22:07 2009 From: matthew.flaschen at gatech.edu (Matthew Flaschen) Date: Fri, 20 Feb 2009 10:22:07 -0500 Subject: RFC: Disable NIO2 by default In-Reply-To: <499EAF8A.7030104@sun.com> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> <499EA380.3020501@gatech.edu> <499EAF8A.7030104@sun.com> Message-ID: <499ECA9F.6020002@gatech.edu> Dalibor Topic wrote: >> Dalibor, 9708fffb863d is only a valid revision id for icedtea6. >> > I think that's a short changeset ID in Mercurial terminology. ;) Fair enough. > I'm not sure how one gets from short changeset ID to discovering which > repository > it is valid in though - the id seems to short to, say, encode the URL of > the repository. There's no way to get a URL or any other information directly from the ID. If there was that would be a security vulnerability. :) > Is there a general way to do that, other the manually checking each > repository one > suspects a changeset may be valid for? No. However, in this case there aren't that many choices... Matt Flaschen From Dalibor.Topic at Sun.COM Fri Feb 20 07:34:49 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 20 Feb 2009 16:34:49 +0100 Subject: RFC: Disable NIO2 by default In-Reply-To: <499ECA9F.6020002@gatech.edu> References: <20090220110140.GA5683@rivendell.middle-earth.co.uk> <499EA003.9080506@sun.com> <499EA380.3020501@gatech.edu> <499EAF8A.7030104@sun.com> <499ECA9F.6020002@gatech.edu> Message-ID: <499ECD99.50502@sun.com> Matthew Flaschen wrote: >> Is there a general way to do that, other the manually checking each >> repository one >> suspects a changeset may be valid for? >> > > No. However, in this case there aren't that many choices... > There is more then one - so it's a polite thing to say which one the changeset is intended for, as Andrew kindly did. cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From gbenson at redhat.com Fri Feb 20 07:39:34 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 20 Feb 2009 15:39:34 +0000 Subject: changeset in /hg/icedtea6: 2009-02-20 Gary Benson changeset e811450b7381 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e811450b7381 description: 2009-02-20 Gary Benson * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: Fixed conditional. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 2 +- diffs (24 lines): diff -r 30c6aac0bf08 -r e811450b7381 ChangeLog --- a/ChangeLog Fri Feb 20 12:43:47 2009 +0000 +++ b/ChangeLog Fri Feb 20 10:36:20 2009 -0500 @@ -1,3 +1,8 @@ 2009-02-20 Andrew John Hughes + + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Fixed conditional. + 2009-02-20 Andrew John Hughes * AUTHORS: diff -r 30c6aac0bf08 -r e811450b7381 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Fri Feb 20 12:43:47 2009 +0000 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Fri Feb 20 10:36:20 2009 -0500 @@ -23,7 +23,7 @@ * */ -#ifdef __PPC +#ifdef PPC #define READ_MEM_BARRIER __asm __volatile ("isync":::"memory") #ifdef __NO_LWSYNC__ From langel at redhat.com Fri Feb 20 08:36:08 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 20 Feb 2009 16:36:08 +0000 Subject: changeset in /hg/icedtea6: 2009-02-20 Lillian Angel changeset 2a6a1bd55bb8 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2a6a1bd55bb8 description: 2009-02-20 Lillian Angel * Makefile.am: Updated md5sum for NETBEANS_PROFILER_MD5SUM, and therefore no longer need to remove deployed directory. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 5 +++++ Makefile.am | 3 +-- diffs (32 lines): diff -r e811450b7381 -r 2a6a1bd55bb8 ChangeLog --- a/ChangeLog Fri Feb 20 10:36:20 2009 -0500 +++ b/ChangeLog Fri Feb 20 11:36:04 2009 -0500 @@ -1,3 +1,8 @@ 2009-02-20 Gary Benson + + * Makefile.am: Updated md5sum for NETBEANS_PROFILER_MD5SUM, and + therefore no longer need to remove deployed directory. + 2009-02-20 Gary Benson * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: diff -r e811450b7381 -r 2a6a1bd55bb8 Makefile.am --- a/Makefile.am Fri Feb 20 10:36:20 2009 -0500 +++ b/Makefile.am Fri Feb 20 11:36:04 2009 -0500 @@ -5,7 +5,7 @@ CACAO_VERSION = 0.99.3 CACAO_VERSION = 0.99.3 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8 -NETBEANS_PROFILER_MD5SUM = 35f9dc474dfc19ed3713f362139b099a +NETBEANS_PROFILER_MD5SUM = 786ab31817cbd902a7211cd6a6161750 VISUALVM_MD5SUM = 1174486e82a65840b44c47166d79f212 if ENABLE_GCJWEBPLUGIN @@ -1780,7 +1780,6 @@ if WITH_VISUALVM mkdir netbeans ; \ cd netbeans ; \ rm nbbuild/external/binaries-list ; \ - rm -r lib.profiler/release/lib/deployed ; \ mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ mkdir -p lib.profiler/release/lib/deployed/jdk16/linux ; \ mkdir -p ./nbbuild/netbeans_visualvm/ ; \ From gnu_andrew at member.fsf.org Fri Feb 20 08:42:06 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 20 Feb 2009 16:42:06 +0000 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <1235035430.3597.14.camel@hermans.wildebeest.org> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <1234950462.2322.9.camel@fedora.wildebeest.org> <1234951783.5094.17.camel@localhost.localdomain> <1235035430.3597.14.camel@hermans.wildebeest.org> Message-ID: <17c6771e0902200842l15c7b892rcd352de3286aafbd@mail.gmail.com> 2009/2/19 Mark Wielaard : > Hi Christian, > > On Wed, 2009-02-18 at 11:09 +0100, Christian Thalinger wrote: >> On Wed, 2009-02-18 at 10:47 +0100, Mark Wielaard wrote: >> > Yes, my plan was to branch at the commit just before the HS15 tag in >> > jdk7/jdk7/hotspot appeared. But it would be good to get confirmation >> > that is the right branch point. >> >> I can look that up again... ?The changeset right before the fork is: >> >> fc6a5ae3fef5 >> >> which bumps the HotSpot version to 14.0-b10. > > Thanks. I am waiting for Joe to reveal the open hs14 repo that he wants > to base openjdk6 on first though before creating another one for now. > Unless that takes too long of course, then we can always start tracking > from that revision. > We can bump IcedTea6 to that revision now with a one-line change, then wait for post-14 changes from a backported HotSpot tree. >> But I was also told that 14 isn't stable yet, it's just in the >> stabilization phase. ?When you really want something rock solid you >> should go with HS11. > > Yes, you can even get this with icedtea configure > --with-hotspot-build=original but that needs more patches (e.g for sparc > support) and for zero/shark it is too old, so it needs too much > backporting to keep current in the long run. > Now we are post 1.4, the plan is to drop support for that, unless someone is interested in maintaining it. Anyone? > Cheers, > > Mark > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Fri Feb 20 08:42:39 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 20 Feb 2009 16:42:39 +0000 Subject: changeset in /hg/icedtea6: 2009-02-20 Gary Benson changeset c6aff898c0b7 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c6aff898c0b7 description: 2009-02-20 Gary Benson * patches/icedtea-zero-build.patch: Make Zero builds say "Zero" in the VM version string as opposed to "Core". * patches/hotspot/default/icedtea-shark.patch: Fixup for the above. diffstat: 3 files changed, 26 insertions(+), 8 deletions(-) ChangeLog | 7 +++++++ patches/hotspot/default/icedtea-shark.patch | 11 +++++------ patches/icedtea-zero-build.patch | 16 ++++++++++++++-- diffs (79 lines): diff -r 2a6a1bd55bb8 -r c6aff898c0b7 ChangeLog --- a/ChangeLog Fri Feb 20 11:36:04 2009 -0500 +++ b/ChangeLog Fri Feb 20 11:39:27 2009 -0500 @@ -1,3 +1,10 @@ 2009-02-20 Lillian Angel + + * patches/icedtea-zero-build.patch: Make Zero builds say "Zero" + in the VM version string as opposed to "Core". + + * patches/hotspot/default/icedtea-shark.patch: Fixup for the above. + 2009-02-20 Lillian Angel * Makefile.am: Updated md5sum for NETBEANS_PROFILER_MD5SUM, and diff -r 2a6a1bd55bb8 -r c6aff898c0b7 patches/hotspot/default/icedtea-shark.patch --- a/patches/hotspot/default/icedtea-shark.patch Fri Feb 20 11:36:04 2009 -0500 +++ b/patches/hotspot/default/icedtea-shark.patch Fri Feb 20 11:39:27 2009 -0500 @@ -84,7 +84,7 @@ if (ProfileInterpreter) { --- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp.orig 2008-12-03 14:23:37.000000000 +0000 +++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-12-03 14:33:48.000000000 +0000 -@@ -94,12 +94,16 @@ +@@ -94,6 +94,9 @@ #ifdef TIERED #define VMTYPE "Server" #else @@ -92,12 +92,11 @@ + #define VMTYPE "Shark" +#else #if defined(COMPILER1) || defined(COMPILER2) -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") - #else + #define VMTYPE COMPILER1_PRESENT("Client") \ + COMPILER2_PRESENT("Server") +@@ -104,6 +107,7 @@ #define VMTYPE "Core" + #endif // ZERO #endif // COMPILER1 || COMPILER2 +#endif // SHARK #endif // TIERED diff -r 2a6a1bd55bb8 -r c6aff898c0b7 patches/icedtea-zero-build.patch --- a/patches/icedtea-zero-build.patch Fri Feb 20 11:36:04 2009 -0500 +++ b/patches/icedtea-zero-build.patch Fri Feb 20 11:39:27 2009 -0500 @@ -173,18 +173,30 @@ diff -r b5e5d2ef906a openjdk/hotspot/src diff -r b5e5d2ef906a openjdk/hotspot/src/share/vm/runtime/vm_version.cpp --- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp Thu Jun 19 17:05:23 2008 +0100 +++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp Fri Jun 20 10:29:14 2008 +0100 +@@ -98,7 +98,11 @@ + #define VMTYPE COMPILER1_PRESENT("Client") \ + COMPILER2_PRESENT("Server") + #else ++#ifdef ZERO ++ #define VMTYPE "Zero" ++#else + #define VMTYPE "Core" ++#endif // ZERO + #endif // COMPILER1 || COMPILER2 + #endif // TIERED + #endif // KERNEL @@ -143,10 +143,14 @@ const char* Abstract_VM_Version::vm_rele WINDOWS_ONLY("windows") \ SOLARIS_ONLY("solaris") -+#ifdef ZERO_LIBARCH ++#ifdef ZERO +#define CPU ZERO_LIBARCH +#else #define CPU IA32_ONLY("x86") \ IA64_ONLY("ia64") \ AMD64_ONLY("amd64") \ SPARC_ONLY("sparc") -+#endif // ZERO_LIBARCH ++#endif // ZERO const char *Abstract_VM_Version::vm_platform_string() { return OS "-" CPU; From gnu_andrew at member.fsf.org Fri Feb 20 08:44:39 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 20 Feb 2009 16:44:39 +0000 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> Message-ID: <17c6771e0902200844r2b1033a2xf614a8ae1edefe64@mail.gmail.com> 2009/2/17 Volker Simonis : > As far as I understand the procedure, the HS14 has been branched at > some time in the past and is now "stabilized" in an Sun-internal > repository in order to become the next, officially released "Express" > VM for JDK6. It's quite sad that, here we are, nearly two years after OpenJDK was released (and more than two years for HotSpot), yet no-one thought that this should have been done in an open and transparent way. What exactly is special about this internal tree that this couldn't just have been done on hg.openjdk.net? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Fri Feb 20 08:45:17 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 20 Feb 2009 16:45:17 +0000 Subject: Zero identification In-Reply-To: <1234952061.2322.22.camel@fedora.wildebeest.org> References: <20090217104436.GA3246@redhat.com> <1234952061.2322.22.camel@fedora.wildebeest.org> Message-ID: <20090220164517.GI3277@redhat.com> Mark Wielaard wrote: > On Tue, 2009-02-17 at 10:44 +0000, Gary Benson wrote: > > The odd one out is Zero, which identifies itself like this: > > > > OpenJDK Core VM (build 14.0-b08, interpreted mode) > > > > Would anyone object if I changed the "Core" to "Zero"? > > That would be good. > I hadn't realized "Core" was a generic identifier instead of > identifying Zero specifically. There are probably others who > didn't realize or knew they were using Zero when they saw Core. Changed. A lot of patches touch the file that text is defined in, so please let me know if I broke something. Cheers, Gary -- http://gbenson.net/ From gbenson at redhat.com Fri Feb 20 09:25:09 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 20 Feb 2009 17:25:09 +0000 Subject: changeset in /hg/icedtea6: 2009-02-20 Gary Benson changeset c017a717f617 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c017a717f617 description: 2009-02-20 Gary Benson * patches/icedtea-cc-interp-backedge.patch: New file. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * HACKING: Document the above. diffstat: 4 files changed, 22 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ HACKING | 1 + Makefile.am | 3 ++- patches/icedtea-cc-interp-backedge.patch | 13 +++++++++++++ diffs (54 lines): diff -r c6aff898c0b7 -r c017a717f617 ChangeLog --- a/ChangeLog Fri Feb 20 11:39:27 2009 -0500 +++ b/ChangeLog Fri Feb 20 12:21:56 2009 -0500 @@ -1,3 +1,9 @@ 2009-02-20 Gary Benson + + * patches/icedtea-cc-interp-backedge.patch: New file. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + * HACKING: Document the above. + 2009-02-20 Gary Benson * patches/icedtea-zero-build.patch: Make Zero builds say "Zero" diff -r c6aff898c0b7 -r c017a717f617 HACKING --- a/HACKING Fri Feb 20 11:39:27 2009 -0500 +++ b/HACKING Fri Feb 20 12:21:56 2009 -0500 @@ -83,6 +83,7 @@ The following patches are currently appl * icedtea-includedb.patch: Add missing include files. * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). * icedtea-java2d-dasher.patch: Fix interpretation of dash array elements in BasicStroke (S6793344). +* icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. The following patches are only applied to OpenJDK6 in IcedTea6: diff -r c6aff898c0b7 -r c017a717f617 Makefile.am --- a/Makefile.am Fri Feb 20 11:39:27 2009 -0500 +++ b/Makefile.am Fri Feb 20 12:21:56 2009 -0500 @@ -659,7 +659,8 @@ ICEDTEA_PATCHES += \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ patches/icedtea-java2d-dasher.patch \ - patches/hotspot/$(HSBUILD)/icedtea-format.patch + patches/hotspot/$(HSBUILD)/icedtea-format.patch \ + patches/icedtea-cc-interp-backedge.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r c6aff898c0b7 -r c017a717f617 patches/icedtea-cc-interp-backedge.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-cc-interp-backedge.patch Fri Feb 20 12:21:56 2009 -0500 @@ -0,0 +1,13 @@ +diff -r e0f4330c215b openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 16:46:08 2009 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Feb 20 17:12:20 2009 +0000 +@@ -296,9 +296,6 @@ + istate->set_osr_entry(osr_nmethod->osr_entry()); \ + return; \ + } \ +- } else { \ +- INCR_INVOCATION_COUNT; \ +- SAFEPOINT; \ + } \ + } /* UseCompiler ... */ \ + INCR_INVOCATION_COUNT; \ From James.Melvin at Sun.COM Fri Feb 20 09:42:01 2009 From: James.Melvin at Sun.COM (James Melvin) Date: Fri, 20 Feb 2009 12:42:01 -0500 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <17c6771e0902200844r2b1033a2xf614a8ae1edefe64@mail.gmail.com> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <17c6771e0902200844r2b1033a2xf614a8ae1edefe64@mail.gmail.com> Message-ID: <499EEB69.1060605@sun.com> Hi Andrew, The basic reasoning behind the HS14 fork is two-fold... 1) Lock down HS14 for extensive product-level testing and stabilization 2) Open HS15 for new work, some of which may require extended bake time Work on the HS14 internal repository is also pushed to the OpenJDK repository (now HS15). So, this is just a means to isolate one of many moving parts in Java SE for productization and delivery. - Jim Andrew John Hughes wrote: > 2009/2/17 Volker Simonis : >> As far as I understand the procedure, the HS14 has been branched at >> some time in the past and is now "stabilized" in an Sun-internal >> repository in order to become the next, officially released "Express" >> VM for JDK6. > > It's quite sad that, here we are, nearly two years after OpenJDK was > released (and more than two years for HotSpot), yet no-one thought > that this should have been done in an open and transparent way. What > exactly is special about this internal tree that this couldn't just > have been done on hg.openjdk.net? From gnu_andrew at member.fsf.org Fri Feb 20 10:17:27 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 20 Feb 2009 18:17:27 +0000 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <499EEB69.1060605@sun.com> References: <20090212150029.GA1121@rivendell.middle-earth.co.uk> <1234731237.3562.6.camel@hermans.wildebeest.org> <17c6771e0902151453t523b15derfc243ffaa201264f@mail.gmail.com> <1234768690.24153.28.camel@localhost.localdomain> <1234772748.3612.3.camel@hermans.wildebeest.org> <1234774554.11228.3.camel@localhost.localdomain> <1234862105.4062.8.camel@fedora.wildebeest.org> <17c6771e0902200844r2b1033a2xf614a8ae1edefe64@mail.gmail.com> <499EEB69.1060605@sun.com> Message-ID: <17c6771e0902201017h79c40662xd9423813306e2f7f@mail.gmail.com> 2009/2/20 James Melvin : > Hi Andrew, > > The basic reasoning behind the HS14 fork is two-fold... > > 1) Lock down HS14 for extensive product-level testing and stabilization > 2) Open HS15 for new work, some of which may require extended bake time > > Work on the HS14 internal repository is also pushed to the OpenJDK > repository (now HS15). So, this is just a means to isolate one of many > moving parts in Java SE for productization and delivery. > > - Jim > > > > > > > > Andrew John Hughes wrote: >> >> 2009/2/17 Volker Simonis : >>> >>> As far as I understand the procedure, the HS14 has been branched at >>> some time in the past and is now "stabilized" in an Sun-internal >>> repository in order to become the next, officially released "Express" >>> VM for JDK6. >> >> It's quite sad that, here we are, nearly two years after OpenJDK was >> released (and more than two years for HotSpot), yet no-one thought >> that this should have been done in an open and transparent way. ?What >> exactly is special about this internal tree that this couldn't just >> have been done on hg.openjdk.net? > Hi Jim, I quite agree with the reasons for the branch, that in itself is a very sensible approach. My issue was with why the stable branch, when created, was not simply done publicly. It's not like anyone can just commit anything they want to it anyway, and a stable HotSpot is valuable for others outside Sun. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mr at sun.com Fri Feb 20 12:22:51 2009 From: mr at sun.com (Mark Reinhold) Date: Fri, 20 Feb 2009 12:22:51 -0800 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: gnu_andrew@member.fsf.org; Fri, 20 Feb 2009 18:17:27 GMT; <17c6771e0902201017h79c40662xd9423813306e2f7f@mail.gmail.com> Message-ID: <20090220202251.C6173291845@eggemoggin.niobe.net> > Date: Fri, 20 Feb 2009 18:17:27 +0000 > From: Andrew John Hughes > 2009/2/20 james.melvin at sun.com: >> The basic reasoning behind the HS14 fork is two-fold... >> >> ... > > I quite agree with the reasons for the branch, that in itself is a > very sensible approach. My issue was with why the stable branch, when > created, was not simply done publicly. It's not like anyone can just > commit anything they want to it anyway, and a stable HotSpot is > valuable for others outside Sun. As I understand it, the real reason the fork of HS14 wasn't done in the open is fairly prosaic: Sun's proprietary 6uX update releases are still based on TeamWare, our old internal SCM, rather than Mercurial. When a HotSpot "Express" snapshot is taken from JDK 7 it's first converted into TeamWare, and that's where the stabilization work is done. Joe Darcy has been working with the HotSpot team to revise this practice so that such work can take place in the open. Hopefully he'll have some news on that soon. - Mark From James.Melvin at Sun.COM Fri Feb 20 12:58:23 2009 From: James.Melvin at Sun.COM (James Melvin) Date: Fri, 20 Feb 2009 15:58:23 -0500 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <20090220202251.C6173291845@eggemoggin.niobe.net> References: <20090220202251.C6173291845@eggemoggin.niobe.net> Message-ID: <499F196F.4030002@sun.com> Hi Mark, Actually, the Hotspot engineering work is all done in Mercurial. For the JDK6 RE build, we lazily create a disposable Teamware workspace from the Mercurial repository... hotspot.gpl - Mercurial (read-write) hotspot - Teamware (read-only, regenerated for builds) This mitigates the Mercurial <--> Teamware SCM nightmares. - Jim Mark Reinhold wrote: >> Date: Fri, 20 Feb 2009 18:17:27 +0000 >> From: Andrew John Hughes > >> 2009/2/20 james.melvin at sun.com: >>> The basic reasoning behind the HS14 fork is two-fold... >>> >>> ... >> I quite agree with the reasons for the branch, that in itself is a >> very sensible approach. My issue was with why the stable branch, when >> created, was not simply done publicly. It's not like anyone can just >> commit anything they want to it anyway, and a stable HotSpot is >> valuable for others outside Sun. > > As I understand it, the real reason the fork of HS14 wasn't done in the > open is fairly prosaic: Sun's proprietary 6uX update releases are still > based on TeamWare, our old internal SCM, rather than Mercurial. When a > HotSpot "Express" snapshot is taken from JDK 7 it's first converted into > TeamWare, and that's where the stabilization work is done. > > Joe Darcy has been working with the HotSpot team to revise this practice > so that such work can take place in the open. Hopefully he'll have some > news on that soon. > > - Mark From mr at sun.com Fri Feb 20 13:01:40 2009 From: mr at sun.com (Mark Reinhold) Date: Fri, 20 Feb 2009 13:01:40 -0800 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: james.melvin@sun.com; Fri, 20 Feb 2009 15:58:23 EST; <499F196F.4030002@sun.com> Message-ID: <20090220210140.993B3291846@eggemoggin.niobe.net> > Date: Fri, 20 Feb 2009 15:58:23 -0500 > From: james.melvin at sun.com > Actually, the Hotspot engineering work is all done in Mercurial. Ah, good; it seems that I was misinformed. > For the JDK6 RE build, we lazily create a disposable Teamware > workspace from the Mercurial repository... > > hotspot.gpl - Mercurial (read-write) > hotspot - Teamware (read-only, regenerated for builds) > > This mitigates the Mercurial <--> Teamware SCM nightmares. It also makes it all the easier for the stabilization work to be done in the open. - Mark From mvfranz at gmail.com Sun Feb 22 09:59:22 2009 From: mvfranz at gmail.com (Michael Franz) Date: Sun, 22 Feb 2009 12:59:22 -0500 Subject: IcedTea Bootstrap Process In-Reply-To: References: Message-ID: As a followup, when bootstrapping on a platform that does not have OpenJDK and using gjc, where does libverify come from? On Tue, Jan 13, 2009 at 7:22 PM, Michael Franz wrote: > Hi, > > I have been trying to find documentation on how the bootstrap build works > on IcedTea, but have not found it. I have tried to read the Makefile, but I > must admit I am not that proficient with makefiles. > > If there is no documentation, perhaps answers to these question will help > me. > > 1. How many passes (full compilations) are there done on the source before > the final jdk is complete? > 2. How much (if any) of the source that is being built is compiled and put > into the rt-closed.jar? > 3. Is rt-closed.jar all that should be needed to compile the JDK the first > time? > 4. What is the expected results of a successful bootstrap? > > Thanks > > Michael > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090222/efe1fe87/attachment.html From bugzilla-daemon at icedtea.classpath.org Sun Feb 22 20:59:29 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 23 Feb 2009 04:59:29 +0000 Subject: [Bug 192] com.sun.image.codec.jpeg doesn't work with ImageJ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=192 junk4me46806 at yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #91 is|0 |1 obsolete| | Attachment #92 is|0 |1 obsolete| | Attachment #93 is|0 |1 obsolete| | ------- Comment #16 from junk4me46806 at yahoo.com 2009-02-23 04:59 ------- Created an attachment (id=166) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=166&action=view) Partial Implementation of com.sun.image.codec.jpeg which includes basic encode functionality I ran into this problem as well. I started with the code from my icedtea installation (which was Matthew's code with the headers changed). After a few days I arrived at the attached code containing a working encoder. The JPEGEncodeParam class is minimal and the only feature that it supports is changing the quality (but who ever changes the encoding tables anyway?). Also included is Matthew's decoder test code (with minor changes) and my test code for the encoder (heavily copied from Matthew's decoder test). The new encoder worked on a sample image with the default quality (0.9) and a variable quality. It worked well for buffered images, but the color model for the raster method was messed up (which makes sense, so I am going to call it working). I have made no attempt to merge this back into the icedtea tree. As a final note, when debugging the jre always takes classes from the system rt.jar if they are present and does not let a local class override this behaviour. I got around this by editing my rt.jar with file-roller to remove the existing implementation and then adding my implementation when I was done. This is exceedingly ugly, but it did work. I am running: IcedTea6 1.4 (Gentoo) Runtime Environment (build 1.6.0_0-b14) OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode) Your mileage may vary. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mark at klomp.org Sun Feb 22 23:52:58 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 23 Feb 2009 08:52:58 +0100 Subject: IcedTea6 releases Message-ID: <1235375578.2279.57.camel@fedora.wildebeest.org> Hi, One of the things we discussed at Fosdem was how to coordinate releases. We agreed that in principle everybody should be able to "call a release", at least for IcedTea6. In principle that tree should always be in releasable state. That said, it is still a good idea to have a stabilization period, where no new features are added, and only (regression) fixes are done. But this also shouldn't block all other work. So to help with that we thought it would be a good idea to have a separate "release tree". We tried in-tree-branches, the cacao work was for a time an in-tree branch, but that wasn't a complete success. So for now we wanted to go with a separate repo that someone can "claim" when doing the release. They will then be responsible for updating the release tree to the current icedtea6 tree, call for test results, merge in any needed regression fixes, tag and finally release. Finally the release tree should be merged to the main icedtea6 tree to make sure that they are in sync again, tags are propagated to the main tree, etc. and the whole process can start from the top. The above assumes that all releases will be linear progressions from the current IcedTea6 tree. No "minor" releases from a previous major release, while we also do a new "major" release (IcedTea7 will be for the really crazy stuff anyway). I think this will work out for IcedTea6 because in principle there will only be new features and bug fixes (the disappearance and reappearance of visualvm might be an exception though). If however we want to do backward, minor releases, then we might just have to create either another release tree. I created a "release tree" as releases/icedtea6 ssh://icedtea.classpath.org/hg/release/icedtea6 or http://icedtea.classpath.org/hg/release/icedtea6 This tree will not generate commit messages, but syncing it back with the main tree will, so you can easily see which bug fixes and tags were added during the release process. I don't believe extra commit messages are necessary for this tree because the "release master" will be the only person responsible for doing commits to this tree during the cycle. Comments, suggestions and friendly flames welcome, Mark From aph at redhat.com Mon Feb 23 02:28:34 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 23 Feb 2009 10:28:34 +0000 Subject: IcedTea Bootstrap Process In-Reply-To: References: Message-ID: <49A27A52.8040408@redhat.com> Michael Franz wrote: > As a followup, when bootstrapping on a platform that does not have OpenJDK > and using gjc, where does libverify come from? It's gcj. libverify doesn't come from anywhere: as far as I can tell it isn't needed in the first stage of the build. Andrew. From gbenson at redhat.com Mon Feb 23 02:33:35 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 23 Feb 2009 10:33:35 +0000 Subject: changeset in /hg/icedtea6: 2009-02-23 Gary Benson changeset c90d22c7678d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c90d22c7678d description: 2009-02-23 Gary Benson * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp (CppInterpreter::deopt_entry): Remove Shark conditional. * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp (frame::patch_pc): Likewise. * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp (Deoptimization::unwind_callee_save_values): Likewise. * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp (NativeJump::check_verified_entry_alignment): Likewise. * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp (NativeJump::patch_verified_entry): Likewise. * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp (Deoptimization::last_frame_adjust): Likewise. diffstat: 7 files changed, 17 insertions(+), 23 deletions(-) ChangeLog | 15 +++++++++++++++ ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 4 ---- ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 4 ---- ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp | 3 --- ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp | 4 ---- ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp | 6 ++---- ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp | 4 ---- diffs (116 lines): diff -r c017a717f617 -r c90d22c7678d ChangeLog --- a/ChangeLog Fri Feb 20 12:21:56 2009 -0500 +++ b/ChangeLog Mon Feb 23 10:33:28 2009 +0000 @@ -1,3 +1,18 @@ 2009-02-20 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (CppInterpreter::deopt_entry): Remove Shark conditional. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp + (frame::patch_pc): Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp + (Deoptimization::unwind_callee_save_values): Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp + (NativeJump::check_verified_entry_alignment): Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp + (NativeJump::patch_verified_entry): Likewise. + * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp + (Deoptimization::last_frame_adjust): Likewise. + 2009-02-20 Gary Benson * patches/icedtea-cc-interp-backedge.patch: New file. diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Mon Feb 23 10:33:28 2009 +0000 @@ -902,11 +902,7 @@ address CppInterpreter::return_entry(Tos address CppInterpreter::deopt_entry(TosState state, int length) { -#ifdef SHARK return NULL; -#else - Unimplemented(); -#endif // SHARK } // Helper for (runtime) stack overflow checks diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Mon Feb 23 10:33:28 2009 +0000 @@ -106,14 +106,10 @@ BasicObjectLock* frame::interpreter_fram void frame::patch_pc(Thread* thread, address pc) { -#ifdef SHARK // We borrow this call to set the thread pointer in the interpreter // state; the hook to set up deoptimized frames isn't supplied it. assert(pc == NULL, "should be"); get_interpreterState()->set_thread((JavaThread *) thread); -#else - Unimplemented(); -#endif // SHARK } bool frame::safe_for_sender(JavaThread *thread) diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Mon Feb 23 10:33:28 2009 +0000 @@ -68,7 +68,4 @@ void Deoptimization::unwind_callee_save_ void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { -#ifndef SHARK - Unimplemented(); -#endif // !SHARK } diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Mon Feb 23 10:33:28 2009 +0000 @@ -40,7 +40,6 @@ void NativeJump::patch_verified_entry(ad address verified_entry, address dest) { -#ifdef SHARK assert(dest == SharedRuntime::get_handle_wrong_method_stub(), "should be"); #ifdef CC_INTERP @@ -48,7 +47,4 @@ void NativeJump::patch_verified_entry(ad #else Unimplemented(); #endif // CC_INTERP -#else - Unimplemented(); -#endif // SHARK } diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Mon Feb 23 10:33:28 2009 +0000 @@ -181,10 +181,8 @@ class NativeJump : public NativeInstruct } static void check_verified_entry_alignment(address entry, - address verified_entry) { -#ifndef SHARK - Unimplemented(); -#endif // !SHARK + address verified_entry) + { } static void patch_verified_entry(address entry, diff -r c017a717f617 -r c90d22c7678d ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Fri Feb 20 12:21:56 2009 -0500 +++ b/ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Mon Feb 23 10:33:28 2009 +0000 @@ -69,11 +69,7 @@ nmethod *SharedRuntime::generate_native_ int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) { -#ifdef SHARK return 0; -#else - Unimplemented(); -#endif // SHARK } uint SharedRuntime::out_preserve_stack_slots() From aph at redhat.com Mon Feb 23 02:35:15 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 23 Feb 2009 10:35:15 +0000 Subject: IcedTea6 releases In-Reply-To: <1235375578.2279.57.camel@fedora.wildebeest.org> References: <1235375578.2279.57.camel@fedora.wildebeest.org> Message-ID: <49A27BE3.7090107@redhat.com> Mark Wielaard wrote: > Hi, > > One of the things we discussed at Fosdem was how to coordinate releases. > We agreed that in principle everybody should be able to "call a > release", at least for IcedTea6. In principle that tree should always be > in releasable state. That said, it is still a good idea to have a > stabilization period, where no new features are added, and only > (regression) fixes are done. But this also shouldn't block all other > work. > > So to help with that we thought it would be a good idea to have a > separate "release tree". We tried in-tree-branches, the cacao work was > for a time an in-tree branch, but that wasn't a complete success. > > So for now we wanted to go with a separate repo that someone can "claim" > when doing the release. They will then be responsible for updating the > release tree to the current icedtea6 tree, call for test results, merge > in any needed regression fixes, tag and finally release. Sure, but there's no need to re-use the same release tree. Once the release is done, further bug fixes may be needed against the same release, so a release tree should never be re-used. > Finally the release tree should be merged to the main icedtea6 tree to > make sure that they are in sync again, tags are propagated to the main > tree, etc. and the whole process can start from the top. I think that in most cases bug fixes go in the other direction: they are committed to trunk and to live release branches. The only exception to this is normally when a patch is inappropriate. > The above assumes that all releases will be linear progressions from the > current IcedTea6 tree. No "minor" releases from a previous major > release, while we also do a new "major" release (IcedTea7 will be for > the really crazy stuff anyway). I think this will work out for IcedTea6 > because in principle there will only be new features and bug fixes (the > disappearance and reappearance of visualvm might be an exception > though). If however we want to do backward, minor releases, then we > might just have to create either another release tree. > > I created a "release tree" as releases/icedtea6 > ssh://icedtea.classpath.org/hg/release/icedtea6 or > http://icedtea.classpath.org/hg/release/icedtea6 > > This tree will not generate commit messages, but syncing it back with > the main tree will, so you can easily see which bug fixes and tags were > added during the release process. I don't believe extra commit messages > are necessary for this tree because the "release master" will be the > only person responsible for doing commits to this tree during the cycle. > > Comments, suggestions and friendly flames welcome, The above is all wrong. If we're to make such a radical departure from well-established practice we have to have a damn good reason. AFAIK there is no such reason, so we must not do this. Andrew. From doko at ubuntu.com Mon Feb 23 03:37:25 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 23 Feb 2009 12:37:25 +0100 Subject: IcedTea6 releases In-Reply-To: <1235375578.2279.57.camel@fedora.wildebeest.org> References: <1235375578.2279.57.camel@fedora.wildebeest.org> Message-ID: <49A28A75.7050000@ubuntu.com> Mark Wielaard schrieb: > So to help with that we thought it would be a good idea to have a > separate "release tree". We tried in-tree-branches, the cacao work was > for a time an in-tree branch, but that wasn't a complete success. to get more coverage for cacao, it would be nice to build cacao as an additional vm, and make this available as an option, adding to -client and -server an -cacao option. This needs a conditional in the launchers not to start a new thread, but otherwise the changes seem to be limited. Not sure if Zero/Shark could be built this way as well. Matthias From Christian.Thalinger at Sun.COM Mon Feb 23 04:45:26 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Mon, 23 Feb 2009 13:45:26 +0100 Subject: IcedTea6 releases In-Reply-To: <49A28A75.7050000@ubuntu.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A28A75.7050000@ubuntu.com> Message-ID: <1235393126.11128.66.camel@localhost.localdomain> On Mon, 2009-02-23 at 12:37 +0100, Matthias Klose wrote: > Mark Wielaard schrieb: > > So to help with that we thought it would be a good idea to have a > > separate "release tree". We tried in-tree-branches, the cacao work was > > for a time an in-tree branch, but that wasn't a complete success. > > to get more coverage for cacao, it would be nice to build cacao as an additional > vm, and make this available as an option, adding to -client and -server an > -cacao option. This needs a conditional in the launchers not to start a new > thread, but otherwise the changes seem to be limited. Not sure if Zero/Shark > could be built this way as well. Good idea. And it actually would work. -- Christian From gbenson at redhat.com Mon Feb 23 04:53:06 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 23 Feb 2009 12:53:06 +0000 Subject: changeset in /hg/icedtea6: 2009-02-23 Gary Benson changeset eb9c06e57a89 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=eb9c06e57a89 description: 2009-02-23 Gary Benson Robert Schuster * configure.ac (llvm_components): Add nativecodegen. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ configure.ac | 2 +- diffs (24 lines): diff -r c90d22c7678d -r eb9c06e57a89 ChangeLog --- a/ChangeLog Mon Feb 23 10:33:28 2009 +0000 +++ b/ChangeLog Mon Feb 23 07:49:42 2009 -0500 @@ -1,3 +1,8 @@ 2009-02-23 Gary Benson + Robert Schuster + + * configure.ac (llvm_components): Add nativecodegen. + 2009-02-23 Gary Benson * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp diff -r c90d22c7678d -r eb9c06e57a89 configure.ac --- a/configure.ac Mon Feb 23 10:33:28 2009 +0000 +++ b/configure.ac Mon Feb 23 07:49:42 2009 -0500 @@ -488,7 +488,7 @@ AC_SUBST(LIBFFI_LIBS) if test "x${SHARK_BUILD_TRUE}" = x; then FIND_TOOL([LLVM_CONFIG], [llvm-config]) - llvm_components=engine + llvm_components="engine nativecodegen" LLVM_CFLAGS=`$LLVM_CONFIG --cflags $llvm_components | \ sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ sed -e 's/-D_DEBUG//g'` From gbenson at redhat.com Mon Feb 23 04:53:50 2009 From: gbenson at redhat.com (Gary Benson) Date: Mon, 23 Feb 2009 12:53:50 +0000 Subject: [patch] put nativecodegen to requested llvm components In-Reply-To: <497DDD8B.2060708@gmx.net> References: <497DDD8B.2060708@gmx.net> Message-ID: <20090223125349.GC3223@redhat.com> Robert Schuster wrote: > attached is what I needed to get shark to run on ARM /w llvm 2.4. This > is against icedtea6. > diff -r 86cc7eb0035f configure.ac > --- a/configure.ac Mon Jan 26 09:09:26 2009 -0500 > +++ b/configure.ac Mon Jan 26 16:50:59 2009 +0100 > @@ -449,7 +449,7 @@ > > if test "x${SHARK_BUILD_TRUE}" = x; then > FIND_TOOL([LLVM_CONFIG], [llvm-config]) > - llvm_components=engine > + llvm_components="engine nativecodegen" > LLVM_CFLAGS=`$LLVM_CONFIG --cflags $llvm_components | \ > sed -e 's/-O.//g' | sed -e 's/-fomit-frame-pointer//g' | \ > sed -e 's/-D_DEBUG//g'` Thanks for this Robert, I've committed it. Sorry for taking forever! Cheers, Gary -- http://gbenson.net/ From gnu_andrew at member.fsf.org Mon Feb 23 06:28:42 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 23 Feb 2009 14:28:42 +0000 Subject: IcedTea6 releases In-Reply-To: <49A27BE3.7090107@redhat.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A27BE3.7090107@redhat.com> Message-ID: <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> 2009/2/23 Andrew Haley : > Mark Wielaard wrote: >> Hi, >> >> One of the things we discussed at Fosdem was how to coordinate releases. >> We agreed that in principle everybody should be able to "call a >> release", at least for IcedTea6. In principle that tree should always be >> in releasable state. That said, it is still a good idea to have a >> stabilization period, where no new features are added, and only >> (regression) fixes are done. But this also shouldn't block all other >> work. >> >> So to help with that we thought it would be a good idea to have a >> separate "release tree". We tried in-tree-branches, the cacao work was >> for a time an in-tree branch, but that wasn't a complete success. >> >> So for now we wanted to go with a separate repo that someone can "claim" >> when doing the release. They will then be responsible for updating the >> release tree to the current icedtea6 tree, call for test results, merge >> in any needed regression fixes, tag and finally release. > > Sure, but there's no need to re-use the same release tree. ?Once the > release is done, further bug fixes may be needed against the same > release, so a release tree should never be re-used. > Reusing the same release tree seemed very strange to me as well. I have the vain hope that having a release tree might mean we can have an upstream backport of important things like security fixes. Hence, I was thinking along the lines of something like releases/icedtea6/x trees e.g. releases/icedtea6/1.4.1. This is especially the case if anyone wants to do a release right now as the NIO2 stuff isn't ready for release yet, so a branch from 1.4 would be needed. >> Finally the release tree should be merged to the main icedtea6 tree to >> make sure that they are in sync again, tags are propagated to the main >> tree, etc. and the whole process can start from the top. > > I think that in most cases bug fixes go in the other direction: they are > committed to trunk and to live release branches. ?The only exception to > this is normally when a patch is inappropriate. > +1 >> The above assumes that all releases will be linear progressions from the >> current IcedTea6 tree. No "minor" releases from a previous major >> release, while we also do a new "major" release (IcedTea7 will be for >> the really crazy stuff anyway). I think this will work out for IcedTea6 >> because in principle there will only be new features and bug fixes (the >> disappearance and reappearance of visualvm might be an exception >> though). If however we want to do backward, minor releases, then we >> might just have to create either another release tree. >> >> I created a "release tree" as releases/icedtea6 >> ssh://icedtea.classpath.org/hg/release/icedtea6 or >> http://icedtea.classpath.org/hg/release/icedtea6 >> >> This tree will not generate commit messages, but syncing it back with >> the main tree will, so you can easily see which bug fixes and tags were >> added during the release process. I don't believe extra commit messages >> are necessary for this tree because the "release master" will be the >> only person responsible for doing commits to this tree during the cycle. >> >> Comments, suggestions and friendly flames welcome, > > The above is all wrong. ?If we're to make such a radical departure from > well-established practice we have to have a damn good reason. ?AFAIK > there is no such reason, so we must not do this. > I can't see any reason you'd want to feed a release tree back into trunk. The usual course of action and the point of a release branch is to be able to cherry-pick suitable additional patches and apply them against a known stable base for release. > Andrew. > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From langel at redhat.com Mon Feb 23 07:20:10 2009 From: langel at redhat.com (Lillian Angel) Date: Mon, 23 Feb 2009 10:20:10 -0500 Subject: IcedTea6 releases In-Reply-To: <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A27BE3.7090107@redhat.com> <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> Message-ID: <49A2BEAA.2020802@redhat.com> Hi, Andrew John Hughes wrote: > 2009/2/23 Andrew Haley : > >> Mark Wielaard wrote: >> >>> Hi, >>> >>> One of the things we discussed at Fosdem was how to coordinate releases. >>> We agreed that in principle everybody should be able to "call a >>> release", at least for IcedTea6. In principle that tree should always be >>> in releasable state. That said, it is still a good idea to have a >>> stabilization period, where no new features are added, and only >>> (regression) fixes are done. But this also shouldn't block all other >>> work. >>> >>> So to help with that we thought it would be a good idea to have a >>> separate "release tree". We tried in-tree-branches, the cacao work was >>> for a time an in-tree branch, but that wasn't a complete success. >>> >>> So for now we wanted to go with a separate repo that someone can "claim" >>> when doing the release. They will then be responsible for updating the >>> release tree to the current icedtea6 tree, call for test results, merge >>> in any needed regression fixes, tag and finally release. >>> >> Sure, but there's no need to re-use the same release tree. ? Once the >> release is done, further bug fixes may be needed against the same >> release, so a release tree should never be re-used. >> >> > > Reusing the same release tree seemed very strange to me as well. I > have the vain hope that having a release tree might mean we can have > an upstream backport of important things like security fixes. Hence, > I was thinking along the lines of something like releases/icedtea6/x > trees e.g. releases/icedtea6/1.4.1. > I agree with this. Having a separate release tree for every release. It could initially be created as an exact copy of the main tree (or some tagged version), and appropriate patches could be applied or added. For minor releases, the differences between the main tree and the release tree could be significant. I think for major releases, the main tree should always be tagged as 1.x once the release tree is created. I may be completely off target. But what are everyone's thoughts on tagging the main tree after a release? > This is especially the case if anyone wants to do a release right now > as the NIO2 stuff isn't ready for release yet, so a branch from 1.4 > would be needed. > > >>> Finally the release tree should be merged to the main icedtea6 tree to >>> make sure that they are in sync again, tags are propagated to the main >>> tree, etc. and the whole process can start from the top. >>> >> I think that in most cases bug fixes go in the other direction: they are >> committed to trunk and to live release branches. ? The only exception to >> this is normally when a patch is inappropriate. >> >> > > +1 > > >>> The above assumes that all releases will be linear progressions from the >>> current IcedTea6 tree. No "minor" releases from a previous major >>> release, while we also do a new "major" release (IcedTea7 will be for >>> the really crazy stuff anyway). I think this will work out for IcedTea6 >>> because in principle there will only be new features and bug fixes (the >>> disappearance and reappearance of visualvm might be an exception >>> though). If however we want to do backward, minor releases, then we >>> might just have to create either another release tree. >>> >>> I created a "release tree" as releases/icedtea6 >>> ssh://icedtea.classpath.org/hg/release/icedtea6 or >>> http://icedtea.classpath.org/hg/release/icedtea6 >>> >>> This tree will not generate commit messages, but syncing it back with >>> the main tree will, so you can easily see which bug fixes and tags were >>> added during the release process. I don't believe extra commit messages >>> are necessary for this tree because the "release master" will be the >>> only person responsible for doing commits to this tree during the cycle. >>> >>> Comments, suggestions and friendly flames welcome, >>> >> The above is all wrong. ? If we're to make such a radical departure from >> well-established practice we have to have a damn good reason. ? AFAIK >> there is no such reason, so we must not do this. >> >> > > I can't see any reason you'd want to feed a release tree back into > trunk. The usual course of action and the point of a release branch > is to be able to cherry-pick suitable additional patches and apply > them against a known stable base for release. Lillian From aph at redhat.com Mon Feb 23 07:25:07 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 23 Feb 2009 15:25:07 +0000 Subject: IcedTea6 releases In-Reply-To: <49A2BEAA.2020802@redhat.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A27BE3.7090107@redhat.com> <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> <49A2BEAA.2020802@redhat.com> Message-ID: <49A2BFD3.9060400@redhat.com> Lillian Angel wrote: > Hi, > > Andrew John Hughes wrote: >> 2009/2/23 Andrew Haley : >>> Once the >>> release is done, further bug fixes may be needed against the same >>> release, so a release tree should never be re-used. >> >> Reusing the same release tree seemed very strange to me as well. I >> have the vain hope that having a release tree might mean we can have >> an upstream backport of important things like security fixes. Hence, >> I was thinking along the lines of something like releases/icedtea6/x >> trees e.g. releases/icedtea6/1.4.1. > > I agree with this. Having a separate release tree for every release. It > could initially be created as an exact copy of the main tree (or some > tagged version), and appropriate patches could be applied or added. For > minor releases, the differences between the main tree and the release > tree could be significant. I think for major releases, the main tree > should always be tagged as 1.x once the release tree is created. > > I may be completely off target. But what are everyone's thoughts on > tagging the main tree after a release? It's just standard practice: tag the trunk with the name of the branch, make a copy from the tag, call that the branch. In gcc we do this: tag gcc-foo-branchpoint cp gcc-foo-branchpoint -> gcc-foo-branch So you can do diff gcc-foo-branchpoint gcc-foo-branch to see what was changed on the branch, etc. Andrew. From volker.simonis at gmail.com Mon Feb 23 07:52:43 2009 From: volker.simonis at gmail.com (Volker Simonis) Date: Mon, 23 Feb 2009 16:52:43 +0100 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: <499F196F.4030002@sun.com> References: <20090220202251.C6173291845@eggemoggin.niobe.net> <499F196F.4030002@sun.com> Message-ID: Just to name a current issue and demonstrate how compilcated it may be to follow the development process, lets consider Bug ID: 6622432 (RFE: Performance improvements to java.math.BigDecimal): On the mailing lists, there was a Request for review: http://www.mail-archive.com/core-libs-dev at openjdk.java.net/msg01095.html http://webrev.invokedynamic.info/xiaobin.lu/6622432/ But I couldn't see a changeset for the bug. So apparently it is not in any of the OpenJDK 7 repositories (at least I couldn't find it). On the other hand, the Bug says "State, 8-Fix Available". Brad Wetmores writes in another thread on this list (http://www.nabble.com/forum/ViewPost.jtp?post=22140212&framed=y): "When the fix is put into one of the gates, the fix goes to "fix available" in bugtraq. It's the gatekeepers who mark as Fix Delivered." So apparently, the change went into a closed "gate". I would guess it could be the "JDK6 RE build" Mercurial repository you mention. Because the list of fixed bugs for JDK 6u14 b01 (http://download.java.net/jdk6/6u14/promoted/b01/changes/JDK6u14.list.html) lists 6622432 as fixed. But this is in contradiction to the status of the bug which is "State, 8-Fix Available". So I assume there must be another Bug Id for the same problem, but neither could I find it in the bug database, nor is there a link from Bug 6622432 to this other bug. If I just want to get the patch for this fix, this is quite confusing - at least for me... Regards, Volker On 2/20/09, James Melvin wrote: > Hi Mark, > > Actually, the Hotspot engineering work is all done in Mercurial. > For the JDK6 RE build, we lazily create a disposable Teamware > workspace from the Mercurial repository... > > hotspot.gpl - Mercurial (read-write) > hotspot - Teamware (read-only, regenerated for builds) > > This mitigates the Mercurial <--> Teamware SCM nightmares. > > - Jim > > > > Mark Reinhold wrote: > > > > > > Date: Fri, 20 Feb 2009 18:17:27 +0000 > > > From: Andrew John Hughes > > > > > > > > > > 2009/2/20 james.melvin at sun.com: > > > > > > > The basic reasoning behind the HS14 fork is two-fold... > > > > > > > > ... > > > > > > > I quite agree with the reasons for the branch, that in itself is a > > > very sensible approach. My issue was with why the stable branch, when > > > created, was not simply done publicly. It's not like anyone can just > > > commit anything they want to it anyway, and a stable HotSpot is > > > valuable for others outside Sun. > > > > > > > As I understand it, the real reason the fork of HS14 wasn't done in the > > open is fairly prosaic: Sun's proprietary 6uX update releases are still > > based on TeamWare, our old internal SCM, rather than Mercurial. When a > > HotSpot "Express" snapshot is taken from JDK 7 it's first converted into > > TeamWare, and that's where the stabilization work is done. > > > > Joe Darcy has been working with the HotSpot team to revise this practice > > so that such work can take place in the open. Hopefully he'll have some > > news on that soon. > > > > - Mark > > > From bugzilla-daemon at icedtea.classpath.org Mon Feb 23 09:27:27 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 23 Feb 2009 17:27:27 +0000 Subject: [Bug 289] Gentoo QA Notice: "poor programming practices" Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=289 ------- Comment #7 from gnu_andrew at member.fsf.org 2009-02-23 17:27 ------- Can you post this to bugs.openjdk.java.net please? That's the new place for contributing patches to OpenJDK6+7. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Feb 23 09:28:54 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 23 Feb 2009 17:28:54 +0000 Subject: [Bug 221] javac.in and javah.in eat up white space arguments Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=221 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #1 from gnu_andrew at member.fsf.org 2009-02-23 17:28 ------- Please test with 1.4 or current hg. I believe this is fixed. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mr at sun.com Mon Feb 23 09:35:35 2009 From: mr at sun.com (Mark Reinhold) Date: Mon, 23 Feb 2009 09:35:35 -0800 Subject: OpenJDK/IcedTea naming patch Message-ID: <20090223173535.0A4D1CFD3@callebaut.niobe.net> A while ago I noticed that the output of java -version on my Ubuntu 8.10 laptop says: java version "1.6.0_0" IcedTea6 1.3.1 (6b12-0ubuntu6.1) Runtime Environment (build 1.6.0_0-b12) OpenJDK Server VM (build 1.6.0_0-b12, mixed mode) Recent builds for Fedora, similarly, say: java version "1.6.0_0" IcedTea6 1.4 (fedora-7.b12.fc10-x86_64) Runtime Environment (build 1.6.0_0-b12) OpenJDK 64-Bit Server VM (build 10.0-b19, mixed mode) This is a change from releases built with IcedTea6 1.2 and earlier, where the version output was of the form: java version "1.6.0" OpenJDK () Runtime Environment (build 1.6.0-b09) OpenJDK Server VM (build 1.6.0-b09, mixed mode) that is, the first token on the second line was "OpenJDK" rather than "IcedTea6". Now I'll be the first to acknowledge all the fine work that's been done in the IcedTea project, but while impressive I don't think it justifies the renaming of the built product so as to appear not to give credit to the upstream OpenJDK project. I doubt that doing so was anyone's actual intent, and in fact I understand from Andrew Haley that this change was made in order to address a couple of purely pragmatic issues. I'd like here to suggest an alternative way of addressing them. The first issue is the need to avoid violating the OpenJDK Trademark Notice [1] when using IcedTea to build the OpenJDK libraries on top of a non-HotSpot-based VM, such as CACAO. IANAL, but the Trademark Notice does seem to imply that the "OpenJDK" mark may not be used in such a situation. Rather than change the value of PRODUCT_NAME to "IcedTea" in all cases, I think a better approach is to revise Makefile.am so that it sets PRODUCT_NAME to "OpenJDK" unless doing a CACAO build, in which case it uses "IcedTea". The second issue is the desire to keep the output of java -version compact enough to fit into 80 columns. To achieve that while also retaining the IcedTea version number I suggest omitting the FULL_VERSION part, i.e., "(build 1.6.0_0-b12)", since that information is already available elsewhere in the output, and putting the IcedTea name and version number before the package version. While we're at it, it's worth moving "Runtime Environment" back to where it's found in almost all other derivatives of this code base, right after the initial token: java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.4) (fedora-7.b12.fc10-x86_64) OpenJDK 64-Bit Server VM (build 10.0-b19, mixed mode) Attached below is a patch, relative to icedtea6 revision c017a717f617, which makes these changes. I've introduced two new make variables: JDK_DERIVATIVE_NAME is now set to "IcedTea6 1.4", or whatever the current version is, and DISTRO_PACKAGE_VERSION carries the argument given to the --with-pkgversion configure option, if any. Here's the output of java -version for three different configurations: $ make clean $ ./configure && make >&make.out $ ./openjdk/control/build/linux-i586/bin/java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 pre-1.5-r92c4cc753f06) (build 1.6.0_0-b14) OpenJDK Server VM (build 14.0-b08, mixed mode) $ make clean $ ./configure --with-pkgversion='foo.b14.baz-123' && make >&make.out $ ./openjdk/control/build/linux-i586/bin/java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 pre-1.5-r92c4cc753f06) (foo.b14.baz-123) OpenJDK Server VM (build 14.0-b08, mixed mode) $ make clean $ ./configure --enable-cacao --with-pkgversion='foo.b14.baz-123' && make >&make.out $ ./openjdk/control/build/linux-i586/bin/java -version java version "1.6.0_0" IcedTea6 Runtime Environment (pre-1.5-r92c4cc753f06) (foo.b14.baz-123) CACAO (build 0.99.3, JIT mode) $ If this patch is acceptable for IcedTea6 then I'll push the relevant changes into the upstream 6 and 7 trees. Comments? - Mark [1] http://openjdk.java.net/legal/openjdk-trademark-notice.html -------------- next part -------------- diff -r c017a717f617 Makefile.am --- a/Makefile.am Fri Feb 20 12:21:56 2009 -0500 +++ b/Makefile.am Mon Feb 23 09:17:21 2009 -0800 @@ -758,10 +758,20 @@ revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{node|short}')`" ; \ fi ; \ icedtea_version="$(PACKAGE_VERSION)$${revision}" ; \ + if ! test "x$(WITH_CACAO)" = "xno"; then \ + echo "JDK_DERIVATIVE_NAME=$${icedtea_version}" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + echo "PRODUCT_NAME=IcedTea6" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + else \ + echo "JDK_DERIVATIVE_NAME=IcedTea6 $${icedtea_version}" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + fi + if [ -n "$(PKGVERSION)" ]; then \ - icedtea_version="$${icedtea_version} ($(PKGVERSION))" ; \ - fi; \ - sed -i "s#OpenJDK#OpenJDK $${icedtea_version}#" openjdk/jdk/make/common/shared/Defs.gmk + echo "DISTRO_PACKAGE_VERSION=$(PKGVERSION)" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + fi if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ diff -r c017a717f617 patches/icedtea-version.patch --- a/patches/icedtea-version.patch Fri Feb 20 12:21:56 2009 -0500 +++ b/patches/icedtea-version.patch Mon Feb 23 09:17:21 2009 -0800 @@ -23,3 +23,49 @@ PRODUCT_NAME = OpenJDK PRODUCT_SUFFIX = Runtime Environment JDK_RC_PLATFORM_NAME = Platform +--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ 2008-11-25 01:04:53.000000000 -0800 ++++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java 2009-02-20 09:03:25.000000000 -0800 +@@ -41,6 +41,12 @@ + private static final String java_runtime_version = + "@@java_runtime_version@@"; + ++ private static final String jdk_derivative_name = ++ "@@jdk_derivative_name@@"; ++ ++ private static final String distro_package_version = ++ "@@distro_package_version@@"; ++ + static { + init(); + } +@@ -82,8 +88,17 @@ + ps.println(launcher_name + " version \"" + java_version + "\""); + + /* Second line: runtime version (ie, libraries). */ +- ps.println(java_runtime_name + " (build " + +- java_runtime_version + ")"); ++ StringBuilder sb = new StringBuilder(); ++ sb.append(java_runtime_name); ++ if (jdk_derivative_name.length() > 0) { ++ sb.append(" (").append(jdk_derivative_name).append(")"); ++ } ++ if (distro_package_version.length() > 0) { ++ sb.append(" (").append(distro_package_version).append(")"); ++ } else { ++ sb.append(" (build ").append(java_runtime_version).append(")"); ++ } ++ ps.println(sb.toString()); + + /* Third line: JVM information. */ + String java_vm_name = System.getProperty("java.vm.name"); +--- openjdk/jdk/make/java/version/Makefile.~1~ 2008-11-25 01:01:15.000000000 -0800 ++++ openjdk/jdk/make/java/version/Makefile 2009-02-20 09:03:56.000000000 -0800 +@@ -39,6 +39,8 @@ + $(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \ + -e 's/@@java_version@@/$(RELEASE)/g' \ + -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \ ++ -e 's/@@jdk_derivative_name@@/$(JDK_DERIVATIVE_NAME)/g' \ ++ -e 's/@@distro_package_version@@/$(DISTRO_PACKAGE_VERSION)/g' \ + -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \ + $< > $@.temp + @$(MV) $@.temp $@ From aph at redhat.com Mon Feb 23 09:48:00 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 23 Feb 2009 17:48:00 +0000 Subject: OpenJDK/IcedTea naming patch In-Reply-To: <20090223173535.0A4D1CFD3@callebaut.niobe.net> References: <20090223173535.0A4D1CFD3@callebaut.niobe.net> Message-ID: <49A2E150.7090906@redhat.com> Mark Reinhold wrote: > Comments? I think it's good. It certainly makes it possible to identify an IcedTea build. Andrew. From gnu_andrew at member.fsf.org Mon Feb 23 10:08:06 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 23 Feb 2009 18:08:06 +0000 Subject: OpenJDK/IcedTea naming patch In-Reply-To: <20090223173535.0A4D1CFD3@callebaut.niobe.net> References: <20090223173535.0A4D1CFD3@callebaut.niobe.net> Message-ID: <17c6771e0902231008s4d3f7c07m6ef443a36f9a4d15@mail.gmail.com> 2009/2/23 Mark Reinhold : > A while ago I noticed that the output of java -version on my Ubuntu 8.10 > laptop says: > > ?java version "1.6.0_0" > ?IcedTea6 1.3.1 (6b12-0ubuntu6.1) Runtime Environment (build 1.6.0_0-b12) > ?OpenJDK Server VM (build 1.6.0_0-b12, mixed mode) > Which also has a broken HotSpot build number... :( > Recent builds for Fedora, similarly, say: > > ?java version "1.6.0_0" > ?IcedTea6 1.4 (fedora-7.b12.fc10-x86_64) Runtime Environment (build 1.6.0_0-b12) > ?OpenJDK 64-Bit Server VM (build 10.0-b19, mixed mode) > > This is a change from releases built with IcedTea6 1.2 and earlier, > where the version output was of the form: > > ?java version "1.6.0" > ?OpenJDK () Runtime Environment (build 1.6.0-b09) > ?OpenJDK Server VM (build 1.6.0-b09, mixed mode) > > that is, the first token on the second line was "OpenJDK" rather than > "IcedTea6". > > Now I'll be the first to acknowledge all the fine work that's been done > in the IcedTea project, but while impressive I don't think it justifies > the renaming of the built product so as to appear not to give credit to > the upstream OpenJDK project. ?I doubt that doing so was anyone's actual > intent, and in fact I understand from Andrew Haley that this change was > made in order to address a couple of purely pragmatic issues. Indeed. It was never about accreditation (except indirectly in the negative form of IcedTea bugs being attributed to OpenJDK). It was a purely technical issue of being able to identify the resulting build, especially for bug reports. Having just 'OpenJDK' means not only could we not identify the IcedTea[6] version or changeset being used, but it wasn't possible to differentiate an IcedTea build from a build just based on the upstream code. Some distros may have done a little to resolve this on their own, but there was no upstream solution (the you mention for 1.2 was added locally by Fedora AFAIU). As a side note, I don't remember the switch from IcedTea to OpenJDK originally being discussed on the list. Had it been, this issue might have been resolved earlier. The change back to IcedTea was discussed in some detail, and FWIW, IcedTea7 has always used 'IcedTea' in the second line and 'OpenJDK' is present on the third line in both cases, except on CACAO builds. > I'd like > here to suggest an alternative way of addressing them. > > The first issue is the need to avoid violating the OpenJDK Trademark > Notice [1] when using IcedTea to build the OpenJDK libraries on top of > a non-HotSpot-based VM, such as CACAO. ?IANAL, but the Trademark Notice > does seem to imply that the "OpenJDK" mark may not be used in such a > situation. > That's my reading of it too. It's also why the Gentoo packaging uses IcedTea6. Being source-based, it is unclear whether the resulting binary will meet the terms of the trademark license. Of course, if we're talking accreditation again, it's not very fair not to use it on a CACAO build given most of the code is still the class libraries from OpenJDK (and anyone who's worked on GNU Classpath will know that these are much harder to replace). > Rather than change the value of PRODUCT_NAME to "IcedTea" in all cases, > I think a better approach is to revise Makefile.am so that it sets > PRODUCT_NAME to "OpenJDK" unless doing a CACAO build, in which case it > uses "IcedTea". > > The second issue is the desire to keep the output of java -version > compact enough to fit into 80 columns. ?To achieve that while also > retaining the IcedTea version number I suggest omitting the FULL_VERSION > part, i.e., "(build 1.6.0_0-b12)", since that information is already > available elsewhere in the output, and putting the IcedTea name and > version number before the package version. ?While we're at it, it's > worth moving "Runtime Environment" back to where it's found in almost > all other derivatives of this code base, right after the initial token: > > ?java version "1.6.0_0" > ?OpenJDK Runtime Environment (IcedTea6 1.4) (fedora-7.b12.fc10-x86_64) > ?OpenJDK 64-Bit Server VM (build 10.0-b19, mixed mode) > > Attached below is a patch, relative to icedtea6 revision c017a717f617, > which makes these changes. ?I've introduced two new make variables: > JDK_DERIVATIVE_NAME is now set to "IcedTea6 1.4", or whatever the > current version is, and DISTRO_PACKAGE_VERSION carries the argument > given to the --with-pkgversion configure option, if any. ?Here's the > output of java -version for three different configurations: > > ?$ make clean > ?$ ./configure && make >&make.out > ?$ ./openjdk/control/build/linux-i586/bin/java -version > ?java version "1.6.0_0" > ?OpenJDK Runtime Environment (IcedTea6 pre-1.5-r92c4cc753f06) (build 1.6.0_0-b14) > ?OpenJDK Server VM (build 14.0-b08, mixed mode) > ?$ make clean > ?$ ./configure --with-pkgversion='foo.b14.baz-123' && make >&make.out > ?$ ./openjdk/control/build/linux-i586/bin/java -version > ?java version "1.6.0_0" > ?OpenJDK Runtime Environment (IcedTea6 pre-1.5-r92c4cc753f06) (foo.b14.baz-123) > ?OpenJDK Server VM (build 14.0-b08, mixed mode) > ?$ make clean > ?$ ./configure --enable-cacao --with-pkgversion='foo.b14.baz-123' && make >&make.out > ?$ ./openjdk/control/build/linux-i586/bin/java -version > ?java version "1.6.0_0" > ?IcedTea6 Runtime Environment (pre-1.5-r92c4cc753f06) (foo.b14.baz-123) > ?CACAO (build 0.99.3, JIT mode) > ?$ > > If this patch is acceptable for IcedTea6 then I'll push the relevant > changes into the upstream 6 and 7 trees. > > Comments? > I like this change, it seems to reach a happy medium. I notice you also change the version template. What is the value of the java.version property as a result? The same as those listed above? > - Mark > > > [1] http://openjdk.java.net/legal/openjdk-trademark-notice.html > > > diff -r c017a717f617 Makefile.am > --- a/Makefile.am ? ? ? Fri Feb 20 12:21:56 2009 -0500 > +++ b/Makefile.am ? ? ? Mon Feb 23 09:17:21 2009 -0800 > @@ -758,10 +758,20 @@ > ? ? ? ? ?revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{node|short}')`" ; \ > ? ? ? ?fi ; \ > ? ? ? ?icedtea_version="$(PACKAGE_VERSION)$${revision}" ; \ > + ? ? ? if ! test "x$(WITH_CACAO)" = "xno"; then \ > + ? ? ? ? echo "JDK_DERIVATIVE_NAME=$${icedtea_version}" \ > + ? ? ? ? ? >>openjdk/jdk/make/common/shared/Defs.gmk ; \ > + ? ? ? ? echo "PRODUCT_NAME=IcedTea6" \ > + ? ? ? ? ? >>openjdk/jdk/make/common/shared/Defs.gmk ; \ > + ? ? ? else \ > + ? ? ? ? echo "JDK_DERIVATIVE_NAME=IcedTea6 $${icedtea_version}" \ > + ? ? ? ? ? >>openjdk/jdk/make/common/shared/Defs.gmk ; \ > + ? ? ? fi > + > ? ? ? ?if [ -n "$(PKGVERSION)" ]; then \ > - ? ? ? ? icedtea_version="$${icedtea_version} ($(PKGVERSION))" ; \ > - ? ? ? fi; \ > - ? ? ? sed -i "s#OpenJDK#OpenJDK $${icedtea_version}#" openjdk/jdk/make/common/shared/Defs.gmk > + ? ? ? ? echo "DISTRO_PACKAGE_VERSION=$(PKGVERSION)" \ > + ? ? ? ? ? >>openjdk/jdk/make/common/shared/Defs.gmk ; \ > + ? ? ? fi > > ?if ENABLE_PLUGIN > ? ? ? ?cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ > diff -r c017a717f617 patches/icedtea-version.patch > --- a/patches/icedtea-version.patch ? ? Fri Feb 20 12:21:56 2009 -0500 > +++ b/patches/icedtea-version.patch ? ? Mon Feb 23 09:17:21 2009 -0800 > @@ -23,3 +23,49 @@ > ? ?PRODUCT_NAME = OpenJDK > ? ?PRODUCT_SUFFIX = Runtime Environment > ? ?JDK_RC_PLATFORM_NAME = Platform > +--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ ? 2008-11-25 01:04:53.000000000 -0800 > ++++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java ? ? ? 2009-02-20 09:03:25.000000000 -0800 > +@@ -41,6 +41,12 @@ > + ? ? private static final String java_runtime_version = > + ? ? ? ? "@@java_runtime_version@@"; > + > ++ ? ?private static final String jdk_derivative_name = > ++ ? ? ? ?"@@jdk_derivative_name@@"; > ++ > ++ ? ?private static final String distro_package_version = > ++ ? ? ? ?"@@distro_package_version@@"; > ++ > + ? ? static { > + ? ? ? ? init(); > + ? ? } > +@@ -82,8 +88,17 @@ > + ? ? ? ? ps.println(launcher_name + " version \"" + java_version + "\""); > + > + ? ? ? ? /* Second line: runtime version (ie, libraries). */ > +- ? ? ? ?ps.println(java_runtime_name + " (build " + > +- ? ? ? ? ? ? ? ? ? ? ? ? ? java_runtime_version + ")"); > ++ ? ? ?StringBuilder sb = new StringBuilder(); > ++ ? ? ?sb.append(java_runtime_name); > ++ ? ? ?if (jdk_derivative_name.length() > 0) { > ++ ? ? ? ? ?sb.append(" (").append(jdk_derivative_name).append(")"); > ++ ? ? ?} > ++ ? ? ?if (distro_package_version.length() > 0) { > ++ ? ? ? ? ?sb.append(" (").append(distro_package_version).append(")"); > ++ ? ? ?} else { > ++ ? ? ? ? ?sb.append(" (build ").append(java_runtime_version).append(")"); > ++ ? ? ?} > ++ ? ? ?ps.println(sb.toString()); > + > + ? ? ? ? /* Third line: JVM information. */ > + ? ? ? ? String java_vm_name ? ?= System.getProperty("java.vm.name"); > +--- openjdk/jdk/make/java/version/Makefile.~1~ 2008-11-25 01:01:15.000000000 -0800 > ++++ openjdk/jdk/make/java/version/Makefile ? ? 2009-02-20 09:03:56.000000000 -0800 > +@@ -39,6 +39,8 @@ > + ? ? ? $(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \ > + ? ? ? ? ? -e 's/@@java_version@@/$(RELEASE)/g' \ > + ? ? ? ? ? -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \ > ++ ? ? ? ? ?-e 's/@@jdk_derivative_name@@/$(JDK_DERIVATIVE_NAME)/g' \ > ++ ? ? ? ? ?-e 's/@@distro_package_version@@/$(DISTRO_PACKAGE_VERSION)/g' \ > + ? ? ? ? ? -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \ > + ? ? ? $< > $@.temp > + ? ? ? @$(MV) $@.temp $@ > > Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From langel at redhat.com Mon Feb 23 10:38:21 2009 From: langel at redhat.com (Lillian Angel) Date: Mon, 23 Feb 2009 13:38:21 -0500 Subject: OpenJDK/IcedTea naming patch In-Reply-To: <49A2E150.7090906@redhat.com> References: <20090223173535.0A4D1CFD3@callebaut.niobe.net> <49A2E150.7090906@redhat.com> Message-ID: <49A2ED1D.9050308@redhat.com> Andrew Haley wrote: > Mark Reinhold wrote: > > >> Comments? >> > > I think it's good. It certainly makes it possible to identify an IcedTea build. Agreed. Mark- do you have commit access? Go ahead and commit, if you do. Cheers, Lillian From James.Melvin at Sun.COM Mon Feb 23 11:26:55 2009 From: James.Melvin at Sun.COM (James Melvin) Date: Mon, 23 Feb 2009 14:26:55 -0500 Subject: How to host HS14 stable? (Was: RFC: Change name of default HotSpot to 'default') In-Reply-To: References: <20090220202251.C6173291845@eggemoggin.niobe.net> <499F196F.4030002@sun.com> Message-ID: <49A2F87F.2060702@sun.com> Hi Volker, The SCM for class libraries is different between JDK 6 and JDK 7... JDK 6 Hotspot - Mercurial Libraries - Teamware JDK7 Hotspot - Mercurial Libraries - Mercurial So, you will not find any 'changeset' in JDK 6 for this particular libraries enhancement. Thanks, Jim Volker Simonis wrote: > Just to name a current issue and demonstrate how compilcated it may be > to follow the development process, lets consider Bug ID: 6622432 (RFE: > Performance improvements to java.math.BigDecimal): > > On the mailing lists, there was a Request for review: > > http://www.mail-archive.com/core-libs-dev at openjdk.java.net/msg01095.html > http://webrev.invokedynamic.info/xiaobin.lu/6622432/ > > But I couldn't see a changeset for the bug. So apparently it is not in > any of the OpenJDK 7 repositories (at least I couldn't find it). > > On the other hand, the Bug says "State, 8-Fix Available". Brad > Wetmores writes in another thread on this list > (http://www.nabble.com/forum/ViewPost.jtp?post=22140212&framed=y): > "When the fix is put into one of the gates, the fix goes to "fix > available" in bugtraq. It's the gatekeepers who mark as Fix > Delivered." So apparently, the change went into a closed "gate". > > I would guess it could be the "JDK6 RE build" Mercurial repository you > mention. Because the list of fixed bugs for JDK 6u14 b01 > (http://download.java.net/jdk6/6u14/promoted/b01/changes/JDK6u14.list.html) > lists 6622432 as fixed. But this is in contradiction to the status of > the bug which is "State, 8-Fix Available". > > So I assume there must be another Bug Id for the same problem, but > neither could I find it in the bug database, nor is there a link from > Bug 6622432 to this other bug. > > If I just want to get the patch for this fix, this is quite confusing > - at least for me... > > Regards, > Volker > > On 2/20/09, James Melvin wrote: >> Hi Mark, >> >> Actually, the Hotspot engineering work is all done in Mercurial. >> For the JDK6 RE build, we lazily create a disposable Teamware >> workspace from the Mercurial repository... >> >> hotspot.gpl - Mercurial (read-write) >> hotspot - Teamware (read-only, regenerated for builds) >> >> This mitigates the Mercurial <--> Teamware SCM nightmares. >> >> - Jim >> >> >> >> Mark Reinhold wrote: >> >>>> Date: Fri, 20 Feb 2009 18:17:27 +0000 >>>> From: Andrew John Hughes >>>> >>> >>>> 2009/2/20 james.melvin at sun.com: >>>> >>>>> The basic reasoning behind the HS14 fork is two-fold... >>>>> >>>>> ... >>>>> >>>> I quite agree with the reasons for the branch, that in itself is a >>>> very sensible approach. My issue was with why the stable branch, when >>>> created, was not simply done publicly. It's not like anyone can just >>>> commit anything they want to it anyway, and a stable HotSpot is >>>> valuable for others outside Sun. >>>> >>> As I understand it, the real reason the fork of HS14 wasn't done in the >>> open is fairly prosaic: Sun's proprietary 6uX update releases are still >>> based on TeamWare, our old internal SCM, rather than Mercurial. When a >>> HotSpot "Express" snapshot is taken from JDK 7 it's first converted into >>> TeamWare, and that's where the stabilization work is done. >>> >>> Joe Darcy has been working with the HotSpot team to revise this practice >>> so that such work can take place in the open. Hopefully he'll have some >>> news on that soon. >>> >>> - Mark >>> From bugzilla-daemon at icedtea.classpath.org Mon Feb 23 11:48:21 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 23 Feb 2009 19:48:21 +0000 Subject: [Bug 295] XML encoder can cause a StackOverflowError Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 ------- Comment #4 from omajid at redhat.com 2009-02-23 19:48 ------- Sent patch upstream to get feedback: http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/200902.mbox/%3C499F0973.3060404 at redhat.com%3E -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From langel at redhat.com Mon Feb 23 12:42:27 2009 From: langel at redhat.com (Lillian Angel) Date: Mon, 23 Feb 2009 20:42:27 +0000 Subject: changeset in /hg/icedtea6: 2009-02-23 Lillian Angel changeset 0848286d8e5c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0848286d8e5c description: 2009-02-23 Lillian Angel * AUTHORS: Added Mark Reinhold. 2009-02-23 Mark Reinhold * Makefile.am: Set PRODUCT_NAME to OpenJDK, unless doing a CACAO build (set to IcedTea). * patches/icedtea-version.patch: Introduced two new make variables: JDK_DERIVATIVE_NAME to set "IcedTea6 " and DISTRO_PACKAGE_VERSION carries the argument given to the --with-pkgversion configure option. diffstat: 4 files changed, 76 insertions(+), 6 deletions(-) AUTHORS | 1 ChangeLog | 19 ++++++++++++++-- Makefile.am | 16 +++++++++++--- patches/icedtea-version.patch | 46 +++++++++++++++++++++++++++++++++++++++++ diffs (118 lines): diff -r eb9c06e57a89 -r 0848286d8e5c AUTHORS --- a/AUTHORS Mon Feb 23 07:49:42 2009 -0500 +++ b/AUTHORS Mon Feb 23 15:42:22 2009 -0500 @@ -25,6 +25,7 @@ Raif Naffah Raif Naffah Parag Nemade Xerxes R??nby +Mark Reinhold Bernhard Rosenkr??nzer Marc Schoenefeld Keith Seitz diff -r eb9c06e57a89 -r 0848286d8e5c ChangeLog --- a/ChangeLog Mon Feb 23 07:49:42 2009 -0500 +++ b/ChangeLog Mon Feb 23 15:42:22 2009 -0500 @@ -1,7 +1,20 @@ 2009-02-23 Gary Benson + + * AUTHORS: Added Mark Reinhold. + +2009-02-23 Mark Reinhold + + * Makefile.am: Set PRODUCT_NAME to OpenJDK, unless doing a CACAO + build (set to IcedTea). + * patches/icedtea-version.patch: Introduced two new make variables: + JDK_DERIVATIVE_NAME to set "IcedTea6 " and + DISTRO_PACKAGE_VERSION carries the argument given to the + --with-pkgversion configure option. + 2009-02-23 Gary Benson - Robert Schuster - - * configure.ac (llvm_components): Add nativecodegen. + Robert Schuster + + * configure.ac (llvm_components): Add nativecodegen. 2009-02-23 Gary Benson diff -r eb9c06e57a89 -r 0848286d8e5c Makefile.am --- a/Makefile.am Mon Feb 23 07:49:42 2009 -0500 +++ b/Makefile.am Mon Feb 23 15:42:22 2009 -0500 @@ -758,10 +758,20 @@ stamps/patch.stamp: stamps/patch-fsg.sta revision="-r`(cd $(abs_top_srcdir); $(HG) tip --template '{node|short}')`" ; \ fi ; \ icedtea_version="$(PACKAGE_VERSION)$${revision}" ; \ + if ! test "x$(WITH_CACAO)" = "xno"; then \ + echo "JDK_DERIVATIVE_NAME=$${icedtea_version}" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + echo "PRODUCT_NAME=IcedTea6" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + else \ + echo "JDK_DERIVATIVE_NAME=IcedTea6 $${icedtea_version}" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + fi + if [ -n "$(PKGVERSION)" ]; then \ - icedtea_version="$${icedtea_version} ($(PKGVERSION))" ; \ - fi; \ - sed -i "s#OpenJDK#OpenJDK $${icedtea_version}#" openjdk/jdk/make/common/shared/Defs.gmk + echo "DISTRO_PACKAGE_VERSION=$(PKGVERSION)" \ + >>openjdk/jdk/make/common/shared/Defs.gmk ; \ + fi if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ diff -r eb9c06e57a89 -r 0848286d8e5c patches/icedtea-version.patch --- a/patches/icedtea-version.patch Mon Feb 23 07:49:42 2009 -0500 +++ b/patches/icedtea-version.patch Mon Feb 23 15:42:22 2009 -0500 @@ -23,3 +23,49 @@ PRODUCT_NAME = OpenJDK PRODUCT_SUFFIX = Runtime Environment JDK_RC_PLATFORM_NAME = Platform +--- openjdk/jdk/src/share/classes/sun/misc/Version-template.java.~1~ 2008-11-25 01:04:53.000000000 -0800 ++++ openjdk/jdk/src/share/classes/sun/misc/Version-template.java 2009-02-20 09:03:25.000000000 -0800 +@@ -41,6 +41,12 @@ + private static final String java_runtime_version = + "@@java_runtime_version@@"; + ++ private static final String jdk_derivative_name = ++ "@@jdk_derivative_name@@"; ++ ++ private static final String distro_package_version = ++ "@@distro_package_version@@"; ++ + static { + init(); + } +@@ -82,8 +88,17 @@ + ps.println(launcher_name + " version \"" + java_version + "\""); + + /* Second line: runtime version (ie, libraries). */ +- ps.println(java_runtime_name + " (build " + +- java_runtime_version + ")"); ++ StringBuilder sb = new StringBuilder(); ++ sb.append(java_runtime_name); ++ if (jdk_derivative_name.length() > 0) { ++ sb.append(" (").append(jdk_derivative_name).append(")"); ++ } ++ if (distro_package_version.length() > 0) { ++ sb.append(" (").append(distro_package_version).append(")"); ++ } else { ++ sb.append(" (build ").append(java_runtime_version).append(")"); ++ } ++ ps.println(sb.toString()); + + /* Third line: JVM information. */ + String java_vm_name = System.getProperty("java.vm.name"); +--- openjdk/jdk/make/java/version/Makefile.~1~ 2008-11-25 01:01:15.000000000 -0800 ++++ openjdk/jdk/make/java/version/Makefile 2009-02-20 09:03:56.000000000 -0800 +@@ -39,6 +39,8 @@ + $(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \ + -e 's/@@java_version@@/$(RELEASE)/g' \ + -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \ ++ -e 's/@@jdk_derivative_name@@/$(JDK_DERIVATIVE_NAME)/g' \ ++ -e 's/@@distro_package_version@@/$(DISTRO_PACKAGE_VERSION)/g' \ + -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \ + $< > $@.temp + @$(MV) $@.temp $@ From langel at redhat.com Mon Feb 23 12:42:44 2009 From: langel at redhat.com (Lillian Angel) Date: Mon, 23 Feb 2009 15:42:44 -0500 Subject: OpenJDK/IcedTea naming patch In-Reply-To: <49A2ED1D.9050308@redhat.com> References: <20090223173535.0A4D1CFD3@callebaut.niobe.net> <49A2E150.7090906@redhat.com> <49A2ED1D.9050308@redhat.com> Message-ID: <49A30A44.3070301@redhat.com> Lillian Angel wrote: > Andrew Haley wrote: >> Mark Reinhold wrote: >> >> >>> Comments? >>> >> >> I think it's good. It certainly makes it possible to identify an >> IcedTea build. > > > Agreed. > > Mark- do you have commit access? Go ahead and commit, if you do. Nevermind, I committed it! Thanks, Lillian From mr at sun.com Mon Feb 23 12:44:31 2009 From: mr at sun.com (Mark Reinhold) Date: Mon, 23 Feb 2009 12:44:31 -0800 Subject: OpenJDK/IcedTea naming patch In-Reply-To: langel@redhat.com; Mon, 23 Feb 2009 15:42:44 EST; <49A30A44.3070301@redhat.com> Message-ID: <20090223204431.9F1B428CFF2@eggemoggin.niobe.net> > Date: Mon, 23 Feb 2009 15:42:44 -0500 > From: Lillian Angel > Nevermind, I committed it! Cool -- thanks! - Mark From mr at sun.com Mon Feb 23 12:50:19 2009 From: mr at sun.com (Mark Reinhold) Date: Mon, 23 Feb 2009 12:50:19 -0800 Subject: OpenJDK/IcedTea naming patch In-Reply-To: gnu_andrew@member.fsf.org; Mon, 23 Feb 2009 18:08:06 GMT; <17c6771e0902231008s4d3f7c07m6ef443a36f9a4d15@mail.gmail.com> Message-ID: <20090223205019.79CD428CFF2@eggemoggin.niobe.net> > Date: Mon, 23 Feb 2009 18:08:06 +0000 > From: Andrew John Hughes > ... > > That's my reading of it too. It's also why the Gentoo packaging uses > IcedTea6. Being source-based, it is unclear whether the resulting > binary will meet the terms of the trademark license. Good point. IANAL (still) but since the notice doesn't make a distinction between source and binary forms I suspect that it'd be fine for Gentoo to use the mark in the same ways that other distros do. I'll ask an actual lawyer though. > Of course, if we're talking accreditation again, it's not very fair > not to use it on a CACAO build given most of the code is still the > class libraries from OpenJDK (and anyone who's worked on GNU Classpath > will know that these are much harder to replace). Agree on the fairness angle, but I know a few HotSpot engineers who'd argue with your parenthetical point. > ... > > I like this change, it seems to reach a happy medium. I notice you > also change the version template. What is the value of the > java.version property as a result? The same as those listed above? The value of java.version doesn't change; it's still set from FULL_VERSION, as before, and the value of that make variable has not changed. - Mark From mark at klomp.org Mon Feb 23 13:21:50 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 23 Feb 2009 22:21:50 +0100 Subject: IcedTea6 releases In-Reply-To: <49A2BEAA.2020802@redhat.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A27BE3.7090107@redhat.com> <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> <49A2BEAA.2020802@redhat.com> Message-ID: <1235424110.3552.37.camel@hermans.wildebeest.org> Hi, On Mon, 2009-02-23 at 10:20 -0500, Lillian Angel wrote: > Andrew John Hughes wrote: > > 2009/2/23 Andrew Haley : > >> Mark Wielaard wrote: > >>> So for now we wanted to go with a separate repo that someone can "claim" > >>> when doing the release. They will then be responsible for updating the > >>> release tree to the current icedtea6 tree, call for test results, merge > >>> in any needed regression fixes, tag and finally release. > >>> > >> Sure, but there's no need to re-use the same release tree. ? Once the > >> release is done, further bug fixes may be needed against the same > >> release, so a release tree should never be re-used. > > > > Reusing the same release tree seemed very strange to me as well. I > > have the vain hope that having a release tree might mean we can have > > an upstream backport of important things like security fixes. Hence, > > I was thinking along the lines of something like releases/icedtea6/x > > trees e.g. releases/icedtea6/1.4.1. > > I agree with this. Having a separate release tree for every release. It > could initially be created as an exact copy of the main tree (or some > tagged version), and appropriate patches could be applied or added. I feel somewhat outvoted :) So, I worked out a solution to the only technical objection I had to doing this, no easy way to create repos or clones on the server. There is now a hg-remote-clone command that will create a on-server clone of a repo, so that it actually cheap (because it will use hard links when possible). It also allows people with an account on the server to have their own projects and repos on the server. I'll send out a separate email on how to use it. But for releases it means that whoever claims to be doing a release can now do: ssh user at icedtea.classpath.org \ hg-remote-clone /hg/icedtea6 /hg/release/icedtea6-x.y So, I will remove the release/icedtea6 repo on the server now and let the first person that want to do a release branch do the above. > > I can't see any reason you'd want to feed a release tree back into > > trunk. The usual course of action and the point of a release branch > > is to be able to cherry-pick suitable additional patches and apply > > them against a known stable base for release. So, my reason for the original suggestion was to make sure that there is one repo "with everything". Especially tags. So that once a release was made the "trunk repo" was also updated with everything and you could see the branch points, the patches and tags for each release made. I do agree that fixes should always go on the main tree, and only then be applied to the stable branch(es). I see that mercurial actually has a (standard, but not enabled by default) extension "transplant" for doing that easily: http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension (Why are so many nice mercurial extensions disabled by default?) Cheers, Mark From gnu_andrew at member.fsf.org Mon Feb 23 13:34:12 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 23 Feb 2009 21:34:12 +0000 Subject: IcedTea6 releases In-Reply-To: <1235424110.3552.37.camel@hermans.wildebeest.org> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A27BE3.7090107@redhat.com> <17c6771e0902230628y58265864qd80a3aba4774f40a@mail.gmail.com> <49A2BEAA.2020802@redhat.com> <1235424110.3552.37.camel@hermans.wildebeest.org> Message-ID: <17c6771e0902231334m629436b0vb1bcde14853e7b23@mail.gmail.com> 2009/2/23 Mark Wielaard : > Hi, > > On Mon, 2009-02-23 at 10:20 -0500, Lillian Angel wrote: >> Andrew John Hughes wrote: >> > 2009/2/23 Andrew Haley : >> >> Mark Wielaard wrote: >> >>> So for now we wanted to go with a separate repo that someone can "claim" >> >>> when doing the release. They will then be responsible for updating the >> >>> release tree to the current icedtea6 tree, call for test results, merge >> >>> in any needed regression fixes, tag and finally release. >> >>> >> >> Sure, but there's no need to re-use the same release tree. ? Once the >> >> release is done, further bug fixes may be needed against the same >> >> release, so a release tree should never be re-used. >> > >> > Reusing the same release tree seemed very strange to me as well. ?I >> > have the vain hope that having a release tree might mean we can have >> > an upstream backport of important things like security fixes. ?Hence, >> > I was thinking along the lines of something like releases/icedtea6/x >> > trees e.g. releases/icedtea6/1.4.1. >> >> I agree with this. Having a separate release tree for every release. It >> could initially be created as an exact copy of the main tree (or some >> tagged version), and appropriate patches could be applied or added. > > I feel somewhat outvoted :) > > So, I worked out a solution to the only technical objection I had to > doing this, no easy way to create repos or clones on the server. There > is now a hg-remote-clone command that will create a on-server clone of a > repo, so that it actually cheap (because it will use hard links when > possible). It also allows people with an account on the server to have > their own projects and repos on the server. I'll send out a separate > email on how to use it. Nice, I have versions of IcedTea6/7 on my own server already and can hopefully start making use of this. But for releases it means that whoever claims to > be doing a release can now do: > > ssh user at icedtea.classpath.org \ > ?hg-remote-clone /hg/icedtea6 /hg/release/icedtea6-x.y > > So, I will remove the release/icedtea6 repo on the server now and let > the first person that want to do a release branch do the above. > >> > I can't see any reason you'd want to feed a release tree back into >> > trunk. ?The usual course of action and the point of a release branch >> > is to be able to cherry-pick suitable additional patches and apply >> > them against a known stable base for release. > > So, my reason for the original suggestion was to make sure that there is > one repo "with everything". Especially tags. So that once a release was > made the "trunk repo" was also updated with everything and you could see > the branch points, the patches and tags for each release made. > > I do agree that fixes should always go on the main tree, and only then > be applied to the stable branch(es). I see that mercurial actually has a > (standard, but not enabled by default) extension "transplant" for doing > that easily: > http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension > (Why are so many nice mercurial extensions disabled by default?) > Nice indeed! I could do with cherry-picking for 7. > Cheers, > > Mark > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mark at klomp.org Mon Feb 23 14:09:17 2009 From: mark at klomp.org (Mark Wielaard) Date: Mon, 23 Feb 2009 23:09:17 +0100 Subject: Creating new IcedTea repos Message-ID: <1235426957.3552.58.camel@hermans.wildebeest.org> Hi, One bottleneck working on IcedTea was that it wasn't easy to create new repos or clone existing ones. That has now been solved. Everybody who can push to IcedTea can now clone repos for release or private (but public) branches, or create new repos for work related to IcedTea that they want to host (the only requirement is that the work is Free Software of course). When creating a release repo from on of the main repos under /hg do: ssh @icedtea.classpath.org \ hg-remote-clone /hg/ /hg/release/-x.y Please do coordinate first on the version string/extension used. Release branches will show up under http://icedtea.classpath.org/hg/ and have a release/ prefix. When creating a repo for a private repo under your own /people// tree do: hg init ssh://@icedtea.classpath.org/people// Or if you already have a local repo then you can push it through: hg clone \ ssh://@icedtea.classpath.org/people// But if it is work based on an existing repo (either under /hg, /hg/release or /people//) then please do a server hg clone to safe bandwidth and disk-space on the server by: ssh @icedtea.classpath.org \ hg-remote-clone /hg/ /people// These personal repos will also show up under http://icedtea.classpath.org/people/ and will have your name and / as prefix. Thanks, Mark From gnu_andrew at member.fsf.org Mon Feb 23 14:12:51 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 23 Feb 2009 22:12:51 +0000 Subject: OpenJDK/IcedTea naming patch In-Reply-To: <20090223205019.79CD428CFF2@eggemoggin.niobe.net> References: <17c6771e0902231008s4d3f7c07m6ef443a36f9a4d15@mail.gmail.com> <20090223205019.79CD428CFF2@eggemoggin.niobe.net> Message-ID: <17c6771e0902231412m6cddfa71vadeaacf684a73c7d@mail.gmail.com> 2009/2/23 Mark Reinhold : >> Date: Mon, 23 Feb 2009 18:08:06 +0000 >> From: Andrew John Hughes > >> ... >> >> That's my reading of it too. ?It's also why the Gentoo packaging uses >> IcedTea6. ?Being source-based, it is unclear whether the resulting >> binary will meet the terms of the trademark license. > > Good point. ?IANAL (still) but since the notice doesn't make a > distinction between source and binary forms I suspect that it'd be > fine for Gentoo to use the mark in the same ways that other distros > do. ?I'll ask an actual lawyer though. > Thanks. It would be nice to have a clear answer on this. >> Of course, if we're talking accreditation again, it's not very fair >> not to use it on a CACAO build given most of the code is still the >> class libraries from OpenJDK (and anyone who's worked on GNU Classpath >> will know that these are much harder to replace). > > Agree on the fairness angle, but I know a few HotSpot engineers who'd > argue with your parenthetical point. > Well I wasn't suggesting a VM as capable as HotSpot :) I was just pointing out that there were lots of Free VMs with varying goals and levels of completeness before HotSpot was made available under the GPL. All of these were sufficient to run Java programs, even if not being on quite the same performance or feature level as HotSpot. But there was no complete class library implementation, and the one in OpenJDK remains the only one now (mainly by virtue of being the reference implementation; it can set the bar rather than chasing it). >> ... >> >> I like this change, it seems to reach a happy medium. ?I notice you >> also change the version template. ?What is the value of the >> java.version property as a result? ?The same as those listed above? > > The value of java.version doesn't change; it's still set from > FULL_VERSION, as before, and the value of that make variable has > not changed. > Ok, then what does the version template change mean? :) > - Mark > Cheers, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Mon Feb 23 14:19:41 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 23 Feb 2009 22:19:41 +0000 Subject: changeset in /hg/icedtea6: * Apply patch from Xerxes R?nby to pr... Message-ID: changeset 1be2224bd96c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1be2224bd96c description: * Apply patch from Xerxes R?nby to prevent initialization timeout on slower systems. * Fix for 294 [handle null jar specification in archive tags + handle empty jars]. The JavaFX page still does not load, but the error appears to in server-side code now, caused due to an old version of applet-loader. * Supply cookie info when requesting jars (rhbz #480487). * Fix bug that was causing exceptions to be thrown during shutdown. diffstat: 16 files changed, 231 insertions(+), 89 deletions(-) ChangeLog | 28 ++++++ IcedTeaPlugin.cc | 76 +++++++++++++----- plugin/icedtea/sun/applet/PluginAppletViewer.java | 43 +++++++--- plugin/icedtea/sun/applet/PluginStreamHandler.java | 36 ++++---- rt/net/sourceforge/jnlp/ExtensionDesc.java | 15 +++ rt/net/sourceforge/jnlp/JNLPFile.java | 27 ++++-- rt/net/sourceforge/jnlp/Launcher.java | 4 rt/net/sourceforge/jnlp/NetxPanel.java | 7 + rt/net/sourceforge/jnlp/Parser.java | 2 rt/net/sourceforge/jnlp/PluginBridge.java | 16 +++ rt/net/sourceforge/jnlp/cache/CacheUtil.java | 5 - rt/net/sourceforge/jnlp/cache/Resource.java | 17 +++- rt/net/sourceforge/jnlp/cache/ResourceTracker.java | 12 ++ rt/net/sourceforge/jnlp/runtime/Boot.java | 2 rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 10 +- rt/net/sourceforge/jnlp/tools/JarSigner.java | 20 ++-- diffs (truncated from 805 to 500 lines): diff -r 0848286d8e5c -r 1be2224bd96c ChangeLog --- a/ChangeLog Mon Feb 23 15:42:22 2009 -0500 +++ b/ChangeLog Mon Feb 23 17:14:33 2009 -0500 @@ -1,3 +1,31 @@ 2009-02-23 Lillian Angel + + * IcedTeaPlugin.cc: Supply cookie info to Java side. + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Apply patch from + Xerxes R??nby to prevent initialization timeout on slower systems. Also, + use cookie info when equests for jar are made. + * plugin/icedtea/sun/applet/PluginStreamHandler.java: Fix bug that was + causing unnecessary exception prints on exit. + * rt/net/sourceforge/jnlp/ExtensionDesc.java: Store/supply cookie info as + needed. + * rt/net/sourceforge/jnlp/JNLPFile.java: Same. + * rt/net/sourceforge/jnlp/Launcher.java: Same. + * rt/net/sourceforge/jnlp/NetxPanel.java: Same. + * rt/net/sourceforge/jnlp/Parser.java: Same. + * rt/net/sourceforge/jnlp/PluginBridge.java: Same. Also, handle empty jar + specification (Bug: 294) in archive tags. + * rt/net/sourceforge/jnlp/cache/CacheUtil.java: Store/supply cookie info + as needed. + * rt/net/sourceforge/jnlp/cache/Resource.java: Same. + * rt/net/sourceforge/jnlp/cache/ResourceTracker.java: Supply cookie string + to server when requesting jars, if there is one set. + * rt/net/sourceforge/jnlp/runtime/Boot.java: Initialize JNLPFile with null + cookie string. + * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Store/supply + cookie info as needed. + * rt/net/sourceforge/jnlp/tools/JarSigner.java: Use JarInputStream instead + of Jar to handle empty jars, and update signature checking accordingly. + 2009-02-23 Lillian Angel * AUTHORS: Added Mark Reinhold. diff -r 0848286d8e5c -r 1be2224bd96c IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Mon Feb 23 15:42:22 2009 -0500 +++ b/IcedTeaPlugin.cc Mon Feb 23 17:14:33 2009 -0500 @@ -1063,6 +1063,7 @@ private: IcedTeaPluginFactory* factory; PRUint32 instance_identifier; nsCString instanceIdentifierPrefix; + nsresult GetCookie(const char* siteAddr, char** cookieString); }; @@ -2281,6 +2282,12 @@ IcedTeaPluginFactory::DisplayFailureDial } +#include +#include +#include +#include +#include + NS_IMPL_ISUPPORTS2 (IcedTeaPluginInstance, nsIPluginInstance, nsIJVMPluginInstance) @@ -2337,25 +2344,35 @@ IcedTeaPluginInstance::Initialize (nsIPl PLUGIN_DEBUG_1ARG("TAG FROM BROWSER = %s\n", tagMessage.get()); // encode newline characters in the message - nsCString toSend(""); + nsCString encodedAppletTag(""); for (int i=0; i < tagMessage.Length(); i++) { if (tagMessage.get()[i] == '\r') { - toSend += " "; + encodedAppletTag += " "; continue; } if (tagMessage.get()[i] == '\n') { - toSend += " "; + encodedAppletTag += " "; continue; } - toSend += tagMessage.get()[i]; + encodedAppletTag += tagMessage.get()[i]; } - factory->SendMessageToAppletViewer (toSend); + nsCString cookieInfo(instanceIdentifierPrefix); + cookieInfo += "cookie "; + + char* cookieString; + if (GetCookie(documentbase, &cookieString) == NS_OK) + { + cookieInfo += cookieString; + } + + factory->SendMessageToAppletViewer (cookieInfo); + factory->SendMessageToAppletViewer (encodedAppletTag); // Set back-pointer to peer instance. PLUGIN_DEBUG_1ARG ("SETTING PEER!!!: %p\n", aPeer); @@ -2629,6 +2646,42 @@ IcedTeaPluginInstance::GetJavaObject (jo return factory->GetJavaObject (instance_identifier, object); } + +NS_IMETHODIMP +IcedTeaPluginInstance::GetCookie(const char* siteAddr, char** cookieString) +{ + + nsresult rv; + nsCOMPtr sec_man = + do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); + + if (!sec_man) { + return NS_ERROR_FAILURE; + } + + nsCOMPtr io_svc = do_GetService(NS_IOSERVICE_CONTRACTID, &rv); + + if (NS_FAILED(rv) || !io_svc) { + return NS_ERROR_FAILURE; + } + + nsIURI *uri; + io_svc->NewURI(nsCString(siteAddr), NULL, NULL, &uri); + + nsCOMPtr cookie_svc = do_GetService(NS_COOKIESERVICE_CONTRACTID, &rv); + + if (NS_FAILED(rv) || !cookie_svc) { + return NS_ERROR_FAILURE; + } + + rv = cookie_svc->GetCookieString(uri, NULL, cookieString); + + if (NS_FAILED(rv) || !*cookieString) { + return NS_ERROR_FAILURE; + } + + return NS_OK; +} NS_IMETHODIMP IcedTeaPluginFactory::GetJavaObject (PRUint32 instance_identifier, @@ -4438,10 +4491,7 @@ NS_IMPL_ISUPPORTS1 (IcedTeaJNIEnv, nsISe #include #include #include -#include #include -#include -#include #include IcedTeaJNIEnv::IcedTeaJNIEnv (IcedTeaPluginFactory* factory) @@ -4486,16 +4536,6 @@ nsresult nsresult IcedTeaJNIEnv::GetEnabledPrivileges(nsCString *privileges, nsISecurityContext *ctx) { - nsresult rv; - nsCOMPtr sec_man = - do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); - - if (NS_FAILED(rv) || !sec_man) { - return NS_ERROR_FAILURE; - } - - PRBool isEnabled = PR_FALSE; - // check privileges one by one privileges->Truncate(); diff -r 0848286d8e5c -r 1be2224bd96c plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Mon Feb 23 15:42:22 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Mon Feb 23 17:14:33 2009 -0500 @@ -174,6 +174,8 @@ import sun.misc.Ref; private static PluginCallRequestFactory requestFactory; + private static HashMap siteCookies = new HashMap(); + private double proposedHeightFactor; private double proposedWidthFactor; @@ -186,7 +188,7 @@ import sun.misc.Ref; /** * Create the applet viewer */ - public PluginAppletViewer(int identifier, long handle, int x, int y, final URL doc, + public PluginAppletViewer(final int identifier, long handle, int x, int y, final URL doc, final Hashtable atts, PrintStream statusMsgStream, PluginAppletViewerFactory factory) { super(handle, true); @@ -213,7 +215,7 @@ import sun.misc.Ref; AccessController.doPrivileged(new PrivilegedAction() { public Object run() { try { - panel = new NetxPanel(doc, atts, false); + panel = new NetxPanel(doc, siteCookies.get(identifier), atts, false); AppletViewerPanel.debug("Using NetX panel"); PluginDebug.debug(atts.toString()); } catch (Exception ex) { @@ -302,15 +304,12 @@ import sun.misc.Ref; showStatus(amh.getMessage("status.start")); initEventQueue(); - // Wait for a maximum of 10 seconds for the panel to initialize + // Wait for the panel to initialize // (happens in a separate thread) Applet a; - int maxSleepTime = 10000; - int sleepTime = 0; - while ((a = panel.getApplet()) == null && sleepTime < maxSleepTime) { + while ((a = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { try { Thread.sleep(100); - sleepTime += 100; PluginDebug.debug("Waiting for applet to initialize... "); } catch (InterruptedException ie) { ie.printStackTrace(); @@ -344,7 +343,7 @@ import sun.misc.Ref; } catch (IOException ioe) { ioe.printStackTrace(); } - + } public static void setStreamhandler(PluginStreamHandler sh) { @@ -420,6 +419,16 @@ import sun.misc.Ref; PluginDebug.debug ("REQUEST TAG NOT SET: " + request.tag + ". BYPASSING"); } } + } else if (message.startsWith("cookie")) { + + int cookieStrIndex = message.indexOf(" "); + String cookieStr = null; + + if (cookieStrIndex > 0) + cookieStr = message.substring(cookieStrIndex); + + // Always set the cookie -- even if it is null + siteCookies.put(identifier, cookieStr); } else { PluginDebug.debug ("HANDLING MESSAGE " + message + " instance " + identifier + " " + Thread.currentThread()); applets.get(identifier).handleMessage(reference, message); @@ -480,18 +489,21 @@ import sun.misc.Ref; // object should belong to? Object o; - // Wait for a maximum of 10 seconds for the panel to initialize + // Wait for the panel to initialize // (happens in a separate thread) - int maxSleepTime = 10000; - int sleepTime = 0; - while ((o = panel.getApplet()) == null && sleepTime < maxSleepTime) { + while ((o = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { try { Thread.sleep(100); - sleepTime += 100; PluginDebug.debug("Waiting for applet to initialize..."); } catch (InterruptedException ie) { ie.printStackTrace(); } + } + + // Still null? + if (panel.getApplet() == null) { + this.streamhandler.write("instance " + identifier + " reference " + -1 + " fatalError " + "Initialization failed"); + return; } PluginDebug.debug ("Looking for object " + o + " panel is " + panel); @@ -1455,6 +1467,11 @@ import sun.misc.Ref; public static void parse(int identifier, long handle, Reader in, URL url) throws IOException { + + // wait until cookie is set (even if cookie is null, it needs to be + // "set" to that first + while (!siteCookies.containsKey(identifier)); + final int fIdentifier = identifier; final long fHandle = handle; final Reader fIn = in; diff -r 0848286d8e5c -r 1be2224bd96c plugin/icedtea/sun/applet/PluginStreamHandler.java --- a/plugin/icedtea/sun/applet/PluginStreamHandler.java Mon Feb 23 15:42:22 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginStreamHandler.java Mon Feb 23 17:14:33 2009 -0500 @@ -362,24 +362,26 @@ public class PluginStreamHandler { try { message = pluginInputReader.readLine(); PluginDebug.debug(" PIPE: appletviewer read: " + message); + + if (message == null || message.equals("shutdown")) { + synchronized(shuttingDown) { + shuttingDown = true; + } + try { + // Close input/output channels to plugin. + pluginInputReader.close(); + pluginOutputWriter.close(); + } catch (IOException exception) { + // Deliberately ignore IOException caused by broken + // pipe since plugin may have already detached. + } + AppletSecurityContextManager.dumpStore(0); + PluginDebug.debug("APPLETVIEWER: exiting appletviewer"); + System.exit(0); + } + } catch (IOException e) { - - if (message == null || message.equals("shutdown")) { - synchronized(shuttingDown) { - shuttingDown = true; - } - try { - // Close input/output channels to plugin. - pluginInputReader.close(); - pluginOutputWriter.close(); - } catch (IOException exception) { - // Deliberately ignore IOException caused by broken - // pipe since plugin may have already detached. - } - AppletSecurityContextManager.dumpStore(0); - PluginDebug.debug("APPLETVIEWER: exiting appletviewer"); - System.exit(0); - } + e.printStackTrace(); } return message; diff -r 0848286d8e5c -r 1be2224bd96c rt/net/sourceforge/jnlp/ExtensionDesc.java --- a/rt/net/sourceforge/jnlp/ExtensionDesc.java Mon Feb 23 15:42:22 2009 -0500 +++ b/rt/net/sourceforge/jnlp/ExtensionDesc.java Mon Feb 23 17:14:33 2009 -0500 @@ -40,6 +40,9 @@ public class ExtensionDesc { /** the location of the extension JNLP file */ private URL location; + + /** the cookie string sent with resource requests */ + private String cookieStr; /** the JNLPFile the extension refers to */ private JNLPFile file; @@ -58,10 +61,11 @@ public class ExtensionDesc { * @param version the required version of the extention JNLPFile * @param location the location of the extention JNLP file */ - public ExtensionDesc(String name, Version version, URL location) { + public ExtensionDesc(String name, Version version, URL location, String cookieStr) { this.name = name; this.version = version; this.location = location; + this.cookieStr = cookieStr; } /** @@ -121,7 +125,7 @@ public class ExtensionDesc { */ public void resolve() throws ParseException, IOException { if (file == null) { - file = new JNLPFile(location); + file = new JNLPFile(location, cookieStr); if (JNLPRuntime.isDebug()) System.out.println("Resolve: "+file.getInformation().getTitle()); @@ -140,6 +144,13 @@ public class ExtensionDesc { public JNLPFile getJNLPFile() { return file; } + + /** + * Returns the cookie associated with this instance + */ + public String getCookieStr() { + return cookieStr; + } } diff -r 0848286d8e5c -r 1be2224bd96c rt/net/sourceforge/jnlp/JNLPFile.java --- a/rt/net/sourceforge/jnlp/JNLPFile.java Mon Feb 23 15:42:22 2009 -0500 +++ b/rt/net/sourceforge/jnlp/JNLPFile.java Mon Feb 23 17:14:33 2009 -0500 @@ -62,6 +62,9 @@ public class JNLPFile { /** the URL used to resolve relative URLs in the file */ protected URL codeBase; + + /** cookie string to send alongwith resource requests */ + protected String cookieStr; /** file version */ protected Version fileVersion; @@ -117,8 +120,8 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location) throws IOException, ParseException { - this(location, false); // not strict + public JNLPFile(URL location, String cookieStr) throws IOException, ParseException { + this(location, cookieStr, false); // not strict } /** @@ -130,8 +133,8 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, boolean strict) throws IOException, ParseException { - this(location, strict, JNLPRuntime.getDefaultUpdatePolicy()); + public JNLPFile(URL location, String cookieStr, boolean strict) throws IOException, ParseException { + this(location, cookieStr, strict, JNLPRuntime.getDefaultUpdatePolicy()); } /** @@ -144,11 +147,12 @@ public class JNLPFile { * @throws IOException if an IO exception occurred * @throws ParseException if the JNLP file was invalid */ - public JNLPFile(URL location, boolean strict, UpdatePolicy policy) throws IOException, ParseException { - Node root = Parser.getRootNode(openURL(location, policy)); + public JNLPFile(URL location, String cookieStr, boolean strict, UpdatePolicy policy) throws IOException, ParseException { + Node root = Parser.getRootNode(openURL(location, cookieStr, policy)); parse(root, strict, location); this.fileLocation = location; + this.cookieStr = cookieStr; } /** @@ -179,13 +183,13 @@ public class JNLPFile { * Open the jnlp file URL from the cache if there, otherwise * download to the cache. Called from constructor. */ - private static InputStream openURL(URL location, UpdatePolicy policy) throws IOException { + private static InputStream openURL(URL location, String cookieStr, UpdatePolicy policy) throws IOException { if (location == null || policy == null) throw new IllegalArgumentException(R("NullParameter")); try { ResourceTracker tracker = new ResourceTracker(false); // no prefetch - tracker.addResource(location, null/*version*/, policy); + tracker.addResource(location, cookieStr, null/*version*/, policy); return tracker.getInputStream(location); } @@ -246,6 +250,13 @@ public class JNLPFile { return codeBase; } + /** + * Returns the cookie string that will be send when resources for this file are requested + */ + public String getCookieStr() { + return cookieStr; + } + /** * Returns the information section of the JNLP file as viewed * through the default locale. diff -r 0848286d8e5c -r 1be2224bd96c rt/net/sourceforge/jnlp/Launcher.java --- a/rt/net/sourceforge/jnlp/Launcher.java Mon Feb 23 15:42:22 2009 -0500 +++ b/rt/net/sourceforge/jnlp/Launcher.java Mon Feb 23 17:14:33 2009 -0500 @@ -299,10 +299,10 @@ public class Launcher { JNLPFile file = null; try { - file = new JNLPFile(location, true, updatePolicy); // strict + file = new JNLPFile(location, null, true, updatePolicy); // strict } catch (ParseException ex) { - file = new JNLPFile(location, false, updatePolicy); + file = new JNLPFile(location, null, false, updatePolicy); // only here if strict failed but lax did not fail LaunchException lex = diff -r 0848286d8e5c -r 1be2224bd96c rt/net/sourceforge/jnlp/NetxPanel.java --- a/rt/net/sourceforge/jnlp/NetxPanel.java Mon Feb 23 15:42:22 2009 -0500 +++ b/rt/net/sourceforge/jnlp/NetxPanel.java Mon Feb 23 17:14:33 2009 -0500 @@ -41,6 +41,7 @@ public class NetxPanel extends AppletVie private PluginBridge bridge = null; private boolean exitOnFailure = true; private AppletInstance appInst = null; + private String cookieStr; public NetxPanel(URL documentURL, Hashtable atts) { @@ -48,10 +49,11 @@ public class NetxPanel extends AppletVie } // overloaded constructor, called when initialized via plugin - public NetxPanel(URL documentURL, Hashtable atts, boolean exitOnFailure) + public NetxPanel(URL documentURL, String cookieStr, Hashtable atts, boolean exitOnFailure) { this(documentURL, atts); this.exitOnFailure = exitOnFailure; + this.cookieStr = cookieStr; } //Overriding to use Netx classloader. You might need to relax visibility From dbhole at redhat.com Mon Feb 23 14:23:02 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 23 Feb 2009 17:23:02 -0500 Subject: Patch proposal to fix PluginAppletViewer signed applets initialization failure bug due to timeouts from user interaction. In-Reply-To: <499AD517.2020404@zafena.se> References: <499AD517.2020404@zafena.se> Message-ID: <20090223222302.GD5768@redhat.com> * Xerxes R?nby [2009-02-17 10:48]: > This is a proposal for a patch to icedtea6 PluginAppletViewer to make the > applet initialization work in cases when a user has to manually grant a > signed application to run, this can take indefinately long times. This > initialization timeout bug also break initialization on platforms with slow > startuptimes like ARM using Zero Hotspot. > > The current implementation of the PluginAppletViewer only gives the > NetxPanel 10 seconds to initialize the applet. This initialization fails > ofcourse when Netx displays the security warning popup asking for user > action unless the user responds within 10 seconds. > > One way i could think of improving this patch further is to only allow the > plugin to wait for the applet during APPLET_LOADING state of the > AppletPanel. > A way to archive this further improvement is to make the PluginAppletViewer > an AppletListener and register it to listen for the APPLET_LOADING and > APPLET_LOADING_COMPLETED events. > > Suggestions are welcome. > > Cheers and have a great day! > Xerxes > > > Patch has been applied with my latest commit. Thank you very much! Deepak > > > > > > diff -r 551c49cb2e2a plugin/icedtea/sun/applet/PluginAppletViewer.java > --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Wed Feb 11 11:49:45 2009 -0500 > +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Tue Feb 17 14:50:37 2009 +0100 > @@ -302,15 +302,12 @@ > showStatus(amh.getMessage("status.start")); > initEventQueue(); > > - // Wait for a maximum of 10 seconds for the panel to initialize > + // Wait for the panel to initialize > // (happens in a separate thread) > Applet a; > - int maxSleepTime = 10000; > - int sleepTime = 0; > - while ((a = panel.getApplet()) == null && sleepTime < maxSleepTime) { > + while ((a = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { > try { > Thread.sleep(100); > - sleepTime += 100; > PluginDebug.debug("Waiting for applet to initialize... "); > } catch (InterruptedException ie) { > ie.printStackTrace(); > @@ -480,20 +477,23 @@ > // object should belong to? > Object o; > > - // Wait for a maximum of 10 seconds for the panel to initialize > + // Wait for the panel to initialize > // (happens in a separate thread) > - int maxSleepTime = 10000; > - int sleepTime = 0; > - while ((o = panel.getApplet()) == null && sleepTime < maxSleepTime) { > + while ((o = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { > try { > Thread.sleep(100); > - sleepTime += 100; > PluginDebug.debug("Waiting for applet to initialize..."); > } catch (InterruptedException ie) { > ie.printStackTrace(); > } > } > > + // Still null? > + if (panel.getApplet() == null) { > + this.streamhandler.write("instance " + identifier + " reference " + -1 + " fatalError " + "GetJavaObject Initialization failed"); > + return; > + } > + > PluginDebug.debug ("Looking for object " + o + " panel is " + panel); > AppletSecurityContextManager.getSecurityContext(0).store(o); > PluginDebug.debug ("WRITING 1: " + "context 0 reference " + reference + " GetJavaObject " From mr at sun.com Mon Feb 23 14:45:21 2009 From: mr at sun.com (Mark Reinhold) Date: Mon, 23 Feb 2009 14:45:21 -0800 Subject: OpenJDK/IcedTea naming patch In-Reply-To: gnu_andrew@member.fsf.org; Mon, 23 Feb 2009 22:12:51 GMT; <17c6771e0902231412m6cddfa71vadeaacf684a73c7d@mail.gmail.com> Message-ID: <20090223224521.1665C28CFF2@eggemoggin.niobe.net> > Date: Mon, 23 Feb 2009 22:12:51 +0000 > From: Andrew John Hughes > 2009/2/23 Mark Reinhold : >> Agree on the fairness angle, but I know a few HotSpot engineers who'd >> argue with your parenthetical point. >> > > Well I wasn't suggesting a VM as capable as HotSpot :) > I was just pointing out that there were lots of Free VMs with varying > goals and levels of completeness before HotSpot was made available > under the GPL. All of these were sufficient to run Java programs, > even if not being on quite the same performance or feature level as > HotSpot. But there was no complete class library implementation, and > the one in OpenJDK remains the only one now (mainly by virtue of being > the reference implementation; it can set the bar rather than chasing > it). Understood -- I said that mainly for (lame) humor value. >>> ... >>> >>> I like this change, it seems to reach a happy medium. ??I notice you >>> also change the version template. ??What is the value of the >>> java.version property as a result? ??The same as those listed above? >> >> The value of java.version doesn't change; it's still set from >> FULL_VERSION, as before, and the value of that make variable has >> not changed. > > Ok, then what does the version template change mean? :) I added two fields, jdk_derivative_name and distro_package_version, which are initialized at build time from the corresponding new make variables. I also rewrote the print(PrintStream) method to format the output according to whether those fields have non-empty values. The java.version system property is still set, in the static init() method, to the value of the java_version field, which is still defined at build time as the value of the RELEASE make variable, which hasn't changed. (I mis-wrote FULL_VERSION in my previous reply.) - Mark From gbenson at redhat.com Tue Feb 24 06:53:49 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 24 Feb 2009 14:53:49 +0000 Subject: changeset in /hg/icedtea6: 2009-02-24 Gary Benson changeset 1847391cef9c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=1847391cef9c description: 2009-02-24 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::get_basic_callee): Removed. (SharkBlock::get_direct_callee): New method. (SharkBlock::get_virtual_callee): Likewise. (SharkBlock::get_interface_callee): Removed cache parameter. (SharkBlock::get_callee): Removed. (SharkBlock::do_call): Perform caller selection inline. * ports/hotspot/src/share/vm/shark/sharkBlock.hpp (SharkBlock::get_basic_callee): Removed. (SharkBlock::get_direct_callee): New method. (SharkBlock::get_virtual_callee): Likewise. (SharkBlock::get_interface_callee): Changed prototype. (SharkBlock::get_callee): Removed. diffstat: 3 files changed, 81 insertions(+), 30 deletions(-) ChangeLog | 17 ++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 86 ++++++++++++++++------- ports/hotspot/src/share/vm/shark/sharkBlock.hpp | 8 +- diffs (165 lines): diff -r 1be2224bd96c -r 1847391cef9c ChangeLog --- a/ChangeLog Mon Feb 23 17:14:33 2009 -0500 +++ b/ChangeLog Tue Feb 24 14:53:39 2009 +0000 @@ -1,3 +1,20 @@ 2009-02-23 Deepak Bhole + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::get_basic_callee): Removed. + (SharkBlock::get_direct_callee): New method. + (SharkBlock::get_virtual_callee): Likewise. + (SharkBlock::get_interface_callee): Removed cache parameter. + (SharkBlock::get_callee): Removed. + (SharkBlock::do_call): Perform caller selection inline. + + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::get_basic_callee): Removed. + (SharkBlock::get_direct_callee): New method. + (SharkBlock::get_virtual_callee): Likewise. + (SharkBlock::get_interface_callee): Changed prototype. + (SharkBlock::get_callee): Removed. + 2009-02-23 Deepak Bhole * IcedTeaPlugin.cc: Supply cookie info to Java side. diff -r 1be2224bd96c -r 1847391cef9c ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Mon Feb 23 17:14:33 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Tue Feb 24 14:53:39 2009 +0000 @@ -1726,14 +1726,58 @@ void SharkBlock::do_switch() } } -Value* SharkBlock::get_basic_callee(Value *cache) -{ +// Direct calls can be made when the callee is fixed. +// invokestatic and invokespecial are always direct; +// invokevirtual is direct in some circumstances. +Value *SharkBlock::get_direct_callee(ciMethod* method) +{ + SharkConstantPool constants(this); + Value *cache = constants.cache_entry_at(iter()->get_method_index()); return builder()->CreateValueOfStructEntry( - cache, ConstantPoolCacheEntry::f1_offset(), + cache, + bc() == Bytecodes::_invokevirtual ? + ConstantPoolCacheEntry::f2_offset() : + ConstantPoolCacheEntry::f1_offset(), SharkType::methodOop_type(), "callee"); } +// Non-direct virtual calls are handled here +Value *SharkBlock::get_virtual_callee(SharkValue *receiver, ciMethod* method) +{ + Value *klass = builder()->CreateValueOfStructEntry( + receiver->jobject_value(), + in_ByteSize(oopDesc::klass_offset_in_bytes()), + SharkType::jobject_type(), + "klass"); + + Value *index; + if (!method->holder()->is_linked()) { + // Yuck, we have to do this one slow :( + // XXX should we trap on this? + NOT_PRODUCT(warning("unresolved invokevirtual in %s", function()->name())); + SharkConstantPool constants(this); + Value *cache = constants.cache_entry_at(iter()->get_method_index()); + index = builder()->CreateValueOfStructEntry( + cache, ConstantPoolCacheEntry::f2_offset(), + SharkType::intptr_type(), + "index"); + } + else { + index = LLVMValue::intptr_constant(method->vtable_index()); + } + + return builder()->CreateLoad( + builder()->CreateArrayAddress( + klass, + SharkType::methodOop_type(), + vtableEntry::size() * wordSize, + in_ByteSize(instanceKlass::vtable_start_offset() * wordSize), + index), + "callee"); +} + +// Interpreter-style virtual call lookup Value* SharkBlock::get_virtual_callee(Value *cache, SharkValue *receiver) { BasicBlock *final = function()->CreateBlock("final"); @@ -1792,8 +1836,12 @@ Value* SharkBlock::get_virtual_callee(Va return callee; } -Value* SharkBlock::get_interface_callee(Value *cache, SharkValue *receiver) -{ +// Interpreter-style interface call lookup +Value* SharkBlock::get_interface_callee(SharkValue *receiver) +{ + SharkConstantPool constants(this); + Value *cache = constants.cache_entry_at(iter()->get_method_index()); + BasicBlock *hacky = function()->CreateBlock("hacky"); BasicBlock *normal = function()->CreateBlock("normal"); BasicBlock *loop = function()->CreateBlock("loop"); @@ -1947,24 +1995,6 @@ Value* SharkBlock::get_interface_callee( return callee; } -Value* SharkBlock::get_callee(Value *cache, SharkValue *receiver) -{ - switch (bc()) { - case Bytecodes::_invokestatic: - case Bytecodes::_invokespecial: - return get_basic_callee(cache); - - case Bytecodes::_invokevirtual: - return get_virtual_callee(cache, receiver); - - case Bytecodes::_invokeinterface: - return get_interface_callee(cache, receiver); - - default: - ShouldNotReachHere(); - } -} - void SharkBlock::do_call() { bool will_link; @@ -1979,9 +2009,13 @@ void SharkBlock::do_call() } // Find the method we are calling - SharkConstantPool constants(this); - Value *cache = constants.cache_entry_at(iter()->get_method_index()); - Value *callee = get_callee(cache, receiver); + Value *callee; + if (bc() == Bytecodes::_invokeinterface) + callee = get_interface_callee(receiver); + else if (bc() == Bytecodes::_invokevirtual && !method->is_final_method()) + callee = get_virtual_callee(receiver, method); + else + callee = get_direct_callee(method); Value *base_pc = builder()->CreateValueOfStructEntry( callee, methodOopDesc::from_interpreted_offset(), diff -r 1be2224bd96c -r 1847391cef9c ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Mon Feb 23 17:14:33 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Tue Feb 24 14:53:39 2009 +0000 @@ -493,11 +493,11 @@ class SharkBlock : public ResourceObj { // invoke* private: - llvm::Value* get_basic_callee(llvm::Value* cache); + llvm::Value* get_direct_callee(ciMethod* method); + llvm::Value* get_virtual_callee(SharkValue* receiver, ciMethod* method); + llvm::Value* get_virtual_callee(llvm::Value* cache, SharkValue* receiver); - llvm::Value* get_interface_callee(llvm::Value* cache, SharkValue* receiver); - - llvm::Value* get_callee(llvm::Value* cache, SharkValue* receiver); + llvm::Value* get_interface_callee(SharkValue* receiver); void do_call(); From gbenson at redhat.com Tue Feb 24 07:02:17 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 24 Feb 2009 15:02:17 +0000 Subject: Shark invokevirtual optimization Message-ID: <20090224150217.GA25428@redhat.com> Hi all, The Shark commit I just pushed to icedtea6 optimizes invokevirtual for non-final invocations. Quick and dirty SPECjvm98 numbers (not produced in compliance with the SPECjvm98 run rules and so not comparable with SPECjvm98 metrics) look like this: Zero Old Shark New Shark Speedup compress 230.228 11.717 11.713 0.0% jess 64.259 8.697 8.475 2.6% db 115.229 16.902 16.350 3.3% javac 67.757 14.875 13.704 7.9% mpegaudio 227.917 8.335 8.109 2.7% mtrt 57.192 10.817 7.785 28.0% jack 45.374 10.686 9.980 6.6% Apparently mtrt does a lot of virtual calls :) Next stop... direct calls (invokestatic, invokespecial, and final invokevirtual). Happy Pancake Day! Gary -- http://gbenson.net/ From langel at redhat.com Tue Feb 24 10:04:34 2009 From: langel at redhat.com (Lillian Angel) Date: Tue, 24 Feb 2009 13:04:34 -0500 Subject: Proposed IcedTea6-1.4.1 Release Message-ID: <49A436B2.7090304@redhat.com> Hi, There was a bit of a mix up with the version string[1] in IcedTea, and we managed to get VisualVM[2] back into the repo. Also, Deepak committed an important fix for the plugin[3]. In light of Fedora 11 beta release in early March[4], we would like to have a minor release to include all these fixes. The plan is to base the new branch on the IcedTea6-1.4 release + the appropriate patches (including any others may find important). A new and separate branch will be created for the IcedTea6-1.4.1 release. FWIW, the update will only be pushed into F11, and not F10. [1] http://icedtea.classpath.org/hg/icedtea6/rev/0848286d8e5c [2] http://icedtea.classpath.org/hg/icedtea6/rev/a2763653f8cf and http://icedtea.classpath.org/hg/icedtea6/rev/2a6a1bd55bb8 [3] http://icedtea.classpath.org/hg/icedtea6/rev/1be2224bd96c and http://icedtea.classpath.org/hg/icedtea6/rev/3b8dcbd3d44d [4] https://fedoraproject.org/wiki/Releases/11/Schedule Any objections or suggestions? Thanks, Lillian From gnu_andrew at member.fsf.org Tue Feb 24 10:21:42 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 24 Feb 2009 18:21:42 +0000 Subject: Proposed IcedTea6-1.4.1 Release In-Reply-To: <49A436B2.7090304@redhat.com> References: <49A436B2.7090304@redhat.com> Message-ID: <17c6771e0902241021h6bded516sc37a92695c781fe5@mail.gmail.com> 2009/2/24 Lillian Angel : > Hi, > > There was a bit of a mix up with the version string[1] in IcedTea, and we > managed to get VisualVM[2] back into the repo. Also, Deepak committed an > important fix for the plugin[3]. > > In light of Fedora 11 beta release in early March[4], we would like to have > a minor release to include all these fixes. The plan is to base the new > branch on the IcedTea6-1.4 release + the appropriate patches (including any > others may find important). A new and separate branch will be created for > the IcedTea6-1.4.1 release. > > FWIW, the update will only be pushed into F11, and not F10. > > [1] http://icedtea.classpath.org/hg/icedtea6/rev/0848286d8e5c > [2] http://icedtea.classpath.org/hg/icedtea6/rev/a2763653f8cf and > http://icedtea.classpath.org/hg/icedtea6/rev/2a6a1bd55bb8 > [3] http://icedtea.classpath.org/hg/icedtea6/rev/1be2224bd96c and > http://icedtea.classpath.org/hg/icedtea6/rev/3b8dcbd3d44d > [4] https://fedoraproject.org/wiki/Releases/11/Schedule > > > Any objections or suggestions? > > > Thanks, > Lillian > +1 -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From Dalibor.Topic at Sun.COM Tue Feb 24 12:52:34 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Tue, 24 Feb 2009 21:52:34 +0100 Subject: Proposed IcedTea6-1.4.1 Release In-Reply-To: <17c6771e0902241021h6bded516sc37a92695c781fe5@mail.gmail.com> References: <49A436B2.7090304@redhat.com> <17c6771e0902241021h6bded516sc37a92695c781fe5@mail.gmail.com> Message-ID: <49A45E12.4010108@sun.com> Andrew John Hughes wrote: > 2009/2/24 Lillian Angel : >> Hi, >> >> There was a bit of a mix up with the version string[1] in IcedTea, and we >> managed to get VisualVM[2] back into the repo. Also, Deepak committed an >> important fix for the plugin[3]. >> >> In light of Fedora 11 beta release in early March[4], we would like to have >> a minor release to include all these fixes. The plan is to base the new >> branch on the IcedTea6-1.4 release + the appropriate patches (including any >> others may find important). A new and separate branch will be created for >> the IcedTea6-1.4.1 release. >> >> FWIW, the update will only be pushed into F11, and not F10. >> >> [1] http://icedtea.classpath.org/hg/icedtea6/rev/0848286d8e5c >> [2] http://icedtea.classpath.org/hg/icedtea6/rev/a2763653f8cf and >> http://icedtea.classpath.org/hg/icedtea6/rev/2a6a1bd55bb8 >> [3] http://icedtea.classpath.org/hg/icedtea6/rev/1be2224bd96c and >> http://icedtea.classpath.org/hg/icedtea6/rev/3b8dcbd3d44d >> [4] https://fedoraproject.org/wiki/Releases/11/Schedule >> >> >> Any objections or suggestions? No objections, thank you for rolling a release! cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From mark at klomp.org Tue Feb 24 12:57:34 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 24 Feb 2009 21:57:34 +0100 Subject: Creating new IcedTea repos In-Reply-To: <1235426957.3552.58.camel@hermans.wildebeest.org> References: <1235426957.3552.58.camel@hermans.wildebeest.org> Message-ID: <1235509054.15840.10.camel@hermans.wildebeest.org> Hi, On Mon, 2009-02-23 at 23:09 +0100, Mark Wielaard wrote: > One bottleneck working on IcedTea was that it wasn't easy to create new > repos or clone existing ones. That has now been solved. Everybody who > can push to IcedTea can now clone repos for release or private (but > public) branches, or create new repos for work related to IcedTea that > they want to host (the only requirement is that the work is Free > Software of course). hg-remote-clone got one additional feature, -r which lets you clone a repository up to instead of the whole history of the original repo. It can be used everywhere below, just as if doing a normal hg clone -r. Please only use when needed, it is less efficient than doing a full clone, so doing a full clone, or a -r tip one, is preferred when you just want the full history for a branch. > When creating a release repo from on of the main repos under /hg do: > > ssh @icedtea.classpath.org \ > hg-remote-clone /hg/ /hg/release/-x.y > > Please do coordinate first on the version string/extension used. > Release branches will show up under http://icedtea.classpath.org/hg/ and > have a release/ prefix. > > When creating a repo for a private repo under your own /people// > tree do: > hg init ssh://@icedtea.classpath.org/people// > > Or if you already have a local repo then you can push it through: > hg clone \ > ssh://@icedtea.classpath.org/people// > > But if it is work based on an existing repo (either > under /hg, /hg/release or /people//) then please do a server hg > clone to safe bandwidth and disk-space on the server by: > > ssh @icedtea.classpath.org \ > hg-remote-clone /hg/ /people// > > These personal repos will also show up under > http://icedtea.classpath.org/people/ and will have your name > and / as prefix. > > Thanks, > > Mark From mark at klomp.org Tue Feb 24 13:06:09 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 24 Feb 2009 22:06:09 +0100 Subject: Creating new IcedTea repos In-Reply-To: <1235509054.15840.10.camel@hermans.wildebeest.org> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> Message-ID: <1235509569.15840.15.camel@hermans.wildebeest.org> Hi, On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: > On Mon, 2009-02-23 at 23:09 +0100, Mark Wielaard wrote: > > One bottleneck working on IcedTea was that it wasn't easy to create new > > repos or clone existing ones. That has now been solved. Everybody who > > can push to IcedTea can now clone repos for release or private (but > > public) branches, or create new repos for work related to IcedTea that > > they want to host (the only requirement is that the work is Free > > Software of course). > > hg-remote-clone got one additional feature, -r which lets you > clone a repository up to instead of the whole history of the > original repo. It can be used everywhere below, just as if doing a > normal hg clone -r. Please only use when needed, it is less efficient > than doing a full clone, so doing a full clone, or a -r tip one, is > preferred when you just want the full history for a branch. One oddity here which bit me while testing. Just like a normal hg clone, if you hg clone -r some-tag, it will clone up-to, but not include, the tag. That is because the tagging is just a normal commit, that adds the tag name and the (previous) revision number to the .hgtags file. So, if you want to include the tag, look in the hg log for the revision number one past the tag revision number itself. > > When creating a release repo from on of the main repos under /hg do: > > > > ssh @icedtea.classpath.org \ > > hg-remote-clone /hg/ /hg/release/-x.y > > > > Please do coordinate first on the version string/extension used. > > Release branches will show up under http://icedtea.classpath.org/hg/ and > > have a release/ prefix. > > > > When creating a repo for a private repo under your own /people// > > tree do: > > hg init ssh://@icedtea.classpath.org/people// > > > > Or if you already have a local repo then you can push it through: > > hg clone \ > > ssh://@icedtea.classpath.org/people// > > > > But if it is work based on an existing repo (either > > under /hg, /hg/release or /people//) then please do a server hg > > clone to safe bandwidth and disk-space on the server by: > > > > ssh @icedtea.classpath.org \ > > hg-remote-clone /hg/ /people// > > > > These personal repos will also show up under > > http://icedtea.classpath.org/people/ and will have your name > > and / as prefix. > > > > Thanks, > > > > Mark > From doko at ubuntu.com Tue Feb 24 15:37:24 2009 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 25 Feb 2009 00:37:24 +0100 Subject: Proposed IcedTea6-1.4.1 Release In-Reply-To: <49A436B2.7090304@redhat.com> References: <49A436B2.7090304@redhat.com> Message-ID: <49A484B4.7070501@ubuntu.com> Lillian Angel schrieb: > Hi, > > There was a bit of a mix up with the version string[1] in IcedTea, and > we managed to get VisualVM[2] back into the repo. Also, Deepak committed > an important fix for the plugin[3]. > > In light of Fedora 11 beta release in early March[4], we would like to > have a minor release to include all these fixes. The plan is to base the > new branch on the IcedTea6-1.4 release + the appropriate patches > (including any others may find important). A new and separate branch > will be created for the IcedTea6-1.4.1 release. > > FWIW, the update will only be pushed into F11, and not F10. > > [1] http://icedtea.classpath.org/hg/icedtea6/rev/0848286d8e5c > [2] http://icedtea.classpath.org/hg/icedtea6/rev/a2763653f8cf and > http://icedtea.classpath.org/hg/icedtea6/rev/2a6a1bd55bb8 > [3] http://icedtea.classpath.org/hg/icedtea6/rev/1be2224bd96c and > http://icedtea.classpath.org/hg/icedtea6/rev/3b8dcbd3d44d > [4] https://fedoraproject.org/wiki/Releases/11/Schedule > > > Any objections or suggestions? sounds fine. Matthias From doko at ubuntu.com Tue Feb 24 15:41:09 2009 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 25 Feb 2009 00:41:09 +0100 Subject: IcedTea6 releases In-Reply-To: <1235375578.2279.57.camel@fedora.wildebeest.org> References: <1235375578.2279.57.camel@fedora.wildebeest.org> Message-ID: <49A48595.2000801@ubuntu.com> Mark Wielaard schrieb: > Hi, > > One of the things we discussed at Fosdem was how to coordinate releases. > We agreed that in principle everybody should be able to "call a > release", at least for IcedTea6. In principle that tree should always be > in releasable state. That said, it is still a good idea to have a > stabilization period, where no new features are added, and only > (regression) fixes are done. But this also shouldn't block all other > work. If I did understand Joe correctly at Fosdem, there are no new code drops planned for OpenJDK6, however he mentioned creating the tags instead. How should we go forward with this scenario? Should a tarball be hosted on the icedtea website as well? Matthias From robermann at gmail.com Tue Feb 24 16:00:17 2009 From: robermann at gmail.com (Roberto Mannai) Date: Wed, 25 Feb 2009 01:00:17 +0100 Subject: openjdk,icedtea - Xmx option mandatory In-Reply-To: <414e44f70808201448h578f63adj949eeea3df6fea59@mail.gmail.com> References: <414e44f70808020442n6e6bec20kb18bca726a99e035@mail.gmail.com> <4896E5B9.7020603@redhat.com> <414e44f70808040523t55812505w92f753d94ef5976a@mail.gmail.com> <1217853319.3061.11.camel@dijkstra.wildebeest.org> <414e44f70808041247v2b7da6b8x1078b69b1f90a663@mail.gmail.com> <414e44f70808081441n296e54a5xce8cadad42d32691@mail.gmail.com> <414e44f70808081633m76d43ac9x211527bc35ed9271@mail.gmail.com> <1218452724.2050.17.camel@dijkstra.wildebeest.org> <414e44f70808190825g5f11d308g503d2de34f891b12@mail.gmail.com> <414e44f70808201448h578f63adj949eeea3df6fea59@mail.gmail.com> Message-ID: <414e44f70902241600s5a5480e6yf420effedc96e29@mail.gmail.com> Hi Resuming this old post, just for close the question :); the "Could not reserve enough space for object heap" error was caused by the limit set by "ulimit -v" on my opensuse box, by files /etc/sysconfig/ulimit and /etc/initscript. ulimit -v is set to the 80% of physical ram + swap on my opensuse 11.1. So, given the new defaults for Xmx in openjdk, the java process allocation size is greater than the ulimit max size set during the boot of machine and fails to start. Ciao Rob On Wed, Aug 20, 2008 at 10:48 PM, Roberto Mannai wrote: > > After some debug I have found the following: > > * File collectorPolicy.cpp: > > From CollectorPolicy::initialize_size_info() I have: > _max_heap_byte_size = align_size_up(MaxHeapSize, max_alignment()) = 512 mb. > where > max_alignment() = 2 mb > MaxHeapSize = 512 mb > > Then into TwoGenerationCollectorPolicy::initialize_size_info() I have: > _max_heap_byte_size = 536870912 (512 mb) > _max_gen0_size = 41287680 (39,375 mb) > _max_gen1_size = _max_heap_byte_size - _max_gen0_size = 495583232 (472.625 mb) > > Then into MarkSweepPolicy::initialize_generations() I have: > _generations[0] = new GenerationSpec(Generation::DefNew, > _initial_gen0_size, _max_gen0_size); > _generations[1] = new GenerationSpec(Generation::MarkSweepCompact, > _initial_gen1_size, _max_gen1_size); > > * Going to the file genCollectedHeap.cpp: > In the method GenCollectedHeap::allocate(), I have: > > total_reserved = 512 mb > total_reserved += perm_gen_spec->max_size(); > total_reserved = 576mb > > So adding the max size of PermGen sums up to 603979776 bytes. > > I found no call to os:: memory related functions from os_linux.cpp > (os::available_memory() or os::physical_memory()). > physical_memory is called by arguments.cpp only when there is a > UseParallelGC or AggressiveHeap option. > > In conclusion: it seems to me that, running without the Xmx option, > MaxHeapSize values 512 because is so defined in > hotspot/src/share/vm/runtime/globals.hpp. Adding the max perm size to > the two generations max sizes returns the value of 576 mb, which is > greater of my RAM (512 mb). That's all for me, I hope this can help > you. > > Ciao > Roberto Mannai > > On Tue, Aug 19, 2008 at 5:25 PM, Roberto Mannai wrote: > > Hi > > A quick update. > > > > On 8/11/08, Mark Wielaard wrote: > >> Hi Roberto, > >> In one of your traces that you posted at: > >> https://bugzilla.novell.com/show_bug.cgi?id=414462 > >> You see that the java launcher tries to allocate (mmap2) > >> 603979776 bytes aka 576 MB on your machine, just before the failure, > >> which you clearly don't have. > > > > I started to debug the JVM, and the wrong result can be read into: > > openjdk/hotspot/src/share/vm/memory/genCollectedHeap.cpp:193 > > > > When looping for three times, I have: > > print total_reserved > > ? ? ? ? 0 > > print total_reserved > > ?41287680 = 39,375 mb > > print total_reserved > > ?603979776 = 576mb > > print _n_gens > > 2 > > > > The lines are the following: > > ?for (int i = 0; i < _n_gens; i++) { > > ? total_reserved += _gen_specs[i]->max_size(); > > *** break and print total_reserved *** > > ? if (total_reserved < _gen_specs[i]->max_size()) { > > ? ? vm_exit_during_initialization(overflow_msg); > > ? } > > ? n_covered_regions += _gen_specs[i]->n_covered_regions(); > > ?} > > > > The problem seems related to the generations. I'll continue the analysis. > > > > Ciao > > Roberto Mannai > > > >> > >> If you could help us figure out where/what precisely is guessing > >> something wrong for your setup that would be nice. I don't immediately > >> have a suggestion. But start by tracing which of the os::*memory() > >> functions in openjdk/hotspot/src/os_cpu/*/vm/os_*.cpp are called and > >> what they return in your setup would be a good start. > >> > >> There seems to be a second bug during the cleanup after the abort > >> because of too limited memory. That is the "** glibc detected *** java: > >> free(): invalid pointer" you are seeing. Something is probably freeing > >> something that was never allocated in this case. > >> > >> Cheers, > >> > >> Mark > >> > >> > > From Joe.Darcy at Sun.COM Tue Feb 24 16:21:51 2009 From: Joe.Darcy at Sun.COM (Joe Darcy) Date: Tue, 24 Feb 2009 16:21:51 -0800 Subject: IcedTea6 releases In-Reply-To: <49A48595.2000801@ubuntu.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A48595.2000801@ubuntu.com> Message-ID: <49A48F1F.9040407@sun.com> On 02/24/09 03:41 PM, Matthias Klose wrote: > Mark Wielaard schrieb: > >> Hi, >> >> One of the things we discussed at Fosdem was how to coordinate releases. >> We agreed that in principle everybody should be able to "call a >> release", at least for IcedTea6. In principle that tree should always be >> in releasable state. That said, it is still a good idea to have a >> stabilization period, where no new features are added, and only >> (regression) fixes are done. But this also shouldn't block all other >> work. >> > > If I did understand Joe correctly at Fosdem, there are no new code drops planned > for OpenJDK6, however he mentioned creating the tags instead. How should we go > forward with this scenario? Should a tarball be hosted on the icedtea website as > well? > We will continue to have changes in the upstream OpenJDK 6 repository; periodically these will be tagged with a build number as done in JDK 7. (Several of the recent changes should remove the need for a few of the IcedTea patches.) The current in-progress build is b16. The b15 tag isn't present at the moment, but b15 was just used to mark the transition to Mercurial without any other code changes. If there is interest in having source snapshots in addition to the Mercurial forest, we can could consider continuing to provide that in the future. -Joe -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090224/dde718c0/attachment.html From gnu_andrew at member.fsf.org Tue Feb 24 17:14:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 25 Feb 2009 01:14:04 +0000 Subject: IcedTea6 releases In-Reply-To: <49A48F1F.9040407@sun.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A48595.2000801@ubuntu.com> <49A48F1F.9040407@sun.com> Message-ID: <17c6771e0902241714m1ab15aa0laac6732558d06911@mail.gmail.com> 2009/2/25 Joe Darcy : > On 02/24/09 03:41 PM, Matthias Klose wrote: > > Mark Wielaard schrieb: > > > Hi, > > One of the things we discussed at Fosdem was how to coordinate releases. > We agreed that in principle everybody should be able to "call a > release", at least for IcedTea6. In principle that tree should always be > in releasable state. That said, it is still a good idea to have a > stabilization period, where no new features are added, and only > (regression) fixes are done. But this also shouldn't block all other > work. > > > If I did understand Joe correctly at Fosdem, there are no new code drops > planned > for OpenJDK6, however he mentioned creating the tags instead. How should we > go > forward with this scenario? Should a tarball be hosted on the icedtea > website as > well? > > > We will continue to have changes in the upstream OpenJDK 6 repository; > periodically these will be tagged with a build number as done in JDK 7. > (Several of the recent changes should remove the need for a few of the > IcedTea patches.) > > The current in-progress build is b16.? The b15 tag isn't present at the > moment, but b15 was just used to mark the transition to Mercurial without > any other code changes. > > If there is interest in having source snapshots in addition to the Mercurial > forest, we can could consider continuing to provide that in the future. > > -Joe > > > > I believe source snapshots would make things easier, and they are provided for 7. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From martinrb at google.com Tue Feb 24 17:39:59 2009 From: martinrb at google.com (Martin Buchholz) Date: Tue, 24 Feb 2009 17:39:59 -0800 Subject: IcedTea6 releases In-Reply-To: <49A48F1F.9040407@sun.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A48595.2000801@ubuntu.com> <49A48F1F.9040407@sun.com> Message-ID: <1ccfd1c10902241739h4e6e3d7by4aa4296a888a9789@mail.gmail.com> The source snapshots are traditional and there is an expectation that they will continue. I think people will have a higher expectation of quality from a tarball that has been lovingly assembled by a release engineer than a "simple" hg tag. But if you make it clear that tarballs will no longer be provided, and that any hg tagged "release" has had some QA attention (e.g. published jtreg results) I think there will be no problem. Martin On Tue, Feb 24, 2009 at 16:21, Joe Darcy wrote: > The current in-progress build is b16. The b15 tag isn't present at the > moment, but b15 was just used to mark the transition to Mercurial without > any other code changes. > > If there is interest in having source snapshots in addition to the Mercurial > forest, we can could consider continuing to provide that in the future. From gnu_andrew at member.fsf.org Tue Feb 24 17:54:32 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 25 Feb 2009 01:54:32 +0000 Subject: IcedTea6 releases In-Reply-To: <1ccfd1c10902241739h4e6e3d7by4aa4296a888a9789@mail.gmail.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A48595.2000801@ubuntu.com> <49A48F1F.9040407@sun.com> <1ccfd1c10902241739h4e6e3d7by4aa4296a888a9789@mail.gmail.com> Message-ID: <17c6771e0902241754s6a2e89e5jb7a535b41b77bda@mail.gmail.com> 2009/2/25 Martin Buchholz : > The source snapshots are traditional and there is an expectation > that they will continue. ?I think people will have a higher expectation > of quality from a tarball that has been lovingly assembled by a > release engineer than a "simple" hg tag. > > But if you make it clear that tarballs will no longer be provided, > and that any hg tagged "release" has had some QA attention > (e.g. published jtreg results) I think there will be no problem. > > Martin > > On Tue, Feb 24, 2009 at 16:21, Joe Darcy wrote: > >> The current in-progress build is b16. ?The b15 tag isn't present at the >> moment, but b15 was just used to mark the transition to Mercurial without >> any other code changes. >> >> If there is interest in having source snapshots in addition to the Mercurial >> forest, we can could consider continuing to provide that in the future. > In either case,a tarball needs to be created for offline builds such as those performed by the Debian/Ubuntu buildds and to provide a known snapshot for the Gentoo ebuilds. As Sun was already creating these, it would be easier if they just didn't stop :) -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From Joe.Darcy at Sun.COM Tue Feb 24 17:56:16 2009 From: Joe.Darcy at Sun.COM (Joe Darcy) Date: Tue, 24 Feb 2009 17:56:16 -0800 Subject: IcedTea6 releases In-Reply-To: <17c6771e0902241754s6a2e89e5jb7a535b41b77bda@mail.gmail.com> References: <1235375578.2279.57.camel@fedora.wildebeest.org> <49A48595.2000801@ubuntu.com> <49A48F1F.9040407@sun.com> <1ccfd1c10902241739h4e6e3d7by4aa4296a888a9789@mail.gmail.com> <17c6771e0902241754s6a2e89e5jb7a535b41b77bda@mail.gmail.com> Message-ID: <49A4A540.8060602@sun.com> On 02/24/09 05:54 PM, Andrew John Hughes wrote: > 2009/2/25 Martin Buchholz : > >> The source snapshots are traditional and there is an expectation >> that they will continue. I think people will have a higher expectation >> of quality from a tarball that has been lovingly assembled by a >> release engineer than a "simple" hg tag. >> >> But if you make it clear that tarballs will no longer be provided, >> and that any hg tagged "release" has had some QA attention >> (e.g. published jtreg results) I think there will be no problem. >> >> Martin >> >> On Tue, Feb 24, 2009 at 16:21, Joe Darcy wrote: >> >> >>> The current in-progress build is b16. The b15 tag isn't present at the >>> moment, but b15 was just used to mark the transition to Mercurial without >>> any other code changes. >>> >>> If there is interest in having source snapshots in addition to the Mercurial >>> forest, we can could consider continuing to provide that in the future. >>> > > In either case,a tarball needs to be created for offline builds such > as those performed by the Debian/Ubuntu buildds and to provide a known > snapshot for the Gentoo ebuilds. As Sun was already creating these, > it would be easier if they just didn't stop :) > I think we'll keep on going then :-) -Joe -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090224/a68aeee7/attachment.html From mark at klomp.org Wed Feb 25 00:56:29 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 25 Feb 2009 09:56:29 +0100 Subject: openjdk,icedtea - Xmx option mandatory In-Reply-To: <414e44f70902241600s5a5480e6yf420effedc96e29@mail.gmail.com> References: <414e44f70808020442n6e6bec20kb18bca726a99e035@mail.gmail.com> <4896E5B9.7020603@redhat.com> <414e44f70808040523t55812505w92f753d94ef5976a@mail.gmail.com> <1217853319.3061.11.camel@dijkstra.wildebeest.org> <414e44f70808041247v2b7da6b8x1078b69b1f90a663@mail.gmail.com> <414e44f70808081441n296e54a5xce8cadad42d32691@mail.gmail.com> <414e44f70808081633m76d43ac9x211527bc35ed9271@mail.gmail.com> <1218452724.2050.17.camel@dijkstra.wildebeest.org> <414e44f70808190825g5f11d308g503d2de34f891b12@mail.gmail.com> <414e44f70808201448h578f63adj949eeea3df6fea59@mail.gmail.com> <414e44f70902241600s5a5480e6yf420effedc96e29@mail.gmail.com> Message-ID: <1235552189.29152.1.camel@hermans.wildebeest.org> Hi Roberto, On Wed, 2009-02-25 at 01:00 +0100, Roberto Mannai wrote: > Resuming this old post, just for close the question :); the "Could not > reserve enough space for object heap" error was caused by the limit > set by "ulimit -v" on my opensuse box, by files /etc/sysconfig/ulimit > and /etc/initscript. Thanks for the followup. That was indeed a bit of a mystery. Happy to see it resolved. Cheers, Mark From gbenson at redhat.com Wed Feb 25 02:00:54 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 25 Feb 2009 10:00:54 +0000 Subject: Proposed IcedTea6-1.4.1 Release In-Reply-To: <49A436B2.7090304@redhat.com> References: <49A436B2.7090304@redhat.com> Message-ID: <20090225100054.GA3223@redhat.com> Lillian Angel wrote: > Hi, > > There was a bit of a mix up with the version string[1] in IcedTea, and > we managed to get VisualVM[2] back into the repo. Also, Deepak committed > an important fix for the plugin[3]. > > In light of Fedora 11 beta release in early March[4], we would like to > have a minor release to include all these fixes. The plan is to base the > new branch on the IcedTea6-1.4 release + the appropriate patches > (including any others may find important). A new and separate branch > will be created for the IcedTea6-1.4.1 release. > > FWIW, the update will only be pushed into F11, and not F10. > > [1] http://icedtea.classpath.org/hg/icedtea6/rev/0848286d8e5c > [2] http://icedtea.classpath.org/hg/icedtea6/rev/a2763653f8cf and > http://icedtea.classpath.org/hg/icedtea6/rev/2a6a1bd55bb8 > [3] http://icedtea.classpath.org/hg/icedtea6/rev/1be2224bd96c and > http://icedtea.classpath.org/hg/icedtea6/rev/3b8dcbd3d44d > [4] https://fedoraproject.org/wiki/Releases/11/Schedule > > Any objections or suggestions? I'm happy with that. Cheers, Gary -- http://gbenson.net/ From langel at redhat.com Wed Feb 25 08:32:12 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 25 Feb 2009 11:32:12 -0500 Subject: Creating new IcedTea repos In-Reply-To: <1235509569.15840.15.camel@hermans.wildebeest.org> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> <1235509569.15840.15.camel@hermans.wildebeest.org> Message-ID: <49A5728C.3060608@redhat.com> Mark Wielaard wrote: > Hi, > > On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: > >> On Mon, 2009-02-23 at 23:09 +0100, Mark Wielaard wrote: >> >>> One bottleneck working on IcedTea was that it wasn't easy to create new >>> repos or clone existing ones. That has now been solved. Everybody who >>> can push to IcedTea can now clone repos for release or private (but >>> public) branches, or create new repos for work related to IcedTea that >>> they want to host (the only requirement is that the work is Free >>> Software of course). >>> >> hg-remote-clone got one additional feature, -r which lets you >> clone a repository up to instead of the whole history of the >> original repo. It can be used everywhere below, just as if doing a >> normal hg clone -r. Please only use when needed, it is less efficient >> than doing a full clone, so doing a full clone, or a -r tip one, is >> preferred when you just want the full history for a branch. >> > > One oddity here which bit me while testing. > > Just like a normal hg clone, if you hg clone -r some-tag, it will clone > up-to, but not include, the tag. That is because the tagging is just a > normal commit, that adds the tag name and the (previous) revision number > to the .hgtags file. > > So, if you want to include the tag, look in the hg log for the revision > number one past the tag revision number itself. > This does not seem to be the case. I created the minor release repo, like so: ssh langel at icedtea.classpath.org hg-remote-clone -r 0641929711bf /hg/icedtea6 /hg/release/icedtea6-1.4.1 And everything up to and including changeset 0641929711bf was added to the repo, when I intended for only everything up to this changeset. This might only be an issue when using the actual tag name. > >>> When creating a release repo from on of the main repos under /hg do: >>> >>> ssh @icedtea.classpath.org \ >>> hg-remote-clone /hg/ /hg/release/-x.y >>> >>> Please do coordinate first on the version string/extension used. >>> Release branches will show up under http://icedtea.classpath.org/hg/ and >>> have a release/ prefix. >>> >>> When creating a repo for a private repo under your own /people// >>> tree do: >>> hg init ssh://@icedtea.classpath.org/people// >>> >>> Or if you already have a local repo then you can push it through: >>> hg clone \ >>> ssh://@icedtea.classpath.org/people// >>> >>> But if it is work based on an existing repo (either >>> under /hg, /hg/release or /people//) then please do a server hg >>> clone to safe bandwidth and disk-space on the server by: >>> >>> ssh @icedtea.classpath.org \ >>> hg-remote-clone /hg/ /people// >>> >>> These personal repos will also show up under >>> http://icedtea.classpath.org/people/ and will have your name >>> and / as prefix. >>> >>> Thanks, >>> >>> Mark >>> > > From gnu_andrew at member.fsf.org Wed Feb 25 08:38:13 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 25 Feb 2009 16:38:13 +0000 Subject: Creating new IcedTea repos In-Reply-To: <49A5728C.3060608@redhat.com> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> <1235509569.15840.15.camel@hermans.wildebeest.org> <49A5728C.3060608@redhat.com> Message-ID: <17c6771e0902250838t5fbb3470n13bb908a0ded41cc@mail.gmail.com> 2009/2/25 Lillian Angel : > Mark Wielaard wrote: >> >> Hi, >> >> On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: >> >>> >>> On Mon, 2009-02-23 at 23:09 +0100, Mark Wielaard wrote: >>> >>>> >>>> One bottleneck working on IcedTea was that it wasn't easy to create new >>>> repos or clone existing ones. That has now been solved. Everybody who >>>> can push to IcedTea can now clone repos for release or private (but >>>> public) branches, or create new repos for work related to IcedTea that >>>> they want to host (the only requirement is that the work is Free >>>> Software of course). >>>> >>> >>> hg-remote-clone got one additional feature, -r which lets you >>> clone a repository up to instead of the whole history of the >>> original repo. It can be used everywhere below, just as if doing a >>> normal hg clone -r. Please only use when needed, it is less efficient >>> than doing a full clone, so doing a full clone, or a -r tip one, is >>> preferred when you just want the full history for a branch. >>> >> >> One oddity here which bit me while testing. >> >> Just like a normal hg clone, if you hg clone -r some-tag, it will clone >> up-to, but not include, the tag. That is because the tagging is just a >> normal commit, that adds the tag name and the (previous) revision number >> to the .hgtags file. >> >> So, if you want to include the tag, look in the hg log for the revision >> number one past the tag revision number itself. >> > > This does not seem to be the case. > > I created the minor release repo, like so: > > ssh langel at icedtea.classpath.org hg-remote-clone -r 0641929711bf > /hg/icedtea6 /hg/release/icedtea6-1.4.1 > > And everything up to and including changeset 0641929711bf was added to the > repo, when I intended for only everything up to this changeset. This might > only be an issue when using the actual tag name. > Yes, you get up to the changeset you specify and everything below, that's the expected behaviour. What Mark was referring to is if you use -r icedtea6-1.4 or such like. The resulting changeset doesn't have a copy of .hgtags with icedtea6-1.4 in it, because that's in the changeset after the one that was tagged. > > > >> >>>> >>>> When creating a release repo from on of the main repos under /hg do: >>>> >>>> ssh @icedtea.classpath.org \ >>>> ?hg-remote-clone /hg/ /hg/release/-x.y >>>> >>>> Please do coordinate first on the version string/extension used. >>>> Release branches will show up under http://icedtea.classpath.org/hg/ and >>>> have a release/ prefix. >>>> >>>> When creating a repo for a private repo under your own /people// >>>> tree do: >>>> hg init ssh://@icedtea.classpath.org/people// >>>> >>>> Or if you already have a local repo then you can push it through: >>>> hg clone \ >>>> ?ssh://@icedtea.classpath.org/people// >>>> >>>> But if it is work based on an existing repo (either >>>> under /hg, /hg/release or /people//) then please do a server hg >>>> clone to safe bandwidth and disk-space on the server by: >>>> >>>> ssh @icedtea.classpath.org \ >>>> ?hg-remote-clone /hg/ /people// >>>> >>>> These personal repos will also show up under >>>> http://icedtea.classpath.org/people/ and will have your name >>>> and / as prefix. >>>> >>>> Thanks, >>>> >>>> Mark >>>> >> >> > > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From langel at redhat.com Wed Feb 25 08:38:20 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 25 Feb 2009 11:38:20 -0500 Subject: New repo for IcedTea6-1.4.1 release Message-ID: <49A573FC.4060809@redhat.com> Hi, Here is the repo for the pending release. I have not committed the patches to be included in this release yet. I would ask that no one commit to this branch, unless it has been discussed on list prior. http://icedtea.classpath.org/hg/release/icedtea6-1.4.1/ hg clone ssh://icedtea.classpath.org/hg/release/icedtea6-1.4.1 Thanks! Lillian From mark at klomp.org Wed Feb 25 09:53:10 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 25 Feb 2009 18:53:10 +0100 Subject: Creating new IcedTea repos In-Reply-To: <17c6771e0902250838t5fbb3470n13bb908a0ded41cc@mail.gmail.com> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> <1235509569.15840.15.camel@hermans.wildebeest.org> <49A5728C.3060608@redhat.com> <17c6771e0902250838t5fbb3470n13bb908a0ded41cc@mail.gmail.com> Message-ID: <1235584391.2343.2.camel@hermans.wildebeest.org> Hi, On Wed, 2009-02-25 at 16:38 +0000, Andrew John Hughes wrote: > 2009/2/25 Lillian Angel : > > Mark Wielaard wrote: > >> On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: > >>> hg-remote-clone got one additional feature, -r which lets you > >>> clone a repository up to instead of the whole history of the > >>> original repo. It can be used everywhere below, just as if doing a > >>> normal hg clone -r. Please only use when needed, it is less efficient > >>> than doing a full clone, so doing a full clone, or a -r tip one, is > >>> preferred when you just want the full history for a branch. > >> > >> One oddity here which bit me while testing. > >> > >> Just like a normal hg clone, if you hg clone -r some-tag, it will clone > >> up-to, but not include, the tag. That is because the tagging is just a > >> normal commit, that adds the tag name and the (previous) revision number > >> to the .hgtags file. > >> > >> So, if you want to include the tag, look in the hg log for the revision > >> number one past the tag revision number itself. > > > > This does not seem to be the case. > > > > I created the minor release repo, like so: > > > > ssh langel at icedtea.classpath.org hg-remote-clone -r 0641929711bf > > /hg/icedtea6 /hg/release/icedtea6-1.4.1 > > > > And everything up to and including changeset 0641929711bf was added to the > > repo, when I intended for only everything up to this changeset. This might > > only be an issue when using the actual tag name. > > > Yes, you get up to the changeset you specify and everything below, > that's the expected behaviour. > > What Mark was referring to is if you use -r icedtea6-1.4 or such like. > The resulting changeset doesn't have a copy of .hgtags with > icedtea6-1.4 in it, because that's in the changeset after the one that > was tagged. Yes, I found that odd. But maybe that seems normal if you wrap your head around it in some other way. I was just surprised. I would also have assumed someone might want to create a branch from a tag name, like in this case hg-remote-clone-r icedtea6-1.4 which would result in a branch without the actual icedtea6-1.4 tag in it. Cheers, Mark From aph at redhat.com Wed Feb 25 10:02:14 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 25 Feb 2009 18:02:14 +0000 Subject: Creating new IcedTea repos In-Reply-To: <1235584391.2343.2.camel@hermans.wildebeest.org> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> <1235509569.15840.15.camel@hermans.wildebeest.org> <49A5728C.3060608@redhat.com> <17c6771e0902250838t5fbb3470n13bb908a0ded41cc@mail.gmail.com> <1235584391.2343.2.camel@hermans.wildebeest.org> Message-ID: <49A587A6.8070006@redhat.com> Mark Wielaard wrote: > Hi, > > On Wed, 2009-02-25 at 16:38 +0000, Andrew John Hughes wrote: >> 2009/2/25 Lillian Angel : >>> Mark Wielaard wrote: >>>> On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: >>>>> hg-remote-clone got one additional feature, -r which lets you >>>>> clone a repository up to instead of the whole history of the >>>>> original repo. It can be used everywhere below, just as if doing a >>>>> normal hg clone -r. Please only use when needed, it is less efficient >>>>> than doing a full clone, so doing a full clone, or a -r tip one, is >>>>> preferred when you just want the full history for a branch. >>>> One oddity here which bit me while testing. >>>> >>>> Just like a normal hg clone, if you hg clone -r some-tag, it will clone >>>> up-to, but not include, the tag. That is because the tagging is just a >>>> normal commit, that adds the tag name and the (previous) revision number >>>> to the .hgtags file. >>>> >>>> So, if you want to include the tag, look in the hg log for the revision >>>> number one past the tag revision number itself. >>> This does not seem to be the case. >>> >>> I created the minor release repo, like so: >>> >>> ssh langel at icedtea.classpath.org hg-remote-clone -r 0641929711bf >>> /hg/icedtea6 /hg/release/icedtea6-1.4.1 >>> >>> And everything up to and including changeset 0641929711bf was added to the >>> repo, when I intended for only everything up to this changeset. This might >>> only be an issue when using the actual tag name. >>> >> Yes, you get up to the changeset you specify and everything below, >> that's the expected behaviour. >> >> What Mark was referring to is if you use -r icedtea6-1.4 or such like. >> The resulting changeset doesn't have a copy of .hgtags with >> icedtea6-1.4 in it, because that's in the changeset after the one that >> was tagged. > > Yes, I found that odd. But maybe that seems normal if you wrap your head > around it in some other way. I was just surprised. I would also have > assumed someone might want to create a branch from a tag name, like in > this case hg-remote-clone-r icedtea6-1.4 which would result in a branch > without the actual icedtea6-1.4 tag in it. So, you can't diff on the branch between the tag and the head ... then how do you find out what has changed on the branch? Hex revision ID? Andrew. From gnu_andrew at member.fsf.org Wed Feb 25 10:39:32 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 25 Feb 2009 18:39:32 +0000 Subject: Creating new IcedTea repos In-Reply-To: <49A587A6.8070006@redhat.com> References: <1235426957.3552.58.camel@hermans.wildebeest.org> <1235509054.15840.10.camel@hermans.wildebeest.org> <1235509569.15840.15.camel@hermans.wildebeest.org> <49A5728C.3060608@redhat.com> <17c6771e0902250838t5fbb3470n13bb908a0ded41cc@mail.gmail.com> <1235584391.2343.2.camel@hermans.wildebeest.org> <49A587A6.8070006@redhat.com> Message-ID: <17c6771e0902251039k5992beebqd38b083287ca9584@mail.gmail.com> 2009/2/25 Andrew Haley : > Mark Wielaard wrote: >> Hi, >> >> On Wed, 2009-02-25 at 16:38 +0000, Andrew John Hughes wrote: >>> 2009/2/25 Lillian Angel : >>>> Mark Wielaard wrote: >>>>> On Tue, 2009-02-24 at 21:57 +0100, Mark Wielaard wrote: >>>>>> hg-remote-clone got one additional feature, -r which lets you >>>>>> clone a repository up to instead of the whole history of the >>>>>> original repo. It can be used everywhere below, just as if doing a >>>>>> normal hg clone -r. Please only use when needed, it is less efficient >>>>>> than doing a full clone, so doing a full clone, or a -r tip one, is >>>>>> preferred when you just want the full history for a branch. >>>>> One oddity here which bit me while testing. >>>>> >>>>> Just like a normal hg clone, if you hg clone -r some-tag, it will clone >>>>> up-to, but not include, the tag. That is because the tagging is just a >>>>> normal commit, that adds the tag name and the (previous) revision number >>>>> to the .hgtags file. >>>>> >>>>> So, if you want to include the tag, look in the hg log for the revision >>>>> number one past the tag revision number itself. >>>> This does not seem to be the case. >>>> >>>> I created the minor release repo, like so: >>>> >>>> ssh langel at icedtea.classpath.org hg-remote-clone -r 0641929711bf >>>> /hg/icedtea6 /hg/release/icedtea6-1.4.1 >>>> >>>> And everything up to and including changeset 0641929711bf was added to the >>>> repo, when I intended for only everything up to this changeset. This might >>>> only be an issue when using the actual tag name. >>>> >>> Yes, you get up to the changeset you specify and everything below, >>> that's the expected behaviour. >>> >>> What Mark was referring to is if you use -r icedtea6-1.4 or such like. >>> ?The resulting changeset doesn't have a copy of .hgtags with >>> icedtea6-1.4 in it, because that's in the changeset after the one that >>> was tagged. >> >> Yes, I found that odd. But maybe that seems normal if you wrap your head >> around it in some other way. I was just surprised. I would also have >> assumed someone might want to create a branch from a tag name, like in >> this case hg-remote-clone-r icedtea6-1.4 which would result in a branch >> without the actual icedtea6-1.4 tag in it. > > So, you can't diff on the branch between the tag and the head ... then > how do you find out what has changed on the branch? ?Hex revision ID? > > Andrew. > No, so the best solution is presumably to merge the changeset with the tag. But maybe there is something I've missed... Note that the same changesets should be applied to the branch which means hg export and hg import --exact. The hg transplant extension Mark mentioned might be useful for this. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Wed Feb 25 10:46:14 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 25 Feb 2009 13:46:14 -0500 Subject: [PATCH] Java console for IcedTea Plugin Message-ID: <49A591F6.6000801@redhat.com> Hi, The attached patch adds an initial implementation of a Java console to IcedTea plugin. This patch moves the location of applet output files from /tmp/java.std{out,err} to ~/.icedteaplugin/java.std{out,err}. There is no other user-visible change yet as the console cant be opened. All stdout/stderr from the jvm is also written to two files: ~/.icedteaplugin/java.std{out,err}. The console opens these files and allows the user to see stdout/stderr as well as do a few simple operations: - perform gc - perform finalization - display memory usage - list classloaders - list all system properties - dump all threads - destroy the vm Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: java-console.patch Type: text/x-patch Size: 16930 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090225/bdab5eb8/java-console.patch From omajid at redhat.com Wed Feb 25 10:46:57 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 25 Feb 2009 18:46:57 +0000 Subject: changeset in /hg/icedtea6: 2009-02-25 Omair Majid changeset 9259bc9bee36 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9259bc9bee36 description: 2009-02-25 Omair Majid * plugin/icedtea/sun/applet/PluginMain.java: New File. Implements a Java console for IcedTea Plugin. * plugin/icedtea/sun/applet/JavaConsole.java New constants PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE for filenames that stdout/stderr is redirected to. (PluginMain): Always write stdout/stderr to PLUGIN_STDERR_FILE/PLUGIN_STDOUT_FILE. (TeeOutputStream): New class. Copies a PrintStream to a file. diffstat: 3 files changed, 456 insertions(+), 12 deletions(-) ChangeLog | 11 plugin/icedtea/sun/applet/JavaConsole.java | 372 ++++++++++++++++++++++++++++ plugin/icedtea/sun/applet/PluginMain.java | 85 +++++- diffs (truncated from 501 to 500 lines): diff -r 1847391cef9c -r 9259bc9bee36 ChangeLog --- a/ChangeLog Tue Feb 24 14:53:39 2009 +0000 +++ b/ChangeLog Wed Feb 25 13:34:13 2009 -0500 @@ -1,3 +1,14 @@ 2009-02-24 Gary Benson + + * plugin/icedtea/sun/applet/PluginMain.java: + New File. Implements a Java console for IcedTea Plugin. + * plugin/icedtea/sun/applet/JavaConsole.java + New constants PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE for filenames that + stdout/stderr is redirected to. + (PluginMain): Always write stdout/stderr to + PLUGIN_STDERR_FILE/PLUGIN_STDOUT_FILE. + (TeeOutputStream): New class. Copies a PrintStream to a file. + 2009-02-24 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp diff -r 1847391cef9c -r 9259bc9bee36 plugin/icedtea/sun/applet/JavaConsole.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/icedtea/sun/applet/JavaConsole.java Wed Feb 25 13:34:13 2009 -0500 @@ -0,0 +1,372 @@ +/* JavaConsole -- A java console for the plugin + Copyright (C) 2009 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.applet; + +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.Collection; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTextArea; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; + +import net.sourceforge.jnlp.runtime.JNLPClassLoader; + +/** + * A simple Java console for IcedTeaPlugin + * + */ +public class JavaConsole { + + private boolean initialized = false; + + JFrame consoleWindow; + JTextArea stdErrText; + JTextArea stdOutText; + + /** + * Initialize the console + */ + public void initialize() { + + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + e.printStackTrace(); + } + + consoleWindow = new JFrame("Java Console"); + + Container contentPane = consoleWindow.getContentPane(); + contentPane.setLayout(new GridBagLayout()); + + GridBagConstraints c; + + Font monoSpace = new Font("Monospaced", Font.PLAIN, 12); + + /* std out */ + + stdOutText = new JTextArea(); + JScrollPane stdOutScrollPane = new JScrollPane(stdOutText); + stdOutScrollPane.setBorder(new TitledBorder( + new EmptyBorder(5, 5, 5, 5), "System.out")); + stdOutText.setEditable(false); + stdOutText.setFont(monoSpace); + + TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( + PluginMain.PLUGIN_STDOUT_FILE), stdOutText); + stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); + + /* std err */ + + stdErrText = new JTextArea(); + JScrollPane stdErrScrollPane = new JScrollPane(stdErrText); + stdErrScrollPane.setBorder(new TitledBorder( + new EmptyBorder(5, 5, 5, 5), "System.err")); + stdErrText.setEditable(false); + stdErrText.setFont(monoSpace); + + TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( + PluginMain.PLUGIN_STDERR_FILE), stdErrText); + stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); + + JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, + stdOutScrollPane, stdErrScrollPane); + + c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.gridheight = 10; + c.weighty = 1; + + contentPane.add(splitPane, c); + + /* buttons */ + + c = new GridBagConstraints(); + c.gridy = 10; + c.gridheight = 1; + c.weightx = 0.5; + c.weighty = 0; + + JPanel buttonPanel = new JPanel(); + contentPane.add(buttonPanel, c); + + JButton gcButton = new JButton("Run GC"); + buttonPanel.add(gcButton); + gcButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + printMemoryInfo(); + System.out.print("Performing Garbage Collection...."); + System.gc(); + System.out.println("Done"); + printMemoryInfo(); + } + + }); + + JButton finalizersButton = new JButton("Run Finalizers"); + buttonPanel.add(finalizersButton); + finalizersButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + printMemoryInfo(); + System.out.print("Running finalization...."); + Runtime.getRuntime().runFinalization(); + System.out.println("Done"); + printMemoryInfo(); + } + }); + + JButton memoryButton = new JButton("Memory Info"); + buttonPanel.add(memoryButton); + memoryButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + printMemoryInfo(); + } + + }); + + JButton systemPropertiesButton = new JButton("System Properties"); + buttonPanel.add(systemPropertiesButton); + systemPropertiesButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + printSystemProperties(); + } + + }); + + JButton classloadersButton = new JButton("Classloaders"); + buttonPanel.add(classloadersButton); + classloadersButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + printClassLoaders(); + } + + }); + + JButton threadListButton = new JButton("Thread List"); + buttonPanel.add(threadListButton); + threadListButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + printThreadInfo(); + } + + }); + + JButton killVmButton = new JButton("Destory VM"); + buttonPanel.add(killVmButton); + killVmButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + + }); + + stdOutUpdater.start(); + stdErrUpdater.start(); + + consoleWindow.setMinimumSize(new Dimension(500, 400)); + consoleWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + consoleWindow.pack(); + + initialized = true; + + splitPane.setDividerLocation(0.5); + + } + + public void showConsole() { + + if (!initialized) { + initialize(); + } + + consoleWindow.setVisible(true); + } + + public void hideConsole() { + consoleWindow.setVisible(false); + } + + protected void printSystemProperties() { + + System.out.println(" ----"); + System.out.println("System Properties:"); + System.out.println(); + Properties p = System.getProperties(); + Set keys = p.keySet(); + for (Object key : keys) { + System.out.println(key.toString() + ": " + p.get(key)); + } + + System.out.println(" ----"); + } + + private void printClassLoaders() { + System.out.println(" ----"); + System.out.println("Available Classloaders: "); + Set loaders = PluginAppletSecurityContext.classLoaders.keySet(); + for (ClassLoader loader: loaders) { + System.out.println(loader.getClass().getName() + "\n" + + " codebase = " + + PluginAppletSecurityContext.classLoaders.get(loader)); + } + System.out.println(" ----"); + } + + private void printMemoryInfo() { + System.out.println(" ----- "); + System.out.println(" Memory Info:"); + System.out.println(" Max Memory: " + + String.format("%1$10d", Runtime.getRuntime().maxMemory())); + System.out.println(" Total Memory: " + + String.format("%1$10d", Runtime.getRuntime().totalMemory())); + System.out.println(" Free Memory: " + + String.format("%1$10d", Runtime.getRuntime().freeMemory())); + System.out.println(" ----"); + + } + + private void printThreadInfo() { + Map map = Thread.getAllStackTraces(); + Set keys = map.keySet(); + for (Thread key : keys) { + System.out.println("Thread " + key.getId() + ": " + key.getName()); + for (StackTraceElement element : map.get(key)) { + System.out.println(" " + element); + } + + } + } + + public static void main(String[] args) { + + final JavaConsole console = new JavaConsole(); + + boolean toShowConsole = false; + + for (int i = 0; i < args.length; i++) { + if (args[i] == "--show-console") { + toShowConsole = true; + } + } + + if (toShowConsole) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + console.showConsole(); + } + }); + } + + } + + /** + * This thread updates the text on a JTextArea based on the text in a file + */ + class TextAreaUpdater extends Thread { + + File fileToRead; + JTextArea outputTextArea; + + public TextAreaUpdater(File file, JTextArea textArea) { + fileToRead = file; + outputTextArea = textArea; + setDaemon(true); + } + + public void run() { + + try { + BufferedReader reader = new BufferedReader(new FileReader( + fileToRead)); + String line; + while (true) { + while ((line = reader.readLine()) != null) { + outputTextArea.insert(line + "\n", outputTextArea + .getDocument().getLength()); + outputTextArea.setCaretPosition(outputTextArea + .getText().length()); + } + Thread.sleep(1000); + } + + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + Thread.currentThread().interrupt(); + } + + } + + } + +} diff -r 1847391cef9c -r 9259bc9bee36 plugin/icedtea/sun/applet/PluginMain.java --- a/plugin/icedtea/sun/applet/PluginMain.java Tue Feb 24 14:53:39 2009 +0000 +++ b/plugin/icedtea/sun/applet/PluginMain.java Wed Feb 25 13:34:13 2009 -0500 @@ -84,6 +84,11 @@ import net.sourceforge.jnlp.security.Var */ public class PluginMain { + + // the files where stdout/stderr are sent to + public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; + public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; + final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); static PluginStreamHandler streamHandler; @@ -111,18 +116,15 @@ public class PluginMain public PluginMain(String inPipe, String outPipe) { - if (redirectStreams) { - try { - File errFile = new File("/tmp/java.stderr"); - File outFile = new File("/tmp/java.stdout"); - - System.setErr(new PrintStream(new FileOutputStream(errFile))); - System.setOut(new PrintStream(new FileOutputStream(outFile))); - - } catch (Exception e) { - PluginDebug.debug("Unable to redirect streams"); - e.printStackTrace(); - } + try { + File errFile = new File(PLUGIN_STDERR_FILE); + File outFile = new File(PLUGIN_STDOUT_FILE); + + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); + } catch (Exception e) { + PluginDebug.debug("Unable to redirect streams"); + e.printStackTrace(); } connect(inPipe, outPipe); @@ -219,4 +221,63 @@ public class PluginMain static String getMessage() { return streamHandler.getMessage(); } + + /** + * Behaves like the 'tee' command, sends output to both actual std stream and a + * file + */ + class TeeOutputStream extends PrintStream { + + // Everthing written to TeeOutputStream is written to this file + PrintStream logFile; + + public TeeOutputStream(FileOutputStream fileOutputStream, + PrintStream stdStream) { + super(stdStream); + logFile = new PrintStream(fileOutputStream); + } + + @Override + public boolean checkError() { + boolean thisError = super.checkError(); + boolean fileError = logFile.checkError(); + + return thisError || fileError; + } + + @Override + public void close() { + logFile.close(); + super.close(); + } + + @Override + public void flush() { + logFile.flush(); + super.flush(); + } + + /* + * The big ones: these do the actual writing + */ + + @Override + public void write(byte[] buf, int off, int len) { + logFile.write(buf, off, len); + super.write(buf, off, len); + } + + @Override + public void write(int b) { + logFile.write(b); + super.write(b); + } + + @Override + public void write(byte[] b) throws IOException { + logFile.write(b); + super.write(b); + } + } + From langel at redhat.com Wed Feb 25 10:50:11 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 25 Feb 2009 13:50:11 -0500 Subject: [PATCH] Java console for IcedTea Plugin In-Reply-To: <49A591F6.6000801@redhat.com> References: <49A591F6.6000801@redhat.com> Message-ID: <49A592E3.7000408@redhat.com> Omair Majid wrote: > Hi, > > The attached patch adds an initial implementation of a Java console to > IcedTea plugin. This patch moves the location of applet output files > from /tmp/java.std{out,err} to ~/.icedteaplugin/java.std{out,err}. > There is no other user-visible change yet as the console cant be opened. > > All stdout/stderr from the jvm is also written to two files: > ~/.icedteaplugin/java.std{out,err}. The console opens these files and > allows the user to see stdout/stderr as well as do a few simple > operations: > - perform gc > - perform finalization > - display memory usage > - list classloaders > - list all system properties > - dump all threads > - destroy the vm Great work!! Lillian From langel at redhat.com Wed Feb 25 11:03:07 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 25 Feb 2009 14:03:07 -0500 Subject: IcedTea6-1.4.1 Released! Message-ID: <49A595EB.6070305@redhat.com> We are proud to announce the release of IcedTea6 1.4.1. The IcedTea6 project provides a harness to build the source code from OpenJDK6 (http://openjdk.java.net) using Free Software build tools. What's New? ----------------- - Fixed version string: Set PRODUCT_NAME to OpenJDK, unless doing a CACAO build (set to IcedTea). - Plugin fixes. - Re-implemented VisualVm. ----------------- The tarball and nosrc RPM can be downloaded here: http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-12.b14.fc11.nosrc.rpm http://icedtea.classpath.org/download/source/icedtea6-1.4.1.tar.gz The following people helped with this release: Deepak Bhole, Andrew John Hughes, Tomas Hurka, Mark Reinhold, Mark Wielaard, Lillian Angel We would also like to thank the bug reporters and testers! To get started: $ hg clone http://icedtea.classpath.org/hg/release/icedtea6-1.4.1 $ cd icedtea6 Full build requirements and instructions are in INSTALL: $ ./configure [--enable-visualvm --with-openjdk --enable-pulse-java ...] $ make The new package has been built into Fedora 11 (rawhide) and should appear in the yum repositories in a couple of days. From gnu_andrew at member.fsf.org Wed Feb 25 11:05:47 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 25 Feb 2009 19:05:47 +0000 Subject: [PATCH] Java console for IcedTea Plugin In-Reply-To: <49A592E3.7000408@redhat.com> References: <49A591F6.6000801@redhat.com> <49A592E3.7000408@redhat.com> Message-ID: <17c6771e0902251105x409bbb79udb9d5656bccbf7e0@mail.gmail.com> 2009/2/25 Lillian Angel : > Omair Majid wrote: >> >> Hi, >> >> The attached patch adds an initial implementation of a Java console to >> IcedTea plugin. This patch moves the location of applet output files from >> /tmp/java.std{out,err} to ~/.icedteaplugin/java.std{out,err}. There is no >> other user-visible change yet as the console cant be opened. >> >> All stdout/stderr from the jvm is also written to two files: >> ~/.icedteaplugin/java.std{out,err}. The console opens these files and allows >> the user to see stdout/stderr as well as do a few simple operations: >> ?- perform gc >> ?- perform finalization >> ?- display memory usage >> ?- list classloaders >> ?- list all system properties >> ?- dump all threads >> ?- destroy the vm > > > Great work!! > > Lillian > I know we've not officially adopted the same here (as yet), but the nomenclature for GNU Classpath was to prefix the subject of patches awaiting comments/approval with 'RFC:' and that of trivial patches not needing comment with 'FYI:' (merge traffic, typos and the like). -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From neugens at limasoftware.net Wed Feb 25 11:30:05 2009 From: neugens at limasoftware.net (Mario Torre) Date: Wed, 25 Feb 2009 20:30:05 +0100 Subject: [PATCH] Java console for IcedTea Plugin In-Reply-To: <17c6771e0902251105x409bbb79udb9d5656bccbf7e0@mail.gmail.com> References: <49A591F6.6000801@redhat.com> <49A592E3.7000408@redhat.com> <17c6771e0902251105x409bbb79udb9d5656bccbf7e0@mail.gmail.com> Message-ID: <1235590205.3533.9.camel@galactica> Il giorno mer, 25/02/2009 alle 19.05 +0000, Andrew John Hughes ha scritto: > 2009/2/25 Lillian Angel : > > I know we've not officially adopted the same here (as yet), but the > nomenclature for GNU Classpath was to prefix the subject of patches > awaiting comments/approval with 'RFC:' and that of trivial patches not > needing comment with 'FYI:' (merge traffic, typos and the like). Come on, how picky! :) Just kidding, I also quite like this protocol, it makes a lot easier to sort things, so maybe it's time to officially adopt it. What do you think? Cheers, Mario From omajid at redhat.com Wed Feb 25 13:32:50 2009 From: omajid at redhat.com (Omair Majid) Date: Wed, 25 Feb 2009 16:32:50 -0500 Subject: [PATCH] RFC: XML encoder can cause a StackOverflowError (PR295) Message-ID: <49A5B902.3060602@redhat.com> Hi, IcedTea6 and apparently OpenJDK6, IcedTea, OpenJDK and the Xalan-J2 all have a bug in their xml encoder, which can result in a StackOverflowError [1]. The test case which tries to encode character 4096 to 321 easily reproduces the issue. The issue appears to be this: When finding the encoding for (char) 4096, an EncodingImpl object is created which explicitly manages characters 4096 to 4223. So far so good. But when the transformer tries to find the encoding for (char) 4095, a new EncodingImpl delegate object is created which manages the values 4095 to 4222. Effectively, this object only manages the value 4095 (since the parent already manages 4096 to 4222). To find the value for 4094, a new delegate is created. Do this a few more times, and you have one stack frame for each value. Trying to encode characters from 0xffff to 0x0000 will result in thousands of stack frames. The proposed patch makes sure that each delegate manages 128 values which dont overlap with any other delegate. The patch brings down the maximum number of delegates in the chain to (0xffff + 1)/RANGE = 512 (also the max number of stack frames that can be used by EndcodingImpl). Cheers, Omair [1] http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=295 -------------- next part -------------- A non-text attachment was scrubbed... Name: encodinginfo.patch Type: text/x-patch Size: 681 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090225/c6c76111/encodinginfo.patch From dbhole at redhat.com Wed Feb 25 13:38:58 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 25 Feb 2009 21:38:58 +0000 Subject: changeset in /hg/icedtea6: Wire in the JavaConsole coded by Omair. Message-ID: changeset aa17512747b1 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=aa17512747b1 description: Wire in the JavaConsole coded by Omair. diffstat: 4 files changed, 74 insertions(+), 36 deletions(-) ChangeLog | 10 ++++ IcedTeaPlugin.cc | 30 +++++++++---- plugin/icedtea/sun/applet/JavaConsole.java | 43 ++++++++------------ plugin/icedtea/sun/applet/PluginStreamHandler.java | 27 +++++++++++- diffs (320 lines): diff -r 9259bc9bee36 -r aa17512747b1 ChangeLog --- a/ChangeLog Wed Feb 25 13:34:13 2009 -0500 +++ b/ChangeLog Wed Feb 25 16:38:54 2009 -0500 @@ -1,3 +1,13 @@ 2009-02-25 Omair Majid + + * IcedTeaPlugin.cc: Implement Show/Hide from IJVMConsole, remove + IJVMPerfWindow stubs, as they were empty and unused. + * plugin/icedtea/sun/applet/JavaConsole.java: Pack components inside panel + rather than directly in the frame, to fix sizing issues. Addition + sizing/divider related code changes for aesthetics. + * plugin/icedtea/sun/applet/PluginStreamHandler.java: Wire in + showconsole/hideconsole functionality. + 2009-02-25 Omair Majid * plugin/icedtea/sun/applet/PluginMain.java: diff -r 9259bc9bee36 -r aa17512747b1 IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Wed Feb 25 13:34:13 2009 -0500 +++ b/IcedTeaPlugin.cc Wed Feb 25 16:38:54 2009 -0500 @@ -715,7 +715,7 @@ extern "C" NS_EXPORT nsresult NSGetFacto #include #include #include -#include +#include #include #include #include @@ -933,8 +933,8 @@ class IcedTeaJNIEnv; // nsIPlugin inherits from nsIFactory. class IcedTeaPluginFactory : public nsIPlugin, public nsIJVMManager, - public nsIJVMPrefsWindow, public nsIJVMPlugin, + public nsIJVMConsole, public nsIInputStreamCallback { public: @@ -942,11 +942,12 @@ public: NS_DECL_NSIFACTORY NS_DECL_NSIPLUGIN NS_DECL_NSIJVMMANAGER - // nsIJVMPrefsWindow does not provide an NS_DECL macro. + // nsIJVMConsole does not provide an NS_DECL macro. public: NS_IMETHOD Show (void); NS_IMETHOD Hide (void); NS_IMETHOD IsVisible (PRBool* result); + NS_IMETHOD Print(const char* msg, const char* encodingName = NULL); // nsIJVMPlugin does not provide an NS_DECL macro. public: NS_IMETHOD AddToClassPath (char const* dirPath); @@ -1472,7 +1473,7 @@ GetURLRunnable::Run () } NS_IMPL_ISUPPORTS6 (IcedTeaPluginFactory, nsIFactory, nsIPlugin, nsIJVMManager, - nsIJVMPrefsWindow, nsIJVMPlugin, nsIInputStreamCallback) + nsIJVMPlugin, nsIJVMConsole, nsIInputStreamCallback) // IcedTeaPluginFactory functions. IcedTeaPluginFactory::IcedTeaPluginFactory () @@ -1785,19 +1786,23 @@ IcedTeaPluginFactory::GetJavaEnabled (PR return NS_ERROR_NOT_IMPLEMENTED; } -// nsIJVMPrefsWindow functions. +#include + +// nsIJVMConsole functions. NS_IMETHODIMP IcedTeaPluginFactory::Show (void) { - NOT_IMPLEMENTED (); - return NS_ERROR_NOT_IMPLEMENTED; + nsCString msg("showconsole"); + this->SendMessageToAppletViewer(msg); + return NS_OK; } NS_IMETHODIMP IcedTeaPluginFactory::Hide (void) { - NOT_IMPLEMENTED (); - return NS_ERROR_NOT_IMPLEMENTED; + nsCString msg("hideconsole"); + this->SendMessageToAppletViewer(msg); + return NS_OK; } NS_IMETHODIMP @@ -2280,6 +2285,13 @@ IcedTeaPluginFactory::DisplayFailureDial gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); +} + +NS_IMETHODIMP +IcedTeaPluginFactory::Print(const char* msg, const char* encoding) +{ + NOT_IMPLEMENTED (); + return NS_ERROR_NOT_IMPLEMENTED; } #include diff -r 9259bc9bee36 -r aa17512747b1 plugin/icedtea/sun/applet/JavaConsole.java --- a/plugin/icedtea/sun/applet/JavaConsole.java Wed Feb 25 13:34:13 2009 -0500 +++ b/plugin/icedtea/sun/applet/JavaConsole.java Wed Feb 25 16:38:54 2009 -0500 @@ -37,7 +37,6 @@ exception statement from your version. * package sun.applet; -import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; @@ -49,7 +48,6 @@ import java.io.FileNotFoundException; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; -import java.util.Collection; import java.util.Map; import java.util.Properties; import java.util.Set; @@ -65,8 +63,6 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; -import net.sourceforge.jnlp.runtime.JNLPClassLoader; - /** * A simple Java console for IcedTeaPlugin * @@ -92,8 +88,8 @@ public class JavaConsole { consoleWindow = new JFrame("Java Console"); - Container contentPane = consoleWindow.getContentPane(); - contentPane.setLayout(new GridBagLayout()); + JPanel contentPanel = new JPanel(); + contentPanel.setLayout(new GridBagLayout()); GridBagConstraints c; @@ -133,7 +129,7 @@ public class JavaConsole { c.gridheight = 10; c.weighty = 1; - contentPane.add(splitPane, c); + contentPanel.add(splitPane, c); /* buttons */ @@ -144,12 +140,11 @@ public class JavaConsole { c.weighty = 0; JPanel buttonPanel = new JPanel(); - contentPane.add(buttonPanel, c); + contentPanel.add(buttonPanel, c); JButton gcButton = new JButton("Run GC"); buttonPanel.add(gcButton); gcButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printMemoryInfo(); System.out.print("Performing Garbage Collection...."); @@ -163,7 +158,6 @@ public class JavaConsole { JButton finalizersButton = new JButton("Run Finalizers"); buttonPanel.add(finalizersButton); finalizersButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printMemoryInfo(); System.out.print("Running finalization...."); @@ -177,7 +171,6 @@ public class JavaConsole { buttonPanel.add(memoryButton); memoryButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printMemoryInfo(); } @@ -187,7 +180,6 @@ public class JavaConsole { JButton systemPropertiesButton = new JButton("System Properties"); buttonPanel.add(systemPropertiesButton); systemPropertiesButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printSystemProperties(); } @@ -197,7 +189,6 @@ public class JavaConsole { JButton classloadersButton = new JButton("Classloaders"); buttonPanel.add(classloadersButton); classloadersButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printClassLoaders(); } @@ -207,34 +198,37 @@ public class JavaConsole { JButton threadListButton = new JButton("Thread List"); buttonPanel.add(threadListButton); threadListButton.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { printThreadInfo(); } }); - JButton killVmButton = new JButton("Destory VM"); - buttonPanel.add(killVmButton); - killVmButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - + JButton closeButton = new JButton("Close"); + buttonPanel.add(closeButton); + closeButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + hideConsole(); + } + }); + } }); stdOutUpdater.start(); stdErrUpdater.start(); - consoleWindow.setMinimumSize(new Dimension(500, 400)); + consoleWindow.add(contentPanel); consoleWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); consoleWindow.pack(); + consoleWindow.setSize(new Dimension(900, 600)); + consoleWindow.setMinimumSize(new Dimension(900, 300)); initialized = true; splitPane.setDividerLocation(0.5); - + splitPane.setResizeWeight(0.5); } public void showConsole() { @@ -315,7 +309,6 @@ public class JavaConsole { if (toShowConsole) { SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { console.showConsole(); } diff -r 9259bc9bee36 -r aa17512747b1 plugin/icedtea/sun/applet/PluginStreamHandler.java --- a/plugin/icedtea/sun/applet/PluginStreamHandler.java Wed Feb 25 13:34:13 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginStreamHandler.java Wed Feb 25 16:38:54 2009 -0500 @@ -52,6 +52,8 @@ import java.util.Date; import java.util.Date; import java.util.LinkedList; +import javax.swing.SwingUtilities; + public class PluginStreamHandler { @@ -60,6 +62,8 @@ public class PluginStreamHandler { private BufferedWriter pluginOutputWriter; private RequestQueue queue = new RequestQueue(); + + private JavaConsole console = new JavaConsole(); LinkedList writeQueue = new LinkedList(); @@ -378,8 +382,11 @@ public class PluginStreamHandler { AppletSecurityContextManager.dumpStore(0); PluginDebug.debug("APPLETVIEWER: exiting appletviewer"); System.exit(0); + } else if (message.equals("showconsole")) { + showConsole(); + } else if (message.equals("hideconsole")) { + hideConsole(); } - } catch (IOException e) { e.printStackTrace(); } @@ -428,7 +435,7 @@ public class PluginStreamHandler { */ } - + public boolean messageAvailable() { return writeQueue.size() != 0; } @@ -439,4 +446,20 @@ public class PluginStreamHandler { return ret; } } + + private void showConsole() { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + console.showConsole(); + } + }); + } + + private void hideConsole() { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + console.hideConsole(); + } + }); + } } From aph at redhat.com Thu Feb 26 02:34:46 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 26 Feb 2009 10:34:46 +0000 Subject: [PATCH] RFC: XML encoder can cause a StackOverflowError (PR295) In-Reply-To: <49A5B902.3060602@redhat.com> References: <49A5B902.3060602@redhat.com> Message-ID: <49A67046.3000204@redhat.com> Omair Majid wrote: > IcedTea6 and apparently OpenJDK6, IcedTea, OpenJDK and the Xalan-J2 all > have a bug in their xml encoder, which can result in a > StackOverflowError [1]. > > The test case which tries to encode character 4096 to 321 easily > reproduces the issue. The issue appears to be this: When finding the > encoding for (char) 4096, an EncodingImpl object is created which > explicitly manages characters 4096 to 4223. So far so good. But when the > transformer tries to find the encoding for (char) 4095, a new > EncodingImpl delegate object is created which manages the values 4095 to > 4222. Effectively, this object only manages the value 4095 (since the > parent already manages 4096 to 4222). To find the value for 4094, a new > delegate is created. Do this a few more times, and you have one stack > frame for each value. Trying to encode characters from 0xffff to 0x0000 > will result in thousands of stack frames. > > The proposed patch makes sure that each delegate manages 128 values > which dont overlap with any other delegate. The patch brings down the > maximum number of delegates in the chain to (0xffff + 1)/RANGE = 512 > (also the max number of stack frames that can be used by EndcodingImpl). Thanks. This is OK for IcedTea. Please create an upstream bug for this, attaching the test case and your patch. Andrew. From gbenson at redhat.com Thu Feb 26 04:20:20 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 12:20:20 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Gary Benson changeset 5737c17b493d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5737c17b493d description: 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::do_field_access): Add optional field parameter. (SharkBlock::get_call_type): New method. (SharkBlock::get_callee): Likewise. (SharkBlock::maybe_inline_call): Likewise. (SharkBlock::maybe_inline_accessor): Likewise. (SharkBlock::do_call): Separate call type detection from callee fetch code, and attempt to inline inbetween. * ports/hotspot/src/share/vm/shark/sharkBlock.hpp (SharkBlock::do_field_access): Add optional field parameter. (SharkBlock::CallType): New enum. (SharkBlock::get_call_type): New method. (SharkBlock::get_callee): Likewise. (SharkBlock::maybe_inline_call): Likewise. (SharkBlock::maybe_inline_accessor): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkTrackingState::enter_inlined_section): New method. (SharkTrackingState::leave_inlined_section): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.hpp (SharkTrackingState::_has_stack_frame): New field. (SharkTrackingState::has_stack_frame): New method. (SharkTrackingState::set_has_stack_frame): Likewise. (SharkTrackingState::enter_inlined_section): Likewise. (SharkTrackingState::leave_inlined_section): Likewise. * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp (SharkTrackingState::decache_for_Java_call): Check we have a frame. (SharkTrackingState::cache_after_Java_call): Likewise. (SharkTrackingState::decache_for_VM_call): Likewise. (SharkTrackingState::cache_after_VM_call): Likewise. (SharkTrackingState::decache_for_trap): Likewise. diffstat: 6 files changed, 282 insertions(+), 21 deletions(-) ChangeLog | 34 ++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 209 ++++++++++++++-- ports/hotspot/src/share/vm/shark/sharkBlock.hpp | 15 + ports/hotspot/src/share/vm/shark/sharkState.cpp | 14 + ports/hotspot/src/share/vm/shark/sharkState.hpp | 26 + ports/hotspot/src/share/vm/shark/sharkState.inline.hpp | 5 diffs (435 lines): diff -r aa17512747b1 -r 5737c17b493d ChangeLog --- a/ChangeLog Wed Feb 25 16:38:54 2009 -0500 +++ b/ChangeLog Thu Feb 26 12:20:11 2009 +0000 @@ -1,3 +1,36 @@ 2009-02-25 Deepak Bhole + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::do_field_access): Add optional field parameter. + (SharkBlock::get_call_type): New method. + (SharkBlock::get_callee): Likewise. + (SharkBlock::maybe_inline_call): Likewise. + (SharkBlock::maybe_inline_accessor): Likewise. + (SharkBlock::do_call): Separate call type detection from + callee fetch code, and attempt to inline inbetween. + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::do_field_access): Add optional field parameter. + (SharkBlock::CallType): New enum. + (SharkBlock::get_call_type): New method. + (SharkBlock::get_callee): Likewise. + (SharkBlock::maybe_inline_call): Likewise. + (SharkBlock::maybe_inline_accessor): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkTrackingState::enter_inlined_section): New method. + (SharkTrackingState::leave_inlined_section): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.hpp + (SharkTrackingState::_has_stack_frame): New field. + (SharkTrackingState::has_stack_frame): New method. + (SharkTrackingState::set_has_stack_frame): Likewise. + (SharkTrackingState::enter_inlined_section): Likewise. + (SharkTrackingState::leave_inlined_section): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp + (SharkTrackingState::decache_for_Java_call): Check we have a frame. + (SharkTrackingState::cache_after_Java_call): Likewise. + (SharkTrackingState::decache_for_VM_call): Likewise. + (SharkTrackingState::cache_after_VM_call): Likewise. + (SharkTrackingState::decache_for_trap): Likewise. + 2009-02-25 Deepak Bhole * IcedTeaPlugin.cc: Implement Show/Hide from IJVMConsole, remove @@ -28,7 +61,6 @@ 2009-02-24 Gary Benson get_field(will_link); - assert(will_link, "typeflow responsibility"); - - // Check the bytecode matches the field - if (is_field == field->is_static()) - Unimplemented(); +void SharkBlock::do_field_access(bool is_get, bool is_field, ciField* field) +{ + if (field == NULL) { + bool will_link; + field = iter()->get_field(will_link); + assert(will_link, "typeflow responsibility"); + + // Check the bytecode matches the field + if (is_field == field->is_static()) + Unimplemented(); + } // Pop the value off the stack where necessary SharkValue *value = NULL; @@ -1724,6 +1726,36 @@ void SharkBlock::do_switch() dest_block->add_incoming(current_state()); } } +} + +// Figure out what type of call this is. +// - Direct calls are where the callee is fixed. +// - Interface and Virtual calls require lookup at runtime. +// NB some invokevirtuals can be resolved to direct calls. +SharkBlock::CallType SharkBlock::get_call_type(ciMethod* method) +{ + if (bc() == Bytecodes::_invokeinterface) + return CALL_INTERFACE; + else if (bc() == Bytecodes::_invokevirtual && !method->is_final_method()) + return CALL_VIRTUAL; + else + return CALL_DIRECT; +} + +Value *SharkBlock::get_callee(CallType call_type, + ciMethod* method, + SharkValue* receiver) +{ + switch (call_type) { + case CALL_DIRECT: + return get_direct_callee(method); + case CALL_VIRTUAL: + return get_virtual_callee(receiver, method); + case CALL_INTERFACE: + return get_interface_callee(receiver); + default: + ShouldNotReachHere(); + } } // Direct calls can be made when the callee is fixed. @@ -1995,33 +2027,174 @@ Value* SharkBlock::get_interface_callee( return callee; } +bool SharkBlock::maybe_inline_call(ciMethod *method) +{ + // Quick checks to allow us to bail out fast. We can't inline + // native methods, there's no point inlining abstract ones, and + // monitors aren't allowed because the inlined section has no + // frame to put them in. + if (method->is_native() || + method->is_abstract() || + method->is_synchronized() || + method->has_monitor_bytecodes()) + return false; + + // We need to scan the bytecode to do any more, so we bail out + // now if the method is too big + if (method->code_size() > 5) + return false; + + // Inspect the method's code to see if we can inline it. We + // don't use method->is_accessor() because that only spots + // some getfields, whereas we can inline *all* getfields, all + // putfields, and some getstatics too. + address code = method->code(); + switch (method->code_size()) { + case 4: + // getstatic and putstatic will try to look up the receiver + // from the holder's constant pool, which we can't do. Some + // getstatics, however, resolve to constants, and those we + // can do. So we try... + if (code[0] == Bytecodes::_getstatic) + return maybe_inline_accessor(method, false); + break; + + case 5: + if (code[0] == Bytecodes::_aload_0 && + (code[1] == Bytecodes::_getfield || + code[1] == Bytecodes::_putfield)) + return maybe_inline_accessor(method, true); + break; + } + return false; +} + +bool SharkBlock::maybe_inline_accessor(ciMethod *method, bool is_field) +{ + if (method->arg_size() != (is_field ? 1 : 0)) { + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + + ciBytecodeStream iter(method); + Bytecodes::Code bc; + + if (is_field) { + bc = iter.next(); + assert(bc == Bytecodes::_aload_0, "eh?"); + } + + bool is_get; + bc = iter.next(); + if (is_field) { + assert(bc == Bytecodes::_getfield || bc == Bytecodes::_putfield, "eh?"); + is_get = bc == Bytecodes::_getfield; + } + else { + assert(bc == Bytecodes::_getstatic, "eh?"); + is_get = true; + } + + bool will_link; + ciField *field = iter.get_field(will_link); + if (!will_link) + return false; + + // We can only inline getstatic if the field resolves to a + // non-oop constant. + if (!is_field) { + if (!field->is_constant()) + return false; + + if (SharkValue::from_ciConstant(field->constant_value()) == NULL) + return false; + } + + // We mustn't inline if the resolved field is the wrong type, + // because the thrown exception would appear to come from the + // wrong method. + if (is_field == field->is_static()) + return false; + + bc = iter.next(); + if (is_get) { + switch (bc) { + case Bytecodes::_ireturn: + case Bytecodes::_lreturn: + case Bytecodes::_freturn: + case Bytecodes::_dreturn: + case Bytecodes::_areturn: + break; + + default: + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + } + else { + if (bc != Bytecodes::_return) { + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + } + + bc = iter.next(); + assert(bc == ciBytecodeStream::EOBC(), "eh?"); + + // For field accesses we need to null check the receiver before + // entering the inlined section. For the majority of accessors + // this has already been done (in do_call) but if the accessor + // was invoked by invokestatic (eg synthetic accessors) then it + // won't have been checked and do_field_access will try to do + // it and fail. So we check here, which is moderately wrong in + // that the NullPointerException will have been thrown by the + // caller rather than the callee. + if (is_field) + check_null(xstack(0)); + + current_state()->enter_inlined_section(); + do_field_access(is_get, is_field, field); + current_state()->leave_inlined_section(); + return true; +} + void SharkBlock::do_call() { bool will_link; ciMethod *method = iter()->get_method(will_link); assert(will_link, "typeflow responsibility"); - // Find the receiver in the stack + // Figure out what type of call this is + CallType call_type = get_call_type(method); + + // Find the receiver in the stack. This has to happen + // before we try to inline, because nothing in the inlined + // code can decache (which check_null needs to do for the + // VM call to throw the NullPointerException). Once we've + // checked, the repeated null check elimination stuff does + // the work for us. SharkValue *receiver = NULL; if (bc() != Bytecodes::_invokestatic) { receiver = xstack(method->arg_size() - 1); check_null(receiver); } + // Try to inline the call + if (call_type == CALL_DIRECT) { + if (maybe_inline_call(method)) + return; + } + // Find the method we are calling - Value *callee; - if (bc() == Bytecodes::_invokeinterface) - callee = get_interface_callee(receiver); - else if (bc() == Bytecodes::_invokevirtual && !method->is_final_method()) - callee = get_virtual_callee(receiver, method); - else - callee = get_direct_callee(method); - + Value *callee = get_callee(call_type, method, receiver); + + // Load the SharkEntry from the callee Value *base_pc = builder()->CreateValueOfStructEntry( callee, methodOopDesc::from_interpreted_offset(), SharkType::intptr_type(), "base_pc"); + // Load the entry point from the SharkEntry Value *entry_point = builder()->CreateLoad( builder()->CreateIntToPtr( builder()->CreateAdd( diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -457,7 +457,7 @@ class SharkBlock : public ResourceObj { { do_field_access(false, true); } - void do_field_access(bool is_get, bool is_field); + void do_field_access(bool is_get, bool is_field, ciField* field = NULL); // lcmp and [fd]cmp[lg] private: @@ -493,11 +493,24 @@ class SharkBlock : public ResourceObj { // invoke* private: + enum CallType { + CALL_DIRECT, + CALL_VIRTUAL, + CALL_INTERFACE + }; + CallType get_call_type(ciMethod* method); + llvm::Value* get_callee(CallType call_type, + ciMethod* method, + SharkValue* receiver); + llvm::Value* get_direct_callee(ciMethod* method); llvm::Value* get_virtual_callee(SharkValue* receiver, ciMethod* method); llvm::Value* get_virtual_callee(llvm::Value* cache, SharkValue* receiver); llvm::Value* get_interface_callee(SharkValue* receiver); + + bool maybe_inline_call(ciMethod* method); + bool maybe_inline_accessor(ciMethod* method, bool is_field); void do_call(); diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Feb 26 12:20:11 2009 +0000 @@ -262,3 +262,17 @@ void SharkTrackingState::merge(SharkStat set_stack(i, SharkValue::create_generic(this_type, phi)); } } + +#ifndef PRODUCT +void SharkTrackingState::enter_inlined_section() +{ + assert(has_stack_frame(), "should do"); + set_has_stack_frame(false); +} + +void SharkTrackingState::leave_inlined_section() +{ + assert(!has_stack_frame(), "shouldn't do"); + set_has_stack_frame(true); +} +#endif // PRODUCT diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -153,7 +153,11 @@ class SharkTrackingState : public SharkS class SharkTrackingState : public SharkState { public: SharkTrackingState(const SharkState* state) - : SharkState(state) { set_method(state->method()); } + : SharkState(state) + { + set_method(state->method()); + NOT_PRODUCT(set_has_stack_frame(true)); + } // Cache and decache public: @@ -172,4 +176,24 @@ class SharkTrackingState : public SharkS void merge(SharkState* other, llvm::BasicBlock* other_block, llvm::BasicBlock* this_block); + + // Inlining +#ifndef PRODUCT + private: + bool _has_stack_frame; + + protected: + bool has_stack_frame() const + { + return _has_stack_frame; + } + void set_has_stack_frame(bool has_stack_frame) + { + _has_stack_frame = has_stack_frame; + } +#endif // PRODUCT + + public: + void enter_inlined_section() PRODUCT_RETURN; + void leave_inlined_section() PRODUCT_RETURN; }; diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.inline.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -50,12 +50,14 @@ inline int SharkState::stack_depth_at_en inline void SharkTrackingState::decache_for_Java_call(ciMethod* callee) { + assert(has_stack_frame(), "should do"); SharkJavaCallDecacher(function(), block()->bci(), callee).scan(this); pop(callee->arg_size()); } inline void SharkTrackingState::cache_after_Java_call(ciMethod* callee) { + assert(has_stack_frame(), "should do"); if (callee->return_type()->size()) { ciType *type; switch (callee->return_type()->basic_type()) { @@ -79,15 +81,18 @@ inline void SharkTrackingState::cache_af inline void SharkTrackingState::decache_for_VM_call() { + assert(has_stack_frame(), "should do"); SharkVMCallDecacher(function(), block()->bci()).scan(this); } inline void SharkTrackingState::cache_after_VM_call() { + assert(has_stack_frame(), "should do"); SharkVMCallCacher(function(), block()->bci()).scan(this); } inline void SharkTrackingState::decache_for_trap() { + assert(has_stack_frame(), "should do"); SharkTrapDecacher(function(), block()->bci()).scan(this); } From gbenson at redhat.com Thu Feb 26 04:22:58 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 12:22:58 +0000 Subject: Shark accessor inlining Message-ID: <20090226122258.GA8970@redhat.com> Hi all, The Shark commit I just pushed to icedtea6 inlines accessor methods wherever possible. Most SPECjvm98 numbers were unaffected, but jess and javac both showed a 4% speedup. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r aa17512747b1 -r 5737c17b493d ChangeLog --- a/ChangeLog Wed Feb 25 16:38:54 2009 -0500 +++ b/ChangeLog Thu Feb 26 12:20:11 2009 +0000 @@ -1,3 +1,36 @@ +2009-02-26 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::do_field_access): Add optional field parameter. + (SharkBlock::get_call_type): New method. + (SharkBlock::get_callee): Likewise. + (SharkBlock::maybe_inline_call): Likewise. + (SharkBlock::maybe_inline_accessor): Likewise. + (SharkBlock::do_call): Separate call type detection from + callee fetch code, and attempt to inline inbetween. + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::do_field_access): Add optional field parameter. + (SharkBlock::CallType): New enum. + (SharkBlock::get_call_type): New method. + (SharkBlock::get_callee): Likewise. + (SharkBlock::maybe_inline_call): Likewise. + (SharkBlock::maybe_inline_accessor): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkTrackingState::enter_inlined_section): New method. + (SharkTrackingState::leave_inlined_section): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.hpp + (SharkTrackingState::_has_stack_frame): New field. + (SharkTrackingState::has_stack_frame): New method. + (SharkTrackingState::set_has_stack_frame): Likewise. + (SharkTrackingState::enter_inlined_section): Likewise. + (SharkTrackingState::leave_inlined_section): Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp + (SharkTrackingState::decache_for_Java_call): Check we have a frame. + (SharkTrackingState::cache_after_Java_call): Likewise. + (SharkTrackingState::decache_for_VM_call): Likewise. + (SharkTrackingState::cache_after_VM_call): Likewise. + (SharkTrackingState::decache_for_trap): Likewise. + 2009-02-25 Deepak Bhole * IcedTeaPlugin.cc: Implement Show/Hide from IJVMConsole, remove diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 12:20:11 2009 +0000 @@ -1485,15 +1485,17 @@ push(SharkValue::create_jint(result)); } -void SharkBlock::do_field_access(bool is_get, bool is_field) +void SharkBlock::do_field_access(bool is_get, bool is_field, ciField* field) { - bool will_link; - ciField *field = iter()->get_field(will_link); - assert(will_link, "typeflow responsibility"); + if (field == NULL) { + bool will_link; + field = iter()->get_field(will_link); + assert(will_link, "typeflow responsibility"); - // Check the bytecode matches the field - if (is_field == field->is_static()) - Unimplemented(); + // Check the bytecode matches the field + if (is_field == field->is_static()) + Unimplemented(); + } // Pop the value off the stack where necessary SharkValue *value = NULL; @@ -1726,6 +1728,36 @@ } } +// Figure out what type of call this is. +// - Direct calls are where the callee is fixed. +// - Interface and Virtual calls require lookup at runtime. +// NB some invokevirtuals can be resolved to direct calls. +SharkBlock::CallType SharkBlock::get_call_type(ciMethod* method) +{ + if (bc() == Bytecodes::_invokeinterface) + return CALL_INTERFACE; + else if (bc() == Bytecodes::_invokevirtual && !method->is_final_method()) + return CALL_VIRTUAL; + else + return CALL_DIRECT; +} + +Value *SharkBlock::get_callee(CallType call_type, + ciMethod* method, + SharkValue* receiver) +{ + switch (call_type) { + case CALL_DIRECT: + return get_direct_callee(method); + case CALL_VIRTUAL: + return get_virtual_callee(receiver, method); + case CALL_INTERFACE: + return get_interface_callee(receiver); + default: + ShouldNotReachHere(); + } +} + // Direct calls can be made when the callee is fixed. // invokestatic and invokespecial are always direct; // invokevirtual is direct in some circumstances. @@ -1995,33 +2027,174 @@ return callee; } +bool SharkBlock::maybe_inline_call(ciMethod *method) +{ + // Quick checks to allow us to bail out fast. We can't inline + // native methods, there's no point inlining abstract ones, and + // monitors aren't allowed because the inlined section has no + // frame to put them in. + if (method->is_native() || + method->is_abstract() || + method->is_synchronized() || + method->has_monitor_bytecodes()) + return false; + + // We need to scan the bytecode to do any more, so we bail out + // now if the method is too big + if (method->code_size() > 5) + return false; + + // Inspect the method's code to see if we can inline it. We + // don't use method->is_accessor() because that only spots + // some getfields, whereas we can inline *all* getfields, all + // putfields, and some getstatics too. + address code = method->code(); + switch (method->code_size()) { + case 4: + // getstatic and putstatic will try to look up the receiver + // from the holder's constant pool, which we can't do. Some + // getstatics, however, resolve to constants, and those we + // can do. So we try... + if (code[0] == Bytecodes::_getstatic) + return maybe_inline_accessor(method, false); + break; + + case 5: + if (code[0] == Bytecodes::_aload_0 && + (code[1] == Bytecodes::_getfield || + code[1] == Bytecodes::_putfield)) + return maybe_inline_accessor(method, true); + break; + } + return false; +} + +bool SharkBlock::maybe_inline_accessor(ciMethod *method, bool is_field) +{ + if (method->arg_size() != (is_field ? 1 : 0)) { + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + + ciBytecodeStream iter(method); + Bytecodes::Code bc; + + if (is_field) { + bc = iter.next(); + assert(bc == Bytecodes::_aload_0, "eh?"); + } + + bool is_get; + bc = iter.next(); + if (is_field) { + assert(bc == Bytecodes::_getfield || bc == Bytecodes::_putfield, "eh?"); + is_get = bc == Bytecodes::_getfield; + } + else { + assert(bc == Bytecodes::_getstatic, "eh?"); + is_get = true; + } + + bool will_link; + ciField *field = iter.get_field(will_link); + if (!will_link) + return false; + + // We can only inline getstatic if the field resolves to a + // non-oop constant. + if (!is_field) { + if (!field->is_constant()) + return false; + + if (SharkValue::from_ciConstant(field->constant_value()) == NULL) + return false; + } + + // We mustn't inline if the resolved field is the wrong type, + // because the thrown exception would appear to come from the + // wrong method. + if (is_field == field->is_static()) + return false; + + bc = iter.next(); + if (is_get) { + switch (bc) { + case Bytecodes::_ireturn: + case Bytecodes::_lreturn: + case Bytecodes::_freturn: + case Bytecodes::_dreturn: + case Bytecodes::_areturn: + break; + + default: + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + } + else { + if (bc != Bytecodes::_return) { + NOT_PRODUCT(warning("wacky accessor in %s", function()->name())); + return false; + } + } + + bc = iter.next(); + assert(bc == ciBytecodeStream::EOBC(), "eh?"); + + // For field accesses we need to null check the receiver before + // entering the inlined section. For the majority of accessors + // this has already been done (in do_call) but if the accessor + // was invoked by invokestatic (eg synthetic accessors) then it + // won't have been checked and do_field_access will try to do + // it and fail. So we check here, which is moderately wrong in + // that the NullPointerException will have been thrown by the + // caller rather than the callee. + if (is_field) + check_null(xstack(0)); + + current_state()->enter_inlined_section(); + do_field_access(is_get, is_field, field); + current_state()->leave_inlined_section(); + return true; +} + void SharkBlock::do_call() { bool will_link; ciMethod *method = iter()->get_method(will_link); assert(will_link, "typeflow responsibility"); - // Find the receiver in the stack + // Figure out what type of call this is + CallType call_type = get_call_type(method); + + // Find the receiver in the stack. This has to happen + // before we try to inline, because nothing in the inlined + // code can decache (which check_null needs to do for the + // VM call to throw the NullPointerException). Once we've + // checked, the repeated null check elimination stuff does + // the work for us. SharkValue *receiver = NULL; if (bc() != Bytecodes::_invokestatic) { receiver = xstack(method->arg_size() - 1); check_null(receiver); } + // Try to inline the call + if (call_type == CALL_DIRECT) { + if (maybe_inline_call(method)) + return; + } + // Find the method we are calling - Value *callee; - if (bc() == Bytecodes::_invokeinterface) - callee = get_interface_callee(receiver); - else if (bc() == Bytecodes::_invokevirtual && !method->is_final_method()) - callee = get_virtual_callee(receiver, method); - else - callee = get_direct_callee(method); + Value *callee = get_callee(call_type, method, receiver); + // Load the SharkEntry from the callee Value *base_pc = builder()->CreateValueOfStructEntry( callee, methodOopDesc::from_interpreted_offset(), SharkType::intptr_type(), "base_pc"); + // Load the entry point from the SharkEntry Value *entry_point = builder()->CreateLoad( builder()->CreateIntToPtr( builder()->CreateAdd( diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -457,7 +457,7 @@ { do_field_access(false, true); } - void do_field_access(bool is_get, bool is_field); + void do_field_access(bool is_get, bool is_field, ciField* field = NULL); // lcmp and [fd]cmp[lg] private: @@ -493,12 +493,25 @@ // invoke* private: + enum CallType { + CALL_DIRECT, + CALL_VIRTUAL, + CALL_INTERFACE + }; + CallType get_call_type(ciMethod* method); + llvm::Value* get_callee(CallType call_type, + ciMethod* method, + SharkValue* receiver); + llvm::Value* get_direct_callee(ciMethod* method); llvm::Value* get_virtual_callee(SharkValue* receiver, ciMethod* method); llvm::Value* get_virtual_callee(llvm::Value* cache, SharkValue* receiver); llvm::Value* get_interface_callee(SharkValue* receiver); + bool maybe_inline_call(ciMethod* method); + bool maybe_inline_accessor(ciMethod* method, bool is_field); + void do_call(); // checkcast and instanceof diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Feb 26 12:20:11 2009 +0000 @@ -262,3 +262,17 @@ set_stack(i, SharkValue::create_generic(this_type, phi)); } } + +#ifndef PRODUCT +void SharkTrackingState::enter_inlined_section() +{ + assert(has_stack_frame(), "should do"); + set_has_stack_frame(false); +} + +void SharkTrackingState::leave_inlined_section() +{ + assert(!has_stack_frame(), "shouldn't do"); + set_has_stack_frame(true); +} +#endif // PRODUCT diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -153,7 +153,11 @@ class SharkTrackingState : public SharkState { public: SharkTrackingState(const SharkState* state) - : SharkState(state) { set_method(state->method()); } + : SharkState(state) + { + set_method(state->method()); + NOT_PRODUCT(set_has_stack_frame(true)); + } // Cache and decache public: @@ -172,4 +176,24 @@ void merge(SharkState* other, llvm::BasicBlock* other_block, llvm::BasicBlock* this_block); + + // Inlining +#ifndef PRODUCT + private: + bool _has_stack_frame; + + protected: + bool has_stack_frame() const + { + return _has_stack_frame; + } + void set_has_stack_frame(bool has_stack_frame) + { + _has_stack_frame = has_stack_frame; + } +#endif // PRODUCT + + public: + void enter_inlined_section() PRODUCT_RETURN; + void leave_inlined_section() PRODUCT_RETURN; }; diff -r aa17512747b1 -r 5737c17b493d ports/hotspot/src/share/vm/shark/sharkState.inline.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Wed Feb 25 16:38:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Thu Feb 26 12:20:11 2009 +0000 @@ -50,12 +50,14 @@ inline void SharkTrackingState::decache_for_Java_call(ciMethod* callee) { + assert(has_stack_frame(), "should do"); SharkJavaCallDecacher(function(), block()->bci(), callee).scan(this); pop(callee->arg_size()); } inline void SharkTrackingState::cache_after_Java_call(ciMethod* callee) { + assert(has_stack_frame(), "should do"); if (callee->return_type()->size()) { ciType *type; switch (callee->return_type()->basic_type()) { @@ -79,15 +81,18 @@ inline void SharkTrackingState::decache_for_VM_call() { + assert(has_stack_frame(), "should do"); SharkVMCallDecacher(function(), block()->bci()).scan(this); } inline void SharkTrackingState::cache_after_VM_call() { + assert(has_stack_frame(), "should do"); SharkVMCallCacher(function(), block()->bci()).scan(this); } inline void SharkTrackingState::decache_for_trap() { + assert(has_stack_frame(), "should do"); SharkTrapDecacher(function(), block()->bci()).scan(this); } From gbenson at redhat.com Thu Feb 26 05:58:36 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 13:58:36 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Gary Benson changeset 0e0e3cf10018 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0e0e3cf10018 description: 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp: Updated copyright. * ports/hotspot/src/share/vm/shark/sharkState.hpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Likewise. diffstat: 4 files changed, 9 insertions(+), 3 deletions(-) ChangeLog | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkState.cpp | 2 +- ports/hotspot/src/share/vm/shark/sharkState.hpp | 2 +- ports/hotspot/src/share/vm/shark/sharkState.inline.hpp | 2 +- diffs (46 lines): diff -r 5737c17b493d -r 0e0e3cf10018 ChangeLog --- a/ChangeLog Thu Feb 26 12:20:11 2009 +0000 +++ b/ChangeLog Thu Feb 26 08:55:00 2009 -0500 @@ -1,3 +1,9 @@ 2009-02-26 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkState.cpp: Updated copyright. + * ports/hotspot/src/share/vm/shark/sharkState.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkState.inline.hpp: Likewise. + 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp diff -r 5737c17b493d -r 0e0e3cf10018 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Feb 26 12:20:11 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Thu Feb 26 08:55:00 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r 5737c17b493d -r 0e0e3cf10018 ports/hotspot/src/share/vm/shark/sharkState.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.hpp Thu Feb 26 12:20:11 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkState.hpp Thu Feb 26 08:55:00 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -r 5737c17b493d -r 0e0e3cf10018 ports/hotspot/src/share/vm/shark/sharkState.inline.hpp --- a/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Thu Feb 26 12:20:11 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkState.inline.hpp Thu Feb 26 08:55:00 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it From gbenson at redhat.com Thu Feb 26 07:28:29 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 15:28:29 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Gary Benson changeset 252bd67d10c6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=252bd67d10c6 description: 2009-02-26 Gary Benson PR icedtea/202: * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp (SharkRuntime::_register_finalizer): New variable. (SharkRuntime::register_finalizer): New method. (SharkRuntime::register_finalizer_C): Likewise. * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp (SharkRuntime::_register_finalizer): New variable. (SharkRuntime::initialize): Initialize the above. (SharkRuntime::register_finalizer_C): New method. * ports/hotspot/src/share/vm/shark/sharkBlock.hpp (SharkBlock::call_register_finalizer): New method. (SharkBlock::do_return): Call the above when compiling java.lang.Object.. * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::call_register_finalizer): New method. diffstat: 5 files changed, 93 insertions(+), 3 deletions(-) ChangeLog | 18 ++++++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 43 +++++++++++++++++++++ ports/hotspot/src/share/vm/shark/sharkBlock.hpp | 8 ++- ports/hotspot/src/share/vm/shark/sharkRuntime.cpp | 18 ++++++++ ports/hotspot/src/share/vm/shark/sharkRuntime.hpp | 9 +++- diffs (190 lines): diff -r 0e0e3cf10018 -r 252bd67d10c6 ChangeLog --- a/ChangeLog Thu Feb 26 08:55:00 2009 -0500 +++ b/ChangeLog Thu Feb 26 10:24:35 2009 -0500 @@ -1,3 +1,21 @@ 2009-02-26 Gary Benson + + PR icedtea/202: + * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp + (SharkRuntime::_register_finalizer): New variable. + (SharkRuntime::register_finalizer): New method. + (SharkRuntime::register_finalizer_C): Likewise. + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp + (SharkRuntime::_register_finalizer): New variable. + (SharkRuntime::initialize): Initialize the above. + (SharkRuntime::register_finalizer_C): New method. + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::call_register_finalizer): New method. + (SharkBlock::do_return): Call the above when compiling + java.lang.Object.. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::call_register_finalizer): New method. + 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp: Updated copyright. diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 10:24:35 2009 -0500 @@ -1160,6 +1160,49 @@ void SharkBlock::add_safepoint() current_state()->merge(orig_state, orig_block, safepointed_block); } +void SharkBlock::call_register_finalizer(Value *receiver) +{ + BasicBlock *orig_block = builder()->GetInsertBlock(); + SharkState *orig_state = current_state()->copy(); + + BasicBlock *do_call = function()->CreateBlock("has_finalizer"); + BasicBlock *done = function()->CreateBlock("done"); + + Value *klass = builder()->CreateValueOfStructEntry( + receiver, + in_ByteSize(oopDesc::klass_offset_in_bytes()), + SharkType::jobject_type(), + "klass"); + + Value *klass_part = builder()->CreateAddressOfStructEntry( + klass, + in_ByteSize(klassOopDesc::klass_part_offset_in_bytes()), + SharkType::klass_type(), + "klass_part"); + + Value *access_flags = builder()->CreateValueOfStructEntry( + klass_part, + in_ByteSize(Klass::access_flags_offset_in_bytes()), + SharkType::jint_type(), + "access_flags"); + + builder()->CreateCondBr( + builder()->CreateICmpNE( + builder()->CreateAnd( + access_flags, + LLVMValue::jint_constant(JVM_ACC_HAS_FINALIZER)), + LLVMValue::intptr_constant(0)), + do_call, done); + + builder()->SetInsertPoint(do_call); + call_vm(SharkRuntime::register_finalizer(), receiver); + BasicBlock *branch_block = builder()->GetInsertBlock(); + builder()->CreateBr(done); + + builder()->SetInsertPoint(done); + current_state()->merge(orig_state, orig_block, branch_block); +} + void SharkBlock::handle_return(BasicType type, Value* exception) { assert (exception == NULL || type == T_VOID, "exception OR result, please"); diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 10:24:35 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -403,6 +403,7 @@ class SharkBlock : public ResourceObj { // Returns private: + void call_register_finalizer(llvm::Value* receiver); void handle_return(BasicType type, llvm::Value* exception); void release_locked_monitors(); @@ -468,7 +469,10 @@ class SharkBlock : public ResourceObj { private: void do_return(BasicType type) { - add_safepoint(); + if (target()->intrinsic_id() == vmIntrinsics::_Object_init) + call_register_finalizer(local(0)->jobject_value()); + else + add_safepoint(); handle_return(type, NULL); } void do_athrow() diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkRuntime.cpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Feb 26 10:24:35 2009 -0500 @@ -35,6 +35,7 @@ Constant* SharkRuntime::_newarray; Constant* SharkRuntime::_newarray; Constant* SharkRuntime::_anewarray; Constant* SharkRuntime::_multianewarray; +Constant* SharkRuntime::_register_finalizer; Constant* SharkRuntime::_resolve_get_put; Constant* SharkRuntime::_resolve_invoke; Constant* SharkRuntime::_resolve_klass; @@ -112,6 +113,14 @@ void SharkRuntime::initialize(SharkBuild (intptr_t) multianewarray_C, FunctionType::get(Type::VoidTy, params, false), "SharkRuntime__multianewarray"); + + params.clear(); + params.push_back(SharkType::thread_type()); + params.push_back(SharkType::oop_type()); + _register_finalizer = builder->make_function( + (intptr_t) register_finalizer_C, + FunctionType::get(Type::VoidTy, params, false), + "SharkRuntime__register_finalizer"); params.clear(); params.push_back(SharkType::thread_type()); @@ -339,6 +348,15 @@ JRT_ENTRY(void, SharkRuntime::multianewa klassOop klass = method(thread)->constants()->klass_at(index, CHECK); oop obj = arrayKlass::cast(klass)->multi_allocate(ndims, dims, CHECK); thread->set_vm_result(obj); +} +JRT_END + +JRT_ENTRY(void, SharkRuntime::register_finalizer_C(JavaThread* thread, + oop object)) +{ + assert(object->is_oop(), "should be"); + assert(object->klass()->klass_part()->has_finalizer(), "should have"); + instanceKlass::register_finalizer(instanceOop(object), CHECK); } JRT_END diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkRuntime.hpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Thu Feb 26 10:24:35 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,6 +36,7 @@ class SharkRuntime : public AllStatic { static llvm::Constant* _newarray; static llvm::Constant* _anewarray; static llvm::Constant* _multianewarray; + static llvm::Constant* _register_finalizer; static llvm::Constant* _resolve_get_put; static llvm::Constant* _resolve_invoke; static llvm::Constant* _resolve_klass; @@ -73,6 +74,10 @@ class SharkRuntime : public AllStatic { { return _multianewarray; } + static llvm::Constant* register_finalizer() + { + return _register_finalizer; + } static llvm::Constant* resolve_get_put() { return _resolve_get_put; @@ -117,6 +122,8 @@ class SharkRuntime : public AllStatic { int index, int ndims, int* dims); + + static void register_finalizer_C(JavaThread* thread, oop object); static void resolve_get_put_C(JavaThread* thread, ConstantPoolCacheEntry* entry, From gbenson at redhat.com Thu Feb 26 07:30:54 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 15:30:54 +0000 Subject: Shark Object. bugfix Message-ID: <20090226153053.GC8970@redhat.com> Hi all, The commit I just pushed makes Shark correctly compile Object.. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 0e0e3cf10018 -r 252bd67d10c6 ChangeLog --- a/ChangeLog Thu Feb 26 08:55:00 2009 -0500 +++ b/ChangeLog Thu Feb 26 10:24:35 2009 -0500 @@ -1,3 +1,21 @@ +2009-02-26 Gary Benson + + PR icedtea/202: + * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp + (SharkRuntime::_register_finalizer): New variable. + (SharkRuntime::register_finalizer): New method. + (SharkRuntime::register_finalizer_C): Likewise. + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp + (SharkRuntime::_register_finalizer): New variable. + (SharkRuntime::initialize): Initialize the above. + (SharkRuntime::register_finalizer_C): New method. + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::call_register_finalizer): New method. + (SharkBlock::do_return): Call the above when compiling + java.lang.Object.. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::call_register_finalizer): New method. + 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp: Updated copyright. diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 10:24:35 2009 -0500 @@ -1160,6 +1160,49 @@ current_state()->merge(orig_state, orig_block, safepointed_block); } +void SharkBlock::call_register_finalizer(Value *receiver) +{ + BasicBlock *orig_block = builder()->GetInsertBlock(); + SharkState *orig_state = current_state()->copy(); + + BasicBlock *do_call = function()->CreateBlock("has_finalizer"); + BasicBlock *done = function()->CreateBlock("done"); + + Value *klass = builder()->CreateValueOfStructEntry( + receiver, + in_ByteSize(oopDesc::klass_offset_in_bytes()), + SharkType::jobject_type(), + "klass"); + + Value *klass_part = builder()->CreateAddressOfStructEntry( + klass, + in_ByteSize(klassOopDesc::klass_part_offset_in_bytes()), + SharkType::klass_type(), + "klass_part"); + + Value *access_flags = builder()->CreateValueOfStructEntry( + klass_part, + in_ByteSize(Klass::access_flags_offset_in_bytes()), + SharkType::jint_type(), + "access_flags"); + + builder()->CreateCondBr( + builder()->CreateICmpNE( + builder()->CreateAnd( + access_flags, + LLVMValue::jint_constant(JVM_ACC_HAS_FINALIZER)), + LLVMValue::intptr_constant(0)), + do_call, done); + + builder()->SetInsertPoint(do_call); + call_vm(SharkRuntime::register_finalizer(), receiver); + BasicBlock *branch_block = builder()->GetInsertBlock(); + builder()->CreateBr(done); + + builder()->SetInsertPoint(done); + current_state()->merge(orig_state, orig_block, branch_block); +} + void SharkBlock::handle_return(BasicType type, Value* exception) { assert (exception == NULL || type == T_VOID, "exception OR result, please"); diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkBlock.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Thu Feb 26 10:24:35 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -403,6 +403,7 @@ // Returns private: + void call_register_finalizer(llvm::Value* receiver); void handle_return(BasicType type, llvm::Value* exception); void release_locked_monitors(); @@ -468,7 +469,10 @@ private: void do_return(BasicType type) { - add_safepoint(); + if (target()->intrinsic_id() == vmIntrinsics::_Object_init) + call_register_finalizer(local(0)->jobject_value()); + else + add_safepoint(); handle_return(type, NULL); } void do_athrow() diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkRuntime.cpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Feb 26 10:24:35 2009 -0500 @@ -35,6 +35,7 @@ Constant* SharkRuntime::_newarray; Constant* SharkRuntime::_anewarray; Constant* SharkRuntime::_multianewarray; +Constant* SharkRuntime::_register_finalizer; Constant* SharkRuntime::_resolve_get_put; Constant* SharkRuntime::_resolve_invoke; Constant* SharkRuntime::_resolve_klass; @@ -115,6 +116,14 @@ params.clear(); params.push_back(SharkType::thread_type()); + params.push_back(SharkType::oop_type()); + _register_finalizer = builder->make_function( + (intptr_t) register_finalizer_C, + FunctionType::get(Type::VoidTy, params, false), + "SharkRuntime__register_finalizer"); + + params.clear(); + params.push_back(SharkType::thread_type()); params.push_back(SharkType::cpCacheEntry_type()); params.push_back(SharkType::jint_type()); params.push_back(SharkType::jint_type()); @@ -342,6 +351,15 @@ } JRT_END +JRT_ENTRY(void, SharkRuntime::register_finalizer_C(JavaThread* thread, + oop object)) +{ + assert(object->is_oop(), "should be"); + assert(object->klass()->klass_part()->has_finalizer(), "should have"); + instanceKlass::register_finalizer(instanceOop(object), CHECK); +} +JRT_END + JRT_ENTRY(void, SharkRuntime::resolve_get_put_C(JavaThread* thread, ConstantPoolCacheEntry* entry, int bci, diff -r 0e0e3cf10018 -r 252bd67d10c6 ports/hotspot/src/share/vm/shark/sharkRuntime.hpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Thu Feb 26 08:55:00 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Thu Feb 26 10:24:35 2009 -0500 @@ -1,6 +1,6 @@ /* * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 Red Hat, Inc. + * Copyright 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,6 +36,7 @@ static llvm::Constant* _newarray; static llvm::Constant* _anewarray; static llvm::Constant* _multianewarray; + static llvm::Constant* _register_finalizer; static llvm::Constant* _resolve_get_put; static llvm::Constant* _resolve_invoke; static llvm::Constant* _resolve_klass; @@ -73,6 +74,10 @@ { return _multianewarray; } + static llvm::Constant* register_finalizer() + { + return _register_finalizer; + } static llvm::Constant* resolve_get_put() { return _resolve_get_put; @@ -118,6 +123,8 @@ int ndims, int* dims); + static void register_finalizer_C(JavaThread* thread, oop object); + static void resolve_get_put_C(JavaThread* thread, ConstantPoolCacheEntry* entry, int bci, From gbenson at redhat.com Thu Feb 26 09:34:27 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 26 Feb 2009 17:34:27 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Gary Benson changeset 90de0ba94422 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=90de0ba94422 description: 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::call_register_finalizer): Fix mismatch. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 2 +- diffs (24 lines): diff -r 252bd67d10c6 -r 90de0ba94422 ChangeLog --- a/ChangeLog Thu Feb 26 10:24:35 2009 -0500 +++ b/ChangeLog Thu Feb 26 17:34:19 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-26 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::call_register_finalizer): Fix mismatch. + 2009-02-26 Gary Benson PR icedtea/202: diff -r 252bd67d10c6 -r 90de0ba94422 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 10:24:35 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 17:34:19 2009 +0000 @@ -1191,7 +1191,7 @@ void SharkBlock::call_register_finalizer builder()->CreateAnd( access_flags, LLVMValue::jint_constant(JVM_ACC_HAS_FINALIZER)), - LLVMValue::intptr_constant(0)), + LLVMValue::jint_constant(0)), do_call, done); builder()->SetInsertPoint(do_call); From aph at redhat.com Thu Feb 26 10:37:31 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 26 Feb 2009 18:37:31 +0000 Subject: Shark: JVMTI support for profiling, etc Message-ID: <49A6E16B.1060205@redhat.com> This patch adds support for Shark profiling. Running SPECjvm98 gives you a profile like this, showing the time spent in Shark-compiled code: samples % image name app name symbol name 168440 5.0754 no-vmlinux no-vmlinux /no-vmlinux 125195 3.7724 9541.jo java spec.benchmarks._209_db.Database::shell_sort 87596 2.6394 libjvm.so libjvm.so SignatureIterator::iterate_returntype() 80076 2.4128 9541.jo java java.lang.String::compareTo 70082 2.1117 9541.jo java java.util.Vector::elementAt 65929 1.9866 9541.jo java spec.benchmarks._201_compress.Compressor::compress 62324 1.8779 libjvm.so libjvm.so SharedHeap::is_in_permanent(void const*) const 59044 1.7791 libjvm.so libjvm.so CppInterpreter::accessor_entry(methodOopDesc*, long, Thread*) 58508 1.7630 libjvm.so libjvm.so Hashtable::oops_do(OopClosure*) 43226 1.3025 9541.jo java spec.benchmarks._222_mpegaudio.q::l 42005 1.2657 9541.jo java java.util.Vector::elementData 39031 1.1761 9541.jo java spec.benchmarks._205_raytrace.OctNode::Intersect 38677 1.1654 9541.jo java spec.benchmarks._201_compress.Decompressor::decompress ... I committed this. Andrew. 2009-02-26 Andrew Haley * patches/openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp: New file. * Makefile.am (ICEDTEA_PATCHES): Add icedtea-jvmtiEnv.patch. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Use real name, not "func". Pass "none" to "-debug-only=". Register generated code for profiling, etc. * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (class SharkEntry): Remove #ifndef PRODUCT. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::CreateFunction): Use real name, not "func". * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateFunction): Use real name, not "func". (MyJITMemoryManager::endFunctionBody): Remove #ifndef PRODUCT. --- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp.old 2009-02-26 17:18:35.000000000 +0000 +++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp 2009-02-26 17:16:59.000000000 +0000 @@ -2702,6 +2702,9 @@ (*entry_count_ptr) = num_entries; (*table_ptr) = jvmti_table; + if (num_entries == 0) + return JVMTI_ERROR_ABSENT_INFORMATION; + return JVMTI_ERROR_NONE; } /* end GetLineNumberTable */ diff -r 90de0ba94422 Makefile.am --- a/Makefile.am Thu Feb 26 17:34:19 2009 +0000 +++ b/Makefile.am Thu Feb 26 18:32:17 2009 +0000 @@ -541,7 +541,8 @@ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ - patches/icedtea-core-build.patch + patches/icedtea-core-build.patch \ + patches/icedtea-jvmtiEnv.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 90de0ba94422 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Feb 26 17:34:19 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Feb 26 18:29:12 2009 +0000 @@ -97,12 +97,12 @@ module()->getOrInsertFunction("llvm.memory.barrier", type)); } -Function *SharkBuilder::CreateFunction() +Function *SharkBuilder::CreateFunction(const char *name) { Function *function = Function::Create( SharkType::entry_point_type(), GlobalVariable::InternalLinkage, - "func"); + name); module()->getFunctionList().push_back(function); return function; } @@ -180,13 +180,12 @@ void SharkBuilder::MyJITMemoryManager::endFunctionBody (const llvm::Function *F, unsigned char *FunctionStart, - unsigned char *FunctionEnd) + unsigned char *FunctionEnd) { mm->endFunctionBody(F, FunctionStart, FunctionEnd); -#ifndef PRODUCT + SharkEntry *e = sharkEntry[F]; if (e) e->setBounds(FunctionStart, FunctionEnd); -#endif // !PRODUCT } diff -r 90de0ba94422 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Thu Feb 26 17:34:19 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Thu Feb 26 18:29:12 2009 +0000 @@ -109,7 +109,7 @@ // Function creation public: - llvm::Function *CreateFunction(); + llvm::Function *CreateFunction(const char *name = "func"); // Helpers for accessing structures and arrays public: diff -r 90de0ba94422 ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Feb 26 17:34:19 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Feb 26 18:29:12 2009 +0000 @@ -46,8 +46,6 @@ public: void print_statistics(const char* name) const PRODUCT_RETURN; -#ifndef PRODUCT - private: address code_start() const { return start; @@ -66,6 +64,4 @@ start = (address)FunctionStart; limit = (address)FunctionEnd; } - -#endif // !PRODUCT }; diff -r 90de0ba94422 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Feb 26 17:34:19 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Feb 26 18:29:12 2009 +0000 @@ -37,7 +37,7 @@ masm()->advance(sizeof(SharkEntry)); // Create the function - _function = builder()->CreateFunction(); + _function = builder()->CreateFunction(name()); entry->set_llvm_function(function()); #ifndef PRODUCT // FIXME: there should be a mutex when updating sharkEntry in case @@ -142,7 +142,7 @@ // target-specific. Args.push_back("-debug-only=" "x86-emitter"); else - Args.push_back("-debug-only="); + Args.push_back("-debug-only=" "none"); Args.push_back(0); // Null terminator. cl::ParseCommandLineOptions(Args.size()-1, (char**)&Args[0]); #endif @@ -150,6 +150,13 @@ // Compile to native code void *code = builder()->execution_engine()->getPointerToFunction(function()); + + // Register generated code for profiling, etc + if (JvmtiExport::should_post_dynamic_code_generated()) { + JvmtiExport::post_dynamic_code_generated + (name(), entry->code_start(), entry->code_limit()); + } + entry->set_entry_point((ZeroEntry::method_entry_t) code); if (SharkTraceInstalls) entry->print_statistics(name()); From aph at redhat.com Thu Feb 26 10:49:33 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 26 Feb 2009 18:49:33 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Andrew Haley changeset 39e3afb50b61 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=39e3afb50b61 description: 2009-02-26 Andrew Haley * patches/openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp: New file. * Makefile.am (ICEDTEA_PATCHES): Add icedtea-jvmtiEnv.patch. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Use real name, not "func". Pass "none" to "-debug-only=". Register generated code for profiling, etc. * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (class SharkEntry): Remove #ifndef PRODUCT. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::CreateFunction): Use real name, not "func". * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateFunction): Use real name, not "func". (MyJITMemoryManager::endFunctionBody): Remove #ifndef PRODUCT. diffstat: 1 file changed, 16 insertions(+) ChangeLog | 16 ++++++++++++++++ diffs (23 lines): diff -r 90de0ba94422 -r 39e3afb50b61 ChangeLog --- a/ChangeLog Thu Feb 26 17:34:19 2009 +0000 +++ b/ChangeLog Thu Feb 26 18:48:53 2009 +0000 @@ -1,3 +1,19 @@ 2009-02-26 Gary Benson + + * patches/openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp: New file. + * Makefile.am (ICEDTEA_PATCHES): Add icedtea-jvmtiEnv.patch. + * ports/hotspot/src/share/vm/shark/sharkFunction.cpp + (SharkFunction::initialize): Use real name, not "func". + Pass "none" to "-debug-only=". + Register generated code for profiling, etc. + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (class SharkEntry): + Remove #ifndef PRODUCT. + * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp + (SharkBuilder::CreateFunction): Use real name, not "func". + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::CreateFunction): Use real name, not "func". + (MyJITMemoryManager::endFunctionBody): Remove #ifndef PRODUCT. + 2009-02-26 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp From aph at redhat.com Thu Feb 26 10:49:33 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 26 Feb 2009 18:49:33 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Andrew Haley changeset 5bb8386e5bc2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5bb8386e5bc2 description: 2009-02-26 Andrew Haley * patches/openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp: New file. * Makefile.am (ICEDTEA_PATCHES): Add icedtea-jvmtiEnv.patch. * ports/hotspot/src/share/vm/shark/sharkFunction.cpp (SharkFunction::initialize): Use real name, not "func". Pass "none" to "-debug-only=". Register generated code for profiling, etc. * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (class SharkEntry): Remove #ifndef PRODUCT. * ports/hotspot/src/share/vm/shark/sharkBuilder.hpp (SharkBuilder::CreateFunction): Use real name, not "func". * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateFunction): Use real name, not "func". (MyJITMemoryManager::endFunctionBody): Remove #ifndef PRODUCT. diffstat: 6 files changed, 28 insertions(+), 13 deletions(-) Makefile.am | 3 ++- patches/icedtea-jvmtiEnv.patch | 12 ++++++++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 9 ++++----- ports/hotspot/src/share/vm/shark/sharkBuilder.hpp | 2 +- ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 4 ---- ports/hotspot/src/share/vm/shark/sharkFunction.cpp | 11 +++++++++-- diffs (129 lines): diff -r 39e3afb50b61 -r 5bb8386e5bc2 Makefile.am --- a/Makefile.am Thu Feb 26 18:48:53 2009 +0000 +++ b/Makefile.am Thu Feb 26 18:49:20 2009 +0000 @@ -541,7 +541,8 @@ ICEDTEA_PATCHES = \ patches/icedtea-sunsrc.patch \ patches/icedtea-libraries.patch \ patches/icedtea-javafiles.patch \ - patches/icedtea-core-build.patch + patches/icedtea-core-build.patch \ + patches/icedtea-jvmtiEnv.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 39e3afb50b61 -r 5bb8386e5bc2 patches/icedtea-jvmtiEnv.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jvmtiEnv.patch Thu Feb 26 18:49:20 2009 +0000 @@ -0,0 +1,12 @@ +--- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp.old 2009-02-26 17:18:35.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp 2009-02-26 17:16:59.000000000 +0000 +@@ -2702,6 +2702,9 @@ + (*entry_count_ptr) = num_entries; + (*table_ptr) = jvmti_table; + ++ if (num_entries == 0) ++ return JVMTI_ERROR_ABSENT_INFORMATION; ++ + return JVMTI_ERROR_NONE; + } /* end GetLineNumberTable */ + diff -r 39e3afb50b61 -r 5bb8386e5bc2 ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Feb 26 18:48:53 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Feb 26 18:49:20 2009 +0000 @@ -97,12 +97,12 @@ void SharkBuilder::init_external_functio module()->getOrInsertFunction("llvm.memory.barrier", type)); } -Function *SharkBuilder::CreateFunction() +Function *SharkBuilder::CreateFunction(const char *name) { Function *function = Function::Create( SharkType::entry_point_type(), GlobalVariable::InternalLinkage, - "func"); + name); module()->getFunctionList().push_back(function); return function; } @@ -180,13 +180,12 @@ CallInst *SharkBuilder::CreateMemoryBarr void SharkBuilder::MyJITMemoryManager::endFunctionBody (const llvm::Function *F, unsigned char *FunctionStart, - unsigned char *FunctionEnd) + unsigned char *FunctionEnd) { mm->endFunctionBody(F, FunctionStart, FunctionEnd); -#ifndef PRODUCT + SharkEntry *e = sharkEntry[F]; if (e) e->setBounds(FunctionStart, FunctionEnd); -#endif // !PRODUCT } diff -r 39e3afb50b61 -r 5bb8386e5bc2 ports/hotspot/src/share/vm/shark/sharkBuilder.hpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Thu Feb 26 18:48:53 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.hpp Thu Feb 26 18:49:20 2009 +0000 @@ -109,7 +109,7 @@ class SharkBuilder : public llvm::IRBuil // Function creation public: - llvm::Function *CreateFunction(); + llvm::Function *CreateFunction(const char *name = "func"); // Helpers for accessing structures and arrays public: diff -r 39e3afb50b61 -r 5bb8386e5bc2 ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Feb 26 18:48:53 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Thu Feb 26 18:49:20 2009 +0000 @@ -46,8 +46,6 @@ class SharkEntry : public ZeroEntry { public: void print_statistics(const char* name) const PRODUCT_RETURN; -#ifndef PRODUCT - private: address code_start() const { return start; @@ -66,6 +64,4 @@ public: start = (address)FunctionStart; limit = (address)FunctionEnd; } - -#endif // !PRODUCT }; diff -r 39e3afb50b61 -r 5bb8386e5bc2 ports/hotspot/src/share/vm/shark/sharkFunction.cpp --- a/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Feb 26 18:48:53 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkFunction.cpp Thu Feb 26 18:49:20 2009 +0000 @@ -37,7 +37,7 @@ void SharkFunction::initialize() masm()->advance(sizeof(SharkEntry)); // Create the function - _function = builder()->CreateFunction(); + _function = builder()->CreateFunction(name()); entry->set_llvm_function(function()); #ifndef PRODUCT // FIXME: there should be a mutex when updating sharkEntry in case @@ -142,7 +142,7 @@ void SharkFunction::initialize() // target-specific. Args.push_back("-debug-only=" "x86-emitter"); else - Args.push_back("-debug-only="); + Args.push_back("-debug-only=" "none"); Args.push_back(0); // Null terminator. cl::ParseCommandLineOptions(Args.size()-1, (char**)&Args[0]); #endif @@ -150,6 +150,13 @@ void SharkFunction::initialize() // Compile to native code void *code = builder()->execution_engine()->getPointerToFunction(function()); + + // Register generated code for profiling, etc + if (JvmtiExport::should_post_dynamic_code_generated()) { + JvmtiExport::post_dynamic_code_generated + (name(), entry->code_start(), entry->code_limit()); + } + entry->set_entry_point((ZeroEntry::method_entry_t) code); if (SharkTraceInstalls) entry->print_statistics(name()); From omajid at redhat.com Thu Feb 26 11:13:00 2009 From: omajid at redhat.com (Omair Majid) Date: Thu, 26 Feb 2009 14:13:00 -0500 Subject: [PATCH] RFC: XML encoder can cause a StackOverflowError (PR295) In-Reply-To: <49A67046.3000204@redhat.com> References: <49A5B902.3060602@redhat.com> <49A67046.3000204@redhat.com> Message-ID: <49A6E9BC.9010102@redhat.com> Andrew Haley wrote: > Omair Majid wrote: > >> IcedTea6 and apparently OpenJDK6, IcedTea, OpenJDK and the Xalan-J2 all >> have a bug in their xml encoder, which can result in a >> StackOverflowError [1]. >> >> The test case which tries to encode character 4096 to 321 easily >> reproduces the issue. The issue appears to be this: When finding the >> encoding for (char) 4096, an EncodingImpl object is created which >> explicitly manages characters 4096 to 4223. So far so good. But when the >> transformer tries to find the encoding for (char) 4095, a new >> EncodingImpl delegate object is created which manages the values 4095 to >> 4222. Effectively, this object only manages the value 4095 (since the >> parent already manages 4096 to 4222). To find the value for 4094, a new >> delegate is created. Do this a few more times, and you have one stack >> frame for each value. Trying to encode characters from 0xffff to 0x0000 >> will result in thousands of stack frames. >> >> The proposed patch makes sure that each delegate manages 128 values >> which dont overlap with any other delegate. The patch brings down the >> maximum number of delegates in the chain to (0xffff + 1)/RANGE = 512 >> (also the max number of stack frames that can be used by EndcodingImpl). > > Thanks. This is OK for IcedTea. Committed as 2009-02-26 Omair Majid * patches/icedtea-xml-encodinginfo.patch: New file. Fix possible StackOverflowError. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * HACKING: Document the above. > Please create an upstream bug for this, attaching the test case and your > patch. Filed at http://bugs.openjdk.java.net/show_bug.cgi?id=100017 > Andrew. Cheers, Omair From omajid at redhat.com Thu Feb 26 11:13:44 2009 From: omajid at redhat.com (Omair Majid) Date: Thu, 26 Feb 2009 19:13:44 +0000 Subject: changeset in /hg/icedtea6: 2009-02-26 Omair Majid changeset ecbd78fe74dc in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ecbd78fe74dc description: 2009-02-26 Omair Majid * patches/icedtea-xml-encodinginfo.patch: New file. Fix possible StackOverflowError. * Makefile.am (ICEDTEA_PATCHES): Apply the above. * HACKING: Document the above. diffstat: 4 files changed, 28 insertions(+), 1 deletion(-) ChangeLog | 7 +++++++ HACKING | 1 + Makefile.am | 3 ++- patches/icedtea-xml-encodinginfo.patch | 18 ++++++++++++++++++ diffs (60 lines): diff -r 5bb8386e5bc2 -r ecbd78fe74dc ChangeLog --- a/ChangeLog Thu Feb 26 18:49:20 2009 +0000 +++ b/ChangeLog Thu Feb 26 14:12:08 2009 -0500 @@ -1,3 +1,10 @@ 2009-02-26 Andrew Haley + + * patches/icedtea-xml-encodinginfo.patch: New file. Fix possible + StackOverflowError. + * Makefile.am (ICEDTEA_PATCHES): Apply the above. + * HACKING: Document the above. + 2009-02-26 Andrew Haley * patches/openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp: New file. diff -r 5bb8386e5bc2 -r ecbd78fe74dc HACKING --- a/HACKING Thu Feb 26 18:49:20 2009 +0000 +++ b/HACKING Thu Feb 26 14:12:08 2009 -0500 @@ -84,6 +84,7 @@ The following patches are currently appl * icedtea-awt-window-size.patch: Fix X11 window size calculation (S6721088). * icedtea-java2d-dasher.patch: Fix interpretation of dash array elements in BasicStroke (S6793344). * icedtea-cc-interp-backedge.patch: Remove some duplicated code in DO_BACKEDGE_CHECKS. +* icedtea-xml-encodinginfo.patch: Fix possible StackOverflowError in EncodingInfo (PR295). The following patches are only applied to OpenJDK6 in IcedTea6: diff -r 5bb8386e5bc2 -r ecbd78fe74dc Makefile.am --- a/Makefile.am Thu Feb 26 18:49:20 2009 +0000 +++ b/Makefile.am Thu Feb 26 14:12:08 2009 -0500 @@ -661,7 +661,8 @@ ICEDTEA_PATCHES += \ patches/icedtea-awt-window-size.patch \ patches/icedtea-java2d-dasher.patch \ patches/hotspot/$(HSBUILD)/icedtea-format.patch \ - patches/icedtea-cc-interp-backedge.patch + patches/icedtea-cc-interp-backedge.patch \ + patches/icedtea-xml-encodinginfo.patch stamps/extract.stamp: stamps/download.stamp if OPENJDK_SRC_DIR_FOUND diff -r 5bb8386e5bc2 -r ecbd78fe74dc patches/icedtea-xml-encodinginfo.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-xml-encodinginfo.patch Thu Feb 26 14:12:08 2009 -0500 @@ -0,0 +1,18 @@ +--- EncodingInfo.java.orig 2009-02-19 14:46:50.000000000 -0500 ++++ openjdk/jaxp/src/share/classes/com/sun/org/apache/xml/internal/serializer/EncodingInfo.java 2009-02-20 10:31:37.000000000 -0500 +@@ -326,9 +326,11 @@ + m_last = last; + + // Set the range of unicode values that this object +- // explicitly manages +- m_explFirst = codePoint; +- m_explLast = codePoint + (RANGE-1); ++ // explicitly manages. Align the explicitly managed values ++ // to RANGE so multiple EncodingImpl objects dont manage the same ++ // values. ++ m_explFirst = codePoint / RANGE * RANGE; ++ m_explLast = m_explFirst + (RANGE-1); + + m_encoding = encoding; + + From langel at redhat.com Thu Feb 26 11:32:51 2009 From: langel at redhat.com (Lillian Angel) Date: Thu, 26 Feb 2009 14:32:51 -0500 Subject: Mauve/JTreg testing Message-ID: <49A6EE63.8030502@redhat.com> Hi, Omair has been working on getting our internal nightly tester to display graphs in Hudson for Mauve and JTreg. The plan is to write some sort of script that will email out the regressions for these testsuites nightly, as well as post the results nightly somewhere public (perhaps using Hudson). Any thoughts on a good place to email and post these results? Also, is there anything else people would like to see? Cheers, Lillian From dbhole at redhat.com Thu Feb 26 12:40:33 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 26 Feb 2009 20:40:33 +0000 Subject: changeset in /hg/icedtea6: - Escape URL before passing it from J... Message-ID: changeset 29fdac532dd0 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=29fdac532dd0 description: - Escape URL before passing it from Java to Mozilla - Reduce delay on the "waiting for applet to initialize" message - Fix parser to handle "java:" in code attributes - rhbz# 487452 - Send stdout/stderr messages to console only in non-debug mode diffstat: 4 files changed, 59 insertions(+), 24 deletions(-) ChangeLog | 9 +++ IcedTeaPlugin.cc | 13 ++++- plugin/icedtea/sun/applet/PluginAppletViewer.java | 53 ++++++++++++--------- plugin/icedtea/sun/applet/PluginMain.java | 8 ++- diffs (174 lines): diff -r ecbd78fe74dc -r 29fdac532dd0 ChangeLog --- a/ChangeLog Thu Feb 26 14:12:08 2009 -0500 +++ b/ChangeLog Thu Feb 26 15:40:28 2009 -0500 @@ -1,3 +1,12 @@ 2009-02-26 Omair Majid + + * IcedTeaPlugin.cc: Decode url via nsINetUtil::UnescapeString() + * plugin/icedtea/sun/applet/PluginAppletViewer.java: Encode URL before + sending it to mozilla. Increment timeout for initialization message. Fix + parser to handle "java:" in code attribute. + * plugin/icedtea/sun/applet/PluginMain.java: Tee outputstream only if not + in debug mode. + 2009-02-26 Omair Majid * patches/icedtea-xml-encodinginfo.patch: New file. Fix possible diff -r ecbd78fe74dc -r 29fdac532dd0 IcedTeaPlugin.cc --- a/IcedTeaPlugin.cc Thu Feb 26 14:12:08 2009 -0500 +++ b/IcedTeaPlugin.cc Thu Feb 26 15:40:28 2009 -0500 @@ -2885,6 +2885,7 @@ IcedTeaPluginFactory::OnInputStreamReady } #include +#include void IcedTeaPluginFactory::HandleMessage (nsCString const& message) @@ -2968,7 +2969,17 @@ IcedTeaPluginFactory::HandleMessage (nsC if (instance != 0) { space = rest.FindChar (' '); - nsDependentCSubstring url = Substring (rest, 0, space); + nsDependentCSubstring escapedUrl = Substring (rest, 0, space); + + nsresult rv; + nsCOMPtr net_util = do_GetService(NS_NETUTIL_CONTRACTID, &rv); + + if (!net_util) + printf("Error instantiating NetUtil service.\n"); + + nsDependentCSubstring url; + net_util->UnescapeString(escapedUrl, 0, url); + nsDependentCSubstring target = Substring (rest, space + 1); nsCOMPtr ownerGetter = do_QueryInterface (instance->peer); diff -r ecbd78fe74dc -r 29fdac532dd0 plugin/icedtea/sun/applet/PluginAppletViewer.java --- a/plugin/icedtea/sun/applet/PluginAppletViewer.java Thu Feb 26 14:12:08 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginAppletViewer.java Thu Feb 26 15:40:28 2009 -0500 @@ -99,6 +99,8 @@ import java.util.Vector; import javax.swing.SwingUtilities; +import com.sun.jndi.toolkit.url.UrlUtil; + import net.sourceforge.jnlp.NetxPanel; import net.sourceforge.jnlp.runtime.JNLPClassLoader; import sun.awt.AppContext; @@ -309,7 +311,7 @@ import sun.misc.Ref; Applet a; while ((a = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { try { - Thread.sleep(100); + Thread.sleep(2000); PluginDebug.debug("Waiting for applet to initialize... "); } catch (InterruptedException ie) { ie.printStackTrace(); @@ -493,7 +495,7 @@ import sun.misc.Ref; // (happens in a separate thread) while ((o = panel.getApplet()) == null && panel.getAppletHandlerThread().isAlive()) { try { - Thread.sleep(100); + Thread.sleep(2000); PluginDebug.debug("Waiting for applet to initialize..."); } catch (InterruptedException ie) { ie.printStackTrace(); @@ -765,7 +767,7 @@ import sun.misc.Ref; public void showDocument(URL url, String target) { try { // FIXME: change to postCallRequest - write("url " + url + " " + target); + write("url " + UrlUtil.encode(url.toString(), "UTF-8") + " " + target); } catch (IOException exception) { // Deliberately ignore IOException. showDocument may be // called from threads other than the main thread after @@ -1606,12 +1608,15 @@ import sun.misc.Ref; isAppletTag = true; atts = scanTag(in); - // If there is a classid present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && - ((String) atts.get("classid")).startsWith("java:")) { - //skip "java:" - atts.put("code", ((String) atts.get("classid")).substring(5)); - } + // If there is a classid and no code tag present, transform it to code tag + if (atts.get("code") == null && atts.get("classid") != null) { + atts.put("code", atts.get("classid")); + } + + // remove java: from code tag + if (atts.get("code") != null && ((String) atts.get("code")).startsWith("java:")) { + atts.put("code", ((String) atts.get("code")).substring(5)); + } if (atts.get("code") == null && atts.get("object") == null) { statusMsgStream.println(appletRequiresCodeWarning); @@ -1640,12 +1645,15 @@ import sun.misc.Ref; isObjectTag = true; atts = scanTag(in); - // If there is a classid present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && - ((String) atts.get("classid")).startsWith("java:")) { - //skip "java:" - atts.put("code", ((String) atts.get("classid")).substring(5)); - } + // If there is a classid and no code tag present, transform it to code tag + if (atts.get("code") == null && atts.get("classid") != null) { + atts.put("code", atts.get("classid")); + } + + // remove java: from code tag + if (atts.get("code") != null && ((String) atts.get("code")).startsWith("java:")) { + atts.put("code", ((String) atts.get("code")).substring(5)); + } // java_* aliases override older names: // http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html#in-ie @@ -1698,12 +1706,15 @@ import sun.misc.Ref; isEmbedTag = true; atts = scanTag(in); - // If there is a classid present, transform it to code tag - if (atts.get("code") == null && atts.get("classid") != null && - ((String) atts.get("classid")).startsWith("java:")) { - //skip "java:" - atts.put("code", ((String) atts.get("classid")).substring(5)); - } + // If there is a classid and no code tag present, transform it to code tag + if (atts.get("code") == null && atts.get("classid") != null) { + atts.put("code", atts.get("classid")); + } + + // remove java: from code tag + if (atts.get("code") != null && ((String) atts.get("code")).startsWith("java:")) { + atts.put("code", ((String) atts.get("code")).substring(5)); + } // java_* aliases override older names: // http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html#in-nav diff -r ecbd78fe74dc -r 29fdac532dd0 plugin/icedtea/sun/applet/PluginMain.java --- a/plugin/icedtea/sun/applet/PluginMain.java Thu Feb 26 14:12:08 2009 -0500 +++ b/plugin/icedtea/sun/applet/PluginMain.java Thu Feb 26 15:40:28 2009 -0500 @@ -270,13 +270,17 @@ public class PluginMain @Override public void write(int b) { logFile.write(b); - super.write(b); + + if (!redirectStreams) + super.write(b); } @Override public void write(byte[] b) throws IOException { logFile.write(b); - super.write(b); + + if (!redirectStreams) + super.write(b); } } From gbenson at redhat.com Fri Feb 27 01:11:44 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 27 Feb 2009 09:11:44 +0000 Subject: changeset in /hg/icedtea6: 2009-02-27 Gary Benson changeset fd98e848b25c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=fd98e848b25c description: 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::maybe_inline_call): Inline empty methods. diffstat: 2 files changed, 14 insertions(+) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 9 +++++++++ diffs (31 lines): diff -r 29fdac532dd0 -r fd98e848b25c ChangeLog --- a/ChangeLog Thu Feb 26 15:40:28 2009 -0500 +++ b/ChangeLog Fri Feb 27 04:08:04 2009 -0500 @@ -1,3 +1,8 @@ 2009-02-26 Deepak Bhole + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::maybe_inline_call): Inline empty methods. + 2009-02-26 Deepak Bhole * IcedTeaPlugin.cc: Decode url via nsINetUtil::UnescapeString() diff -r 29fdac532dd0 -r fd98e848b25c ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Thu Feb 26 15:40:28 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Feb 27 04:08:04 2009 -0500 @@ -2082,6 +2082,15 @@ bool SharkBlock::maybe_inline_call(ciMet method->has_monitor_bytecodes()) return false; + // Inlining empty methods is trivial + if (method->is_empty_method()) { + int desired_stack_depth = xstack_depth() - method->arg_size(); + while (xstack_depth() > desired_stack_depth) + pop(); + + return true; + } + // We need to scan the bytecode to do any more, so we bail out // now if the method is too big if (method->code_size() > 5) From mark at klomp.org Fri Feb 27 02:10:55 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 27 Feb 2009 11:10:55 +0100 Subject: Mauve/JTreg testing In-Reply-To: <49A6EE63.8030502@redhat.com> References: <49A6EE63.8030502@redhat.com> Message-ID: <1235729455.3310.35.camel@fedora.wildebeest.org> Hi, On Thu, 2009-02-26 at 14:32 -0500, Lillian Angel wrote: > Omair has been working on getting our internal nightly tester to display > graphs in Hudson for Mauve and JTreg. The plan is to write some sort of > script that will email out the regressions for these testsuites nightly, > as well as post the results nightly somewhere public (perhaps using > Hudson). > > Any thoughts on a good place to email and post these results? Also, is > there anything else people would like to see? Nice! It would be good to have regular postings of different people/setups to get a feel for the current results and hopefully be able to compare them a bit to see if a difference in compiler/package version used to build has any impact on them. So, if the script could be made so that it could just be checked into the repository that would be great (although I suspect there will always be some tweaking needed for different setups). It might clutter up the list a bit if the test result mails go to the default discussion list. So I setup a separate one that can be used for that testresults at icedtea.classpath.org http://icedtea.classpath.org/mailman/listinfo/testresults Cheers, Mark From doko at ubuntu.com Fri Feb 27 02:13:46 2009 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 27 Feb 2009 11:13:46 +0100 Subject: Mauve/JTreg testing In-Reply-To: <1235729455.3310.35.camel@fedora.wildebeest.org> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> Message-ID: <49A7BCDA.1010503@ubuntu.com> Mark Wielaard schrieb: > It might clutter up the list a bit if the test result mails go to the > default discussion list. So I setup a separate one that can be used for > that testresults at icedtea.classpath.org > http://icedtea.classpath.org/mailman/listinfo/testresults Please don't make this IcedTea specific; afaiu we did agree to have such a ML for OpenJDK/IcedTea added to the existing jungle of OpenJDK ML's. Dalibor? Matthias From mark at klomp.org Fri Feb 27 02:28:25 2009 From: mark at klomp.org (Mark Wielaard) Date: Fri, 27 Feb 2009 11:28:25 +0100 Subject: Mauve/JTreg testing In-Reply-To: <49A7BCDA.1010503@ubuntu.com> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> <49A7BCDA.1010503@ubuntu.com> Message-ID: <1235730505.3310.39.camel@fedora.wildebeest.org> Hi Matthias, On Fri, 2009-02-27 at 11:13 +0100, Matthias Klose wrote: > Mark Wielaard schrieb: > > It might clutter up the list a bit if the test result mails go to the > > default discussion list. So I setup a separate one that can be used for > > that testresults at icedtea.classpath.org > > http://icedtea.classpath.org/mailman/listinfo/testresults > > Please don't make this IcedTea specific; afaiu we did agree to have such a ML > for OpenJDK/IcedTea added to the existing jungle of OpenJDK ML's. Dalibor? It is not intended to be specific. I can rename the list if you want to make that clear. It is easy to change the setup to allow any emails you want. It would just be good to have a separate list for these kinds of automatic emails, so that the discussion list doesn't get cluttered. In fact, if we are going to keep up posting patches and comments to the list so people can easily review I would also like to move the automatic commit messages to a separate list if others agree. Cheers, Mark From Christian.Thalinger at Sun.COM Fri Feb 27 03:33:11 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Fri, 27 Feb 2009 12:33:11 +0100 Subject: Mauve/JTreg testing In-Reply-To: <1235730505.3310.39.camel@fedora.wildebeest.org> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> <49A7BCDA.1010503@ubuntu.com> <1235730505.3310.39.camel@fedora.wildebeest.org> Message-ID: <1235734391.2004.1416.camel@localhost.localdomain> On Fri, 2009-02-27 at 11:28 +0100, Mark Wielaard wrote: > In fact, if we are going to keep up posting patches and comments to the > list so people can easily review I would also like to move the automatic > commit messages to a separate list if others agree. Very good idea. -- Christian From Dalibor.Topic at Sun.COM Fri Feb 27 04:43:45 2009 From: Dalibor.Topic at Sun.COM (Dalibor Topic) Date: Fri, 27 Feb 2009 13:43:45 +0100 Subject: Mauve/JTreg testing In-Reply-To: <49A7BCDA.1010503@ubuntu.com> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> <49A7BCDA.1010503@ubuntu.com> Message-ID: <49A7E001.4030905@sun.com> Matthias Klose wrote: > Mark Wielaard schrieb: >> It might clutter up the list a bit if the test result mails go to the >> default discussion list. So I setup a separate one that can be used for >> that testresults at icedtea.classpath.org >> http://icedtea.classpath.org/mailman/listinfo/testresults > > Please don't make this IcedTea specific; afaiu we did agree to have such a ML > for OpenJDK/IcedTea added to the existing jungle of OpenJDK ML's. Dalibor? Yes, we did - I'll ask the Quality Group to provide one. cheers, dalibor topic -- ******************************************************************* Dalibor Topic Tel: (+49 40) 23 646 738 Java F/OSS Ambassador AIM: robiladonaim Sun Microsystems GmbH Mobile: (+49 177) 2664 192 Nagelsweg 55 http://openjdk.java.net D-20097 Hamburg mailto:Dalibor.Topic at sun.com Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht M?nchen: HRB 161028 Gesch?ftsf?hrer: Thomas Schr?der, Wolfgang Engels, Dr. Roland B?mer Vorsitzender des Aufsichtsrates: Martin H?ring From gbenson at redhat.com Fri Feb 27 06:53:04 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 27 Feb 2009 14:53:04 +0000 Subject: changeset in /hg/icedtea6: 2009-02-27 Gary Benson changeset 9f1c16638724 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9f1c16638724 description: 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp (SharkEntryState::initialize): Mark the receiver as zero-checked for non-static methods. * ports/hotspot/src/share/vm/shark/sharkValue.hpp (SharkValue::jint_constant): Mark non-zero constants as zero-checked. (SharkValue::jlong_constant): Likewise. diffstat: 3 files changed, 25 insertions(+), 2 deletions(-) ChangeLog | 11 +++++++++++ ports/hotspot/src/share/vm/shark/sharkState.cpp | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkValue.hpp | 10 ++++++++-- diffs (57 lines): diff -r fd98e848b25c -r 9f1c16638724 ChangeLog --- a/ChangeLog Fri Feb 27 04:08:04 2009 -0500 +++ b/ChangeLog Fri Feb 27 14:52:57 2009 +0000 @@ -1,3 +1,14 @@ 2009-02-27 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkEntryState::initialize): Mark the receiver as + zero-checked for non-static methods. + + * ports/hotspot/src/share/vm/shark/sharkValue.hpp + (SharkValue::jint_constant): Mark non-zero constants + as zero-checked. + (SharkValue::jlong_constant): Likewise. + 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp diff -r fd98e848b25c -r 9f1c16638724 ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Feb 27 04:08:04 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Feb 27 14:52:57 2009 +0000 @@ -94,6 +94,12 @@ void SharkEntryState::initialize(Value* set_local(i, value); } + // Non-static methods have a guaranteed non-null receiver + if (!function()->target()->is_static()) { + assert(local(0)->is_jobject(), "should be"); + local(0)->set_zero_checked(true); + } + // Expression stack assert(!stack_depth_at_entry(), "entry block shouldn't have stack"); } diff -r fd98e848b25c -r 9f1c16638724 ports/hotspot/src/share/vm/shark/sharkValue.hpp --- a/ports/hotspot/src/share/vm/shark/sharkValue.hpp Fri Feb 27 04:08:04 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkValue.hpp Fri Feb 27 14:52:57 2009 +0000 @@ -149,11 +149,17 @@ class SharkValue : public ResourceObj { public: static SharkValue* jint_constant(jint value) { - return create_jint(LLVMValue::jint_constant(value)); + SharkValue *result = create_jint(LLVMValue::jint_constant(value)); + if (value != 0) + result->set_zero_checked(true); + return result; } static SharkValue* jlong_constant(jlong value) { - return create_jlong(LLVMValue::jlong_constant(value)); + SharkValue *result = create_jlong(LLVMValue::jlong_constant(value)); + if (value != 0) + result->set_zero_checked(true); + return result; } static SharkValue* jfloat_constant(jfloat value) { From gbenson at redhat.com Fri Feb 27 06:54:16 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 27 Feb 2009 14:54:16 +0000 Subject: Improved zero-check elimination for Shark Message-ID: <20090227145416.GC3219@redhat.com> Hi all, This patch marks a couple of things we know are non-zero, allowing the zero-check eliminator to work its magic. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r fd98e848b25c ChangeLog --- a/ChangeLog Fri Feb 27 04:08:04 2009 -0500 +++ b/ChangeLog Fri Feb 27 14:52:46 2009 +0000 @@ -1,3 +1,14 @@ +2009-02-27 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkState.cpp + (SharkEntryState::initialize): Mark the receiver as + zero-checked for non-static methods. + + * ports/hotspot/src/share/vm/shark/sharkValue.hpp + (SharkValue::jint_constant): Mark non-zero constants + as zero-checked. + (SharkValue::jlong_constant): Likewise. + 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp diff -r fd98e848b25c ports/hotspot/src/share/vm/shark/sharkState.cpp --- a/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Feb 27 04:08:04 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkState.cpp Fri Feb 27 14:52:46 2009 +0000 @@ -94,6 +94,12 @@ set_local(i, value); } + // Non-static methods have a guaranteed non-null receiver + if (!function()->target()->is_static()) { + assert(local(0)->is_jobject(), "should be"); + local(0)->set_zero_checked(true); + } + // Expression stack assert(!stack_depth_at_entry(), "entry block shouldn't have stack"); } diff -r fd98e848b25c ports/hotspot/src/share/vm/shark/sharkValue.hpp --- a/ports/hotspot/src/share/vm/shark/sharkValue.hpp Fri Feb 27 04:08:04 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkValue.hpp Fri Feb 27 14:52:46 2009 +0000 @@ -149,11 +149,17 @@ public: static SharkValue* jint_constant(jint value) { - return create_jint(LLVMValue::jint_constant(value)); + SharkValue *result = create_jint(LLVMValue::jint_constant(value)); + if (value != 0) + result->set_zero_checked(true); + return result; } static SharkValue* jlong_constant(jlong value) { - return create_jlong(LLVMValue::jlong_constant(value)); + SharkValue *result = create_jlong(LLVMValue::jlong_constant(value)); + if (value != 0) + result->set_zero_checked(true); + return result; } static SharkValue* jfloat_constant(jfloat value) { From gbenson at redhat.com Fri Feb 27 06:55:59 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 27 Feb 2009 14:55:59 +0000 Subject: changeset in /hg/icedtea6: 2009-02-27 Gary Benson changeset ffde78306a6a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ffde78306a6a description: 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::maybe_inline_accessor): Remove a hack diffstat: 2 files changed, 11 insertions(+), 6 deletions(-) ChangeLog | 5 +++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 12 ++++++------ diffs (34 lines): diff -r 9f1c16638724 -r ffde78306a6a ChangeLog --- a/ChangeLog Fri Feb 27 14:52:57 2009 +0000 +++ b/ChangeLog Fri Feb 27 14:55:51 2009 +0000 @@ -1,3 +1,8 @@ 2009-02-27 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::maybe_inline_accessor): Remove a hack + 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkState.cpp diff -r 9f1c16638724 -r ffde78306a6a ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Feb 27 14:52:57 2009 +0000 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Feb 27 14:55:51 2009 +0000 @@ -2197,12 +2197,12 @@ bool SharkBlock::maybe_inline_accessor(c // entering the inlined section. For the majority of accessors // this has already been done (in do_call) but if the accessor // was invoked by invokestatic (eg synthetic accessors) then it - // won't have been checked and do_field_access will try to do - // it and fail. So we check here, which is moderately wrong in - // that the NullPointerException will have been thrown by the - // caller rather than the callee. - if (is_field) - check_null(xstack(0)); + // may not have been checked and do_field_access will try to do + // it and fail. + if (is_field) { + if (!xstack(0)->zero_checked()) + return false; + } current_state()->enter_inlined_section(); do_field_access(is_get, is_field, field); From langel at redhat.com Fri Feb 27 07:58:59 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 27 Feb 2009 15:58:59 +0000 Subject: changeset in /hg/icedtea6: 2009-02-27 Tomas Hurka changeset 073c27894e5d in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=073c27894e5d description: 2009-02-27 Tomas Hurka * Makefile.am: Removed redundant creation of netbeans dir. diffstat: 2 files changed, 4 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ Makefile.am | 1 - diffs (22 lines): diff -r ffde78306a6a -r 073c27894e5d ChangeLog --- a/ChangeLog Fri Feb 27 14:55:51 2009 +0000 +++ b/ChangeLog Fri Feb 27 10:58:54 2009 -0500 @@ -1,3 +1,7 @@ 2009-02-27 Gary Benson + + * Makefile.am: Removed redundant creation of netbeans dir. + 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp diff -r ffde78306a6a -r 073c27894e5d Makefile.am --- a/Makefile.am Fri Feb 27 14:55:51 2009 +0000 +++ b/Makefile.am Fri Feb 27 10:58:54 2009 -0500 @@ -1790,7 +1790,6 @@ stamps/nbplatform.stamp: $(BOOTSTRAP_DIR stamps/nbplatform.stamp: $(BOOTSTRAP_DIRECTORY_STAMP) stamps/extract.stamp \ stamps/download.stamp if WITH_VISUALVM - mkdir netbeans ; \ cd netbeans ; \ rm nbbuild/external/binaries-list ; \ mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ From langel at redhat.com Fri Feb 27 08:00:44 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 27 Feb 2009 11:00:44 -0500 Subject: FYI: Small fix of VisualVM integration Message-ID: <49A80E2C.6020404@redhat.com> -------- Original Message -------- Subject: Small fix of VisualVM integration Date: Fri, 27 Feb 2009 15:52:35 +0100 From: Tomas Hurka To: Lillian Angel Hi Lillian, I discovered that there is redundant "mkdir netbeans" command in Makefile. See attached patch. Bye, -- Tomas Hurka NetBeans Profiler http://profiler.netbeans.org VisualVM http://visualvm.dev.java.net Software Engineer, Developer Platforms Group Sun Microsystems, Praha Czech Republic -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: patch.txt Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090227/4bb3747d/patch.txt From gbenson at redhat.com Fri Feb 27 08:09:32 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 27 Feb 2009 16:09:32 +0000 Subject: changeset in /hg/icedtea6: 2009-02-27 Gary Benson changeset f1cf5f359a35 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f1cf5f359a35 description: 2009-02-27 Gary Benson * ports/hotspot/src/share/vm/shark/sharkBlock.cpp (SharkBlock::maybe_inline_call): Ensure the holder is linked before trying to inline accessors. diffstat: 2 files changed, 10 insertions(+) ChangeLog | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkBlock.cpp | 4 ++++ diffs (27 lines): diff -r 073c27894e5d -r f1cf5f359a35 ChangeLog --- a/ChangeLog Fri Feb 27 10:58:54 2009 -0500 +++ b/ChangeLog Fri Feb 27 16:09:25 2009 +0000 @@ -1,3 +1,9 @@ 2009-02-27 Tomas Hurka + + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::maybe_inline_call): Ensure the holder is + linked before trying to inline accessors. + 2009-02-27 Tomas Hurka * Makefile.am: Removed redundant creation of netbeans dir. diff -r 073c27894e5d -r f1cf5f359a35 ports/hotspot/src/share/vm/shark/sharkBlock.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Feb 27 10:58:54 2009 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Fri Feb 27 16:09:25 2009 +0000 @@ -2095,6 +2095,10 @@ bool SharkBlock::maybe_inline_call(ciMet // now if the method is too big if (method->code_size() > 5) return false; + + // If the holder isn't linked then there isn't a lot we can do + if (!method->holder()->is_linked()) + return false; // Inspect the method's code to see if we can inline it. We // don't use method->is_accessor() because that only spots From davidh at 7gen.com Fri Feb 27 08:20:03 2009 From: davidh at 7gen.com (David Herron) Date: Fri, 27 Feb 2009 08:20:03 -0800 Subject: Mauve/JTreg testing In-Reply-To: <49A7E001.4030905@sun.com> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> <49A7BCDA.1010503@ubuntu.com> <49A7E001.4030905@sun.com> Message-ID: <49A812B3.7050908@7gen.com> Dalibor Topic wrote: > Matthias Klose wrote: > >> Mark Wielaard schrieb: >> >>> It might clutter up the list a bit if the test result mails go to the >>> default discussion list. So I setup a separate one that can be used for >>> that testresults at icedtea.classpath.org >>> http://icedtea.classpath.org/mailman/listinfo/testresults >>> >> Please don't make this IcedTea specific; afaiu we did agree to have such a ML >> for OpenJDK/IcedTea added to the existing jungle of OpenJDK ML's. Dalibor? >> > > Yes, we did - I'll ask the Quality Group to provide one. > > cheers, > dalibor topic > > I'm not sure you'll find anybody home in the quality group. :-( And I don't have any idea if anybody at this time can be considered the quality group leader. When I was at Sun I wanted to do something like this proposal. Having a mailing list archive is a bare minimum. I had thought it would be better to set up file/data storage somewhere. - David Herron -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090227/b6123300/attachment.html From bugzilla-daemon at icedtea.classpath.org Fri Feb 27 12:33:17 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 27 Feb 2009 20:33:17 +0000 Subject: [Bug 297] New: icedtea crash maybe because of libpolyester ... Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=297 Summary: icedtea crash maybe because of libpolyester ... Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: sandi_ro at yahoo.com no clear why eclipse cashes , but after rpm -e polyester-2.0-0.3.beta1.fc9.x86_64 all works ok.there is no theme setup to use libpolyester ... System is running Fedora 10 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Feb 27 12:35:05 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 27 Feb 2009 20:35:05 +0000 Subject: [Bug 297] icedtea crash maybe because of libpolyester ... Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=297 ------- Comment #1 from sandi_ro at yahoo.com 2009-02-27 20:35 ------- Created an attachment (id=167) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=167&action=view) VM crash log attached crash log ... -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From langel at redhat.com Fri Feb 27 12:37:23 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 27 Feb 2009 15:37:23 -0500 Subject: Mauve/JTreg testing In-Reply-To: <1235729455.3310.35.camel@fedora.wildebeest.org> References: <49A6EE63.8030502@redhat.com> <1235729455.3310.35.camel@fedora.wildebeest.org> Message-ID: <49A84F03.9040000@redhat.com> Mark Wielaard wrote: > Hi, > > On Thu, 2009-02-26 at 14:32 -0500, Lillian Angel wrote: > >> Omair has been working on getting our internal nightly tester to display >> graphs in Hudson for Mauve and JTreg. The plan is to write some sort of >> script that will email out the regressions for these testsuites nightly, >> as well as post the results nightly somewhere public (perhaps using >> Hudson). >> >> Any thoughts on a good place to email and post these results? Also, is >> there anything else people would like to see? >> > > Nice! It would be good to have regular postings of different > people/setups to get a feel for the current results and hopefully be > able to compare them a bit to see if a difference in compiler/package > version used to build has any impact on them. So, if the script could be > made so that it could just be checked into the repository that would be > great (although I suspect there will always be some tweaking needed for > different setups). > I suspect we will have Hudson running the Mauve and JTreg runs, and producing graphs for all the runs. Also, we have cgi scripts for the Mauve/JTreg results that can be posted. Hudson can send an email for failed tests, but I think if we have a script to only send an email if there are regressions from one day to the next would be better. So, I would like a place where we can run/display the Hudson runs, and another for the cgi scripts. Also, a definite place for emails. Any suggestions on the type of emails to send out? What would be most helpful? Lillian > It might clutter up the list a bit if the test result mails go to the > default discussion list. So I setup a separate one that can be used for > that testresults at icedtea.classpath.org > http://icedtea.classpath.org/mailman/listinfo/testresults > > Cheers, > > Mark > > From bugzilla-daemon at icedtea.classpath.org Fri Feb 27 21:14:55 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 28 Feb 2009 05:14:55 +0000 Subject: [Bug 298] New: An unexpected error has been detected by Java Runtime Environment: Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=298 Summary: An unexpected error has been detected by Java Runtime Environment: Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: blocker Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: shovanprakash at gmail.com # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00f8a833, pid=3280, tid=3087386912 # # Java VM: OpenJDK Client VM (1.6.0-b09 mixed mode linux-x86) # Problematic frame: # V [libjvm.so+0x18d833] # # If you would like to submit a bug report, please visit: # http://icedtea.classpath.org/bugzilla # --------------- T H R E A D --------------- Current thread (0x08b24000): JavaThread "main" [_thread_in_vm, id=3280, stack(0xbfa28000,0xbfa78000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x00000000 Registers: EAX=0x00000000, EBX=0x012b51b8, ECX=0x08b24000, EDX=0x012d0ba0 ESP=0xbfa769d8, EBP=0xbfa76a30, ESI=0x08b24000, EDI=0x00000000 EIP=0x00f8a833, CR2=0x00000000, EFLAGS=0x00010246 Top of Stack: (sp=0xbfa769d8) 0xbfa769d8: 00000000 08aef648 bfa76a00 00fc483a 0xbfa769e8: 012b51b8 08b24000 bfa76a30 00f92cb3 0xbfa769f8: 08b240f4 00000000 08b24000 00000000 0xbfa76a08: 00010002 00000000 0000000a 00f82db6 0xbfa76a18: bfa76a48 08b24000 08b24000 001910f4 0xbfa76a28: 00000000 00000000 bfa76a70 00190416 0xbfa76a38: 08b240f4 00000000 00000000 bfa76a7c 0xbfa76a48: bfa76a78 bfa76a7c 00000000 00000002 Instructions: (pc=0x00f8a833) 0x00f8a823: 90 0e 00 83 c4 10 c7 45 e0 0a 00 00 00 8b 45 10 0x00f8a833: 8b 08 57 8b 41 08 0f b7 50 26 8b 41 0c ff 74 90 Stack: [0xbfa28000,0xbfa78000], sp=0xbfa769d8, free space=314k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x18d833] C [libswt-gtk-3346.so+0x2416] callback+0x1e4 C 0x001b9195 C [libgdk-x11-2.0.so.0+0x49def] C [libgdk-x11-2.0.so.0+0x4ab0b] C [libgdk-x11-2.0.so.0+0x4cdb2] C [libgdk-x11-2.0.so.0+0x4cf84] C [libglib-2.0.so.0+0x37098] g_main_context_dispatch+0x1e8 C [libglib-2.0.so.0+0x3a743] C [libglib-2.0.so.0+0x3a901] g_main_context_iteration+0x71 C [eclipse_1020.so+0x54fe] dispatchMessages+0x1f C [eclipse_1020.so+0x557b] takeDownSplash+0x5a C [eclipse_1020.so+0x5a1e] Java_org_eclipse_equinox_launcher_JNIBridge__1takedown_1splash+0x20 v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::StubRoutines (1) V [libjvm.so+0x17e2a5] V [libjvm.so+0x25eda5] V [libjvm.so+0x17d64f] V [libjvm.so+0x29050f] V [libjvm.so+0x291124] V [libjvm.so+0x1d9a53] C [libjava.so+0x12824] Java_sun_reflect_NativeMethodAccessorImpl_invoke0+0x24 v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::StubRoutines (1) V [libjvm.so+0x17e2a5] V [libjvm.so+0x25eda5] V [libjvm.so+0x17d64f] V [libjvm.so+0x186e40] V [libjvm.so+0x18daef] C [eclipse_1020.so+0x6133] startJavaJNI+0x1c4 C [eclipse_1020.so+0x71c9] startJavaVM+0x21 C [eclipse_1020.so+0x32a2] run+0x40a C [eclipse+0x12e7] C [libc.so.6+0x165d6] __libc_start_main+0xe6 Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::StubRoutines (1) v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::Interpreter v ~BufferBlob::StubRoutines (1) --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x93847c00 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=3290, stack(0x01802000,0x01853000)] 0x9381cc00 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=3289, stack(0x05081000,0x050d2000)] 0x93848800 JavaThread "State Data Manager" daemon [_thread_blocked, id=3288, stack(0x017b1000,0x01802000)] 0x93a02000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3286, stack(0x01760000,0x017b1000)] 0x93a00800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3285, stack(0x03c4a000,0x03ccb000)] 0x08b92000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3284, stack(0x006b4000,0x00705000)] 0x08b81400 JavaThread "Finalizer" daemon [_thread_blocked, id=3283, stack(0x00468000,0x004b9000)] 0x08b7d000 JavaThread "Reference Handler" daemon [_thread_blocked, id=3282, stack(0x003ba000,0x0040b000)] =>0x08b24000 JavaThread "main" [_thread_in_vm, id=3280, stack(0xbfa28000,0xbfa78000)] Other Threads: 0x08b79c00 VMThread [stack: 0x016df000,0x01760000] [id=3281] 0x93a0bc00 WatcherThread [stack: 0x06563000,0x065e4000] [id=3287] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 2880K, used 1569K [0x93d80000, 0x94090000, 0x964e0000) eden space 2624K, 53% used [0x93d80000, 0x93ee1040, 0x94010000) from space 256K, 61% used [0x94050000, 0x94077640, 0x94090000) to space 256K, 0% used [0x94010000, 0x94010000, 0x94050000) tenured generation total 37824K, used 3551K [0x964e0000, 0x989d0000, 0xb3d80000) the space 37824K, 9% used [0x964e0000, 0x96857c28, 0x96857e00, 0x989d0000) compacting perm gen total 12288K, used 11293K [0xb3d80000, 0xb4980000, 0xb7d80000) the space 12288K, 91% used [0xb3d80000, 0xb48877b8, 0xb4887800, 0xb4980000) No shared spaces configured. Dynamic libraries: 00110000-00111000 r-xp 00110000 00:00 0 [vdso] 00111000-0011a000 r-xp 00000000 fd:00 2000122 /usr/local/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.1.R33x_v20070828/eclipse_1020.so 0011a000-0011b000 rw-p 00008000 fd:00 2000122 /usr/local/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.1.R33x_v20070828/eclipse_1020.so 0011b000-00125000 r-xp 00000000 fd:00 2146425 /lib/libnss_files-2.8.so 00125000-00126000 r--p 0000a000 fd:00 2146425 /lib/libnss_files-2.8.so 00126000-00127000 rw-p 0000b000 fd:00 2146425 /lib/libnss_files-2.8.so 00127000-00139000 r-xp 00000000 fd:00 1746303 /usr/lib/gtk-2.0/2.10.0/engines/libnodoka.so 00139000-0013a000 rw-p 00011000 fd:00 1746303 /usr/lib/gtk-2.0/2.10.0/engines/libnodoka.so 0013a000-0013e000 r-xp 00000000 fd:00 1745124 /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-bmp.so 0013e000-0013f000 rw-p 00003000 fd:00 1745124 /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-bmp.so 0013f000-00147000 r-xp 00000000 fd:00 1779997 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/native_threads/libhpi.so 00147000-00148000 rw-p 00007000 fd:00 1779997 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/native_threads/libhpi.so 00148000-00154000 r-xp 00000000 fd:00 1754794 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libverify.so 00154000-00155000 rw-p 0000b000 fd:00 1754794 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libverify.so 00155000-0017b000 r-xp 00000000 fd:00 1754772 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libjava.so 0017b000-0017d000 rw-p 00025000 fd:00 1754772 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libjava.so 0017d000-00184000 r-xp 00000000 fd:00 1754797 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libzip.so 00184000-00185000 rw-p 00007000 fd:00 1754797 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libzip.so 00185000-0018d000 r-xp 00000000 fd:00 1754787 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnio.so 0018d000-0018e000 rw-p 00007000 fd:00 1754787 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnio.so 0018e000-00191000 r-xp 00000000 fd:00 2105974 /usr/local/eclipse/configuration/org.eclipse.osgi/bundles/170/1/.cp/libswt-gtk-3346.so 00191000-00192000 rw-p 00003000 fd:00 2105974 /usr/local/eclipse/configuration/org.eclipse.osgi/bundles/170/1/.cp/libswt-gtk-3346.so 00192000-001b8000 r-xp 00000000 fd:00 409713 /usr/lib/libpng12.so.0.24.0 001b8000-001b9000 rw-p 00026000 fd:00 409713 /usr/lib/libpng12.so.0.24.0 001b9000-001bb000 rwxp 001b9000 00:00 0 001bb000-001e7000 r-xp 00000000 fd:00 409752 /usr/lib/libpixman-1.so.0.10.0 001e7000-001e8000 rw-p 0002c000 fd:00 409752 /usr/lib/libpixman-1.so.0.10.0 001ea000-0027d000 r-xp 00000000 fd:00 1602225 /usr/lib/libgdk-x11-2.0.so.0.1200.9 0027d000-00280000 rw-p 00093000 fd:00 1602225 /usr/lib/libgdk-x11-2.0.so.0.1200.9 00282000-002ef000 r-xp 00000000 fd:00 409753 /usr/lib/libcairo.so.2.17.5 002ef000-002f1000 rw-p 0006d000 fd:00 409753 /usr/lib/libcairo.so.2.17.5 002f1000-002f8000 rwxp 002f1000 00:00 0 002f8000-00312000 rwxp 002f8000 00:00 0 00312000-00329000 r-xp 00000000 fd:00 1754786 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnet.so 00329000-0032a000 rw-p 00016000 fd:00 1754786 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/libnet.so 0032a000-00332000 r-xp 00000000 fd:00 1746396 /usr/lib/gtk-2.0/2.10.0/filesystems/libgio.so 00332000-00333000 rw-p 00007000 fd:00 1746396 /usr/lib/gtk-2.0/2.10.0/filesystems/libgio.so 00337000-00340000 r-xp 00000000 fd:00 1602000 /usr/lib/libpangocairo-1.0.so.0.2000.1 00340000-00341000 rw-p 00008000 fd:00 1602000 /usr/lib/libpangocairo-1.0.so.0.2000.1 00344000-0034a000 r-xp 00000000 fd:00 409759 /usr/lib/libXrandr.so.2.1.0 0034a000-0034b000 rw-p 00005000 fd:00 409759 /usr/lib/libXrandr.so.2.1.0 0034d000-00355000 r-xp 00000000 fd:00 409758 /usr/lib/libXi.so.6.0.0 00355000-00356000 rw-p 00007000 fd:00 409758 /usr/lib/libXi.so.6.0.0 00358000-00361000 r-xp 00000000 fd:00 409761 /usr/lib/libXcursor.so.1.0.2 00361000-00362000 rw-p 00008000 fd:00 409761 /usr/lib/libXcursor.so.1.0.2 00362000-00383000 r-xp 00000000 fd:00 1746388 /usr/lib/gio/modules/libgiohal-volume-monitor.so 00383000-00384000 rw-p 00020000 fd:00 1746388 /usr/lib/gio/modules/libgiohal-volume-monitor.so 00390000-003b9000 r-xp 00000000 fd:00 1601888 /usr/lib/libpangoft2-1.0.so.0.2000.1 003b9000-003ba000 rw-p 00028000 fd:00 1601888 /usr/lib/libpangoft2-1.0.so.0.2000.1 003ba000-003bd000 ---p 003ba000 00:00 0 003bd000-0040b000 rwxp 003bd000 00:00 0 00413000-0042f000 r-xp 00000000 fd:00 1599876 /usr/lib/libgdk_pixbuf-2.0.so.0.1200.9 0042f000-00430000 rw-p 0001b000 fd:00 1599876 /usr/lib/libgdk_pixbuf-2.0.so.0.1200.9 00430000-00447000 r-xp 00000000 fd:00 409718 /usr/lib/libbeagle.so.1.0.2 00447000-00448000 rw-p 00017000 fd:00 409718 /usr/lib/libbeagle.so.1.0.2 0044b000-00466000 r-xp 00000000 fd:00 1602227 /usr/lib/libatk-1.0.so.0.2209.1 00466000-00468000 rw-p 0001a000 fd:00 1602227 /usr/lib/libatk-1.0.so.0.2209.1 00468000-0046b000 ---p 00468000 00:00 0 0046b000-004b9000 rwxp 0046b000 00:00 0 004c4000-005a4000 r-xp 00000000 fd:00 2146388 /lib/libglib-2.0.so.0.1600.3 005a4000-005a5000 rw-p 000e0000 fd:00 2146388 /lib/libglib-2.0.so.0.1600.3 005a5000-00630000 r-xp 00000000 fd:00 409744 /usr/lib/libfreetype.so.6.3.16 00630000-00634000 rw-p 0008a000 fd:00 409744 /usr/lib/libfreetype.so.6.3.16 00634000-00639000 rwxp 00634000 00:00 0 00639000-006b4000 rwxp 00639000 00:00 0 006b4000-006b7000 ---p 006b4000 00:00 0 006b7000-00705000 rwxp 006b7000 00:00 0 00711000-00719000 r-xp 00000000 fd:00 2146413 /lib/librt-2.8.so 00719000-0071a000 r--p 00007000 fd:00 2146413 /lib/librt-2.8.so 0071a000-0071b000 rw-p 00008000 fd:00 2146413 /lib/librt-2.8.so 0071d000-00720000 r-xp 00000000 fd:00 2146409 /lib/libgmodule-2.0.so.0.1600.3 00720000-00721000 rw-p 00002000 fd:00 2146409 /lib/libgmodule-2.0.so.0.1600.3 00723000-00762000 r-xp 00000000 fd:00 2146402 /lib/libgobject-2.0.so.0.1600.3 00762000-00763000 rw-p 0003f000 fd:00 2146402 /lib/libgobject-2.0.so.0.1600.3 00765000-007a6000 r-xp 00000000 fd:00 1599104 /usr/lib/libpango-1.0.so.0.2000.1 007a6000-007a8000 rw-p 00040000 fd:00 1599104 /usr/lib/libpango-1.0.so.0.2000.1 007bf000-007c3000 r-xp 00000000 fd:00 2146415 /lib/libgthread-2.0.so.0.1600.3 007c3000-007c4000 rw-p 00003000 fd:00 2146415 /lib/libgthread-2.0.so.0.1600.3 007d0000-007d2000 r-xp 00000000 fd:00 409762 /usr/lib/libXcomposite.so.1.0.0 007d2000-007d3000 rw-p 00001000 fd:00 409762 /usr/lib/libXcomposite.so.1.0.0 007d5000-007d7000 r-xp 00000000 fd:00 409757 /usr/lib/libXinerama.so.1.0.0 007d7000-007d8000 rw-p 00001000 fd:00 409757 /usr/lib/libXinerama.so.1.0.0 007da000-007dd000 r-xp 00000000 fd:00 2147581 /lib/libcap.so.2.06 007dd000-007de000 rw-p 00003000 fd:00 2147581 /lib/libcap.so.2.06 007e0000-007f6000 r-xp 00000000 fd:00 2147567 /lib/libnsl-2.8.so 007f6000-007f7000 r--p 00015000 fd:00 2147567 /lib/libnsl-2.8.so 007f7000-007f8000 rw-p 00016000 fd:00 2147567 /lib/libnsl-2.8.so 007f8000-007fa000 rw-p 007f8000 00:00 0 007fa000-0080d000 rwxp 007fa000 00:00 0 0080d000-008e7000 rwxp 0080d000 00:00 0 00905000-00921000 r-xp 00000000 fd:00 2147564 /lib/ld-2.8.so 00921000-00922000 r--p 0001c000 fd:00 2147564 /lib/ld-2.8.so 00922000-00923000 rw-p 0001d000 fd:00 2147564 /lib/ld-2.8.so 00925000-00a88000 r-xp 00000000 fd:00 2147565 /lib/libc-2.8.so 00a88000-00a8a000 r--p 00163000 fd:00 2147565 /lib/libc-2.8.so 00a8a000-00a8b000 rw-p 00165000 fd:00 2147565 /lib/libc-2.8.so 00a8b000-00a8e000 rw-p 00a8b000 00:00 0 00a90000-00ab7000 r-xp 00000000 fd:00 2147569 /lib/libm-2.8.so 00ab7000-00ab8000 r--p 00026000 fd:00 2147569 /lib/libm-2.8.so 00ab8000-00ab9000 rw-p 00027000 fd:00 2147569 /lib/libm-2.8.so 00abb000-00abe000 r-xp 00000000 fd:00 2147568 /lib/libdl-2.8.so 00abe000-00abf000 r--p 00002000 fd:00 2147568 /lib/libdl-2.8.so 00abf000-00ac0000 rw-p 00003000 fd:00 2147568 /lib/libdl-2.8.so 00ac2000-00ad7000 r-xp 00000000 fd:00 2147572 /lib/libpthread-2.8.so 00ad7000-00ad8000 r--p 00014000 fd:00 2147572 /lib/libpthread-2.8.so 00ad8000-00ad9000 rw-p 00015000 fd:00 2147572 /lib/libpthread-2.8.so 00ad9000-00adb000 rw-p 00ad9000 00:00 0 00add000-00af7000 r-xp 00000000 fd:00 2147574 /lib/libselinux.so.1 00af7000-00af8000 r--p 00019000 fd:00 2147574 /lib/libselinux.so.1 00af8000-00af9000 rw-p 0001a000 fd:00 2147574 /lib/libselinux.so.1 00afb000-00b0e000 r-xp 00000000 fd:00 2147573 /lib/libz.so.1.2.3 00b0e000-00b0f000 rw-p 00012000 fd:00 2147573 /lib/libz.so.1.2.3 00b0f000-00b11000 rwxp 00b0f000 00:00 0 00b11000-00b22000 rwxp 00b11000 00:00 0 00b22000-00b36000 rwxp 00b22000 00:00 0 00b36000-00c0f000 rwxp 00b36000 00:00 0 00c0f000-00c15000 rwxp 00c0f000 00:00 0 00c15000-00c2f000 rwxp 00c15000 00:00 0 00c2f000-00c30000 rwxp 00c2f000 00:00 0 00c42000-00c44000 r-xp 00000000 fd:00 409746 /usr/lib/libXau.so.6.0.0 00c44000-00c45000 rw-p 00001000 fd:00 409746 /usr/lib/libXau.so.6.0.0 00c47000-00c62000 r-xp 00000000 fd:00 409748 /usr/lib/libxcb.so.1.0.0 00c62000-00c63000 rw-p 0001a000 fd:00 409748 /usr/lib/libxcb.so.1.0.0 00c65000-00d62000 r-xp 00000000 fd:00 409750 /usr/lib/libX11.so.6.2.0 00d62000-00d66000 rw-p 000fc000 fd:00 409750 /usr/lib/libX11.so.6.2.0 00d68000-00d69000 r-xp 00000000 fd:00 409749 /usr/lib/libxcb-xlib.so.0.0.0 00d69000-00d6a000 rw-p 00000000 fd:00 409749 /usr/lib/libxcb-xlib.so.0.0.0 00d6c000-00d71000 r-xp 00000000 fd:00 409747 /usr/lib/libXdmcp.so.6.0.0 00d71000-00d72000 rw-p 00004000 fd:00 409747 /usr/lib/libXdmcp.so.6.0.0 00d81000-00da6000 r-xp 00000000 fd:00 2147578 /lib/libexpat.so.1.5.2 00da6000-00da8000 rw-p 00024000 fd:00 2147578 /lib/libexpat.so.1.5.2 00daa000-00db9000 r-xp 00000000 fd:00 409756 /usr/lib/libXext.so.6.4.0 00db9000-00dba000 rw-p 0000e000 fd:00 409756 /usr/lib/libXext.so.6.4.0 00dbc000-00dea000 r-xp 00000000 fd:00 409745 /usr/lib/libfontconfig.so.1.3.0 00dea000-00deb000 rw-p 0002e000 fd:00 409745 /usr/lib/libfontconfig.so.1.3.0 00ded000-00df1000 r-xp 00000000 fd:00 409760 /usr/lib/libXfixes.so.3.1.0 00df1000-00df2000 rw-p 00003000 fd:00 409760 /usr/lib/libXfixes.so.3.1.0 00df4000-00dfc000 r-xp 00000000 fd:00 409751 /usr/lib/libXrender.so.1.3.0 00dfc000-00dfd000 rw-p 00007000 fd:00 409751 /usr/lib/libXrender.so.1.3.0 00dfd000-012a2000 r-xp 00000000 fd:00 1761422 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client/libjvm.so 012a2000-012c1000 rw-p 004a4000 fd:00 1761422 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client/libjvm.so 012c1000-016df000 rw-p 012c1000 00:00 0 016df000-016e0000 ---p 016df000 00:00 0 016e0000-01760000 rwxp 016e0000 00:00 0 01760000-01763000 ---p 01760000 00:00 0 01763000-017b1000 rwxp 01763000 00:00 0 017b1000-017b4000 ---p 017b1000 00:00 0 017b4000-01802000 rwxp 017b4000 00:00 0 01802000-01805000 ---p 01802000 00:00 0 01805000-01853000 rwxp 01805000 00:00 0 01853000-01892000 r-xp 00000000 fd:00 2147582 /lib/libdbus-1.so.3.4.0 01892000-01893000 r--p 0003e000 fd:00 2147582 /lib/libdbus-1.so.3.4.0 01893000-01894000 rw-p 0003f000 fd:00 2147582 /lib/libdbus-1.so.3.4.0 01a2b000-01b6b000 rwxp 01a2b000 00:00 0 01b6b000-03a2b000 rwxp 01b6b000 00:00 0 03c4a000-03c4d000 ---p 03c4a000 00:00 0 03c4d000-03ccb000 rwxp 03c4d000 00:00 0 04001000-04009000 r-xp 00000000 fd:00 2147588 /lib/libpopt.so.0.0.0 04009000-0400a000 rw-p 00007000 fd:00 2147588 /lib/libpopt.so.0.0.0 0403d000-0403f000 r-xp 00000000 fd:00 2147571 /lib/libutil-2.8.so 0403f000-04040000 r--p 00001000 fd:00 2147571 /lib/libutil-2.8.so 04040000-04041000 rw-p 00002000 fd:00 2147571 /lib/libutil-2.8.so 040f1000-04101000 r-xp 00000000 fd:00 409712 /usr/lib/libhal.so.1.0.0 04101000-04102000 rw-p 00010000 fd:00 409712 /usr/lib/libhal.so.1.0.0 042a1000-042a6000 r-xp 00000000 fd:00 1599470 /usr/lib/libXtst.so.6.1.0 042a6000-042a7000 rw-p 00004000 fd:00 1599470 /usr/lib/libXtst.so.6.1.0 0487d000-049c6000 r-xp 00000000 fd:00 1600250 /usr/lib/libxml2.so.2.6.32 049c6000-049cb000 rw-p 00149000 fd:00 1600250 /usr/lib/libxml2.so.2.6.32 049cb000-049cc000 rw-p 049cb000 00:00 0 049f5000-04a02000 r-xp 00000000 fd:00 2147590 /lib/libgcc_s-4.3.0-20080428.so.1 04a02000-04a03000 rw-p 0000c000 fd:00 2147590 /lib/libgcc_s-4.3.0-20080428.so.1 04fd2000-0503e000 r-xp 00000000 fd:00 2146419 /lib/libgio-2.0.so.0.0.0 0503e000-05040000 rw-p 0006b000 fd:00 2146419 /lib/libgio-2.0.so.0.0.0 05081000-05084000 ---p 05081000 00:00 0 05084000-050d2000 rwxp 05084000 00:00 0 058ef000-05ce8000 r-xp 00000000 fd:00 1602233 /usr/lib/libgtk-x11-2.0.so.0.1200.9 05ce8000-05cee000 rw-p 003f9000 fd:00 1602233 /usr/lib/libgtk-x11-2.0.so.0.1200.9 05cee000-05cef000 rw-p 05cee000 00:00 0 06563000-06564000 ---p 06563000 00:00 0 06564000-065e4000 rwxp 06564000 00:00 0 065e4000-065e5000 ---p 065e4000 00:00 0 065e5000-06fe5000 rwxp 065e5000 00:00 0 07908000-07959000 r-xp 00000000 fd:00 2105975 /usr/local/eclipse/configuration/org.eclipse.osgi/bundles/170/1/.cp/libswt-pi-gtk-3346.so 07959000-0795b000 rw-p 00050000 fd:00 2105975 /usr/local/eclipse/configuration/org.eclipse.osgi/bundles/170/1/.cp/libswt-pi-gtk-3346.so 0795b000-0795c000 rw-p 0795b000 00:00 0 08048000-0804b000 r-xp 00000000 fd:00 3006470 /usr/local/eclipse/eclipse 0804b000-0804c000 rw-p 00002000 fd:00 3006470 /usr/local/eclipse/eclipse 088e7000-0890b000 r-xp 00000000 fd:00 1746389 /usr/lib/gio/modules/libgvfsdbus.so 0890b000-0890c000 rw-p 00024000 fd:00 1746389 /usr/lib/gio/modules/libgvfsdbus.so 08acd000-08f39000 rw-p 08acd000 00:00 0 [heap] 92077000-9207a000 r--s 0001b000 fd:00 1665459 /usr/local/eclipse/plugins/org.eclipse.core.resources.compatibility_3.2.100.v20070502.jar 9207a000-92084000 r--s 0009c000 fd:00 1862201 /usr/local/eclipse/plugins/org.eclipse.core.resources_3.3.0.v20070604.jar 92084000-92085000 ---p 92084000 00:00 0 92085000-92a85000 rwxp 92085000 00:00 0 92a85000-92cb5000 r--p 00000000 fd:00 1672907 /usr/share/icons/hicolor/icon-theme.cache 92cb5000-933e8000 r--p 00000000 fd:00 1771956 /usr/share/icons/gnome/icon-theme.cache 933e8000-933f5000 r--p 00000000 fd:00 1803215 /usr/share/icons/Mist/icon-theme.cache 933f5000-93451000 r--p 00000000 fd:00 1683682 /usr/share/icons/Fedora/icon-theme.cache 93451000-93555000 rw-p 93451000 00:00 0 93555000-935dc000 r--p 00000000 fd:00 1705435 /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf 935dc000-936e0000 rw-p 935dc000 00:00 0 936e0000-93772000 r--p 00000000 fd:00 1705438 /usr/share/fonts/dejavu/DejaVuSans.ttf 93772000-93776000 r--s 00000000 fd:00 2490492 /var/cache/fontconfig/177aa5f8e4784b879645141d1d73ae7a-x86.cache-2 93776000-9377a000 r--s 00000000 fd:00 2490490 /var/cache/fontconfig/f4023520196b2bc2c439adcafb2470ff-x86.cache-2 9377a000-9377c000 r--s 00000000 fd:00 2490472 /var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-x86.cache-2 9377c000-93782000 r--s 00000000 fd:00 2490403 /var/cache/fontconfig/b79f3aaa7d385a141ab53ec885cc22a8-x86.cache-2 93782000-9378c000 r--s 00000000 fd:00 2490493 /var/cache/fontconfig/40c848d2bcd698028c81266d97f97863-x86.cache-2 9378c000-9378d000 r--s 00000000 fd:00 2490478 /var/cache/fontconfig/6cfc7d49b27ba7d3eb71ab86e04def2c-x86.cache-2 9378d000-9378e000 r--s 00000000 fd:00 2490497 /var/cache/fontconfig/b887eea8f1b96e1d899b44ed6681fc27-x86.cache-2 9378e000-9378f000 r--s 00000000 fd:00 2490480 /var/cache/fontconfig/860639f272b8b4b3094f9e399e41bccd-x86.cache-2 9378f000-93790000 r--s 00000000 fd:00 2490487 /var/cache/fontconfig/211368abcb0ff835c229ff05c9ec01dc-x86.cache-2 93790000-93791000 r--s 00000000 fd:00 2490498 /var/cache/fontconfig/c46020d7221988a13df853d2b46304fc-x86.cache-2 93791000-93792000 r--s 00000000 fd:00 2490484 /var/cache/fontconfig/fa2b533b7056bdadb961f088bc0a978b-x86.cache-2 93792000-93793000 r--s 00000000 fd:00 2490494 /var/cache/fontconfig/df893b4576ad6107f9397134092c4059-x86.cache-2 93793000-93794000 r--s 00000000 fd:00 2490495 /var/cache/fontconfig/ff627ea95a65192232277bf7c8a56f23-x86.cache-2 93794000-93795000 r--s 00000000 fd:00 2490496 /var/cache/fontconfig/900402270e15d763a6e008bb2d4c7686-x86.cache-2 93795000-93796000 r--s 00000000 fd:00 2490479 /var/cache/fontconfig/2881ed3fd21ca306ddad6f9b0dd3189f-x86.cache-2 93796000-93797000 r--s 00000000 fd:00 2490482 /var/cache/fontconfig/e61abf8156cc476151baa07d67337cae-x86.cache-2 93797000-9379a000 r--s 00000000 fd:00 2490402 /var/cache/fontconfig/b67b32625a2bb51b023d3814a918f351-x86.cache-2 9379a000-937a0000 r--s 00000000 fd:00 2490477 /var/cache/fontconfig/12b26b760a24f8b4feb03ad48a333a72-x86.cache-2 937a0000-93800000 rw-s 00000000 00:09 917519 /SYSV00000000 (deleted) 93800000-938f7000 rw-p 93800000 00:00 0 938f7000-93900000 ---p 938f7000 00:00 0 93900000-93965000 rw-p 93900000 00:00 0 93965000-93a00000 ---p 93965000 00:00 0 93a00000-93afb000 rw-p 93a00000 00:00 0 93afb000-93b00000 ---p 93afb000 00:00 0 93b02000-93b05000 r--s 00000000 fd:00 2490481 /var/cache/fontconfig/46b47dbc682d2ca4191e148ea7bde7f2-x86.cache-2 93b05000-93b09000 r--s 00000000 fd:00 2490485 /var/cache/fontconfig/766670f26ba71bf5eea34bac120eb600-x86.cache-2 93b09000-93b11000 r--s 00000000 fd:00 2490473 /var/cache/fontconfig/e19de935dec46bbf3ed114ee4965548a-x86.cache-2 93b11000-93b13000 r--s 00000000 fd:00 2490488 /var/cache/fontconfig/273572fe21058bf32b3be773088b9170-x86.cache-2 93b13000-93b14000 r--s 00000000 fd:00 2490486 /var/cache/fontconfig/1248881498ac025e45c3042f6afe9284-x86.cache-2 93b14000-93b16000 r--s 00000000 fd:00 2490483 /var/cache/fontconfig/8fd5071779cacc5b88f04796ea2b3c26-x86.cache-2 93b16000-93b19000 r--s 00000000 fd:00 2490475 /var/cache/fontconfig/beeeeb3dfe132a8a0633a017c99ce0c0-x86.cache-2 93b19000-93b1c000 rw-s 00000000 00:09 884750 /SYSV00000000 (deleted) 93b1c000-93b39000 r--s 0018c000 fd:00 1862274 /usr/local/eclipse/plugins/org.eclipse.ui.ide_3.3.1.M20070910-0800b.jar 93b39000-93b3d000 r--s 00016000 fd:00 1862196 /usr/local/eclipse/plugins/org.eclipse.core.commands_3.3.0.I20070605-0010.jar 93b3d000-93b41000 r--s 0001f000 fd:00 1665422 /usr/local/eclipse/plugins/org.eclipse.ui_3.3.1.M20070910-0800b.jar 93b41000-93b53000 r--s 001c2000 fd:00 1665496 /usr/local/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.3.1.v3346i.jar 93b53000-93b54000 r--s 00003000 fd:00 1665270 /usr/local/eclipse/plugins/org.eclipse.swt_3.3.1.v3346j.jar 93b54000-93b67000 r--s 000dc000 fd:00 1862171 /usr/local/eclipse/plugins/org.eclipse.jface_3.3.1.M20070910-0800b.jar 93b67000-93b68000 r--s 00001000 fd:00 2099042 /usr/local/eclipse/plugins/org.eclipse.ui.workbench.compatibility_3.2.0.I20070319-0010/compatibility.jar 93b68000-93ba9000 r--s 00353000 fd:00 1862282 /usr/local/eclipse/plugins/org.eclipse.ui.workbench_3.3.1.M20070921-1200.jar 93ba9000-93bab000 r--s 0000a000 fd:00 1665480 /usr/local/eclipse/plugins/org.eclipse.ui.ide.application_1.0.0.I20070530-0100.jar 93bab000-93bae000 r--s 00014000 fd:00 1862315 /usr/local/eclipse/plugins/org.eclipse.core.runtime.compatibility_3.1.200.v20070502.jar 93bae000-93bb4000 r--s 000fd000 fd:00 1754808 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/resources.jar 93bb4000-93bb8000 r--s 00079000 fd:00 1754800 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/jsse.jar 93bb8000-93bba000 r--s 00009000 fd:00 1665447 /usr/local/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar 93bba000-93bc3000 r--s 00065000 fd:00 1761414 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/ext/gnome-java-bridge.jar 93bc3000-93bf5000 rw-p 93bc3000 00:00 0 93bf5000-93d80000 r--s 0334e000 fd:00 1754811 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/rt.jar 93d80000-94090000 rwxp 93d80000 00:00 0 94090000-964e0000 rwxp 94090000 00:00 0 964e0000-989d0000 rwxp 964e0000 00:00 0 989d0000-b3d80000 rwxp 989d0000 00:00 0 b3d80000-b4980000 rwxp b3d80000 00:00 0 b4980000-b7d80000 rwxp b4980000 00:00 0 b7d80000-b7d81000 r--s 00000000 fd:00 2490405 /var/cache/fontconfig/b4d0b56f766d89640448751fcd18ec1e-x86.cache-2 b7d81000-b7d83000 r--s 00011000 fd:00 1665365 /usr/local/eclipse/plugins/org.eclipse.equinox.app_1.0.1.R33x_v20070828.jar b7d83000-b7d85000 r--s 00012000 fd:00 1665435 /usr/local/eclipse/plugins/org.eclipse.core.jobs_3.3.1.R33x_v20070709.jar b7d85000-b7d88000 r--s 00017000 fd:00 1862290 /usr/local/eclipse/plugins/org.eclipse.equinox.preferences_3.2.100.v20070522.jar b7d88000-b7d8a000 r--s 00004000 fd:00 1862230 /usr/local/eclipse/plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20070502.jar b7d8a000-b7d8b000 r--s 00002000 fd:00 2098955 /usr/local/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.100.v20070316/runtime_registry_compatibility.jar b7d8b000-b7d8f000 r--s 00024000 fd:00 1862321 /usr/local/eclipse/plugins/org.eclipse.equinox.registry_3.3.1.R33x_v20070802.jar b7d8f000-b7d97000 rw-s 00000000 fd:00 492113 /tmp/hsperfdata_root/3280 b7d97000-b7d98000 rwxp b7d97000 00:00 0 b7d98000-b7d99000 r--p b7d98000 00:00 0 b7d99000-b7df9000 rw-s 00000000 00:09 851981 /SYSV00000000 (deleted) b7df9000-b7e5c000 rw-p b7df9000 00:00 0 b7e5c000-b805c000 r--p 00000000 fd:00 1599426 /usr/lib/locale/locale-archive b805c000-b8064000 rw-p b805c000 00:00 0 b8064000-b8066000 r--s 00010000 fd:00 1862289 /usr/local/eclipse/plugins/org.eclipse.core.runtime_3.3.100.v20070530.jar b8066000-b8068000 r--s 00016000 fd:00 1665261 /usr/local/eclipse/plugins/org.eclipse.update.configurator_3.2.101.R33x_v20070810.jar b8068000-b806a000 r--s 00015000 fd:00 1665451 /usr/local/eclipse/plugins/org.eclipse.equinox.common_3.3.0.v20070426.jar b806a000-b8078000 r--s 000d5000 fd:00 1862205 /usr/local/eclipse/plugins/org.eclipse.osgi_3.3.1.R33x_v20070828.jar b8078000-b8079000 rw-p b8078000 00:00 0 bfa28000-bfa2b000 ---p bfa28000 00:00 0 bfa2b000-bfa78000 rwxp bffb2000 00:00 0 [stack] bfa78000-bfa79000 rw-p bffff000 00:00 0 VM Arguments: jvm_args: -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m java_command: Launcher Type: generic Environment Variables: PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client::/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386::/usr/lib/xulrunner-1.9pre:/usr/lib/xulrunner-1.9pre SHELL=/bin/bash DISPLAY=:0.0 Signal Handlers: SIGSEGV: [libjvm.so+0x3136a8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x3136a8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x260c5c], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: SIG_IGN, sa_mask[0]=0x00001000, sa_flags=0x10000000 SIGXFSZ: [libjvm.so+0x260c5c], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x260c5c], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x26063c], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x2628c8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x2628c8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x2628c8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x2628c8], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 --------------- S Y S T E M --------------- OS:Fedora release 9 (Sulphur) uname:Linux 2.6.25-14.fc9.i686 #1 SMP Thu May 1 06:28:41 EDT 2008 i686 libc:glibc 2.8 NPTL 2.8 rlimit: STACK 10240k, CORE 0k, NPROC 1024, NOFILE 1024, AS infinity load average:0.43 0.56 0.66 CPU:total 2 (2 cores per cpu, 1 threads per core) family 15 model 107 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext Memory: 4k page, physical 449980k(50600k free), swap 917496k(869336k free) vm_info: OpenJDK Client VM (1.6.0-b09) for linux-x86 JRE (1.6.0-b09), built on Apr 28 2008 16:11:56 by "mockbuild" with gcc 4.3.0 20080416 (Red Hat 4.3.0-7) time: Sat Feb 28 10:28:07 2009 elapsed time: 17 seconds -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.