From gnu_andrew at member.fsf.org Tue Sep 1 02:31:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 1 Sep 2009 10:31:21 +0100 Subject: Fix for PR381 Stackoverflow error with SecurityManager, signed jar and debug In-Reply-To: <1251727214.3836.105.camel@springer.wildebeest.org> References: <1251700435.3836.49.camel@springer.wildebeest.org> <1251727214.3836.105.camel@springer.wildebeest.org> Message-ID: <17c6771e0909010231s81cde37t8ef577cabd5265bb@mail.gmail.com> 2009/8/31 Mark Wielaard : > Hi, > > On Mon, 2009-08-31 at 08:33 +0200, Mark Wielaard wrote: >> 2009-08-31 ?Mark Wielaard ? >> ? ? ? ? ? ? Keith Seitz ? >> >> ? ? PR381 Stackoverflow error with SecurityManager, signed jar and debug >> ? ? * patches/icedtea-use-system-tzdata.patch: Updated to initialize >> ? ? JAVAZI_DIR once and inside a AccessController.doPrivileged() block. >> ? ? * patches/icedtea-timezone-default-permission.patch: New patch. >> ? ? * overlays/openjdk/jdk/test/java/util/TimeZone/ >> ? ? (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): >> ? ? New test. >> ? ? * Makefile.am: Add new patch. >> ? ? * HACKING: Describe new patch. > > Lillian requested this changeset also be pushed on the 1.5 branch, which > I have just done after some quick build/smoke testing that everything > looked fine after the transplant. > > Should this also go onto the 1.6 branch? > > Cheers, > > Mark > > Sounds like a good idea to me. -- 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 mjw at icedtea.classpath.org Tue Sep 1 03:53:49 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Tue, 01 Sep 2009 10:53:49 +0000 Subject: /hg/release/icedtea6-1.6: PR381 Stackoverflow error with Securit... Message-ID: changeset b3106a2e4455 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=b3106a2e4455 author: Mark Wielaard date: Mon Aug 31 07:45:07 2009 +0200 PR381 Stackoverflow error with SecurityManager, signed jar and debug 2009-08-31 Mark Wielaard Keith Seitz * patches/icedtea-use-system-tzdata.patch: Updated to initialize JAVAZI_DIR once and inside a AccessController.doPrivileged() block. * patches/icedtea-timezone-default-permission.patch: New patch. * overlays/openjdk/jdk/test/java/util/TimeZone/ (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): New test. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 7 files changed, 184 insertions(+), 34 deletions(-) ChangeLog | 13 + HACKING | 8 - Makefile.am | 1 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java | 40 +++++ overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh | 61 ++++++++ patches/icedtea-timezone-default-permission.patch | 23 +++ patches/icedtea-use-system-tzdata.patch | 72 +++++----- diffs (273 lines): diff -r 64057113c917 -r b3106a2e4455 ChangeLog --- a/ChangeLog Thu Aug 27 17:43:31 2009 +0200 +++ b/ChangeLog Mon Aug 31 07:45:07 2009 +0200 @@ -1,3 +1,16 @@ 2009-08-27 Kees Cook + Keith Seitz + + PR381 Stackoverflow error with SecurityManager, signed jar and debug + * patches/icedtea-use-system-tzdata.patch: Updated to initialize + JAVAZI_DIR once and inside a AccessController.doPrivileged() block. + * patches/icedtea-timezone-default-permission.patch: New patch. + * overlays/openjdk/jdk/test/java/util/TimeZone/ + (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): + New test. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-27 Kees Cook * patches/openjdk/oj100103-debugger-socket-overflow.patch: New. diff -r 64057113c917 -r b3106a2e4455 HACKING --- a/HACKING Thu Aug 27 17:43:31 2009 +0200 +++ b/HACKING Mon Aug 31 07:45:07 2009 +0200 @@ -114,8 +114,12 @@ The following patches are only applied t * icedtea-lucene-crash.patch: Fix lucene bad code generation bug #6707044. * icedtea-6700047-loopopts.patch: Fix partial peeling issue, bug #6700047. * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. -* icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix - for rh-489586) +* icedtea-timezone.patch : Makes java only look for time zone information in + /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-timezone-default-permission.patch: Partial fix for PR381 + (in combination with icedtea-use-system-tzdata.patch) security check + debug printing overflow. Also in openjdk7 b22, but apparently lost + since b22 was from "before hg". * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. * openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext diff -r 64057113c917 -r b3106a2e4455 Makefile.am --- a/Makefile.am Thu Aug 27 17:43:31 2009 +0200 +++ b/Makefile.am Mon Aug 31 07:45:07 2009 +0200 @@ -536,6 +536,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-rmi_amd64.patch \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ + patches/icedtea-timezone-default-permission.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ patches/hotspot/$(HSBUILD)/icedtea-headers.patch \ diff -r 64057113c917 -r b3106a2e4455 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,40 @@ +/* Testcase for PR381 Stackoverflow error with security manager, signed jars + and -Djava.security.debug set. + +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; 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. +*/ + + +import java.util.Date; + +/** + * Test class. Create a test keystore and dummy cert, create a jar file to + * sign with the test class in it. Sign it run it with the security manager + * on, plus accesscontroller debugging, will go into infinite recursion + * trying to get enough permissions for printing Date of failing + * certificate, unless fix is applied. + */ +public class TimeZoneDatePermissionCheck +{ + public static void main(String[] args) + { + System.out.println(new Date()); + } +} diff -r 64057113c917 -r b3106a2e4455 overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.sh Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,61 @@ +# Testcase for PR381 Stackoverflow error with security manager, signed jars +# and -Djava.security.debug set. +# +# 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; 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. + +# @test +# @bug 0000381 +# @summary Stackoverflow error with security manager, signed jars and debug. +# @build TimeZoneDatePermissionCheck +# @run shell TimeZoneDatePermissionCheck.sh + +# Set default if not run under jtreg from test dir itself +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES="." +fi +if [ "${TESTJAVA}" = "" ] ; then + TESTJAVA=/usr +fi + +# create a test keystore and dummy cert +rm -f ${TESTCLASSES}/timezonedatetest.store +${TESTJAVA}/bin/keytool -genkeypair -alias testcert \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass -validity 360 \ + -dname "cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL" \ + -keypass testpass + +# create a jar file to sign with the test class in it. +rm -f ${TESTCLASSES}/timezonedatetest.jar +${TESTJAVA}/bin/jar cf \ + ${TESTCLASSES}/timezonedatetest.jar \ + -C ${TESTCLASSES} TimeZoneDatePermissionCheck.class + +# sign it +${TESTJAVA}/bin/jarsigner \ + -keystore ${TESTCLASSES}/timezonedatetest.store \ + -storepass testpass ${TESTCLASSES}/timezonedatetest.jar testcert + +# run it with the security manager on, plus accesscontroller debugging +# will go into infinite recursion trying to get enough permissions for +# printing Date of failing certificate unless fix is applied. +${TESTJAVA}/bin/java -Djava.security.manager \ + -Djava.security.debug=access,failure,policy \ + -cp ${TESTCLASSES}/timezonedatetest.jar TimeZoneDatePermissionCheck diff -r 64057113c917 -r b3106a2e4455 patches/icedtea-timezone-default-permission.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-timezone-default-permission.patch Mon Aug 31 07:45:07 2009 +0200 @@ -0,0 +1,23 @@ +--- openjdk7/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:54:13.026104895 +0200 ++++ openjdk/jdk/src/share/classes/java/util/TimeZone.java 2009-08-04 18:53:09.035985858 +0200 +@@ -602,11 +602,7 @@ + } + }); + +- if (hasPermission()) { +- defaultTimeZone = tz; +- } else { +- defaultZoneTL.set(tz); +- } ++ defaultTimeZone = tz; + return tz; + } + +@@ -637,6 +633,7 @@ + if (hasPermission()) { + synchronized (TimeZone.class) { + defaultTimeZone = zone; ++ defaultZoneTL.set(null); + } + } else { + defaultZoneTL.set(zone); diff -r 64057113c917 -r b3106a2e4455 patches/icedtea-use-system-tzdata.patch --- a/patches/icedtea-use-system-tzdata.patch Thu Aug 27 17:43:31 2009 +0200 +++ b/patches/icedtea-use-system-tzdata.patch Mon Aug 31 07:45:07 2009 +0200 @@ -1,14 +1,34 @@ ---- ../openjdkb23/openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-10-30 04:38:28.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-11-13 13:16:52.000000000 -0500 -@@ -28,6 +28,7 @@ - import java.io.File; - import java.io.FileInputStream; - import java.io.FileNotFoundException; -+import java.security.AccessControlException; - import java.io.IOException; - import java.lang.ref.SoftReference; - import java.security.AccessController; -@@ -1021,11 +1022,29 @@ +--- openjdk6.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Sat Mar 15 13:43:05 2008 -0400 ++++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java Fri Aug 21 11:34:56 2009 +0200 +@@ -465,6 +465,27 @@ + */ + public static final byte TAG_TZDataVersion = 68; + ++ // Cached location of the TZDATA files ++ private static final String JAVAZI_DIR = setup_JAVAZI_DIR(); ++ ++ private static String setup_JAVAZI_DIR() { ++ try { ++ final String dir = AccessController.doPrivileged ++ (new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); ++ return AccessController.doPrivileged ++ (new PrivilegedExceptionAction() { ++ public String run() { ++ File f = new File(dir, "ZoneInfoMappings"); ++ if (f.exists()) ++ return dir; ++ return null; ++ } ++ }); ++ } catch (PrivilegedActionException e) { ++ return null; ++ } ++ } ++ + /** + * Excluded zones item tag. (Added in Mustang) + */ +@@ -1021,11 +1042,17 @@ byte[] buffer = null; try { @@ -17,29 +37,17 @@ - final String fname = homeDir + File.separator + "lib" + File.separator - + "zi" + File.separator + fileName; - buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { -+ String zi_dir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("user.zoneinfo.dir")); -+ File dir = null; -+ if (zi_dir != null) -+ dir = new File(zi_dir); + -+ // Some minimal sanity checking -+ if (dir != null) { -+ try { -+ File f = new File(dir, "ZoneInfoMappings"); -+ if (!f.exists()) -+ dir = null; -+ } catch (AccessControlException ace) { -+ dir = null; -+ } -+ } ++ String zi_dir = JAVAZI_DIR; ++ if (zi_dir == null) { ++ // Fall back to JDK-supplied tzdata ++ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); ++ zi_dir = homeDir + File.separator + "lib" + File.separator ++ + "zi"; ++ } + -+ if (dir == null) { -+ String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home")); -+ zi_dir = homeDir + File.separator + "lib" + File.separator -+ + "zi"; -+ } -+ final String fname = zi_dir + File.separator + fileName; -+ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { ++ final String fname = zi_dir + File.separator + fileName; ++ buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { File file = new File(fname); if (!file.canRead()) { From mjw at redhat.com Tue Sep 1 03:59:02 2009 From: mjw at redhat.com (Mark Wielaard) Date: Tue, 01 Sep 2009 12:59:02 +0200 Subject: Fix for PR381 Stackoverflow error with SecurityManager, signed jar and debug In-Reply-To: <17c6771e0909010231s81cde37t8ef577cabd5265bb@mail.gmail.com> References: <1251700435.3836.49.camel@springer.wildebeest.org> <1251727214.3836.105.camel@springer.wildebeest.org> <17c6771e0909010231s81cde37t8ef577cabd5265bb@mail.gmail.com> Message-ID: <1251802742.4273.9.camel@springer.wildebeest.org> Hi Andrew, On Tue, 2009-09-01 at 10:31 +0100, Andrew John Hughes wrote: > 2009/8/31 Mark Wielaard : > > On Mon, 2009-08-31 at 08:33 +0200, Mark Wielaard wrote: > >> 2009-08-31 Mark Wielaard > >> Keith Seitz > >> > >> PR381 Stackoverflow error with SecurityManager, signed jar and debug > >> * patches/icedtea-use-system-tzdata.patch: Updated to initialize > >> JAVAZI_DIR once and inside a AccessController.doPrivileged() block. > >> * patches/icedtea-timezone-default-permission.patch: New patch. > >> * overlays/openjdk/jdk/test/java/util/TimeZone/ > >> (TimeZoneDatePermissionCheck.java, TimeZoneDatePermissionCheck.sh): > >> New test. > >> * Makefile.am: Add new patch. > >> * HACKING: Describe new patch. > > > > Lillian requested this changeset also be pushed on the 1.5 branch, which > > I have just done after some quick build/smoke testing that everything > > looked fine after the transplant. > > > > Should this also go onto the 1.6 branch? > > > Sounds like a good idea to me. On irc Andrew Haley agreed. So I hg transplanted the commit. Did a quick build and check to see that it worked Passed: java/util/TimeZone/TimeZoneDatePermissionCheck.sh before pushing. Cheers, Mark From mjw at icedtea.classpath.org Tue Sep 1 06:20:59 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Tue, 01 Sep 2009 13:20:59 +0000 Subject: /hg/release/icedtea6-1.6: PR377. SimpleTimeZone checks too stric... Message-ID: changeset 3013950f3909 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=3013950f3909 author: Mark Wielaard date: Sun Aug 30 17:58:20 2009 +0200 PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: New test. * patches/icedtea-simpletimezone-relax.patch: New patch. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 5 files changed, 56 insertions(+) ChangeLog | 9 +++ HACKING | 2 Makefile.am | 1 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java | 23 ++++++++++ patches/icedtea-simpletimezone-relax.patch | 21 +++++++++ diffs (91 lines): diff -r b3106a2e4455 -r 3013950f3909 ChangeLog --- a/ChangeLog Mon Aug 31 07:45:07 2009 +0200 +++ b/ChangeLog Sun Aug 30 17:58:20 2009 +0200 @@ -1,3 +1,12 @@ 2009-08-31 Mark Wielaard + + PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. + * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: + New test. + * patches/icedtea-simpletimezone-relax.patch: New patch. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-31 Mark Wielaard Keith Seitz diff -r b3106a2e4455 -r 3013950f3909 HACKING --- a/HACKING Mon Aug 31 07:45:07 2009 +0200 +++ b/HACKING Sun Aug 30 17:58:20 2009 +0200 @@ -116,6 +116,8 @@ The following patches are only applied t * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. * icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-simpletimezone-relax.patch: Fix for PR377, Jordan end of day rule + in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-timezone-default-permission.patch: Partial fix for PR381 (in combination with icedtea-use-system-tzdata.patch) security check debug printing overflow. Also in openjdk7 b22, but apparently lost diff -r b3106a2e4455 -r 3013950f3909 Makefile.am --- a/Makefile.am Mon Aug 31 07:45:07 2009 +0200 +++ b/Makefile.am Sun Aug 30 17:58:20 2009 +0200 @@ -537,6 +537,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ patches/icedtea-timezone-default-permission.patch \ + patches/icedtea-simpletimezone-relax.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ patches/hotspot/$(HSBUILD)/icedtea-headers.patch \ diff -r b3106a2e4455 -r 3013950f3909 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,23 @@ +/* + * @test + * @bug 0000377 + * @summary SimpleTimeZone should accept start/end rules at end of day + */ + +import java.util.Calendar; +import java.util.SimpleTimeZone; + +public class EndOfDay +{ + public static void main(String[] args) + { + SimpleTimeZone stz; + stz = new SimpleTimeZone(0, "End/Day", + Calendar.MARCH, -1, Calendar.FRIDAY, + 24 * 60 * 60 * 1000, + Calendar.APRIL, 1, Calendar.THURSDAY, + 24 * 60 * 60 * 1000, + 3600000); + System.err.println(stz); + } +} diff -r b3106a2e4455 -r 3013950f3909 patches/icedtea-simpletimezone-relax.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-simpletimezone-relax.patch Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,21 @@ +diff -r 348fce38de3f src/share/classes/java/util/SimpleTimeZone.java +--- openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Fri Jun 26 19:50:44 2009 +0400 ++++ openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Sat Aug 29 22:36:41 2009 +0200 +@@ -1372,7 +1372,7 @@ + throw new IllegalArgumentException( + "Illegal start month " + startMonth); + } +- if (startTime < 0 || startTime >= millisPerDay) { ++ if (startTime < 0 || startTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal start time " + startTime); + } +@@ -1419,7 +1419,7 @@ + throw new IllegalArgumentException( + "Illegal end month " + endMonth); + } +- if (endTime < 0 || endTime >= millisPerDay) { ++ if (endTime < 0 || endTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal end time " + endTime); + } From mark at klomp.org Tue Sep 1 06:25:19 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 01 Sep 2009 15:25:19 +0200 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <1251648936.5795.17.camel@springer.wildebeest.org> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> Message-ID: <1251811519.4205.29.camel@springer.wildebeest.org> On Sun, 2009-08-30 at 18:15 +0200, Mark Wielaard wrote: > I added it to IcedTea6 plus a new testcase for the general issue. > > 2009-08-30 Mark Wielaard > > PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. > * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: > New test. > * patches/icedtea-simpletimezone-relax.patch: New patch. > * Makefile.am: Add new patch. > * HACKING: Describe new patch. Now also on the 1.6 branch on request from Andrew (irc). Lillian, do you want it also on the 1.5 branch? Cheers, Mark From aph at redhat.com Tue Sep 1 07:23:45 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 01 Sep 2009 15:23:45 +0100 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <1251811519.4205.29.camel@springer.wildebeest.org> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> <1251811519.4205.29.camel@springer.wildebeest.org> Message-ID: <4A9D2E71.2010601@redhat.com> Mark Wielaard wrote: > On Sun, 2009-08-30 at 18:15 +0200, Mark Wielaard wrote: >> I added it to IcedTea6 plus a new testcase for the general issue. >> >> 2009-08-30 Mark Wielaard >> >> PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. >> * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: >> New test. >> * patches/icedtea-simpletimezone-relax.patch: New patch. >> * Makefile.am: Add new patch. >> * HACKING: Describe new patch. > > Now also on the 1.6 branch on request from Andrew (irc). > > Lillian, do you want it also on the 1.5 branch? I think this patch should be committed to all active branches. Andrew. From mjw at icedtea.classpath.org Tue Sep 1 08:14:47 2009 From: mjw at icedtea.classpath.org (mjw at icedtea.classpath.org) Date: Tue, 01 Sep 2009 15:14:47 +0000 Subject: /hg/release/icedtea6-1.5: PR377. SimpleTimeZone checks too stric... Message-ID: changeset e28e125f9a21 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=e28e125f9a21 author: Mark Wielaard date: Sun Aug 30 17:58:20 2009 +0200 PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: New test. * patches/icedtea-simpletimezone-relax.patch: New patch. * Makefile.am: Add new patch. * HACKING: Describe new patch. diffstat: 5 files changed, 56 insertions(+) ChangeLog | 9 +++ HACKING | 2 Makefile.am | 1 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java | 23 ++++++++++ patches/icedtea-simpletimezone-relax.patch | 21 +++++++++ diffs (91 lines): diff -r cae52872f2d5 -r e28e125f9a21 ChangeLog --- a/ChangeLog Mon Aug 31 10:26:15 2009 -0400 +++ b/ChangeLog Sun Aug 30 17:58:20 2009 +0200 @@ -1,3 +1,12 @@ 2009-08-31 Lillian Angel + + PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. + * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: + New test. + * patches/icedtea-simpletimezone-relax.patch: New patch. + * Makefile.am: Add new patch. + * HACKING: Describe new patch. + 2009-08-31 Lillian Angel * configure.ac: bumped version. diff -r cae52872f2d5 -r e28e125f9a21 HACKING --- a/HACKING Mon Aug 31 10:26:15 2009 -0400 +++ b/HACKING Sun Aug 30 17:58:20 2009 +0200 @@ -114,6 +114,8 @@ The following patches are only applied t * icedtea-6712835-ifnode.patch: Fix infinite loop in PhaseIterGVN::transform. * icedtea-timezone.patch : Makes java only look for time zone information in /etc/sysconfig/clock if /etc/localtime is not found (fix for rh-489586) +* icedtea-simpletimezone-relax.patch: Fix for PR377, Jordan end of day rule + in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-timezone-default-permission.patch: Partial fix for PR381 (in combination with icedtea-use-system-tzdata.patch) security check debug printing overflow. Also in openjdk7 b22, but apparently lost diff -r cae52872f2d5 -r e28e125f9a21 Makefile.am --- a/Makefile.am Mon Aug 31 10:26:15 2009 -0400 +++ b/Makefile.am Sun Aug 30 17:58:20 2009 +0200 @@ -523,6 +523,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-demos.patch \ patches/icedtea-timezone.patch \ patches/icedtea-timezone-default-permission.patch \ + patches/icedtea-simpletimezone-relax.patch \ patches/icedtea-use-system-tzdata.patch \ patches/icedtea-headers.patch \ patches/hotspot/$(HSBUILD)/icedtea-headers.patch \ diff -r cae52872f2d5 -r e28e125f9a21 overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,23 @@ +/* + * @test + * @bug 0000377 + * @summary SimpleTimeZone should accept start/end rules at end of day + */ + +import java.util.Calendar; +import java.util.SimpleTimeZone; + +public class EndOfDay +{ + public static void main(String[] args) + { + SimpleTimeZone stz; + stz = new SimpleTimeZone(0, "End/Day", + Calendar.MARCH, -1, Calendar.FRIDAY, + 24 * 60 * 60 * 1000, + Calendar.APRIL, 1, Calendar.THURSDAY, + 24 * 60 * 60 * 1000, + 3600000); + System.err.println(stz); + } +} diff -r cae52872f2d5 -r e28e125f9a21 patches/icedtea-simpletimezone-relax.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-simpletimezone-relax.patch Sun Aug 30 17:58:20 2009 +0200 @@ -0,0 +1,21 @@ +diff -r 348fce38de3f src/share/classes/java/util/SimpleTimeZone.java +--- openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Fri Jun 26 19:50:44 2009 +0400 ++++ openjdk/jdk/src/share/classes/java/util/SimpleTimeZone.java Sat Aug 29 22:36:41 2009 +0200 +@@ -1372,7 +1372,7 @@ + throw new IllegalArgumentException( + "Illegal start month " + startMonth); + } +- if (startTime < 0 || startTime >= millisPerDay) { ++ if (startTime < 0 || startTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal start time " + startTime); + } +@@ -1419,7 +1419,7 @@ + throw new IllegalArgumentException( + "Illegal end month " + endMonth); + } +- if (endTime < 0 || endTime >= millisPerDay) { ++ if (endTime < 0 || endTime > millisPerDay) { + throw new IllegalArgumentException( + "Illegal end time " + endTime); + } From mark at klomp.org Tue Sep 1 08:18:38 2009 From: mark at klomp.org (Mark Wielaard) Date: Tue, 01 Sep 2009 17:18:38 +0200 Subject: Jordan (Asia/Amman) versus SimpleTimeZone In-Reply-To: <4A9D2E71.2010601@redhat.com> References: <1251578474.3908.20.camel@springer.wildebeest.org> <4A9A71D4.50109@sun.com> <1251648936.5795.17.camel@springer.wildebeest.org> <1251811519.4205.29.camel@springer.wildebeest.org> <4A9D2E71.2010601@redhat.com> Message-ID: <1251818318.4205.32.camel@springer.wildebeest.org> On Tue, 2009-09-01 at 15:23 +0100, Andrew Haley wrote: > Mark Wielaard wrote: > > On Sun, 2009-08-30 at 18:15 +0200, Mark Wielaard wrote: > >> I added it to IcedTea6 plus a new testcase for the general issue. > >> > >> 2009-08-30 Mark Wielaard > >> > >> PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. > >> * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: > >> New test. > >> * patches/icedtea-simpletimezone-relax.patch: New patch. > >> * Makefile.am: Add new patch. > >> * HACKING: Describe new patch. > > > > Now also on the 1.6 branch on request from Andrew (irc). > > > > Lillian, do you want it also on the 1.5 branch? > > I think this patch should be committed to all active branches. OK, pushed to icedtea6 trunk, icedtea6-1.5 and icedtea6-1.5 release branches. Cheers, Mark From gnu_andrew at member.fsf.org Tue Sep 1 08:59:53 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 1 Sep 2009 16:59:53 +0100 Subject: JTreg results for ARM In-Reply-To: <17c6771e0908261412m5cc3282di8c314686fb9c27fb@mail.gmail.com> References: <200908262049.n7QKndXX009606@parsley.camswl.com> <17c6771e0908261202g6c46849bse1aa148e322aaea8@mail.gmail.com> <1251319296.24577.3.camel@mint.camswl.com> <17c6771e0908261412m5cc3282di8c314686fb9c27fb@mail.gmail.com> Message-ID: <17c6771e0909010859n64a22562x42b22fac0f9de252@mail.gmail.com> 2009/8/26 Andrew John Hughes : > 2009/8/26 Edward Nevill : >> On Wed, 2009-08-26 at 20:02 +0100, Andrew John Hughes wrote: >>> 2009/8/26 Edward Nevill : >>> > >>> Wouldn't Zero on ARM be a better initial reference? >>> >>> I can't do x86 but could set an x86_64 run going tonight if that would >>> be of any help. >>> >>> > Regards, >>> > Ed. >>> > >>> >> >> Yes, both would be good references. Could you do the x86_64 run, no >> hurry, I am out of the office until Tues. If you could keep the raw >> results, ie including the tests that passed, so I can diff the results >> and ensure I am running the same set of tests. >> >> Thx, >> Ed. >> >> >> > > Ok, in that case I'll set it going Friday so it has more time. ?From > the vague memories I have of trying it on PPC, it takes a long time :) > -- > 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 > Results are available here: http://fuseyism.com/zero6.jtreg.tar.bz2 -- 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 icedtea.classpath.org Tue Sep 1 09:33:56 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Tue, 01 Sep 2009 16:33:56 +0000 Subject: /hg/release/icedtea6-1.5: 2009-09-01 Lillian Angel changeset d0593233c9ce in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=d0593233c9ce author: langel date: Tue Sep 01 12:37:08 2009 -0400 2009-09-01 Lillian Angel * configure.ac: Bumped version. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 6 +++++- configure.ac | 2 +- diffs (22 lines): diff -r e28e125f9a21 -r d0593233c9ce ChangeLog --- a/ChangeLog Sun Aug 30 17:58:20 2009 +0200 +++ b/ChangeLog Tue Sep 01 12:37:08 2009 -0400 @@ -1,4 +1,8 @@ 2009-08-30 Mark Wielaard +2009-09-01 Lillian Angel + + * configure.ac: Bumped version. + +2009-09-01 Mark Wielaard PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. * overlays/openjdk/jdk/test/java/util/SimpleTimeZone/EndOfDay.java: diff -r e28e125f9a21 -r d0593233c9ce configure.ac --- a/configure.ac Sun Aug 30 17:58:20 2009 +0200 +++ b/configure.ac Tue Sep 01 12:37:08 2009 -0400 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.5.2], [distro-pkg -AC_INIT([icedtea6], [1.5.2], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.5.3], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From langel at icedtea.classpath.org Tue Sep 1 09:34:07 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Tue, 01 Sep 2009 16:34:07 +0000 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... Message-ID: changeset 503129230ba0 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 author: langel date: Tue Sep 01 12:37:18 2009 -0400 Added tag icedtea6-1.5.3 for changeset d0593233c9ce diffstat: 1 file changed, 1 insertion(+) .hgtags | 1 + diffs (8 lines): diff -r d0593233c9ce -r 503129230ba0 .hgtags --- a/.hgtags Tue Sep 01 12:37:08 2009 -0400 +++ b/.hgtags Tue Sep 01 12:37:18 2009 -0400 @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 From Thomas.Rodriguez at Sun.COM Tue Sep 1 13:29:39 2009 From: Thomas.Rodriguez at Sun.COM (Tom Rodriguez) Date: Tue, 01 Sep 2009 13:29:39 -0700 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: <20090827162542.GJ10947@outflux.net> References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> Message-ID: >> Are you sending this patch upstream? It would be good to have some >> feedback from the HotSpot developers before we commit this for a >> release. >> >> Does this affect SPARC too? > > I'm not familiar with SPARC hardware, but if it supports "execute" > memory > protections, then it is a valuable change there too. It it doesn't, > it > won't hurt anything, IIUC. The machinery for this on Solaris is completely different. On Solaris it's done using mapfiles and it wouldn't be a bad idea to request non- executable stacks though this brings up a question about how all this interacts with shared libraries. If you have an executable that disables execute and it dlopens a library that doesn't, what happens? Presumably the executables and libraries have to be in agreement for this to really work, right? tom > > -Kees > > -- > Kees Cook > Ubuntu Security Team From gnu_andrew at member.fsf.org Tue Sep 1 15:15:43 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 1 Sep 2009 23:15:43 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: References: Message-ID: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> 2009/9/1 : > changeset 503129230ba0 in /hg/release/icedtea6-1.5 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 > author: langel > date: Tue Sep 01 12:37:18 2009 -0400 > > ? ? ? ?Added tag icedtea6-1.5.3 for changeset d0593233c9ce > > > diffstat: > > 1 file changed, 1 insertion(+) > .hgtags | ? ?1 + > > diffs (8 lines): > > diff -r d0593233c9ce -r 503129230ba0 .hgtags > --- a/.hgtags ? Tue Sep 01 12:37:08 2009 -0400 > +++ b/.hgtags ? Tue Sep 01 12:37:18 2009 -0400 > @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 > ?ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 > ?3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 > ?d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 > +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 > Huh? Has there been a 1.5.2 release? I didn't see an announcement. -- 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 Wed Sep 2 00:37:59 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Sep 2009 09:37:59 +0200 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> Message-ID: <1251877079.2759.9.camel@hermans.wildebeest.org> Hi Andrew, On Tue, 2009-09-01 at 23:15 +0100, Andrew John Hughes wrote: > 2009/9/1 : > > changeset 503129230ba0 in /hg/release/icedtea6-1.5 > > details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 > > author: langel > > date: Tue Sep 01 12:37:18 2009 -0400 > > > > Added tag icedtea6-1.5.3 for changeset d0593233c9ce > > Huh? Has there been a 1.5.2 release? I didn't see an announcement. Although it is technically possible to move a tag after it has been created, I don't think it is a good idea. Allocating a new tag name seems a better choice. That said, it would be good to post a message to the list about intentions of any commit, even if they are routine ones like this. Cheers, Mark P.S. Please do try to trim the messages you reply to a bit to only include the relevant context if you can. Thanks. From aph at redhat.com Wed Sep 2 02:36:16 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 02 Sep 2009 10:36:16 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <1251877079.2759.9.camel@hermans.wildebeest.org> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> Message-ID: <4A9E3C90.8030304@redhat.com> Mark Wielaard wrote: > Hi Andrew, > > On Tue, 2009-09-01 at 23:15 +0100, Andrew John Hughes wrote: >> 2009/9/1 : >>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>> details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>> author: langel >>> date: Tue Sep 01 12:37:18 2009 -0400 >>> >>> Added tag icedtea6-1.5.3 for changeset d0593233c9ce >> Huh? Has there been a 1.5.2 release? I didn't see an announcement. > > Although it is technically possible to move a tag after it has been > created, I don't think it is a good idea. Allocating a new tag name > seems a better choice. Not to me. We surely don't want phantom tags for nonexistent releases. This is very bad practice; IMO, as usual. Andrew. From mark at klomp.org Wed Sep 2 03:28:40 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Sep 2009 12:28:40 +0200 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9E3C90.8030304@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> Message-ID: <1251887320.4946.32.camel@springer.wildebeest.org> On Wed, 2009-09-02 at 10:36 +0100, Andrew Haley wrote: > Mark Wielaard wrote: > > On Tue, 2009-09-01 at 23:15 +0100, Andrew John Hughes wrote: > >> 2009/9/1 : > >>> Added tag icedtea6-1.5.3 for changeset d0593233c9ce > >> Huh? Has there been a 1.5.2 release? I didn't see an announcement. > > > > Although it is technically possible to move a tag after it has been > > created, I don't think it is a good idea. Allocating a new tag name > > seems a better choice. > > Not to me. We surely don't want phantom tags for nonexistent releases. > This is very bad practice; IMO, as usual. OK, but then we need to better communicate when a tag/release is made. I had assumed that a tag is only created when the intention is to declare that changeset as the release. Tags that aren't stable feel wrong (IMO also of course), so 1.5.2 was tagged, but deemed not a great release, lets just better ourselves with the 1.5.3 tag/release. But I now assume that assumption was wrong :) So may I humbly suggest that even "routine" commits like these get a message to the list that explain their intention ("yeah, I am tagging this now as release-x-y-z, but don't count on it yet, it might move later"). Cheers, Mark From mark at klomp.org Wed Sep 2 04:29:24 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Sep 2009 13:29:24 +0200 Subject: [patch] Adding stack markings to the x86 assembly for not using executable stack In-Reply-To: References: <4A96663B.1040109@ubuntu.com> <17c6771e0908270404t3554158cka2afe14cd636f572@mail.gmail.com> <20090827162542.GJ10947@outflux.net> Message-ID: <1251890964.4946.43.camel@springer.wildebeest.org> On Tue, 2009-09-01 at 13:29 -0700, Tom Rodriguez wrote: > it wouldn't be a bad idea to request non- > executable stacks though this brings up a question about how all this > interacts with shared libraries. If you have an executable that > disables execute and it dlopens a library that doesn't, what happens? > Presumably the executables and libraries have to be in agreement for > this to really work, right? If anything (executable, shared library) needs executable stack ld.so will mark the stack as executable. When you dlopen a shared library that needs executable stack and the stack wasn't marked as executable yet then the stack will be made executable. Except of course when selinux is set to enforce disallowing marking the stack executable (which is a good thing to have, it will quickly catch mistakes like the above). Cheers, Mark From gnu_andrew at member.fsf.org Wed Sep 2 05:45:51 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Sep 2009 13:45:51 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9E3C90.8030304@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> Message-ID: <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> 2009/9/2 Andrew Haley : > Mark Wielaard wrote: >> Hi Andrew, >> >> On Tue, 2009-09-01 at 23:15 +0100, Andrew John Hughes wrote: >>> 2009/9/1 ?: >>>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>>> details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>>> author: langel >>>> date: Tue Sep 01 12:37:18 2009 -0400 >>>> >>>> ? ? ? ?Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >> >> Although it is technically possible to move a tag after it has been >> created, I don't think it is a good idea. Allocating a new tag name >> seems a better choice. > > Not to me. ?We surely don't want phantom tags for nonexistent releases. > This is very bad practice; IMO, as usual. > That's my opinion as well. We now seem to have two tags (1.5.2 and 1.5.3) for non-existent releases. The last release is still 1.5.1 and that's the only one of these I can download a tarball for from http://icedtea.classpath.org/download/source/. I agree the tags shouldn't move, but that only applies after a release has being made. I doubt anyone is going to be relying on this 1.5.2 tag as the only evidence of it is a single commit e-mail. I also think it should be fairly obvious that adding a tag does not constitute a release, but it seems that isn't the case. > 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 mark at klomp.org Wed Sep 2 06:36:36 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Sep 2009 15:36:36 +0200 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> Message-ID: <1251898596.9442.3.camel@hermans.wildebeest.org> Hi, On Wed, 2009-09-02 at 13:45 +0100, Andrew John Hughes wrote: > That's my opinion as well. We now seem to have two tags (1.5.2 and > 1.5.3) for non-existent releases. The last release is still 1.5.1 and > that's the only one of these I can download a tarball for from > http://icedtea.classpath.org/download/source/. I agree the tags > shouldn't move, but that only applies after a release has being made. > I doubt anyone is going to be relying on this 1.5.2 tag as the only > evidence of it is a single commit e-mail. I also think it should be > fairly obvious that adding a tag does not constitute a release, but it > seems that isn't the case. OK, apparently I am the only person who assumes tagging something with an official release name shows intent to do a release from that commit. IMHO it would be better to only tag official releases with official (sounding) release names. But in any case, please do communicate about the intent of any commit you make to avoid any confusion. Cheers, Mark From langel at redhat.com Wed Sep 2 06:47:29 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 02 Sep 2009 09:47:29 -0400 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> Message-ID: <4A9E7771.8050806@redhat.com> Andrew John Hughes wrote: > 2009/9/1 : > >> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >> details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >> author: langel >> date: Tue Sep 01 12:37:18 2009 -0400 >> >> Added tag icedtea6-1.5.3 for changeset d0593233c9ce >> >> >> diffstat: >> >> 1 file changed, 1 insertion(+) >> .hgtags | 1 + >> >> diffs (8 lines): >> >> diff -r d0593233c9ce -r 503129230ba0 .hgtags >> --- a/.hgtags Tue Sep 01 12:37:08 2009 -0400 >> +++ b/.hgtags Tue Sep 01 12:37:18 2009 -0400 >> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >> ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >> 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >> d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >> >> > > Huh? Has there been a 1.5.2 release? I didn't see an announcement. > Sorry, we were just building rpms for RHEL (including some important patches), there is no official release. I realize this is out of order, should I make a formal annoucement? Cheers, Lillian From gnu_andrew at member.fsf.org Wed Sep 2 07:18:55 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Sep 2009 15:18:55 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9E7771.8050806@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <4A9E7771.8050806@redhat.com> Message-ID: <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> 2009/9/2 Lillian Angel : > Andrew John Hughes wrote: >> >> 2009/9/1 ?: >> >>> >>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>> details: >>> http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>> author: langel >>> date: Tue Sep 01 12:37:18 2009 -0400 >>> >>> ? ? ? Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>> >>> >>> diffstat: >>> >>> 1 file changed, 1 insertion(+) >>> .hgtags | ? ?1 + >>> >>> diffs (8 lines): >>> >>> diff -r d0593233c9ce -r 503129230ba0 .hgtags >>> --- a/.hgtags ? Tue Sep 01 12:37:08 2009 -0400 >>> +++ b/.hgtags ? Tue Sep 01 12:37:18 2009 -0400 >>> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >>> ?ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >>> ?3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >>> ?d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >>> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >>> >>> >> >> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >> > > Sorry, we were just building rpms for RHEL (including some important > patches), there is no official release. I realize this is out of order, > should I make a formal annoucement? > > > Cheers, > Lillian > Are we now at the point on the 1.5 branch where a release would make sense? If so, then it should be tagged as icedtea6-1.5.2, tarballed and announced. The two current tags, icedtea6-1.5.2 and icedtea6-1.5.3, don't correspond to releases and should be removed. As regards tagging the tree, I don't see a problem with applying tags as needed for distro builds. They just shouldn't use the icedtea6-x syntax unless there is also going to be a formal release (tarball, announcement, et. al.) - that's what's caused the confusion here. If you look at the tags used by GCC (http://gcc.gnu.org/viewcvs/tags/) you will see they use all sorts of things beyond release markers. So if you need to mark the revision a RHEL package was based on, for instance, you could just use something like rhel- as a tag. Hope that clarifies things, 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 gnu_andrew at member.fsf.org Wed Sep 2 07:25:21 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Sep 2009 15:25:21 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <1251898596.9442.3.camel@hermans.wildebeest.org> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> <1251898596.9442.3.camel@hermans.wildebeest.org> Message-ID: <17c6771e0909020725x222754fak87bf099e3c3b6b24@mail.gmail.com> 2009/9/2 Mark Wielaard : > Hi, > > On Wed, 2009-09-02 at 13:45 +0100, Andrew John Hughes wrote: >> That's my opinion as well. ?We now seem to have two tags (1.5.2 and >> 1.5.3) for non-existent releases. ?The last release is still 1.5.1 and >> that's the only one of these I can download a tarball for from >> http://icedtea.classpath.org/download/source/. ?I agree the tags >> shouldn't move, but that only applies after a release has being made. >> I doubt anyone is going to be relying on this 1.5.2 tag as the only >> evidence of it is a single commit e-mail. ?I also think it should be >> fairly obvious that adding a tag does not constitute a release, but it >> seems that isn't the case. > > OK, apparently I am the only person who assumes tagging something with > an official release name shows intent to do a release from that commit. > IMHO it would be better to only tag official releases with official > (sounding) release names. But in any case, please do communicate about > the intent of any commit you make to avoid any confusion. > > Cheers, > > Mark > > I don't disagree they indicate _intent_ to create a release; that's why I queried the change to begin with. My point was that the changeset tagged icedtea6-1.5.2 didn't result in a release with that name, so can quite happily be moved or just removed altogether. Given Lillian's e-mail, I think there was some confusion over tag names (we've never used anything but icedtea6-x or icedtea-x after all) and that these tags should have instead been named after the distro package in order to declare their true intent. -- 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 a.radke at arcor.de Wed Sep 2 10:11:21 2009 From: a.radke at arcor.de (Andreas Radke) Date: Wed, 2 Sep 2009 19:11:21 +0200 Subject: a new release or not??? In-Reply-To: <17c6771e0909020725x222754fak87bf099e3c3b6b24@mail.gmail.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> <1251898596.9442.3.camel@hermans.wildebeest.org> <17c6771e0909020725x222754fak87bf099e3c3b6b24@mail.gmail.com> Message-ID: <20090902191121.33f51edc@workstation64.home> Wtf are you doing here? I'm the openjdk package maintainer for a linux distribution and see some security related patches floating around in the thread topic and then a release tag and then it's going to become a never announced internal whatever??? That doesn't look professional! And there are more people out there than RedHat/Ubuntu using your baby! Please take official releases more serious! -Andreas Radke ArchLinux From mark at klomp.org Wed Sep 2 10:28:45 2009 From: mark at klomp.org (Mark Wielaard) Date: Wed, 02 Sep 2009 19:28:45 +0200 Subject: a new release or not??? In-Reply-To: <20090902191121.33f51edc@workstation64.home> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> <1251898596.9442.3.camel@hermans.wildebeest.org> <17c6771e0909020725x222754fak87bf099e3c3b6b24@mail.gmail.com> <20090902191121.33f51edc@workstation64.home> Message-ID: <1251912525.9442.17.camel@hermans.wildebeest.org> Hi Andreas, On Wed, 2009-09-02 at 19:11 +0200, Andreas Radke wrote: > Wtf are you doing here? :) Discussing. Please feel free to join. > I'm the openjdk package maintainer for a linux distribution and see > some security related patches floating around in the thread topic and > then a release tag and then it's going to become a never announced > internal whatever??? Just to be clear the release with all known security issues resolved was IcedTea6 1.5.1, officially released on August 7: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-August/006764.html The discussion/confusion is around the fact that there are two release branches active. IcedTea6-1.5 and IcedTea6-1.6. Lillian is handling the 1.5 branch and Andrew is handling the 1.6 branch (there is also of course the trunk IcedTea6 where all new development takes place). Nothing is "internal" whatever, everything is public at http://icedtea.classpath.org/hg/ (including all tags for each branch) Even the discussion about what to release as what is public (on this list). Please do feel free to join the discussion about what you like to be considered for each (future) release. Cheers, Mark From aph at redhat.com Wed Sep 2 10:57:18 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 02 Sep 2009 18:57:18 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <1251898596.9442.3.camel@hermans.wildebeest.org> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <1251877079.2759.9.camel@hermans.wildebeest.org> <4A9E3C90.8030304@redhat.com> <17c6771e0909020545v566237f6t126f5c34d6ff3513@mail.gmail.com> <1251898596.9442.3.camel@hermans.wildebeest.org> Message-ID: <4A9EB1FE.2010102@redhat.com> Mark Wielaard wrote: > On Wed, 2009-09-02 at 13:45 +0100, Andrew John Hughes wrote: >> That's my opinion as well. We now seem to have two tags (1.5.2 and >> 1.5.3) for non-existent releases. The last release is still 1.5.1 and >> that's the only one of these I can download a tarball for from >> http://icedtea.classpath.org/download/source/. I agree the tags >> shouldn't move, but that only applies after a release has being made. >> I doubt anyone is going to be relying on this 1.5.2 tag as the only >> evidence of it is a single commit e-mail. I also think it should be >> fairly obvious that adding a tag does not constitute a release, but it >> seems that isn't the case. > > OK, apparently I am the only person who assumes tagging something with > an official release name shows intent to do a release from that commit. > IMHO it would be better to only tag official releases with official > (sounding) release names. But in any case, please do communicate about > the intent of any commit you make to avoid any confusion. Yes. It is probably best to name the tag icedtea-1.5.x-candidate-N and then only make the icedtea-1.5.x-release tag when the release actually happens. That way, you don't have to explain what the tag means: it's in the name. Andrew. From aph at redhat.com Wed Sep 2 11:06:45 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 02 Sep 2009 19:06:45 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <4A9E7771.8050806@redhat.com> <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> Message-ID: <4A9EB435.5080508@redhat.com> Andrew John Hughes wrote: > 2009/9/2 Lillian Angel : >> Andrew John Hughes wrote: >>> 2009/9/1 : >>> >>>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>>> details: >>>> http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>>> author: langel >>>> date: Tue Sep 01 12:37:18 2009 -0400 >>>> >>>> Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>>> >>>> >>>> diffstat: >>>> >>>> 1 file changed, 1 insertion(+) >>>> .hgtags | 1 + >>>> >>>> diffs (8 lines): >>>> >>>> diff -r d0593233c9ce -r 503129230ba0 .hgtags >>>> --- a/.hgtags Tue Sep 01 12:37:08 2009 -0400 >>>> +++ b/.hgtags Tue Sep 01 12:37:18 2009 -0400 >>>> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >>>> ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >>>> 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >>>> d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >>>> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >>>> >>>> >>> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >>> >> Sorry, we were just building rpms for RHEL (including some important >> patches), there is no official release. I realize this is out of order, >> should I make a formal annoucement? > > Are we now at the point on the 1.5 branch where a release would make > sense? If so, then it should be tagged as icedtea6-1.5.2, tarballed > and announced. The two current tags, icedtea6-1.5.2 and > icedtea6-1.5.3, don't correspond to releases and should be removed. I think this will be a useful release. It's basically the stable 1.5 branch plus a couple of bug fixes. I know that we at Red Hat want it for a RHEL release, but all distros that are using 1.5 would benefit. So, icedtea6-1.5.2 would IMO be appropriate. Andrew. From langel at redhat.com Wed Sep 2 11:09:58 2009 From: langel at redhat.com (Lillian Angel) Date: Wed, 02 Sep 2009 14:09:58 -0400 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9EB435.5080508@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <4A9E7771.8050806@redhat.com> <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> <4A9EB435.5080508@redhat.com> Message-ID: <4A9EB4F6.9030206@redhat.com> Andrew Haley wrote: > Andrew John Hughes wrote: > >> 2009/9/2 Lillian Angel : >> >>> Andrew John Hughes wrote: >>> >>>> 2009/9/1 : >>>> >>>> >>>>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>>>> details: >>>>> http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>>>> author: langel >>>>> date: Tue Sep 01 12:37:18 2009 -0400 >>>>> >>>>> Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>>>> >>>>> >>>>> diffstat: >>>>> >>>>> 1 file changed, 1 insertion(+) >>>>> .hgtags | 1 + >>>>> >>>>> diffs (8 lines): >>>>> >>>>> diff -r d0593233c9ce -r 503129230ba0 .hgtags >>>>> --- a/.hgtags Tue Sep 01 12:37:08 2009 -0400 >>>>> +++ b/.hgtags Tue Sep 01 12:37:18 2009 -0400 >>>>> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >>>>> ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >>>>> 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >>>>> d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >>>>> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >>>>> >>>>> >>>>> >>>> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >>>> >>>> >>> Sorry, we were just building rpms for RHEL (including some important >>> patches), there is no official release. I realize this is out of order, >>> should I make a formal annoucement? >>> >> Are we now at the point on the 1.5 branch where a release would make >> sense? If so, then it should be tagged as icedtea6-1.5.2, tarballed >> and announced. The two current tags, icedtea6-1.5.2 and >> icedtea6-1.5.3, don't correspond to releases and should be removed. >> > > I think this will be a useful release. It's basically the stable 1.5 > branch plus a couple of bug fixes. I know that we at Red Hat want it > for a RHEL release, but all distros that are using 1.5 would benefit. > So, icedtea6-1.5.2 would IMO be appropriate. Do you propose we move the 1.5.2 tag to replace the 1.5.3 tag and have an official release then? Lillian From aph at redhat.com Wed Sep 2 11:10:38 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 02 Sep 2009 19:10:38 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9EB4F6.9030206@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <4A9E7771.8050806@redhat.com> <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> <4A9EB435.5080508@redhat.com> <4A9EB4F6.9030206@redhat.com> Message-ID: <4A9EB51E.1020300@redhat.com> Lillian Angel wrote: > Andrew Haley wrote: >> Andrew John Hughes wrote: >> >>> 2009/9/2 Lillian Angel : >>> >>>> Andrew John Hughes wrote: >>>> >>>>> 2009/9/1 : >>>>> >>>>> >>>>>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>>>>> details: >>>>>> http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>>>>> >>>>>> author: langel >>>>>> date: Tue Sep 01 12:37:18 2009 -0400 >>>>>> >>>>>> Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>>>>> >>>>>> >>>>>> diffstat: >>>>>> >>>>>> 1 file changed, 1 insertion(+) >>>>>> .hgtags | 1 + >>>>>> >>>>>> diffs (8 lines): >>>>>> >>>>>> diff -r d0593233c9ce -r 503129230ba0 .hgtags >>>>>> --- a/.hgtags Tue Sep 01 12:37:08 2009 -0400 >>>>>> +++ b/.hgtags Tue Sep 01 12:37:18 2009 -0400 >>>>>> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >>>>>> ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >>>>>> 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >>>>>> d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >>>>>> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >>>>>> >>>>>> >>>>>> >>>>> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >>>>> >>>>> >>>> Sorry, we were just building rpms for RHEL (including some important >>>> patches), there is no official release. I realize this is out of order, >>>> should I make a formal annoucement? >>>> >>> Are we now at the point on the 1.5 branch where a release would make >>> sense? If so, then it should be tagged as icedtea6-1.5.2, tarballed >>> and announced. The two current tags, icedtea6-1.5.2 and >>> icedtea6-1.5.3, don't correspond to releases and should be removed. >>> >> >> I think this will be a useful release. It's basically the stable 1.5 >> branch plus a couple of bug fixes. I know that we at Red Hat want it >> for a RHEL release, but all distros that are using 1.5 would benefit. >> So, icedtea6-1.5.2 would IMO be appropriate. > > > Do you propose we move the 1.5.2 tag to replace the 1.5.3 tag and have > an official release then? That's what I'm suggesting, if no-one objects. Assuming that it's passed all its tests, that is! Andrew. From gnu_andrew at member.fsf.org Wed Sep 2 11:11:44 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 2 Sep 2009 19:11:44 +0100 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.3 for changeset... In-Reply-To: <4A9EB51E.1020300@redhat.com> References: <17c6771e0909011515q65e8b115j851851f3313cd584@mail.gmail.com> <4A9E7771.8050806@redhat.com> <17c6771e0909020718k7509717cv7a0f2bd75d12fd68@mail.gmail.com> <4A9EB435.5080508@redhat.com> <4A9EB4F6.9030206@redhat.com> <4A9EB51E.1020300@redhat.com> Message-ID: <17c6771e0909021111n647b1121i51c7bf9e83e73ea7@mail.gmail.com> 2009/9/2 Andrew Haley : > Lillian Angel wrote: >> Andrew Haley wrote: >>> Andrew John Hughes wrote: >>> >>>> 2009/9/2 Lillian Angel : >>>> >>>>> Andrew John Hughes wrote: >>>>> >>>>>> 2009/9/1 ?: >>>>>> >>>>>> >>>>>>> changeset 503129230ba0 in /hg/release/icedtea6-1.5 >>>>>>> details: >>>>>>> http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=503129230ba0 >>>>>>> >>>>>>> author: langel >>>>>>> date: Tue Sep 01 12:37:18 2009 -0400 >>>>>>> >>>>>>> ? ? ? Added tag icedtea6-1.5.3 for changeset d0593233c9ce >>>>>>> >>>>>>> >>>>>>> diffstat: >>>>>>> >>>>>>> 1 file changed, 1 insertion(+) >>>>>>> .hgtags | ? ?1 + >>>>>>> >>>>>>> diffs (8 lines): >>>>>>> >>>>>>> diff -r d0593233c9ce -r 503129230ba0 .hgtags >>>>>>> --- a/.hgtags ? Tue Sep 01 12:37:08 2009 -0400 >>>>>>> +++ b/.hgtags ? Tue Sep 01 12:37:18 2009 -0400 >>>>>>> @@ -17,3 +17,4 @@ ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 >>>>>>> ?ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 >>>>>>> ?3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 >>>>>>> ?d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 >>>>>>> +d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 >>>>>>> >>>>>>> >>>>>>> >>>>>> Huh? Has there been a 1.5.2 release? I didn't see an announcement. >>>>>> >>>>>> >>>>> Sorry, we were just building rpms for RHEL (including some important >>>>> patches), there is no official release. I realize this is out of order, >>>>> should I make a formal annoucement? >>>>> >>>> Are we now at the point on the 1.5 branch where a release would make >>>> sense? ?If so, then it should be tagged as icedtea6-1.5.2, tarballed >>>> and announced. ?The two current tags, icedtea6-1.5.2 and >>>> icedtea6-1.5.3, don't correspond to releases and should be removed. >>>> >>> >>> I think this will be a useful release. ?It's basically the stable 1.5 >>> branch plus a couple of bug fixes. ?I know that we at Red Hat want it >>> for a RHEL release, but all distros that are using 1.5 would benefit. >>> So, icedtea6-1.5.2 would IMO be appropriate. >> >> >> Do you propose we move the 1.5.2 tag to replace the 1.5.3 tag and have >> an official release then? > > That's what I'm suggesting, if no-one objects. ?Assuming that it's passed > all its tests, that is! > > Andrew. > > I'd agree with that. -- 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 icedtea.classpath.org Wed Sep 2 11:16:34 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Wed, 02 Sep 2009 18:16:34 +0000 Subject: /hg/release/icedtea6-1.5: 2009-09-02 Lillian Angel changeset 5a75245ca41a in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=5a75245ca41a author: langel date: Wed Sep 02 14:19:45 2009 -0400 2009-09-02 Lillian Angel * configure.ac: Moved version back to 1.5.2. * .hgtags: Removed icedtea6-1.5.3 tag, and re-tagged as icedtea6-1.5.2 in preparation for 1.5.2 release. diffstat: 3 files changed, 7 insertions(+), 3 deletions(-) .hgtags | 2 -- ChangeLog | 6 ++++++ configure.ac | 2 +- diffs (31 lines): diff -r 503129230ba0 -r 5a75245ca41a .hgtags --- a/.hgtags Tue Sep 01 12:37:18 2009 -0400 +++ b/.hgtags Wed Sep 02 14:19:45 2009 -0400 @@ -16,5 +16,3 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 -d70ae78f89c2cd9cb782f197804a5bcf99ca9949 icedtea6-1.5.2 -d0593233c9ce2110854a97a36eda57996ba34d0e icedtea6-1.5.3 diff -r 503129230ba0 -r 5a75245ca41a ChangeLog --- a/ChangeLog Tue Sep 01 12:37:18 2009 -0400 +++ b/ChangeLog Wed Sep 02 14:19:45 2009 -0400 @@ -1,3 +1,9 @@ 2009-09-01 Lillian Angel + + * configure.ac: Moved version back to 1.5.2. + * .hgtags: Removed icedtea6-1.5.3 tag, and re-tagged as icedtea6-1.5.2 + in preparation for 1.5.2 release. + 2009-09-01 Lillian Angel * configure.ac: Bumped version. diff -r 503129230ba0 -r 5a75245ca41a configure.ac --- a/configure.ac Tue Sep 01 12:37:18 2009 -0400 +++ b/configure.ac Wed Sep 02 14:19:45 2009 -0400 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.5.3], [distro-pkg -AC_INIT([icedtea6], [1.5.3], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.5.2], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From langel at icedtea.classpath.org Wed Sep 2 11:16:45 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Wed, 02 Sep 2009 18:16:45 +0000 Subject: /hg/release/icedtea6-1.5: Added tag icedtea6-1.5.2 for changeset... Message-ID: changeset 180570a437ab in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=180570a437ab author: langel date: Wed Sep 02 14:19:58 2009 -0400 Added tag icedtea6-1.5.2 for changeset 5a75245ca41a diffstat: 1 file changed, 1 insertion(+) .hgtags | 1 + diffs (8 lines): diff -r 5a75245ca41a -r 180570a437ab .hgtags --- a/.hgtags Wed Sep 02 14:19:45 2009 -0400 +++ b/.hgtags Wed Sep 02 14:19:58 2009 -0400 @@ -16,3 +16,4 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 ffe92bbe7e8466b323f0aedbdac4b6ecf44eafe2 icedtea6-1.5 3b93da7c778a0a5147db1eec28218a8df462161d icedtea6-1.5.1 +5a75245ca41a1f9885fc2853af4c6147ef6445f4 icedtea6-1.5.2 From gbenson at icedtea.classpath.org Thu Sep 3 06:10:02 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Sep 2009 13:10:02 +0000 Subject: /hg/icedtea6: 2009-09-03 Gary Benson Message-ID: changeset ad90da0ee95f in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ad90da0ee95f author: Gary Benson date: Thu Sep 03 09:03:41 2009 -0400 2009-09-03 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Added copyright header. * ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp: Added copyright header and "intentionally empty" message. * ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp (ZeroStackPrinter::print_word): Replaced a couple of "%d"s with INTPTR_FORMAT. diffstat: 19 files changed, 473 insertions(+), 2 deletions(-) ChangeLog | 30 ++++++++++ ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 25 ++++++++ ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp | 4 - ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp | 26 ++++++++ ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp | 26 ++++++++ ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp | 26 ++++++++ ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp | 26 ++++++++ ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp | 26 ++++++++ diffs (truncated from 570 to 500 lines): diff -r 21edcf84dc76 -r ad90da0ee95f ChangeLog --- a/ChangeLog Mon Aug 31 07:45:07 2009 +0200 +++ b/ChangeLog Thu Sep 03 09:03:41 2009 -0400 @@ -1,3 +1,33 @@ 2009-08-31 Mark Wielaard + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Added copyright header. + * ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp: + Added copyright header and "intentionally empty" message. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp: + Likewise. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp + (ZeroStackPrinter::print_word): Replaced a couple of "%d"s with + INTPTR_FORMAT. + 2009-08-31 Mark Wielaard Keith Seitz diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -1,3 +1,28 @@ +/* + * Copyright 1997-2007 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. + * + * 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 defined(PRODUCT) && defined(HOTSPOT_ASM) #define _iaccess_0 ((Bytecodes::Code)0xdb) #define _iaccess_1 ((Bytecodes::Code)0xdc) diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -190,7 +190,7 @@ class ZeroStackPrinter { } } else { - snprintf(_buf, _buflen, "%s[%d]", + snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", top_frame ? "stack_word" : "local", istate->stack_base() - addr - 1); field = _buf; @@ -250,7 +250,7 @@ class ZeroStackPrinter { } } else { - snprintf(_buf, _buflen, "%s[%d]", + snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", top_frame ? "stack_word" : "local", stack_base - addr - 1); field = _buf; diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 -r ad90da0ee95f ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp Thu Sep 03 09:03:41 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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 From gbenson at redhat.com Thu Sep 3 06:17:57 2009 From: gbenson at redhat.com (Gary Benson) Date: Thu, 3 Sep 2009 14:17:57 +0100 Subject: Zero tweaks Message-ID: <20090903131757.GB3933@redhat.com> Hi all, This commit updates the Zero in icedtea6 to match the one in http://cr.openjdk.java.net/~gbenson/zero-07/. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 21edcf84dc76 ChangeLog --- a/ChangeLog Mon Aug 31 07:45:07 2009 +0200 +++ b/ChangeLog Thu Sep 03 09:00:35 2009 -0400 @@ -1,3 +1,33 @@ +2009-09-03 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Added copyright header. + * ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp: + Added copyright header and "intentionally empty" message. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp: + Likewise. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp + (ZeroStackPrinter::print_word): Replaced a couple of "%d"s with + INTPTR_FORMAT. + 2009-08-31 Mark Wielaard Keith Seitz diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -1,3 +1,28 @@ +/* + * Copyright 1997-2007 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. + * + * 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 defined(PRODUCT) && defined(HOTSPOT_ASM) #define _iaccess_0 ((Bytecodes::Code)0xdb) #define _iaccess_1 ((Bytecodes::Code)0xdc) diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -190,7 +190,7 @@ } } else { - snprintf(_buf, _buflen, "%s[%d]", + snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", top_frame ? "stack_word" : "local", istate->stack_base() - addr - 1); field = _buf; @@ -250,7 +250,7 @@ } } else { - snprintf(_buf, _buflen, "%s[%d]", + snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", top_frame ? "stack_word" : "local", stack_base - addr - 1); field = _buf; diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty diff -r 21edcf84dc76 ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp Mon Aug 31 07:45:07 2009 +0200 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp Thu Sep 03 09:00:35 2009 -0400 @@ -0,0 +1,26 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + +// This file is intentionally empty From gbenson at icedtea.classpath.org Thu Sep 3 08:29:31 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 03 Sep 2009 15:29:31 +0000 Subject: /hg/icedtea6: 2009-09-03 Gary Benson Message-ID: changeset cc4f8460a676 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=cc4f8460a676 author: Gary Benson date: Thu Sep 03 11:23:31 2009 -0400 2009-09-03 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: Reformatted with trailing opening braces. * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/codeBuffer_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/copy_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/debug_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/dump_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/jniFastGetField_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/registerMap_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/register_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/vm_version_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/vmreg_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/vmreg_zero.inline.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline .hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hp p: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp: Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: Likewise. diffstat: 58 files changed, 624 insertions(+), 892 deletions(-) ChangeLog | 70 ++++ ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp | 36 -- ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp | 51 +-- ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp | 43 ++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp | 145 ++++------ ports/hotspot/src/cpu/zero/vm/codeBuffer_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/copy_zero.hpp | 38 +- ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 80 ++--- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/debug_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/dump_zero.cpp | 5 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/entry_zero.hpp | 18 - ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 51 +-- ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 25 - ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 63 +--- ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp | 9 ports/hotspot/src/cpu/zero/vm/icache_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/icache_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | 24 - ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp | 51 +-- ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp | 15 - ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp | 24 - ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp | 20 - ports/hotspot/src/cpu/zero/vm/jniFastGetField_zero.cpp | 24 - ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp | 105 ++----- ports/hotspot/src/cpu/zero/vm/registerMap_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/register_zero.hpp | 18 - ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp | 35 +- ports/hotspot/src/cpu/zero/vm/relocInfo_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp | 28 - ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp | 12 ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 75 +---- ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp | 27 - ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp | 12 ports/hotspot/src/cpu/zero/vm/vm_version_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/vmreg_zero.cpp | 15 - ports/hotspot/src/cpu/zero/vm/vmreg_zero.inline.hpp | 8 ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp | 12 ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp | 78 +---- ports/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp | 9 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 27 - ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 138 ++++----- ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp | 3 ports/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp | 6 ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp | 9 ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp | 6 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 42 -- diffs (truncated from 3573 to 500 lines): diff -r ad90da0ee95f -r cc4f8460a676 ChangeLog --- a/ChangeLog Thu Sep 03 09:03:41 2009 -0400 +++ b/ChangeLog Thu Sep 03 11:23:31 2009 -0400 @@ -1,3 +1,73 @@ 2009-09-03 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: Reformatted + with trailing opening braces. + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/codeBuffer_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/copy_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/debug_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/dump_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/jniFastGetField_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/registerMap_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/register_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vm_version_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vmreg_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vmreg_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: + Likewise. + 2009-09-03 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp Thu Sep 03 11:23:31 2009 -0400 @@ -26,67 +26,55 @@ #include "incls/_precompiled.incl" #include "incls/_assembler_zero.cpp.incl" -int AbstractAssembler::code_fill_byte() -{ +int AbstractAssembler::code_fill_byte() { return 0; } -void Assembler::pd_patch_instruction(address branch, address target) -{ +void Assembler::pd_patch_instruction(address branch, address target) { Unimplemented(); } #ifndef PRODUCT -void Assembler::pd_print_patched_instruction(address branch) -{ +void Assembler::pd_print_patched_instruction(address branch) { Unimplemented(); } #endif // PRODUCT -void MacroAssembler::align(int modulus) -{ +void MacroAssembler::align(int modulus) { while (offset() % modulus != 0) emit_byte(AbstractAssembler::code_fill_byte()); } -void MacroAssembler::bang_stack_with_offset(int offset) -{ +void MacroAssembler::bang_stack_with_offset(int offset) { Unimplemented(); } -void MacroAssembler::advance(int bytes) -{ +void MacroAssembler::advance(int bytes) { _code_pos += bytes; sync(); } -void MacroAssembler::store_oop(jobject obj) -{ +void MacroAssembler::store_oop(jobject obj) { code_section()->relocate(pc(), oop_Relocation::spec_for_immediate()); emit_address((address) obj); } -static void _UnimplementedStub() -{ +static void _UnimplementedStub() { report_unimplemented(__FILE__, __LINE__); } -address UnimplementedStub() -{ +address UnimplementedStub() { return (address) _UnimplementedStub; } -address UnimplementedEntry() -{ +address UnimplementedEntry() { return (address) _UnimplementedStub; } -static void _ShouldNotReachHereStub() -{ +static void _ShouldNotReachHereStub() { report_should_not_reach_here(__FILE__, __LINE__); } -address ShouldNotReachHereStub() -{ +address ShouldNotReachHereStub() { return (address) _ShouldNotReachHereStub; } diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Thu Sep 03 11:23:31 2009 -0400 @@ -52,8 +52,7 @@ class MacroAssembler : public Assembler }; #ifdef ASSERT -inline bool AbstractAssembler::pd_check_instruction_mark() -{ +inline bool AbstractAssembler::pd_check_instruction_mark() { Unimplemented(); } #endif diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp Thu Sep 03 11:23:31 2009 -0400 @@ -28,8 +28,7 @@ #ifdef CC_INTERP -const char *BytecodeInterpreter::name_of_field_at_address(address addr) -{ +const char *BytecodeInterpreter::name_of_field_at_address(address addr) { #define DO(member) {if (addr == (address) &(member)) return XSTR(member);} DO(_thread); DO(_bcp); diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp Thu Sep 03 11:23:31 2009 -0400 @@ -35,72 +35,55 @@ interpreterState _self_link; public: - inline void set_locals(intptr_t* new_locals) - { + inline void set_locals(intptr_t* new_locals) { _locals = new_locals; } - inline void set_method(methodOop new_method) - { + inline void set_method(methodOop new_method) { _method = new_method; } - inline interpreterState self_link() - { + inline interpreterState self_link() { return _self_link; } - inline void set_self_link(interpreterState new_self_link) - { + inline void set_self_link(interpreterState new_self_link) { _self_link = new_self_link; } - inline interpreterState prev_link() - { + inline interpreterState prev_link() { return _prev_link; } - inline void set_prev_link(interpreterState new_prev_link) - { + inline void set_prev_link(interpreterState new_prev_link) { _prev_link = new_prev_link; } - inline void set_stack_limit(intptr_t* new_stack_limit) - { + inline void set_stack_limit(intptr_t* new_stack_limit) { _stack_limit = new_stack_limit; } - inline void set_stack_base(intptr_t* new_stack_base) - { + inline void set_stack_base(intptr_t* new_stack_base) { _stack_base = new_stack_base; } - inline void set_monitor_base(BasicObjectLock *new_monitor_base) - { + inline void set_monitor_base(BasicObjectLock *new_monitor_base) { _monitor_base = new_monitor_base; } - inline void set_thread(JavaThread* new_thread) - { + inline void set_thread(JavaThread* new_thread) { _thread = new_thread; } - inline void set_constants(constantPoolCacheOop new_constants) - { + inline void set_constants(constantPoolCacheOop new_constants) { _constants = new_constants; } - inline oop oop_temp() - { + inline oop oop_temp() { return _oop_temp; } - inline oop *oop_temp_addr() - { + inline oop *oop_temp_addr() { return &_oop_temp; } - inline void set_oop_temp(oop new_oop_temp) - { + inline void set_oop_temp(oop new_oop_temp) { _oop_temp = new_oop_temp; } - inline address callee_entry_point() - { + inline address callee_entry_point() { return _result._to_call._callee_entry_point; } - inline address osr_buf() - { + inline address osr_buf() { return _result._osr._osr_buf; } - inline address osr_entry() - { + inline address osr_entry() { return _result._osr._osr_entry; } diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp Thu Sep 03 11:23:31 2009 -0400 @@ -25,15 +25,33 @@ // Inline interpreter functions for zero -inline jfloat BytecodeInterpreter::VMfloatAdd(jfloat op1, jfloat op2) { return op1 + op2; } -inline jfloat BytecodeInterpreter::VMfloatSub(jfloat op1, jfloat op2) { return op1 - op2; } -inline jfloat BytecodeInterpreter::VMfloatMul(jfloat op1, jfloat op2) { return op1 * op2; } -inline jfloat BytecodeInterpreter::VMfloatDiv(jfloat op1, jfloat op2) { return op1 / op2; } -inline jfloat BytecodeInterpreter::VMfloatRem(jfloat op1, jfloat op2) { return fmod(op1, op2); } - -inline jfloat BytecodeInterpreter::VMfloatNeg(jfloat op) { return -op; } - -inline int32_t BytecodeInterpreter::VMfloatCompare(jfloat op1, jfloat op2, int32_t direction) { +inline jfloat BytecodeInterpreter::VMfloatAdd(jfloat op1, jfloat op2) { + return op1 + op2; +} + +inline jfloat BytecodeInterpreter::VMfloatSub(jfloat op1, jfloat op2) { + return op1 - op2; +} + +inline jfloat BytecodeInterpreter::VMfloatMul(jfloat op1, jfloat op2) { + return op1 * op2; +} + +inline jfloat BytecodeInterpreter::VMfloatDiv(jfloat op1, jfloat op2) { + return op1 / op2; +} + +inline jfloat BytecodeInterpreter::VMfloatRem(jfloat op1, jfloat op2) { + return fmod(op1, op2); +} + +inline jfloat BytecodeInterpreter::VMfloatNeg(jfloat op) { + return -op; +} + +inline int32_t BytecodeInterpreter::VMfloatCompare(jfloat op1, + jfloat op2, + int32_t direction) { return ( op1 < op2 ? -1 : op1 > op2 ? 1 : op1 == op2 ? 0 : @@ -41,7 +59,8 @@ inline int32_t BytecodeInterpreter::VMfl } -inline void BytecodeInterpreter::VMmemCopy64(uint32_t to[2], const uint32_t from[2]) { +inline void BytecodeInterpreter::VMmemCopy64(uint32_t to[2], + const uint32_t from[2]) { *(uint64_t *) to = *(uint64_t *) from; } @@ -182,7 +201,9 @@ inline jdouble BytecodeInterpreter::VMdo return op1 - op2; } -inline int32_t BytecodeInterpreter::VMdoubleCompare(jdouble op1, jdouble op2, int32_t direction) { +inline int32_t BytecodeInterpreter::VMdoubleCompare(jdouble op1, + jdouble op2, + int32_t direction) { return ( op1 < op2 ? -1 : op1 > op2 ? 1 : op1 == op2 ? 0 : diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Thu Sep 03 11:23:31 2009 -0400 @@ -26,8 +26,7 @@ #include "incls/_precompiled.incl" #include "incls/_bytecodes_zero.cpp.incl" -void Bytecodes::pd_initialize() -{ +void Bytecodes::pd_initialize() { #if defined(PRODUCT) && defined(HOTSPOT_ASM) def(_iaccess_0, "_iaccess_0", "b_jj", NULL, T_INT, 1, true, _aload_0); def(_iaccess_1, "_iaccess_1", "b_jj", NULL, T_INT, 1, true, _aload_1); diff -r ad90da0ee95f -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp Thu Sep 03 09:03:41 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp Thu Sep 03 11:23:31 2009 -0400 @@ -27,8 +27,7 @@ class Bytes: AllStatic { public: // Returns true if the byte ordering used by Java is different // from the native byte ordering of the underlying machine. - static inline bool is_Java_byte_ordering_different() - { + static inline bool is_Java_byte_ordering_different() { #ifdef VM_LITTLE_ENDIAN return true; #else @@ -48,10 +47,10 @@ class Bytes: AllStatic { static inline u4 get_native_u4(address p) { switch (intptr_t(p) & 3) { - case 0: return *(u4*)p; - - case 2: return ( u4( ((u2*)p)[1] ) << 16 ) - | ( u4( ((u2*)p)[0] ) ); + case 0: return *(u4*)p; + + case 2: return ( u4( ((u2*)p)[1] ) << 16 ) + | ( u4( ((u2*)p)[0] ) ); default: return ( u4(p[3]) << 24 ) | ( u4(p[2]) << 16 ) @@ -62,29 +61,29 @@ class Bytes: AllStatic { static inline u8 get_native_u8(address p) { switch (intptr_t(p) & 7) { - case 0: return *(u8*)p; - - case 4: return ( u8( ((u4*)p)[1] ) << 32 ) - | ( u8( ((u4*)p)[0] ) ); - - case 2: return ( u8( ((u2*)p)[3] ) << 48 ) - | ( u8( ((u2*)p)[2] ) << 32 ) - | ( u8( ((u2*)p)[1] ) << 16 ) - | ( u8( ((u2*)p)[0] ) ); - - default: return ( u8(p[7]) << 56 ) - | ( u8(p[6]) << 48 ) - | ( u8(p[5]) << 40 ) - | ( u8(p[4]) << 32 ) - | ( u8(p[3]) << 24 ) - | ( u8(p[2]) << 16 ) - | ( u8(p[1]) << 8 ) - | u8(p[0]); - } - } - - static inline void put_native_u2(address p, u2 x) { - if ( (intptr_t(p) & 1) == 0 ) *(u2*)p = x; + case 0: return *(u8*)p; + + case 4: return ( u8( ((u4*)p)[1] ) << 32 ) + | ( u8( ((u4*)p)[0] ) ); + + case 2: return ( u8( ((u2*)p)[3] ) << 48 ) + | ( u8( ((u2*)p)[2] ) << 32 ) + | ( u8( ((u2*)p)[1] ) << 16 ) + | ( u8( ((u2*)p)[0] ) ); + + default: return ( u8(p[7]) << 56 ) + | ( u8(p[6]) << 48 ) + | ( u8(p[5]) << 40 ) + | ( u8(p[4]) << 32 ) + | ( u8(p[3]) << 24 ) + | ( u8(p[2]) << 16 ) + | ( u8(p[1]) << 8 ) + | u8(p[0]); + } + } + + static inline void put_native_u2(address p, u2 x) { + if ((intptr_t(p) & 1) == 0) *(u2*) p = x; else { p[1] = x >> 8; p[0] = x; @@ -143,10 +142,10 @@ class Bytes: AllStatic { static inline u4 get_native_u4(address p) { switch (intptr_t(p) & 3) { - case 0: return *(u4*)p; - - case 2: return ( u4( ((u2*)p)[0] ) << 16 ) - | ( u4( ((u2*)p)[1] ) ); + case 0: return *(u4*)p; + + case 2: return ( u4( ((u2*)p)[0] ) << 16 ) + | ( u4( ((u2*)p)[1] ) ); default: return ( u4(p[0]) << 24 ) | ( u4(p[1]) << 16 ) @@ -157,28 +156,28 @@ class Bytes: AllStatic { static inline u8 get_native_u8(address p) { switch (intptr_t(p) & 7) { - case 0: return *(u8*)p; - - case 4: return ( u8( ((u4*)p)[0] ) << 32 ) - | ( u8( ((u4*)p)[1] ) ); - - case 2: return ( u8( ((u2*)p)[0] ) << 48 ) - | ( u8( ((u2*)p)[1] ) << 32 ) - | ( u8( ((u2*)p)[2] ) << 16 ) - | ( u8( ((u2*)p)[3] ) ); - - default: return ( u8(p[0]) << 56 ) - | ( u8(p[1]) << 48 ) - | ( u8(p[2]) << 40 ) - | ( u8(p[3]) << 32 ) - | ( u8(p[4]) << 24 ) - | ( u8(p[5]) << 16 ) - | ( u8(p[6]) << 8 ) - | u8(p[7]); - } - } - - static inline void put_native_u2(address p, u2 x) { + case 0: return *(u8*)p; + + case 4: return ( u8( ((u4*)p)[0] ) << 32 ) + | ( u8( ((u4*)p)[1] ) ); + + case 2: return ( u8( ((u2*)p)[0] ) << 48 ) + | ( u8( ((u2*)p)[1] ) << 32 ) + | ( u8( ((u2*)p)[2] ) << 16 ) + | ( u8( ((u2*)p)[3] ) ); + + default: return ( u8(p[0]) << 56 ) + | ( u8(p[1]) << 48 ) + | ( u8(p[2]) << 40 ) + | ( u8(p[3]) << 32 ) + | ( u8(p[4]) << 24 ) + | ( u8(p[5]) << 16 ) + | ( u8(p[6]) << 8 ) + | u8(p[7]); + } From bugzilla-daemon at icedtea.classpath.org Thu Sep 3 10:53:12 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:53:12 +0000 Subject: [Bug 344] cacao build broken in IcedTea7 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=344 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WORKSFORME -- 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 Sep 3 10:53:49 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:53:49 +0000 Subject: [Bug 344] cacao build broken in IcedTea7 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=344 ------- Comment #2 from gnu_andrew at member.fsf.org 2009-09-03 17:53 ------- Closed as WORKSFORME. If this still fails and you can find more information on why it does so, please reopen 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 Sep 3 10:54:22 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:54:22 +0000 Subject: [Bug 375] IcedTea fails to build using ecj-3.5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=375 ------- Comment #1 from gnu_andrew at member.fsf.org 2009-09-03 17:54 ------- Didn't you fix this with a patch to IcedTea6? -- 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 Sep 3 10:56:06 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:56:06 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | ------- Comment #9 from gnu_andrew at member.fsf.org 2009-09-03 17:56 ------- Reopening as not yet in OpenJDK6. -- 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 Sep 3 10:56:25 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:56:25 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |ASSIGNED -- 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 Sep 3 10:56:48 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 17:56:48 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | ------- Comment #22 from gnu_andrew at member.fsf.org 2009-09-03 17:56 ------- Reopening; this fix isn't upstream. -- 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 Sep 3 11:17:14 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 18:17:14 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #10 from mark at klomp.org 2009-09-03 18:17 ------- It might be better to track such issue somewhere else, since it is fixed in IcedTea already. May I suggest http://bugs.openjdk.java.net/ ? -- 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 Sep 3 11:24:04 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 18:24:04 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #11 from gnu_andrew at member.fsf.org 2009-09-03 18:23 ------- Hmmm, maybe. I'm beginning to feel bugs.openjdk.java.net is completely useless; fewer Sun engineers use it than read the mailing lists (which is already too few) and we can't even use its IDs to commit bugs. I feel pushing the bug upstream or deciding not to is part of the process for the majority of IcedTea bugs. The issue is only really resolved when we don't have to patch the sources to fix it. -- 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 Sep 3 11:33:28 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 18:33:28 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #23 from mark at klomp.org 2009-09-03 18:33 ------- (In reply to comment #22) > Reopening; this fix isn't upstream. Please track such issues upstream. It is enough if the bug fix is in IcedTea, and you add a reference to an bugs.openjdk.java.net id and/or a URL to a post to the relevant mailinglist patch post at mail.openjdk.java.net to the wiki page where we document such issues: http://icedtea.classpath.org/wiki/IcedTea_JDK6_Patches -- 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 Thu Sep 3 12:50:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 3 Sep 2009 20:50:35 +0100 Subject: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS Message-ID: <17c6771e0909031250o7e0b4e99k3d46ddaa93f28316@mail.gmail.com> IcedTea6, as currently built, does not support elliptic curve cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). For this to be enabled, the provider must be added to jre/lib/security/java.security and configured to point to the system NSS. With the proprietary JDK, this is not something that can be done 'out of the box', but we can do this with IcedTea by detecting NSS using configure. The attached patch does just that. It also fixes an issue (6763530) that prevents newer versions of NSS from working. When applied, NSS can be enabled just by passing --enable-nss to configure. The following then works: $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC -keysize 256 -keystore ectest.jks Enter keystore password: Re-enter new password: etc. The configure check doesn't verify that NSS was built with EC support. I couldn't find an easy way of doing this. It is enabled during the build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). From mozilla/security/coreconf/config.mk: ifdef NSS_ENABLE_ECC DEFINES += -DNSS_ENABLE_ECC endif Thus the define is not available in the installed headers, so the only way to do a check would seem to be to write code to generate an EC key with NSS and check for failure. The same check would later be invalidated if the system NSS changes after OpenJDK is built, and so OpenJDK would need to be rebuilt. If someone wants to write such a test, feel free but AFAICS it wouldn't gain anything. OpenJDK will still build (linking is done at runtime) and if NSS doesn't have EC support, then OpenJDK won't which is no different from the current status quo. Does this look ok for commit? ChangeLog: * HACKING: Updated. * Makefile.am: Add two new patches. Copy nss.cfg to jre/lib/security if NSS is enabled. * configure.ac:Check for NSS and set NSS_LIBDIR and ENABLE_NSS if found. * nss.cfg.in: Template for the nss configuration file. * patches/icedtea-nss-6763530.patch: Fix for Sun bug 6763530 which is triggered by newer versions of NSS. * patches/icedtea-nss-config.patch: Patch java.security with the PCKS11 provider configuration. -- 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 91ea4bb21412 HACKING --- a/HACKING Tue Sep 01 17:05:17 2009 +0100 +++ b/HACKING Thu Sep 03 20:40:26 2009 +0100 @@ -124,7 +124,9 @@ in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. -* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext +* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext (PR364/S6648816) +* icedtea-nss-config.patch: Add the NSS PKCS11 security provider. (PR356) +* icedtea-nss-6763530.patch: Fix PKCS11 provider when used with newer version of NSS (>=3.12.3) (PR356, S6763530). The following patches are only applied to OpenJDK in IcedTea: diff -r 91ea4bb21412 Makefile.am --- a/Makefile.am Tue Sep 01 17:05:17 2009 +0100 +++ b/Makefile.am Thu Sep 03 20:40:26 2009 +0100 @@ -685,6 +685,11 @@ ICEDTEA_PATCHES += patches/icedtea-systemtap.patch endif +if ENABLE_NSS +ICEDTEA_PATCHES += patches/icedtea-nss-config.patch \ + patches/icedtea-nss-6763530.patch +endif + ICEDTEA_PATCHES += \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ @@ -1218,6 +1223,10 @@ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; +endif @echo "IcedTea is served:" $(BUILD_OUTPUT_DIR) mkdir -p stamps touch stamps/icedtea.stamp @@ -1303,6 +1312,10 @@ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; +endif @echo "IcedTea (debug build) is served:" \ $(BUILD_OUTPUT_DIR)-debug mkdir -p stamps diff -r 91ea4bb21412 configure.ac --- a/configure.ac Tue Sep 01 17:05:17 2009 +0100 +++ b/configure.ac Thu Sep 03 20:40:26 2009 +0100 @@ -157,6 +157,14 @@ AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$ENABLE_SYSTEMTAP = xyes]) AC_MSG_RESULT(${ENABLE_SYSTEMTAP}) +AC_MSG_CHECKING([whether to include elliptic curve cryptography support via NSS]) +AC_ARG_ENABLE([nss], + [AS_HELP_STRING([--enable-nss], + [Enable inclusion of NSS security provider])], + [ENABLE_NSS="${enableval}"], [ENABLE_NSS='no']) +AM_CONDITIONAL([ENABLE_NSS], [test x$ENABLE_NSS = xyes]) +AC_MSG_RESULT(${ENABLE_NSS}) + AC_MSG_CHECKING(how many parallel build jobs to execute) AC_ARG_WITH([parallel-jobs], [AS_HELP_STRING([--with-parallel-jobs], @@ -486,6 +494,18 @@ AC_SUBST(MOZILLA_VERSION_COLLAPSED, $xulrunner_cv_collapsed_version) fi +if test "x${ENABLE_NSS}" = "xyes" +then + PKG_CHECK_MODULES(NSS, nss, [NSS_FOUND=yes], [NSS_FOUND=no]) + if test "x${NSS_FOUND}" = xno + then + AC_MSG_ERROR([Could not find NSS. Either install it or configure using --disable-nss.]) + fi + NSS_LIBDIR=`$PKG_CONFIG --variable=libdir nss` + AC_SUBST(NSS_LIBDIR) + AC_CONFIG_FILES([nss.cfg]) +fi + AC_MSG_CHECKING(for --with-additional-vms) AC_ARG_WITH(additional-vms, AC_HELP_STRING([--with-additional-vms=vm-list], [build additional virtual machines. Valid value is a comma separated string with the backend names `cacao', `zero' and `shark'.]), diff -r 91ea4bb21412 nss.cfg.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nss.cfg.in Thu Sep 03 20:40:26 2009 +0100 @@ -0,0 +1,4 @@ +name = NSS +nssLibraryDirectory = @NSS_LIBDIR@ +nssDbMode = noDb +attributes = compatibility diff -r 91ea4bb21412 patches/icedtea-nss-6763530.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-6763530.patch Thu Sep 03 20:40:26 2009 +0100 @@ -0,0 +1,55 @@ +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Thu Sep 03 18:47:40 2009 +0100 +@@ -40,6 +40,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * EC KeyFactory implemenation. + * +@@ -201,7 +203,14 @@ + + private PublicKey generatePublic(ECPoint point, ECParameterSpec params) throws PKCS11Exception { + byte[] encodedParams = ECParameters.encodeParameters(params); +- byte[] encodedPoint = ECParameters.encodePoint(point, params.getCurve()); ++ DerValue pkECPoint = new DerValue(DerValue.tag_OctetString, ++ ECParameters.encodePoint(point, params.getCurve())); ++ byte[] encodedPoint = null; ++ try { ++ encodedPoint = pkECPoint.toByteArray(); ++ } catch (IOException e) { ++ throw new IllegalArgumentException("Could not DER encode point", e); ++ } + CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] { + new CK_ATTRIBUTE(CKA_CLASS, CKO_PUBLIC_KEY), + new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_EC), +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11Key.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Thu Sep 03 18:47:40 2009 +0100 +@@ -44,6 +44,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * Key implementation classes. + * +@@ -1014,10 +1016,13 @@ + }; + fetchAttributes(attributes); + try { ++ DerValue wECPoint = new DerValue(attributes[0].getByteArray()); ++ if (wECPoint.getTag() != DerValue.tag_OctetString) ++ throw new IOException("Unexpected tag: " + wECPoint.getTag()); + params = P11ECKeyFactory.decodeParameters + (attributes[1].getByteArray()); + w = P11ECKeyFactory.decodePoint +- (attributes[0].getByteArray(), params.getCurve()); ++ (wECPoint.getDataBytes(), params.getCurve()); + } catch (Exception e) { + throw new RuntimeException("Could not parse key values", e); + } diff -r 91ea4bb21412 patches/icedtea-nss-config.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-config.patch Thu Sep 03 20:40:26 2009 +0100 @@ -0,0 +1,10 @@ +--- openjdk.orig/jdk/src/share/lib/security/java.security 2009-08-25 11:43:59.000000000 +0100 ++++ openjdk/jdk/src/share/lib/security/java.security 2009-08-27 14:23:54.000000000 +0100 +@@ -51,6 +51,7 @@ + security.provider.6=com.sun.security.sasl.Provider + security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI + security.provider.8=sun.security.smartcardio.SunPCSC ++security.provider.9=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg + + # + # Select the source of seed data for SecureRandom. By default an From bugzilla-daemon at icedtea.classpath.org Thu Sep 3 13:03:05 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 20:03:05 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 ------- Comment #12 from gnu_andrew at member.fsf.org 2009-09-03 20:03 ------- I've filed a bug on bugs.openjdk.java.net: https://bugs.openjdk.java.net/show_bug.cgi?id=100106 but I don't see the point as this is not (yet) a bug reporting system, but a mechanism for posting patches for those without commit right AIUI. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6851214 http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000717.html http://cr.openjdk.java.net/~andrew/6851214/webrev.01/ This is still a bug in IcedTea while we still have to maintain a patch separate from the upstream sources. IcedTea is not a fork. -- 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 Sep 3 13:03:38 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 20:03:38 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- URL| |http://bugs.sun.com/bugdatab | |ase/view_bug.do?bug_id=68512 | |14 ------- Comment #13 from gnu_andrew at member.fsf.org 2009-09-03 20:03 ------- Add Sun bug ID 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 bugzilla-daemon at icedtea.classpath.org Thu Sep 3 13:05:34 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 20:05:34 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #24 from gnu_andrew at member.fsf.org 2009-09-03 20:05 ------- I don't believe it is enough. Having to maintain a patch to the sources in IcedTea is still a 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 Sep 3 13:25:30 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 20:25:30 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #25 from mark at klomp.org 2009-09-03 20:25 ------- (In reply to comment #24) > I don't believe it is enough. Having to maintain a patch to the sources in > IcedTea is still a bug. Yes, but a bug upstream :) If they don't accept patches for working code that is a bug, but sadly that is what happens. If OpenJDK merged all IcedTea contributions then we wouldn't need IcedTea anymore indeed. But sadly for lots of reasons they don't :( Either because they don't care about some issues, because they are just slow in accepting or because of silly legal reasons, but that is how it is. BTW. I am not saying you shouldn't try. I am extremely happy you try and are so persistent. I am just saying that I don't think trying to track such issues in the IcedTea bugzilla is the most efficient way to do such things. There is the wiki and the openjdk bug tracker that are more appropriate imho. -- 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 Sep 3 15:53:02 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 22:53:02 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |ASSIGNED ------- Comment #26 from gnu_andrew at member.fsf.org 2009-09-03 22:53 ------- Ok. It just feels like I'm the only one doing so at times, despite this being what we are all supposed to be aiming for. Are you ok with your patch going upstream? If so, then I'll start trying to push it upstream, record that here and close 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 Sep 3 15:54:53 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 22:54:53 +0000 Subject: [Bug 235] Zero/Shark doesn't correctly replace HotSpot in IcedTea6 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=235 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID ------- Comment #2 from gnu_andrew at member.fsf.org 2009-09-03 22:54 ------- Closed this as invalid now, as everything is based on b14. -- 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 Sep 3 15:59:49 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 03 Sep 2009 22:59:49 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED ------- Comment #14 from gnu_andrew at member.fsf.org 2009-09-03 22:59 ------- Tracked upstream. -- 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 Sep 3 23:45:50 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 04 Sep 2009 06:45:50 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #27 from mark at klomp.org 2009-09-04 06:45 ------- (In reply to comment #26) > Ok. It just feels like I'm the only one doing so at times, despite this being > what we are all supposed to be aiming for. Yeah, understood and appreciated. You definitely are the person pushing the most, hardest and persistent. > Are you ok with your patch going upstream? If so, then I'll start trying to > push it upstream, record that here and close the bug. That was the intention of Keith originally back in August 2007 and if accepted, the bugfixes/improvements made should also be pushed. http://mail.openjdk.java.net/pipermail/core-libs-dev/2007-August/000066.html Note that part two, the icedtea-timezone-default-permission.patch was already independently found by someone else and pushed into openjdk7. See the discussion linked in comment #19 and connent #20. -- 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 icedtea.classpath.org Fri Sep 4 02:49:14 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Fri, 04 Sep 2009 09:49:14 +0000 Subject: /hg/icedtea6: 2009-09-04 Gary Benson Message-ID: changeset 903849a786da in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=903849a786da author: Gary Benson date: Fri Sep 04 05:43:23 2009 -0400 2009-09-04 Gary Benson * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp (ICache::initialize): New method. (ICache::invalidate_word): Likewise. (ICache::invalidate_range): Likewise. * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp (ICacheStubGenerator::generate_icache_flush): Replaced with stub. * patches/icedtea-zero.patch (AbstractICache::invalidate_range): Removed #ifdef ZERO. diffstat: 4 files changed, 22 insertions(+), 27 deletions(-) ChangeLog | 13 +++++++++++++ patches/icedtea-zero.patch | 18 ------------------ ports/hotspot/src/cpu/zero/vm/icache_zero.cpp | 8 ++------ ports/hotspot/src/cpu/zero/vm/icache_zero.hpp | 10 +++++++--- diffs (98 lines): diff -r cc4f8460a676 -r 903849a786da ChangeLog --- a/ChangeLog Thu Sep 03 11:23:31 2009 -0400 +++ b/ChangeLog Fri Sep 04 05:43:23 2009 -0400 @@ -1,3 +1,16 @@ 2009-09-03 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp + (ICache::initialize): New method. + (ICache::invalidate_word): Likewise. + (ICache::invalidate_range): Likewise. + + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp + (ICacheStubGenerator::generate_icache_flush): Replaced with stub. + + * patches/icedtea-zero.patch + (AbstractICache::invalidate_range): Removed #ifdef ZERO. + 2009-09-03 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: Reformatted diff -r cc4f8460a676 -r 903849a786da patches/icedtea-zero.patch --- a/patches/icedtea-zero.patch Thu Sep 03 11:23:31 2009 -0400 +++ b/patches/icedtea-zero.patch Fri Sep 04 05:43:23 2009 -0400 @@ -100,24 +100,6 @@ tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link); } ---- openjdk/hotspot/src/share/vm/runtime/icache.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/icache.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -78,6 +78,7 @@ - } - - void AbstractICache::invalidate_range(address start, int nbytes) { -+#ifndef ZERO - static bool firstTime = true; - if (firstTime) { - guarantee(start == CAST_FROM_FN_PTR(address, _flush_icache_stub), -@@ -97,6 +98,7 @@ - } - call_flush_stub(start, round_to(nbytes, ICache::line_size) >> - ICache::log2_line_size); -+#endif - } - - // For init.cpp --- openjdk/hotspot/src/share/vm/runtime/mutex.hpp.orig 2008-07-27 08:37:02.000000000 +0000 +++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp 2008-07-27 08:38:13.000000000 +0000 @@ -61,18 +61,10 @@ diff -r cc4f8460a676 -r 903849a786da ports/hotspot/src/cpu/zero/vm/icache_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Thu Sep 03 11:23:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Fri Sep 04 05:43:23 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 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 @@ -26,11 +26,7 @@ #include "incls/_precompiled.incl" #include "incls/_icache_zero.cpp.incl" - void ICacheStubGenerator::generate_icache_flush( ICache::flush_icache_stub_t* flush_icache_stub) { - - StubCodeMark mark(this, "ICache", "flush_icache_stub"); - - *flush_icache_stub = (ICache::flush_icache_stub_t) UnimplementedStub(); + Unimplemented(); } diff -r cc4f8460a676 -r 903849a786da ports/hotspot/src/cpu/zero/vm/icache_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/icache_zero.hpp Thu Sep 03 11:23:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icache_zero.hpp Fri Sep 04 05:43:23 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 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 @@ -25,8 +25,12 @@ // Interface for updating the instruction cache. Whenever the VM // modifies code, part of the processor instruction cache potentially -// has to be flushed. +// has to be flushed. This implementation is empty: Zero never deals +// with code, and LLVM handles cache flushing for Shark. class ICache : public AbstractICache { - // Use default implementation + public: + static void initialize() {} + static void invalidate_word(address addr) {} + static void invalidate_range(address start, int nbytes) {} }; From gbenson at redhat.com Fri Sep 4 02:54:35 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 4 Sep 2009 10:54:35 +0100 Subject: Zero ICache fixes Message-ID: <20090904095435.GA3312@redhat.com> Hi all, This commit rearranges the instruction cache code in Zero to remove a conditional that the HotSpot engineers didn't like. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r cc4f8460a676 ChangeLog --- a/ChangeLog Thu Sep 03 11:23:31 2009 -0400 +++ b/ChangeLog Fri Sep 04 05:43:02 2009 -0400 @@ -1,3 +1,16 @@ +2009-09-04 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp + (ICache::initialize): New method. + (ICache::invalidate_word): Likewise. + (ICache::invalidate_range): Likewise. + + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp + (ICacheStubGenerator::generate_icache_flush): Replaced with stub. + + * patches/icedtea-zero.patch + (AbstractICache::invalidate_range): Removed #ifdef ZERO. + 2009-09-03 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: Reformatted diff -r cc4f8460a676 patches/icedtea-zero.patch --- a/patches/icedtea-zero.patch Thu Sep 03 11:23:31 2009 -0400 +++ b/patches/icedtea-zero.patch Fri Sep 04 05:43:02 2009 -0400 @@ -100,24 +100,6 @@ tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link); } ---- openjdk/hotspot/src/share/vm/runtime/icache.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/icache.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -78,6 +78,7 @@ - } - - void AbstractICache::invalidate_range(address start, int nbytes) { -+#ifndef ZERO - static bool firstTime = true; - if (firstTime) { - guarantee(start == CAST_FROM_FN_PTR(address, _flush_icache_stub), -@@ -97,6 +98,7 @@ - } - call_flush_stub(start, round_to(nbytes, ICache::line_size) >> - ICache::log2_line_size); -+#endif - } - - // For init.cpp --- openjdk/hotspot/src/share/vm/runtime/mutex.hpp.orig 2008-07-27 08:37:02.000000000 +0000 +++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp 2008-07-27 08:38:13.000000000 +0000 @@ -61,18 +61,10 @@ diff -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/icache_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Thu Sep 03 11:23:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Fri Sep 04 05:43:02 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 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 @@ -26,11 +26,7 @@ #include "incls/_precompiled.incl" #include "incls/_icache_zero.cpp.incl" - void ICacheStubGenerator::generate_icache_flush( ICache::flush_icache_stub_t* flush_icache_stub) { - - StubCodeMark mark(this, "ICache", "flush_icache_stub"); - - *flush_icache_stub = (ICache::flush_icache_stub_t) UnimplementedStub(); + Unimplemented(); } diff -r cc4f8460a676 ports/hotspot/src/cpu/zero/vm/icache_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/icache_zero.hpp Thu Sep 03 11:23:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icache_zero.hpp Fri Sep 04 05:43:02 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007 Red Hat, Inc. + * Copyright 2007, 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 @@ -25,8 +25,12 @@ // Interface for updating the instruction cache. Whenever the VM // modifies code, part of the processor instruction cache potentially -// has to be flushed. +// has to be flushed. This implementation is empty: Zero never deals +// with code, and LLVM handles cache flushing for Shark. class ICache : public AbstractICache { - // Use default implementation + public: + static void initialize() {} + static void invalidate_word(address addr) {} + static void invalidate_range(address start, int nbytes) {} }; From gbenson at icedtea.classpath.org Fri Sep 4 04:20:21 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Fri, 04 Sep 2009 11:20:21 +0000 Subject: /hg/icedtea6: 2009-09-04 Gary Benson Message-ID: changeset 61433ed873cf in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=61433ed873cf author: Gary Benson date: Fri Sep 04 07:14:31 2009 -0400 2009-09-04 Gary Benson * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp (ZeroEntry::method_entry_t): Renamed as... (ZeroEntry::NormalEntryFunc): New type. (ZeroEntry::osr_entry_t): Renamed as... (ZeroEntry::OSREntryFunc): New type. (ZeroEntry::_entry_point): Changed type. (ZeroEntry::entry_point): Changed signature. (ZeroEntry::set_entry_point): Likewise. (ZeroEntry::invoke): Added cast. (ZeroEntry::invoke_osr): Updated cast. * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp (CppInterpreter::generate_entry): Changed signature. * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp (InterpreterGenerator::generate_normal_entry): Added cast. (InterpreterGenerator::generate_native_entry): Likewise. (InterpreterGenerator::generate_accessor_entry): Likewise. (InterpreterGenerator::generate_empty_entry): Likewise. (AbstractInterpreterGenerator::generate_method_entry): Likewise. * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp (SharkCompiler::compile_method): Updated cast. * ports/hotspot/src/share/vm/shark/sharkEntry.hpp (SharkEntry::code_start): Removed cast. * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp (NativeJump::patch_verified_entry): Added cast. diffstat: 7 files changed, 70 insertions(+), 37 deletions(-) ChangeLog | 32 +++++++++ ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp | 4 - ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 35 ++++------ ports/hotspot/src/cpu/zero/vm/entry_zero.hpp | 28 ++++---- ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp | 3 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 3 ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 2 diffs (257 lines): diff -r 903849a786da -r 61433ed873cf ChangeLog --- a/ChangeLog Fri Sep 04 05:43:23 2009 -0400 +++ b/ChangeLog Fri Sep 04 07:14:31 2009 -0400 @@ -1,3 +1,35 @@ 2009-09-04 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp + (ZeroEntry::method_entry_t): Renamed as... + (ZeroEntry::NormalEntryFunc): New type. + (ZeroEntry::osr_entry_t): Renamed as... + (ZeroEntry::OSREntryFunc): New type. + (ZeroEntry::_entry_point): Changed type. + (ZeroEntry::entry_point): Changed signature. + (ZeroEntry::set_entry_point): Likewise. + (ZeroEntry::invoke): Added cast. + (ZeroEntry::invoke_osr): Updated cast. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp + (CppInterpreter::generate_entry): Changed signature. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (InterpreterGenerator::generate_normal_entry): Added cast. + (InterpreterGenerator::generate_native_entry): Likewise. + (InterpreterGenerator::generate_accessor_entry): Likewise. + (InterpreterGenerator::generate_empty_entry): Likewise. + (AbstractInterpreterGenerator::generate_method_entry): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Updated cast. + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::code_start): Removed cast. + + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp + (NativeJump::patch_verified_entry): Added cast. + 2009-09-04 Gary Benson * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp Fri Sep 04 07:14:31 2009 -0400 @@ -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 @@ -29,7 +29,7 @@ } protected: - address generate_entry(ZeroEntry::method_entry_t entry_point) { + address generate_entry(address entry_point) { ZeroEntry *entry = (ZeroEntry *) assembler()->pc(); assembler()->advance(sizeof(ZeroEntry)); entry->set_entry_point(entry_point); diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Sep 04 07:14:31 2009 -0400 @@ -697,26 +697,26 @@ address InterpreterGenerator::generate_e if (!UseFastEmptyMethods) return NULL; - return generate_entry(CppInterpreter::empty_entry); + return generate_entry((address) CppInterpreter::empty_entry); } address InterpreterGenerator::generate_accessor_entry() { if (!UseFastAccessorMethods) return NULL; - return generate_entry(CppInterpreter::accessor_entry); + return generate_entry((address) CppInterpreter::accessor_entry); } address InterpreterGenerator::generate_native_entry(bool synchronized) { - assert (synchronized == false, "should be"); - - return generate_entry(CppInterpreter::native_entry); + assert(synchronized == false, "should be"); + + return generate_entry((address) CppInterpreter::native_entry); } address InterpreterGenerator::generate_normal_entry(bool synchronized) { - assert (synchronized == false, "should be"); - - return generate_entry(CppInterpreter::normal_entry); + assert(synchronized == false, "should be"); + + return generate_entry((address) CppInterpreter::normal_entry); } #if defined(PRODUCT) && defined(HOTSPOT_ASM) @@ -727,16 +727,15 @@ extern "C" BCI_ENTRY asm_generate_method address AbstractInterpreterGenerator::generate_method_entry( AbstractInterpreter::MethodKind kind) { - address entry_point = NULL; #if defined(PRODUCT) && defined(HOTSPOT_ASM) if (!UseCompiler && !TaggedStackInterpreter && !JvmtiExport::can_post_interpreter_events() && !PrintCommandLineFlags) { - BCI_ENTRY asm_entry = asm_generate_method_entry(kind); + address asm_entry = (address) asm_generate_method_entry(kind); if (asm_entry) - return ((InterpreterGenerator*)this)->generate_entry(asm_entry); + return ((InterpreterGenerator*) this)->generate_entry(asm_entry); } #endif // HOTSPOT_ASM @@ -746,23 +745,23 @@ address AbstractInterpreterGenerator::ge break; case Interpreter::native: - entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_native_entry(false); break; case Interpreter::native_synchronized: - entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_native_entry(false); break; case Interpreter::empty: - entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_empty_entry(); break; case Interpreter::accessor: - entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_accessor_entry(); break; case Interpreter::abstract: - entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_abstract_entry(); break; case Interpreter::java_lang_math_sin: @@ -772,7 +771,7 @@ address AbstractInterpreterGenerator::ge case Interpreter::java_lang_math_log: case Interpreter::java_lang_math_log10: case Interpreter::java_lang_math_sqrt: - entry_point = ((InterpreterGenerator*)this)->generate_math_entry(kind); + entry_point = ((InterpreterGenerator*) this)->generate_math_entry(kind); break; default: @@ -780,7 +779,7 @@ address AbstractInterpreterGenerator::ge } if (entry_point == NULL) - entry_point = ((InterpreterGenerator*)this)->generate_normal_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_normal_entry(false); return entry_point; } diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/cpu/zero/vm/entry_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Sep 04 07:14:31 2009 -0400 @@ -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 @@ -29,30 +29,32 @@ class ZeroEntry { ShouldNotCallThis(); } - public: - typedef void (*method_entry_t)(methodOop method, intptr_t base_pc, TRAPS); - typedef void (*osr_entry_t)(methodOop method, - address osr_buf, - intptr_t base_pc, - TRAPS); - private: - method_entry_t _entry_point; + address _entry_point; public: - method_entry_t entry_point() const { + address entry_point() const { return _entry_point; } - void set_entry_point(method_entry_t entry_point) { + void set_entry_point(address entry_point) { _entry_point = entry_point; } + private: + typedef void (*NormalEntryFunc)(methodOop method, + intptr_t base_pc, + TRAPS); + typedef void (*OSREntryFunc)(methodOop method, + address osr_buf, + intptr_t base_pc, + TRAPS); + public: void invoke(methodOop method, TRAPS) const { - entry_point()(method, (intptr_t) this, THREAD); + ((NormalEntryFunc) entry_point())(method, (intptr_t) this, THREAD); } void invoke_osr(methodOop method, address osr_buf, TRAPS) const { - ((osr_entry_t) entry_point())(method, osr_buf, (intptr_t) this, THREAD); + ((OSREntryFunc) entry_point())(method, osr_buf, (intptr_t) this, THREAD); } public: diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Fri Sep 04 07:14:31 2009 -0400 @@ -42,7 +42,8 @@ void NativeJump::patch_verified_entry(ad assert(dest == SharedRuntime::get_handle_wrong_method_stub(), "should be"); #ifdef CC_INTERP - ((ZeroEntry*) verified_entry)->set_entry_point(CppInterpreter::normal_entry); + ((ZeroEntry*) verified_entry)->set_entry_point( + (address) CppInterpreter::normal_entry); #else Unimplemented(); #endif // CC_INTERP diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Sep 04 07:14:31 2009 -0400 @@ -169,8 +169,7 @@ void SharkCompiler::compile_method(ciEnv memory_manager()->set_entry_for_function(function, entry); module()->getFunctionList().push_back(function); entry->set_entry_point( - (ZeroEntry::method_entry_t) - execution_engine()->getPointerToFunction(function)); + (address) execution_engine()->getPointerToFunction(function)); address code_start = entry->code_start(); address code_limit = entry->code_limit(); diff -r 903849a786da -r 61433ed873cf ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Sep 04 07:14:31 2009 -0400 @@ -31,7 +31,7 @@ class SharkEntry : public ZeroEntry { public: address code_start() const { - return (address) entry_point(); + return entry_point(); } address code_limit() const { From gbenson at redhat.com Fri Sep 4 04:24:42 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 4 Sep 2009 12:24:42 +0100 Subject: Zero type changes Message-ID: <20090904112442.GB3312@redhat.com> Hi all, This commit changes the name of some types that didn't match the usual HotSpot coding standards. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 903849a786da ChangeLog --- a/ChangeLog Fri Sep 04 05:43:23 2009 -0400 +++ b/ChangeLog Fri Sep 04 07:13:01 2009 -0400 @@ -1,3 +1,35 @@ +2009-09-04 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp + (ZeroEntry::method_entry_t): Renamed as... + (ZeroEntry::NormalEntryFunc): New type. + (ZeroEntry::osr_entry_t): Renamed as... + (ZeroEntry::OSREntryFunc): New type. + (ZeroEntry::_entry_point): Changed type. + (ZeroEntry::entry_point): Changed signature. + (ZeroEntry::set_entry_point): Likewise. + (ZeroEntry::invoke): Added cast. + (ZeroEntry::invoke_osr): Updated cast. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp + (CppInterpreter::generate_entry): Changed signature. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (InterpreterGenerator::generate_normal_entry): Added cast. + (InterpreterGenerator::generate_native_entry): Likewise. + (InterpreterGenerator::generate_accessor_entry): Likewise. + (InterpreterGenerator::generate_empty_entry): Likewise. + (AbstractInterpreterGenerator::generate_method_entry): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Updated cast. + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::code_start): Removed cast. + + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp + (NativeJump::patch_verified_entry): Added cast. + 2009-09-04 Gary Benson * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp diff -r 903849a786da ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp Fri Sep 04 07:13:01 2009 -0400 @@ -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 @@ -29,7 +29,7 @@ } protected: - address generate_entry(ZeroEntry::method_entry_t entry_point) { + address generate_entry(address entry_point) { ZeroEntry *entry = (ZeroEntry *) assembler()->pc(); assembler()->advance(sizeof(ZeroEntry)); entry->set_entry_point(entry_point); diff -r 903849a786da ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Fri Sep 04 07:13:01 2009 -0400 @@ -697,26 +697,26 @@ if (!UseFastEmptyMethods) return NULL; - return generate_entry(CppInterpreter::empty_entry); + return generate_entry((address) CppInterpreter::empty_entry); } address InterpreterGenerator::generate_accessor_entry() { if (!UseFastAccessorMethods) return NULL; - return generate_entry(CppInterpreter::accessor_entry); + return generate_entry((address) CppInterpreter::accessor_entry); } address InterpreterGenerator::generate_native_entry(bool synchronized) { - assert (synchronized == false, "should be"); + assert(synchronized == false, "should be"); - return generate_entry(CppInterpreter::native_entry); + return generate_entry((address) CppInterpreter::native_entry); } address InterpreterGenerator::generate_normal_entry(bool synchronized) { - assert (synchronized == false, "should be"); + assert(synchronized == false, "should be"); - return generate_entry(CppInterpreter::normal_entry); + return generate_entry((address) CppInterpreter::normal_entry); } #if defined(PRODUCT) && defined(HOTSPOT_ASM) @@ -727,16 +727,15 @@ address AbstractInterpreterGenerator::generate_method_entry( AbstractInterpreter::MethodKind kind) { - address entry_point = NULL; #if defined(PRODUCT) && defined(HOTSPOT_ASM) if (!UseCompiler && !TaggedStackInterpreter && !JvmtiExport::can_post_interpreter_events() && !PrintCommandLineFlags) { - BCI_ENTRY asm_entry = asm_generate_method_entry(kind); + address asm_entry = (address) asm_generate_method_entry(kind); if (asm_entry) - return ((InterpreterGenerator*)this)->generate_entry(asm_entry); + return ((InterpreterGenerator*) this)->generate_entry(asm_entry); } #endif // HOTSPOT_ASM @@ -746,23 +745,23 @@ break; case Interpreter::native: - entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_native_entry(false); break; case Interpreter::native_synchronized: - entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_native_entry(false); break; case Interpreter::empty: - entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_empty_entry(); break; case Interpreter::accessor: - entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_accessor_entry(); break; case Interpreter::abstract: - entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); + entry_point = ((InterpreterGenerator*) this)->generate_abstract_entry(); break; case Interpreter::java_lang_math_sin: @@ -772,7 +771,7 @@ case Interpreter::java_lang_math_log: case Interpreter::java_lang_math_log10: case Interpreter::java_lang_math_sqrt: - entry_point = ((InterpreterGenerator*)this)->generate_math_entry(kind); + entry_point = ((InterpreterGenerator*) this)->generate_math_entry(kind); break; default: @@ -780,7 +779,7 @@ } if (entry_point == NULL) - entry_point = ((InterpreterGenerator*)this)->generate_normal_entry(false); + entry_point = ((InterpreterGenerator*) this)->generate_normal_entry(false); return entry_point; } diff -r 903849a786da ports/hotspot/src/cpu/zero/vm/entry_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/entry_zero.hpp Fri Sep 04 07:13:01 2009 -0400 @@ -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 @@ -29,30 +29,32 @@ ShouldNotCallThis(); } - public: - typedef void (*method_entry_t)(methodOop method, intptr_t base_pc, TRAPS); - typedef void (*osr_entry_t)(methodOop method, - address osr_buf, - intptr_t base_pc, - TRAPS); - private: - method_entry_t _entry_point; + address _entry_point; public: - method_entry_t entry_point() const { + address entry_point() const { return _entry_point; } - void set_entry_point(method_entry_t entry_point) { + void set_entry_point(address entry_point) { _entry_point = entry_point; } + private: + typedef void (*NormalEntryFunc)(methodOop method, + intptr_t base_pc, + TRAPS); + typedef void (*OSREntryFunc)(methodOop method, + address osr_buf, + intptr_t base_pc, + TRAPS); + public: void invoke(methodOop method, TRAPS) const { - entry_point()(method, (intptr_t) this, THREAD); + ((NormalEntryFunc) entry_point())(method, (intptr_t) this, THREAD); } void invoke_osr(methodOop method, address osr_buf, TRAPS) const { - ((osr_entry_t) entry_point())(method, osr_buf, (intptr_t) this, THREAD); + ((OSREntryFunc) entry_point())(method, osr_buf, (intptr_t) this, THREAD); } public: diff -r 903849a786da ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Fri Sep 04 07:13:01 2009 -0400 @@ -42,7 +42,8 @@ assert(dest == SharedRuntime::get_handle_wrong_method_stub(), "should be"); #ifdef CC_INTERP - ((ZeroEntry*) verified_entry)->set_entry_point(CppInterpreter::normal_entry); + ((ZeroEntry*) verified_entry)->set_entry_point( + (address) CppInterpreter::normal_entry); #else Unimplemented(); #endif // CC_INTERP diff -r 903849a786da ports/hotspot/src/share/vm/shark/sharkCompiler.cpp --- a/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkCompiler.cpp Fri Sep 04 07:13:01 2009 -0400 @@ -169,8 +169,7 @@ memory_manager()->set_entry_for_function(function, entry); module()->getFunctionList().push_back(function); entry->set_entry_point( - (ZeroEntry::method_entry_t) - execution_engine()->getPointerToFunction(function)); + (address) execution_engine()->getPointerToFunction(function)); address code_start = entry->code_start(); address code_limit = entry->code_limit(); diff -r 903849a786da ports/hotspot/src/share/vm/shark/sharkEntry.hpp --- a/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Sep 04 05:43:23 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkEntry.hpp Fri Sep 04 07:13:01 2009 -0400 @@ -31,7 +31,7 @@ public: address code_start() const { - return (address) entry_point(); + return entry_point(); } address code_limit() const { From gnu_andrew at member.fsf.org Fri Sep 4 06:53:24 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 4 Sep 2009 14:53:24 +0100 Subject: Zero type changes In-Reply-To: <20090904112442.GB3312@redhat.com> References: <20090904112442.GB3312@redhat.com> Message-ID: <17c6771e0909040653p50eb6e28h50e8fc872062a25b@mail.gmail.com> 2009/9/4 Gary Benson : > Hi all, > > This commit changes the name of some types that didn't match the > usual HotSpot coding standards. > > Cheers, > Gary > > -- > http://gbenson.net/ > Is this for the new version of the submitted Zero patch? If so, I'll commit it to the IcedTea forest. -- 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 icedtea.classpath.org Fri Sep 4 06:51:08 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Fri, 04 Sep 2009 13:51:08 +0000 Subject: /hg/release/icedtea6-1.5: 2009-09-04 Lillian Angel changeset 634b6ed02270 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=634b6ed02270 author: langel date: Fri Sep 04 09:54:18 2009 -0400 2009-09-04 Lillian Angel * NEWS: Updated for 1.5.2 release. diffstat: 2 files changed, 8 insertions(+) ChangeLog | 4 ++++ NEWS | 4 ++++ diffs (22 lines): diff -r 180570a437ab -r 634b6ed02270 ChangeLog --- a/ChangeLog Wed Sep 02 14:19:58 2009 -0400 +++ b/ChangeLog Fri Sep 04 09:54:18 2009 -0400 @@ -1,3 +1,7 @@ 2009-09-02 Lillian Angel + + * NEWS: Updated for 1.5.2 release. + 2009-09-02 Lillian Angel * configure.ac: Moved version back to 1.5.2. diff -r 180570a437ab -r 634b6ed02270 NEWS --- a/NEWS Wed Sep 02 14:19:58 2009 -0400 +++ b/NEWS Fri Sep 04 09:54:18 2009 -0400 @@ -1,3 +1,7 @@ New in release 1.5.1 (2009-08-07) +New in release 1.5.2 (2009-09-04) +- Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 +- Stackoverflow error fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 + New in release 1.5.1 (2009-08-07) - Security updates from Sun. - Plugin/Netx security fix. From langel at icedtea.classpath.org Fri Sep 4 07:01:57 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Fri, 04 Sep 2009 14:01:57 +0000 Subject: /hg/release/icedtea6-1.5: 2009-09-04 Lillian Angel changeset 7ea6d4f11077 in /hg/release/icedtea6-1.5 details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=7ea6d4f11077 author: langel date: Fri Sep 04 10:05:08 2009 -0400 2009-09-04 Lillian Angel * NEWS: Updated for 1.5.2 release. diffstat: 1 file changed, 2 insertions(+) NEWS | 2 ++ diffs (12 lines): diff -r 634b6ed02270 -r 7ea6d4f11077 NEWS --- a/NEWS Fri Sep 04 09:54:18 2009 -0400 +++ b/NEWS Fri Sep 04 10:05:08 2009 -0400 @@ -1,6 +1,8 @@ New in release 1.5.2 (2009-09-04) New in release 1.5.2 (2009-09-04) - Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 - Stackoverflow error fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 +- Backport regression (NPE) fix for AccessControlContext fix +- Bump to hs14b16 New in release 1.5.1 (2009-08-07) - Security updates from Sun. From gbenson at redhat.com Fri Sep 4 07:08:47 2009 From: gbenson at redhat.com (Gary Benson) Date: Fri, 4 Sep 2009 15:08:47 +0100 Subject: Zero type changes In-Reply-To: <17c6771e0909040653p50eb6e28h50e8fc872062a25b@mail.gmail.com> References: <20090904112442.GB3312@redhat.com> <17c6771e0909040653p50eb6e28h50e8fc872062a25b@mail.gmail.com> Message-ID: <20090904140846.GC3312@redhat.com> Andrew John Hughes wrote: > 2009/9/4 Gary Benson : > > This commit changes the name of some types that didn't match the > > usual HotSpot coding standards. > > Is this for the new version of the submitted Zero patch? If so, I'll > commit it to the IcedTea forest. It might be easier to wait until I've created a new webrev, then back out the previous one and apply the new one. Up to you though :) Cheers, Gary -- http://gbenson.net/ From gnu_andrew at member.fsf.org Fri Sep 4 07:14:54 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 4 Sep 2009 15:14:54 +0100 Subject: Zero type changes In-Reply-To: <20090904140846.GC3312@redhat.com> References: <20090904112442.GB3312@redhat.com> <17c6771e0909040653p50eb6e28h50e8fc872062a25b@mail.gmail.com> <20090904140846.GC3312@redhat.com> Message-ID: <17c6771e0909040714h328d2fb0t87dac8dd99efc909@mail.gmail.com> 2009/9/4 Gary Benson : > Andrew John Hughes wrote: >> 2009/9/4 Gary Benson : >> > This commit changes the name of some types that didn't match the >> > usual HotSpot coding standards. >> >> Is this for the new version of the submitted Zero patch? If so, I'll >> commit it to the IcedTea forest. > > It might be easier to wait until I've created a new webrev, then back > out the previous one and apply the new one. ?Up to you though :) > > Cheers, > Gary > > -- > http://gbenson.net/ > Yeah I may as well wait for the new webrev so I know what I'm getting :) Shouldn't be any need to back out the old one though, it should merge on top just fine. -- 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 Fri Sep 4 08:08:20 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 04 Sep 2009 15:08:20 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 ------- Comment #28 from gnu_andrew at member.fsf.org 2009-09-04 15:08 ------- Yeah, I've already started the push for the tzdata patch as I mentioned above. I was referring to the new patch. Given it's already in 7, I can't see Joe having a problem with getting it into 6. -- 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 Sep 4 08:55:33 2009 From: langel at redhat.com (Lillian Angel) Date: Fri, 04 Sep 2009 11:55:33 -0400 Subject: IcedTea 1.5.2 Released! Message-ID: <4AA13875.9040304@redhat.com> We are proud to announce the release of IcedTea6 1.5.2. 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? ----------------- - Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 - Stackoverflow error fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 - Backport regression (NPE) fix for AccessControlContext fix - Bump to hs14b16 ----------------- The tarball and nosrc RPM can be downloaded here: http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-28.b16.fc11.nosrc.rpm http://icedtea.classpath.org/download/source/icedtea6-1.5.2.tar.gz The following people helped with this release: Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, 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.5 $ cd icedtea6-1.5 Full build requirements and instructions are in INSTALL: $ ./configure [--enable-visualvm --with-openjdk --enable-pulse-java --enable-systemtap ...] $ make From martinrb at google.com Fri Sep 4 12:57:32 2009 From: martinrb at google.com (Martin Buchholz) Date: Fri, 4 Sep 2009 12:57:32 -0700 Subject: IcedTea 1.5.2 Released! In-Reply-To: <4AA13875.9040304@redhat.com> References: <4AA13875.9040304@redhat.com> Message-ID: <1ccfd1c10909041257l21bb4ed8j9a55a87c522ad979@mail.gmail.com> On Fri, Sep 4, 2009 at 08:55, Lillian Angel wrote: > We are proud to announce the release of IcedTea6 1.5.2. > > The IcedTea6 project provides a harness to build the source code from > OpenJDK6 (http://openjdk.java.net) using Free Software build tools. You guys are too modest. A Free Software build environment is only one of the goals/priorities that is different from upstream openjdk6. Some others that come to mind are: - support some platforms not supported by upstream - provide/maintain Free Software replacements for proprietary parts of JDK6. Martin From gnu_andrew at member.fsf.org Fri Sep 4 13:38:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 4 Sep 2009 21:38:35 +0100 Subject: IcedTea 1.5.2 Released! In-Reply-To: <1ccfd1c10909041257l21bb4ed8j9a55a87c522ad979@mail.gmail.com> References: <4AA13875.9040304@redhat.com> <1ccfd1c10909041257l21bb4ed8j9a55a87c522ad979@mail.gmail.com> Message-ID: <17c6771e0909041338m7cda507br50585775dd30becb@mail.gmail.com> 2009/9/4 Martin Buchholz : > On Fri, Sep 4, 2009 at 08:55, Lillian Angel wrote: >> We are proud to announce the release of IcedTea6 1.5.2. >> >> The IcedTea6 project provides a harness to build the source code from >> OpenJDK6 (http://openjdk.java.net) using Free Software build tools. > > You guys are too modest. ?A Free Software build environment is only > one of the goals/priorities that is different from upstream openjdk6. > Some others that come to mind are: > - support some platforms not supported by upstream > - provide/maintain Free Software replacements for proprietary parts of JDK6. > > Martin > Thanks Martin. I thought the same when writing the last IcedTea7 announcement and so expanded Lillian's text to say: The IcedTea project provides a harness to build the source code from OpenJDK7 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and sparc via the Zero assembler port and the Shark JIT compiler. This emphasis the additional platform support and the plugin/javaws replacements for their proprietary counterparts. Lillian, you might want to adopt that for the next release. We should mention the ARM support too from 1.6 on :) -- 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 Sep 4 16:24:47 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sat, 5 Sep 2009 00:24:47 +0100 Subject: /hg/release/icedtea6-1.5: 2009-09-04 Lillian Angel References: Message-ID: <17c6771e0909041624u63950c54g85a6f33e9a9d40d6@mail.gmail.com> 2009/9/4 : > changeset 7ea6d4f11077 in /hg/release/icedtea6-1.5 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.5?cmd=changeset;node=7ea6d4f11077 > author: langel > date: Fri Sep 04 10:05:08 2009 -0400 > > ? ? ? ?2009-09-04 Lillian Angel > > ? ? ? ? * NEWS: Updated for 1.5.2 release. > > > diffstat: > > 1 file changed, 2 insertions(+) > NEWS | ? ?2 ++ > > diffs (12 lines): > > diff -r 634b6ed02270 -r 7ea6d4f11077 NEWS > --- a/NEWS ? ? ?Fri Sep 04 09:54:18 2009 -0400 > +++ b/NEWS ? ? ?Fri Sep 04 10:05:08 2009 -0400 > @@ -1,6 +1,8 @@ New in release 1.5.2 (2009-09-04) > ?New in release 1.5.2 (2009-09-04) > ?- Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 > ?- Stackoverflow error fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 > +- Backport regression (NPE) fix for AccessControlContext fix > +- Bump to hs14b16 > > ?New in release 1.5.1 (2009-08-07) > ?- Security updates from Sun. > Seeing these bug IDs makes me wonder why we don't have a 'target milestone' field enabled in our Bugzilla as there is in GCC's (e.g. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39408) We could then easily find all the bugs fixed for a release. -- 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 Sep 6 13:02:53 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 06 Sep 2009 20:02:53 +0000 Subject: [Bug 383] New: Graphics.drawLine fails to draw Dot, works on Sun Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=383 Summary: Graphics.drawLine fails to draw Dot, works on Sun Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: nhb_web at nexgo.de Graphics.drawLine fails to draw a dot drawLine(x, y, x, y). Please see attached screenshot and sample 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 bugzilla-daemon at icedtea.classpath.org Sun Sep 6 13:03:16 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 06 Sep 2009 20:03:16 +0000 Subject: [Bug 383] Graphics.drawLine fails to draw Dot, works on Sun Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=383 ------- Comment #1 from nhb_web at nexgo.de 2009-09-06 20:03 ------- Created an attachment (id=260) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=260&action=view) screenshot.png -- 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 Sep 6 13:04:05 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 06 Sep 2009 20:04:05 +0000 Subject: [Bug 383] Graphics.drawLine fails to draw Dot, works on Sun Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=383 ------- Comment #2 from nhb_web at nexgo.de 2009-09-06 20:04 ------- Created an attachment (id=261) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=261&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 mvfranz at gmail.com Mon Sep 7 12:30:33 2009 From: mvfranz at gmail.com (Michael Franz) Date: Mon, 7 Sep 2009 15:30:33 -0400 Subject: test_gamma failure on OS X (Leopard) with bsd-port (1.11) Message-ID: Hi, I have been struggling with this for a few weeks and do not know what is causing this problem. The ecj build works fine, but when the process runs the test_gamma the javac fails to startup so that Queens is not compiled. Thus the running of Queens fails as Queens is not available. I have enabled a bunch of debugging switches that I have found in the code and force the JVM to produce a core dump when it fails. When looking at the core file I am lost trying to figure out what it is telling me. If I just continue after this error I get another error about the crc-32 from java.util.ZipEntry. If I copy this image (openjkd-ecj/build/bsd-i586/j2sdk-image) and use it as my bootstrap JDK I have the same results, so I think the JDK is built correctly, it just fails at the test_gamma run. I can remove the test_gamma test and build a working JDK. Good enough that I can run NetBeans with it. I would like to figure out why the test_gamma test fails. The log before the test starts is: cd bsd_i486_compiler2/product && ./test_gamma /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/bootstrap/jdk1.6.0 java full version "1.7.0_0-b66" Launcher state: debug:on javargs:on program name:java launcher name:java javaw:off fullversion:1.7.0_0-b66 dotversion:1.7 ergo_policy:NEVER_ACT_AS_A_SERVER_CLASS_MACHINE Command line Args: argv[0] = '/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/bootstrap/jdk1.6.0/bin/javac' argv[1] = '-d' argv[2] = '.' argv[3] = '/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/make/test/Queens.java' JRE path is /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/jre jvm.cfg[0] = ->-client<- name: -client vmType: VM_IF_SERVER_CLASS server_class: -server jvm.cfg[1] = ->-server<- jvm.cfg[2] = ->-hotspot<- name: -hotspot vmType: VM_ALIASED_TO alias: -client jvm.cfg[3] = ->-classic<- jvm.cfg[4] = ->-native<- jvm.cfg[5] = ->-green<- 75 micro seconds to parse jvm.cfg Default VM: client Does `/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/jre/lib/i386/client/libjvm.dylib' exist ... yes. Launcher state: debug:on javargs:on program name:java launcher name:java javaw:off fullversion:1.7.0_0-b66 dotversion:1.7 ergo_policy:NEVER_ACT_AS_A_SERVER_CLASS_MACHINE Command line Args: argv[0] = '/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/bootstrap/jdk1.6.0/bin/javac' argv[1] = '-d' argv[2] = '.' argv[3] = '/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/make/test/Queens.java' JRE path is /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/jre jvm.cfg[0] = ->-client<- name: -client vmType: VM_IF_SERVER_CLASS server_class: -server jvm.cfg[1] = ->-server<- jvm.cfg[2] = ->-hotspot<- name: -hotspot vmType: VM_ALIASED_TO alias: -client jvm.cfg[3] = ->-classic<- jvm.cfg[4] = ->-native<- jvm.cfg[5] = ->-green<- 77 micro seconds to parse jvm.cfg Default VM: client Does `/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/jre/lib/i386/client/libjvm.dylib' exist ... yes. JVM path is /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/jre/lib/i386/client/libjvm.dylib 8376 micro seconds to LoadJavaVM Checking to set threadStackSize 0 Checking to set threadStackSize 0 Checking to set threadStackSize 0 Checking to set threadStackSize 0 Checking to set threadStackSize 0 Checking to set threadStackSize 0 Checking threadStackSize 0 JavaVM args: version 0x00010002, ignoreUnrecognized is JNI_FALSE, nOptions is 6 option[ 0] = '-Denv.class.path=.:/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/bootstrap/jdk1.6.0/jre/lib/rt.jar:/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/bootstrap/jdk1.6.0/jre/lib/i18n.jar' option[ 1] = '-Dapplication.home=/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image' option[ 2] = '-Djava.class.path=/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/lib/tools.jar:/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk-ecj/build/bsd-i586/j2sdk-image/classes' option[ 3] = '-Xms8m' option[ 4] = '-Dsun.java.command=com.sun.tools.javac.Main -d . /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/make/test/Queens.java' option[ 5] = '-Dsun.java.launcher=SUN_STANDARD' Error occurred during initialization of VM 1 java/lang/NoClassDefFoundError: java/lang/Object ./test_gamma: line 11: 68996 Abort trap (core dumped) ${JAVA_HOME}/bin/javac -d . /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/make/test/Queens.java java version "1.7.0_0" OpenJDK Runtime Environment (IcedTea7 1.11) (build 1.7.0_0-b66) OpenJDK Server VM (build 16.0-b06, mixed mode) Exception in thread "main" java.lang.NoClassDefFoundError: Queens Caused by: java.lang.ClassNotFoundException: Queens at java.net.URLClassLoader$2.run(URLClassLoader.java:299) at java.net.URLClassLoader$2.run(URLClassLoader.java:1) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:287) at java.lang.ClassLoader.loadClass(ClassLoader.java:392) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:334) at java.lang.ClassLoader.loadClass(ClassLoader.java:332) There are two threads and here is the back trace of the threads: #0 0x912c5136 in clock_get_attributes () #1 0x912be013 in usleep$NOCANCEL$UNIX2003 () #2 0x912d5685 in abort () #3 0x015686c5 in os::abort (dump_core=true) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp:1599 #4 0x01373a9d in vm_abort [inlined] () at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/runtime/java.cpp:507 #5 0x01373a9d in vm_exit_during_initialization (ex={ = {_handle = 0x25062270}, }, message=0x803208 "java/lang/Object") at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/runtime/java.cpp:551 #6 0x012c4bf3 in Exceptions::special_exception (thread=0x801800, file=0x170b434 "/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp", line=136, h_name={ = {_handle = 0x1726574}, }, message=0x108bc0 "?\003") at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/utilities/exceptions.cpp:82 #7 0x012c5689 in Exceptions::_throw_msg (thread=0x801800, file=0x170b434 "/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp", line=136, h_name={ = {_handle = 0xe6e54}, }, message=0x803208 "java/lang/Object", h_loader={_handle = 0x0}, h_protection_domain={_handle = 0xb00509f8}) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/utilities/exceptions.cpp:134 #8 0x012c576e in Exceptions::_throw_msg (thread=0x801800, file=0x170b434 "/Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp", line=136, name=0x25062270, message=0x803208 "java/lang/Object") at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/utilities/exceptions.cpp:156 #9 0x01634ddc in ~ResourceMark [inlined] () at resourceArea.hpp:138 #10 0x01634ddc in SystemDictionary::handle_resolution_exception (class_name={ = {_handle = 0x1b7a8a8}, }, class_loader={_handle = 0x170b434}, protection_domain={_handle = 0x88}, throw_error=112, klass_h={ = {_handle = 0x803208}, }, __the_thread__=0x801800) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:127 #11 0x0163a743 in SystemDictionary::resolve_or_fail () at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:111 #12 0x0163a743 in SystemDictionary::resolve_or_fail () at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:148 #13 0x0163a743 in SystemDictionary::initialize_wk_klass (id=24273732, init_opt=0, __the_thread__=0x801800) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:1880 #14 0x0163a8e9 in SystemDictionary::initialize_preloaded_classes (__the_thread__=0x1) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:1896 #15 0x0163b129 in SystemDictionary::initialize (__the_thread__=0x801800) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp:1851 #16 0x0168474f in Universe::genesis (__the_thread__=0x801800) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/memory/universe.cpp:288 #17 0x01685821 in universe2_init () at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/memory/universe.cpp:899 #18 0x01341b52 in init_globals () at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/runtime/init.cpp:102 #19 0x0166aa1e in Threads::create_vm (args=0x801800, canTryAgain=0xb0050e5f) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/runtime/thread.cpp:2900 #20 0x013815f2 in JNI_CreateJavaVM (vm=0xb0050f4c, penv=0xb0050f48, args=0xffffffff) at /Volumes/Data/Users/mfranz/developer/icedtea/icedtea-1.11-AppleJDK/openjdk/hotspot/src/share/vm/prims/jni.cpp:3281 #21 0x00002bec in JavaMain (_args=0x3c) at ../../../src/share/bin/java.c:1133 #22 0x9121a155 in _pthread_start () #23 0x9121a012 in thread_start () and the other: #0 0x911f046e in nanosleep$UNIX2003 () #1 0x000075eb in ContinueInNewThread0 (continuation=0x2b40 , stack_size=-5763182555964637184, args=0xbfffb090) at ../../../src/solaris/bin/java_md.c:1307 #2 0x00005310 in JLI_Launch (argc=15208051, argv=0x0, jargc=2, jargv=0x141f0, appclassc=2, appclassv=0x141e8, fullversion=0xbfffa25c "?S#?\003\017", dotversion=0x0, pname=0x1286a "java", lname=0x911f046e "s\016?", javaargs=0 '\0', cpwildcard=0 '\0', javaw=0 '\0', ergo=1) at ../../../src/share/bin/java.c:1910 #3 0x0000e2dc in main (argc=4, argv=0x100a08) at ../../src/share/bin/main.c:104 ZipEntry Error: BUILD FAILED java.lang.IllegalArgumentException: invalid entry crc-32 at java.util.zip.ZipEntry.setCrc(ZipEntry.java:186) at org.apache.tools.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:300) at org.apache.tools.zip.ZipFile.(ZipFile.java:152) at org.apache.tools.ant.types.ZipScanner.fillMapsFromArchive(ZipScanner.java:70) at org.apache.tools.ant.types.ArchiveScanner.scanme(ArchiveScanner.java:319) at org.apache.tools.ant.types.ArchiveScanner.getResource(ArchiveScanner.java:260) at org.apache.tools.ant.util.ResourceUtils.selectOutOfDateSources(ResourceUtils.java:162) at org.apache.tools.ant.util.ResourceUtils.selectOutOfDateSources(ResourceUtils.java:112) at org.apache.tools.ant.util.ResourceUtils.selectOutOfDateSources(ResourceUtils.java:84) at org.apache.tools.ant.taskdefs.Zip.getResourcesToAdd(Zip.java:1177) at org.apache.tools.ant.taskdefs.Zip.getResourcesToAdd(Zip.java:1012) at org.apache.tools.ant.taskdefs.Jar.getResourcesToAdd(Jar.java:737) at org.apache.tools.ant.taskdefs.Zip.executeMain(Zip.java:463) at org.apache.tools.ant.taskdefs.Zip.execute(Zip.java:416) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:623) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) at org.apache.tools.ant.Project.executeTarget(Project.java:1306) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1189) at org.apache.tools.ant.Main.runBuild(Main.java:758) at org.apache.tools.ant.Main.startAnt(Main.java:217) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090907/9f0d7bcd/attachment.html From Christian.Thalinger at Sun.COM Mon Sep 7 13:16:43 2009 From: Christian.Thalinger at Sun.COM (Christian Thalinger) Date: Mon, 07 Sep 2009 22:16:43 +0200 Subject: test_gamma failure on OS X (Leopard) with bsd-port (1.11) In-Reply-To: References: Message-ID: <4AA56A2B.3060201@Sun.COM> Michael Franz wrote: > Hi, > > I have been struggling with this for a few weeks and do not know what is > causing this problem. The ecj build works fine, but when the process > runs the test_gamma the javac fails to startup so that Queens is not > compiled. Thus the running of Queens fails as Queens is not available. > I have enabled a bunch of debugging switches that I have found in the > code and force the JVM to produce a core dump when it fails. When > looking at the core file I am lost trying to figure out what it is > telling me. If I just continue after this error I get another error > about the crc-32 from java.util.ZipEntry. If I copy this image > (openjkd-ecj/build/bsd-i586/j2sdk-image) and use it as my bootstrap JDK > I have the same results, so I think the JDK is built correctly, it just > fails at the test_gamma run. > > I can remove the test_gamma test and build a working JDK. Good enough > that I can run NetBeans with it. I would like to figure out why the > test_gamma test fails. I have the same problem. The problem seems to be the way Darwin does the library resolving. It seems to always give the precedence to libraries in the current directory without setting {DY}LD_LIBRARY_PATH. So when javac from the bootstrap JDK is executed in the build directory, it picks up the newly built libjvm and of course the bootstrap classes and the new VM do not match. Not sure how to fix that... -- Christian From bugzilla-daemon at icedtea.classpath.org Mon Sep 7 14:52:38 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 07 Sep 2009 21:52:38 +0000 Subject: [Bug 362] setPreferedSize without layout manager works on Sun. Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=362 nhb_web at nexgo.de changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|graphical window appears |setPreferedSize without |blank when using icedtea |layout manager works on Sun. |instead of Sun's JRE | -- 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 icedtea.classpath.org Tue Sep 8 03:42:53 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Sep 2009 10:42:53 +0000 Subject: /hg/icedtea6: 2009-09-08 Gary Benson Message-ID: changeset b13a59d17b81 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b13a59d17b81 author: Gary Benson date: Tue Sep 08 11:46:08 2009 +0100 2009-09-08 Gary Benson * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp (JavaThread::pop_zero_frame): Tweak. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 2 +- diffs (24 lines): diff -r 61433ed873cf -r b13a59d17b81 ChangeLog --- a/ChangeLog Fri Sep 04 07:14:31 2009 -0400 +++ b/ChangeLog Tue Sep 08 11:46:08 2009 +0100 @@ -1,3 +1,8 @@ 2009-09-04 Gary Benson + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::pop_zero_frame): Tweak. + 2009-09-04 Gary Benson * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp diff -r 61433ed873cf -r b13a59d17b81 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 Fri Sep 04 07:14:31 2009 -0400 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Tue Sep 08 11:46:08 2009 +0100 @@ -45,7 +45,7 @@ _top_zero_frame = frame; } void pop_zero_frame() { - _zero_stack.set_sp((intptr_t *) _top_zero_frame + 1); + zero_stack()->set_sp((intptr_t *) _top_zero_frame + 1); _top_zero_frame = *(ZeroFrame **) _top_zero_frame; } From gbenson at icedtea.classpath.org Tue Sep 8 03:43:58 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 08 Sep 2009 10:43:58 +0000 Subject: /hg/icedtea6: 2009-09-08 Gary Benson Message-ID: changeset 175266c8ad02 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=175266c8ad02 author: Gary Benson date: Tue Sep 08 11:47:14 2009 +0100 2009-09-08 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Whitespace changes. diffstat: 2 files changed, 4 insertions(+), 12 deletions(-) ChangeLog | 4 ++++ ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 12 ------------ diffs (92 lines): diff -r b13a59d17b81 -r 175266c8ad02 ChangeLog --- a/ChangeLog Tue Sep 08 11:46:08 2009 +0100 +++ b/ChangeLog Tue Sep 08 11:47:14 2009 +0100 @@ -1,3 +1,7 @@ 2009-09-08 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Whitespace changes. + 2009-09-08 Gary Benson * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp diff -r b13a59d17b81 -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Tue Sep 08 11:46:08 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Tue Sep 08 11:47:14 2009 +0100 @@ -45,7 +45,6 @@ class ZeroStack { _top = _base + (size >> LogBytesPerWord); _sp = _top; } - void teardown() { assert(!needs_setup(), "not set up"); assert(_sp == _top, "stuff on stack at teardown"); @@ -58,7 +57,6 @@ class ZeroStack { intptr_t *sp() const { return _sp; } - void set_sp(intptr_t *new_sp) { assert(_top >= new_sp && new_sp >= _base, "bad stack pointer"); _sp = new_sp; @@ -72,7 +70,6 @@ class ZeroStack { assert(_sp > _base, "stack overflow"); *(--_sp) = value; } - intptr_t pop() { assert(_sp < _top, "stack underflow"); return *(_sp++); @@ -88,11 +85,9 @@ class ZeroStack { static ByteSize base_offset() { return byte_offset_of(ZeroStack, _base); } - static ByteSize top_offset() { return byte_offset_of(ZeroStack, _top); } - static ByteSize sp_offset() { return byte_offset_of(ZeroStack, _sp); } @@ -139,7 +134,6 @@ class ZeroFrame { intptr_t *addr_of_word(int offset) const { return (intptr_t *) this - offset; } - intptr_t value_of_word(int offset) const { return *addr_of_word(offset); } @@ -158,15 +152,12 @@ class ZeroFrame { bool is_entry_frame() const { return type() == ENTRY_FRAME; } - bool is_interpreter_frame() const { return type() == INTERPRETER_FRAME; } - bool is_shark_frame() const { return type() == SHARK_FRAME; } - bool is_deoptimizer_frame() const { return type() == DEOPTIMIZER_FRAME; } @@ -176,17 +167,14 @@ class ZeroFrame { assert(is_entry_frame(), "should be"); return (EntryFrame *) this; } - InterpreterFrame *as_interpreter_frame() const { assert(is_interpreter_frame(), "should be"); return (InterpreterFrame *) this; } - SharkFrame *as_shark_frame() const { assert(is_shark_frame(), "should be"); return (SharkFrame *) this; } - DeoptimizerFrame *as_deoptimizer_frame() const { assert(is_deoptimizer_frame(), "should be"); return (DeoptimizerFrame *) this; From aph at redhat.com Tue Sep 8 09:23:31 2009 From: aph at redhat.com (Andrew Haley) Date: Tue, 08 Sep 2009 17:23:31 +0100 Subject: icedtea-1.6-branch is FROZEN Message-ID: <4AA68503.9050008@redhat.com> icedtea-1.6-branch is frozen for release. Andrew. From gnu_andrew at member.fsf.org Tue Sep 8 09:32:52 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 8 Sep 2009 17:32:52 +0100 Subject: PING 1: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS Message-ID: <17c6771e0909080932y67703b5fy7d73f7a569ee658e@mail.gmail.com> 2009/9/3 Andrew John Hughes : > IcedTea6, as currently built, does not support elliptic curve > cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). > ?For this to be enabled, the provider must be added to > jre/lib/security/java.security and configured to point to the system > NSS. > > With the proprietary JDK, this is not something that can be done 'out > of the box', but we can do this with IcedTea by detecting NSS using > configure. ?The attached patch does just that. ?It also fixes an issue > (6763530) that prevents newer versions of NSS from working. ?When > applied, NSS can be enabled just by passing --enable-nss to configure. > > The following then works: > > $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC > -keysize 256 -keystore ectest.jks > Enter keystore password: > Re-enter new password: > etc. > > The configure check doesn't verify that NSS was built with EC support. > ?I couldn't find an easy way of doing this. ?It is enabled during the > build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). ?From > mozilla/security/coreconf/config.mk: > > ifdef NSS_ENABLE_ECC > DEFINES += -DNSS_ENABLE_ECC > endif > > Thus the define is not available in the installed headers, so the only > way to do a check would seem to be to write code to generate an EC key > with NSS and check for failure. ?The same check would later be > invalidated if the system NSS changes after OpenJDK is built, and so > OpenJDK would need to be rebuilt. > > If someone wants to write such a test, feel free but AFAICS it > wouldn't gain anything. ?OpenJDK will still build (linking is done at > runtime) and if NSS doesn't have EC support, then OpenJDK won't which > is no different from the current status quo. > > Does this look ok for commit? > > ChangeLog: > > ? ? ? ?* HACKING: Updated. > ? ? ? ?* Makefile.am: > ? ? ? ?Add two new patches. ?Copy nss.cfg to jre/lib/security if > ? ? ? ?NSS is enabled. > ? ? ? ?* configure.ac:Check for NSS and set NSS_LIBDIR > ? ? ? ?and ENABLE_NSS if found. > ? ? ? ?* nss.cfg.in: Template for the nss configuration file. > ? ? ? ?* patches/icedtea-nss-6763530.patch: > ? ? ? ?Fix for Sun bug 6763530 which is triggered by newer > ? ? ? ?versions of NSS. > ? ? ? ?* patches/icedtea-nss-config.patch: Patch java.security > ? ? ? ?with the PCKS11 provider configuration. > > -- > 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 > Ping? I know it was a long weekend for some, but the Sun engineers have even responded to a patch I posted to hotspot-dev in the same time frame as this one... -- 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 icedtea.classpath.org Tue Sep 8 09:28:41 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Tue, 08 Sep 2009 16:28:41 +0000 Subject: /hg/release/icedtea6-1.6: 5 new changesets Message-ID: changeset 1ec1576d8e87 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=1ec1576d8e87 author: aph date: Tue Sep 08 17:27:55 2009 +0100 2009-09-08 Andrew Haley * Makefile.am (EXTRA_DIST): Remove IcedTeaNPPlugin.cc. changeset 59a945bc902a in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=59a945bc902a author: aph date: Tue Sep 08 17:28:07 2009 +0100 Added tag icedtea-1.6-release for changeset 1ec1576d8e87 changeset b9c970ddb1d5 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=b9c970ddb1d5 author: aph date: Tue Sep 08 17:29:55 2009 +0100 Added tag icedtea-1.6-release for changeset 59a945bc902a changeset 47fba49f74a8 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=47fba49f74a8 author: aph date: Tue Sep 08 17:30:18 2009 +0100 2009-09-08 Andrew Haley * icedtea-1.6 release. changeset 952a01e29182 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=952a01e29182 author: aph date: Tue Sep 08 17:30:22 2009 +0100 Added tag icedtea-1.6-release for changeset 47fba49f74a8 diffstat: 3 files changed, 15 insertions(+), 1 deletion(-) .hgtags | 7 +++++++ ChangeLog | 8 ++++++++ Makefile.am | 1 - diffs (40 lines): diff -r 3013950f3909 -r 952a01e29182 .hgtags --- a/.hgtags Sun Aug 30 17:58:20 2009 +0200 +++ b/.hgtags Tue Sep 08 17:30:22 2009 +0100 @@ -16,3 +16,10 @@ 07de70c5883a637ea2ef4aba3f8472edd7e12f1e 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2 926c38e2b2830971f6ca0dff2ce25f78a694b178 icedtea6-1.5rc3 1543ef3c5ed5e11eef67e6caf1b1d427289758f0 icedtea-1.6-branch +3013950f390903f30488930a2e99fa273026b581 icedtea-1.6-release +3013950f390903f30488930a2e99fa273026b581 icedtea-1.6-release +1ec1576d8e87411294629b25c5cf716e229d08be icedtea-1.6-release +1ec1576d8e87411294629b25c5cf716e229d08be icedtea-1.6-release +59a945bc902a0954c7f48ce151f390a39d475a87 icedtea-1.6-release +59a945bc902a0954c7f48ce151f390a39d475a87 icedtea-1.6-release +47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd icedtea-1.6-release diff -r 3013950f3909 -r 952a01e29182 ChangeLog --- a/ChangeLog Sun Aug 30 17:58:20 2009 +0200 +++ b/ChangeLog Tue Sep 08 17:30:22 2009 +0100 @@ -1,3 +1,11 @@ 2009-08-30 Mark Wielaard + + * icedtea-1.6 release. + +2009-09-08 Andrew Haley + + * Makefile.am (EXTRA_DIST): Remove IcedTeaNPPlugin.cc. + 2009-08-30 Mark Wielaard PR377. SimpleTimeZone checks too strict for Asia/Amman TimeZone. diff -r 3013950f3909 -r 952a01e29182 Makefile.am --- a/Makefile.am Sun Aug 30 17:58:20 2009 +0200 +++ b/Makefile.am Tue Sep 08 17:30:22 2009 +0100 @@ -105,7 +105,6 @@ EXTRA_DIST = rt generated \ jconsole.desktop policytool.desktop \ test/jtreg \ IcedTeaPlugin.cc \ - IcedTeaNPPlugin.cc \ HACKING pulseaudio fsg.sh \ plugin \ hotspot.map \ From gbenson at icedtea.classpath.org Wed Sep 9 01:51:21 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Wed, 09 Sep 2009 08:51:21 +0000 Subject: /hg/icedtea6: 2009-09-09 Gary Benson Message-ID: changeset 97bab225c4d6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=97bab225c4d6 author: Gary Benson date: Wed Sep 09 04:45:17 2009 -0400 2009-09-09 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp (ZeroFrame::identify_word): New method. (ZeroFrame::identify_vp_word): Likewise. * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp (EntryFrame::identify_word): New method. * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp (InterpreterFrame::identify_word): New method. * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp (SharkFrame::identify_word): New method. * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp (DeoptimizerFrame::identify_word): Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp (frame::frame): Added frame pointer argument. (frame::_fp): New field. (frame::fp): Return the above, instead of a dummy value. (frame::zero_print_on_error): New method. * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp (frame::frame): Initialize frame pointer. * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp (frame::sender_for_entry_frame): Pass frame pointer. (frame::sender_for_interpreter_frame): Likewise. (frame::sender_for_compiled_frame): Likewise. (frame::sender_for_deoptimizer_frame): Likewise. (frame::zero_print_on_error): New method. (ZeroFrame::identify_word): Likewise. (EntryFrame::identify_word): Likewise. (InterpreterFrame::identify_word): Likewise. (SharkFrame::identify_word): Likewise. (ZeroFrame::identify_vp_word): Likewise. (DeoptimizerFrame::identify_word): Likewise. * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp (JavaThread::pd_last_frame): Pass frame pointer. * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp (os::current_frame): Implemented. * patches/icedtea-zero.patch (VMError::report): Replace stack printer code. (hotspot/src/share/vm/includeDB_core): Updated. * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Removed. diffstat: 13 files changed, 421 insertions(+), 353 deletions(-) ChangeLog | 47 + patches/icedtea-zero.patch | 96 +-- ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp | 7 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp | 7 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 250 ++++++++ ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 6 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp | 7 ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp | 7 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp | 291 ---------- ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 15 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 13 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 2 diffs (truncated from 949 to 500 lines): diff -r 175266c8ad02 -r 97bab225c4d6 ChangeLog --- a/ChangeLog Tue Sep 08 11:47:14 2009 +0100 +++ b/ChangeLog Wed Sep 09 04:45:17 2009 -0400 @@ -1,3 +1,50 @@ 2009-09-08 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp + (ZeroFrame::identify_word): New method. + (ZeroFrame::identify_vp_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp + (EntryFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp + (InterpreterFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp + (SharkFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp + (frame::frame): Added frame pointer argument. + (frame::_fp): New field. + (frame::fp): Return the above, instead of a dummy value. + (frame::zero_print_on_error): New method. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp + (frame::frame): Initialize frame pointer. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp + (frame::sender_for_entry_frame): Pass frame pointer. + (frame::sender_for_interpreter_frame): Likewise. + (frame::sender_for_compiled_frame): Likewise. + (frame::sender_for_deoptimizer_frame): Likewise. + (frame::zero_print_on_error): New method. + (ZeroFrame::identify_word): Likewise. + (EntryFrame::identify_word): Likewise. + (InterpreterFrame::identify_word): Likewise. + (SharkFrame::identify_word): Likewise. + (ZeroFrame::identify_vp_word): Likewise. + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::pd_last_frame): Pass frame pointer. + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + (os::current_frame): Implemented. + + * patches/icedtea-zero.patch + (VMError::report): Replace stack printer code. + (hotspot/src/share/vm/includeDB_core): Updated. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Removed. + 2009-09-08 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Whitespace changes. diff -r 175266c8ad02 -r 97bab225c4d6 patches/icedtea-zero.patch --- a/patches/icedtea-zero.patch Tue Sep 08 11:47:14 2009 +0100 +++ b/patches/icedtea-zero.patch Wed Sep 09 04:45:17 2009 -0400 @@ -144,43 +144,48 @@ --- openjdk/hotspot/src/share/vm/utilities/vmError.cpp.orig 2008-07-27 08:37:02.000000000 +0000 +++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -25,6 +25,10 @@ - # include "incls/_precompiled.incl" - # include "incls/_vmError.cpp.incl" - -+# ifdef ZERO -+# include -+# endif // ZERO -+ - // List of environment variables that should be reported in error log file. - const char *env_list[] = { - // All platforms -@@ -392,6 +397,7 @@ - st->cr(); - } - -+#ifndef ZERO - STEP(110, "(printing stack bounds)" ) - - if (_verbose) { -@@ -449,11 +455,16 @@ - st->cr(); - } - } -+#endif // !ZERO - - STEP(130, "(printing Java stack)" ) +@@ -462,6 +462,40 @@ if (_verbose && _thread && _thread->is_Java_thread()) { JavaThread* jt = (JavaThread*)_thread; +#ifdef ZERO -+ st->print_cr("Java stack:"); -+ ZeroStackPrinter(st, buf, sizeof(buf)).print(jt); ++ if (jt->zero_stack()->sp() && jt->top_zero_frame()) { ++ // StackFrameStream uses the frame anchor, which may not have ++ // been set up. This can be done at any time in Zero, however, ++ // so if it hasn't been set up then we just set it up now and ++ // clear it again when we're done. ++ bool has_last_Java_frame = jt->has_last_Java_frame(); ++ if (!has_last_Java_frame) ++ jt->set_last_Java_frame(); ++ st->print("Java frames:"); ++ ++ // If the top frame is a Shark frame and the frame anchor isn't ++ // set up then it's possible that the information in the frame ++ // is garbage: it could be from a previous decache, or it could ++ // simply have never been written. So we print a warning... ++ StackFrameStream sfs(jt); ++ if (!has_last_Java_frame && !sfs.is_done()) { ++ if (sfs.current()->zeroframe()->is_shark_frame()) { ++ st->print(" (TOP FRAME MAY BE JUNK)"); ++ } ++ } ++ st->cr(); ++ ++ // Print the frames ++ for(int i = 0; !sfs.is_done(); sfs.next(), i++) { ++ sfs.current()->zero_print_on_error(i, st, buf, sizeof(buf)); ++ st->cr(); ++ } ++ ++ // Reset the frame anchor if necessary ++ if (!has_last_Java_frame) ++ jt->reset_last_Java_frame(); ++ } +#else if (jt->has_last_Java_frame()) { st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)"); for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) { -@@ -461,6 +472,7 @@ +@@ -469,6 +503,7 @@ st->cr(); } } @@ -188,21 +193,7 @@ } STEP(140, "(printing VM operation)" ) -@@ -472,6 +484,14 @@ void VMError::report(outputStream* st) { - op->print_on_error(st); - st->cr(); - st->cr(); -+#ifdef ZERO -+ if (op->calling_thread()->is_Java_thread()) { -+ st->print_cr("Calling thread's Java stack:"); -+ ZeroStackPrinter(st, buf, sizeof(buf)).print( -+ (JavaThread *) op->calling_thread()); -+ st->cr(); -+ } -+#endif // ZERO - } - } - + Index: openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp =================================================================== --- openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp.orig 2009-06-10 11:30:46.000000000 +0200 @@ -219,3 +210,20 @@ Index: openjdk/hotspot/src/share/vm/runt } +--- openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:22:25.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:41:57.000000000 +0100 +@@ -1655,12 +1655,14 @@ + frame_.cpp frame.inline.hpp + frame_.cpp handles.inline.hpp + frame_.cpp interpreter.hpp ++frame_.cpp interpreterRuntime.hpp + frame_.cpp javaCalls.hpp + frame_.cpp markOop.hpp + frame_.cpp methodOop.hpp + frame_.cpp monitorChunk.hpp + frame_.cpp oop.inline.hpp + frame_.cpp resourceArea.hpp ++frame_.cpp scopeDesc.hpp + frame_.cpp signature.hpp + frame_.cpp stubCodeGenerator.hpp + frame_.cpp stubRoutines.hpp diff -r 175266c8ad02 -r 97bab225c4d6 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp Wed Sep 09 04:45:17 2009 -0400 @@ -45,4 +45,11 @@ class DeoptimizerFrame : public ZeroFram public: static DeoptimizerFrame *build(ZeroStack* stack); + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; diff -r 175266c8ad02 -r 97bab225c4d6 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Wed Sep 09 04:45:17 2009 -0400 @@ -57,4 +57,11 @@ class EntryFrame : public ZeroFrame { JavaCallWrapper *call_wrapper() const { return (JavaCallWrapper *) value_of_word(call_wrapper_off); } + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; diff -r 175266c8ad02 -r 97bab225c4d6 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Sep 09 04:45:17 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-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 @@ -47,19 +47,19 @@ frame frame::sender_for_entry_frame(Regi "sender should be next Java frame"); map->clear(); assert(map->include_argument_oops(), "should be set by clear"); - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_interpreter_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_compiled_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_deoptimizer_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender(RegisterMap* map) const { @@ -180,3 +180,243 @@ intptr_t* frame::interpreter_frame_tos_a int index = (Interpreter::expr_offset_in_bytes(offset) / wordSize); return &interpreter_frame_tos_address()[index]; } + +void frame::zero_print_on_error(int frame_index, + outputStream* st, + char* buf, + int buflen) const { + // Divide the buffer between the field and the value + buflen >>= 1; + char *fieldbuf = buf; + char *valuebuf = buf + buflen; + + // Print each word of the frame + for (intptr_t *addr = fp(); addr <= sp(); addr++) { + int offset = sp() - addr; + + // Fill in default values, then try and improve them + snprintf(fieldbuf, buflen, "word[%d]", offset); + snprintf(valuebuf, buflen, PTR_FORMAT, *addr); + zeroframe()->identify_word(frame_index, offset, fieldbuf, valuebuf, buflen); + fieldbuf[buflen - 1] = '\0'; + valuebuf[buflen - 1] = '\0'; + + // Print the result + st->print_cr(" " PTR_FORMAT ": %-21s = %s", addr, fieldbuf, valuebuf); + } +} + +void ZeroFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + switch (offset) { + case next_frame_off: + strncpy(fieldbuf, "next_frame", buflen); + break; + + case frame_type_off: + strncpy(fieldbuf, "frame_type", buflen); + if (is_entry_frame()) + strncpy(valuebuf, "ENTRY_FRAME", buflen); + else if (is_interpreter_frame()) + strncpy(valuebuf, "INTERPRETER_FRAME", buflen); + else if (is_shark_frame()) + strncpy(valuebuf, "SHARK_FRAME", buflen); + else if (is_deoptimizer_frame()) + strncpy(valuebuf, "DEOPTIMIZER_FRAME", buflen); + break; + + default: + if (is_entry_frame()) { + as_entry_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_interpreter_frame()) { + as_interpreter_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_shark_frame()) { + as_shark_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_deoptimizer_frame()) { + as_deoptimizer_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + } +} + +void EntryFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + switch (offset) { + case call_wrapper_off: + strncpy(fieldbuf, "call_wrapper", buflen); + break; + + default: + snprintf(fieldbuf, buflen, "local[%d]", offset - 3); + } +} + +void InterpreterFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + interpreterState istate = interpreter_state(); + bool is_valid = istate->self_link() == istate; + intptr_t *addr = addr_of_word(offset); + + // Fixed part + if (addr >= (intptr_t *) istate) { + const char *field = istate->name_of_field_at_address((address) addr); + if (field) { + if (is_valid && !strcmp(field, "_method")) { + istate->method()->name_and_sig_as_C_string(valuebuf, buflen); + } + else if (is_valid && !strcmp(field, "_bcp") && istate->bcp()) { + snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", + istate->bcp(), istate->method()->bci_from(istate->bcp())); + } + snprintf(fieldbuf, buflen, "%sistate->%s", + field[strlen(field) - 1] == ')' ? "(": "", field); + } + else if (addr == (intptr_t *) istate) { + strncpy(fieldbuf, "(vtable for istate)", buflen); + } + return; + } + + // Variable part + if (!is_valid) + return; + + // JNI stuff + if (istate->method()->is_native() && addr < istate->stack_base()) { + address hA = istate->method()->signature_handler(); + if (hA != NULL) { + if (hA != (address) InterpreterRuntime::slow_signature_handler) { + InterpreterRuntime::SignatureHandler *handler = + InterpreterRuntime::SignatureHandler::from_handlerAddr(hA); + + intptr_t *params = istate->stack_base() - handler->argument_count(); + if (addr >= params) { + int param = addr - params; + const char *desc = ""; + if (param == 0) + desc = " (JNIEnv)"; + else if (param == 1) { + if (istate->method()->is_static()) + desc = " (mirror)"; + else + desc = " (this)"; + } + snprintf(fieldbuf, buflen, "parameter[%d]%s", param, desc); + return; + } + + for (int i = 0; i < handler->argument_count(); i++) { + if (params[i] == (intptr_t) addr) { + snprintf(fieldbuf, buflen, "unboxed parameter[%d]", i); + return; + } + } + } + } + return; + } + + // Monitors and stack + identify_vp_word(frame_index, addr, + (intptr_t *) istate->monitor_base(), + istate->stack_base(), + fieldbuf, buflen); +} + +void SharkFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + // Fixed part + switch (offset) { + case pc_off: + strncpy(fieldbuf, "pc", buflen); + if (method()->is_oop()) { + nmethod *code = method()->code(); + if (code && code->pc_desc_at(pc())) { + SimpleScopeDesc ssd(code, pc()); + snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", pc(), ssd.bci()); + } + } + return; + + case unextended_sp_off: + strncpy(fieldbuf, "unextended_sp", buflen); + return; + + case method_off: + strncpy(fieldbuf, "method", buflen); + if (method()->is_oop()) { + method()->name_and_sig_as_C_string(valuebuf, buflen); + } + return; + + case oop_tmp_off: + strncpy(fieldbuf, "oop_tmp", buflen); + return; + } + + // Variable part + if (method()->is_oop()) { + identify_vp_word(frame_index, addr_of_word(offset), + addr_of_word(header_words + 1), + unextended_sp() + method()->max_stack(), + fieldbuf, buflen); + } +} + +void ZeroFrame::identify_vp_word(int frame_index, + intptr_t* addr, + intptr_t* monitor_base, + intptr_t* stack_base, + char* fieldbuf, + int buflen) const { + // Monitors + if (addr >= stack_base && addr < monitor_base) { + int monitor_size = frame::interpreter_frame_monitor_size(); + int last_index = (monitor_base - stack_base) / monitor_size - 1; + int index = last_index - (addr - stack_base) / monitor_size; + intptr_t monitor = (intptr_t) ( + (BasicObjectLock *) monitor_base - 1 - index); + intptr_t offset = (intptr_t) addr - monitor; + + if (offset == BasicObjectLock::obj_offset_in_bytes()) + snprintf(fieldbuf, buflen, "monitor[%d]->_obj", index); + else if (offset == BasicObjectLock::lock_offset_in_bytes()) + snprintf(fieldbuf, buflen, "monitor[%d]->_lock", index); + + return; + } + + // Expression stack + if (addr < stack_base) { + snprintf(fieldbuf, buflen, "%s[%d]", + frame_index == 0 ? "stack_word" : "local", + (int) (stack_base - addr - 1)); + return; + } +} + +void DeoptimizerFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + // Deoptimizer frames have no extra words to identify +} diff -r 175266c8ad02 -r 97bab225c4d6 ports/hotspot/src/cpu/zero/vm/frame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Wed Sep 09 04:45:17 2009 -0400 @@ -23,24 +23,26 @@ * */ -// A frame represents a physical stack frame (an activation). Frames -// can be C or Java frames, and the Java frames can be interpreted or -// compiled. In contrast, vframes represent source-level activations, -// so that one physical frame can correspond to multiple source level -// frames because of inlining. A frame is comprised of {pc, sp} From gbenson at redhat.com Wed Sep 9 02:00:56 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 9 Sep 2009 10:00:56 +0100 Subject: Zero stack printer changes Message-ID: <20090909090056.GA3281@redhat.com> Hi all, This patch rearranges the stack printer code in Zero so that it slots in better with HotSpot's existing frame walker and therefore requires less modification to vmError.cpp as requested by Tom Rodriguez. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r 175266c8ad02 ChangeLog --- a/ChangeLog Tue Sep 08 11:47:14 2009 +0100 +++ b/ChangeLog Wed Sep 09 04:44:36 2009 -0400 @@ -1,3 +1,50 @@ +2009-09-09 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp + (ZeroFrame::identify_word): New method. + (ZeroFrame::identify_vp_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp + (EntryFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp + (InterpreterFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp + (SharkFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp + (frame::frame): Added frame pointer argument. + (frame::_fp): New field. + (frame::fp): Return the above, instead of a dummy value. + (frame::zero_print_on_error): New method. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp + (frame::frame): Initialize frame pointer. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp + (frame::sender_for_entry_frame): Pass frame pointer. + (frame::sender_for_interpreter_frame): Likewise. + (frame::sender_for_compiled_frame): Likewise. + (frame::sender_for_deoptimizer_frame): Likewise. + (frame::zero_print_on_error): New method. + (ZeroFrame::identify_word): Likewise. + (EntryFrame::identify_word): Likewise. + (InterpreterFrame::identify_word): Likewise. + (SharkFrame::identify_word): Likewise. + (ZeroFrame::identify_vp_word): Likewise. + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::pd_last_frame): Pass frame pointer. + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + (os::current_frame): Implemented. + + * patches/icedtea-zero.patch + (VMError::report): Replace stack printer code. + (hotspot/src/share/vm/includeDB_core): Updated. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Removed. + 2009-09-08 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Whitespace changes. diff -r 175266c8ad02 patches/icedtea-zero.patch --- a/patches/icedtea-zero.patch Tue Sep 08 11:47:14 2009 +0100 +++ b/patches/icedtea-zero.patch Wed Sep 09 04:44:36 2009 -0400 @@ -144,43 +144,48 @@ --- openjdk/hotspot/src/share/vm/utilities/vmError.cpp.orig 2008-07-27 08:37:02.000000000 +0000 +++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -25,6 +25,10 @@ - # include "incls/_precompiled.incl" - # include "incls/_vmError.cpp.incl" - -+# ifdef ZERO -+# include -+# endif // ZERO -+ - // List of environment variables that should be reported in error log file. - const char *env_list[] = { - // All platforms -@@ -392,6 +397,7 @@ - st->cr(); - } - -+#ifndef ZERO - STEP(110, "(printing stack bounds)" ) - - if (_verbose) { -@@ -449,11 +455,16 @@ - st->cr(); - } - } -+#endif // !ZERO - - STEP(130, "(printing Java stack)" ) +@@ -462,6 +462,40 @@ if (_verbose && _thread && _thread->is_Java_thread()) { JavaThread* jt = (JavaThread*)_thread; +#ifdef ZERO -+ st->print_cr("Java stack:"); -+ ZeroStackPrinter(st, buf, sizeof(buf)).print(jt); ++ if (jt->zero_stack()->sp() && jt->top_zero_frame()) { ++ // StackFrameStream uses the frame anchor, which may not have ++ // been set up. This can be done at any time in Zero, however, ++ // so if it hasn't been set up then we just set it up now and ++ // clear it again when we're done. ++ bool has_last_Java_frame = jt->has_last_Java_frame(); ++ if (!has_last_Java_frame) ++ jt->set_last_Java_frame(); ++ st->print("Java frames:"); ++ ++ // If the top frame is a Shark frame and the frame anchor isn't ++ // set up then it's possible that the information in the frame ++ // is garbage: it could be from a previous decache, or it could ++ // simply have never been written. So we print a warning... ++ StackFrameStream sfs(jt); ++ if (!has_last_Java_frame && !sfs.is_done()) { ++ if (sfs.current()->zeroframe()->is_shark_frame()) { ++ st->print(" (TOP FRAME MAY BE JUNK)"); ++ } ++ } ++ st->cr(); ++ ++ // Print the frames ++ for(int i = 0; !sfs.is_done(); sfs.next(), i++) { ++ sfs.current()->zero_print_on_error(i, st, buf, sizeof(buf)); ++ st->cr(); ++ } ++ ++ // Reset the frame anchor if necessary ++ if (!has_last_Java_frame) ++ jt->reset_last_Java_frame(); ++ } +#else if (jt->has_last_Java_frame()) { st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)"); for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) { -@@ -461,6 +472,7 @@ +@@ -469,6 +503,7 @@ st->cr(); } } @@ -188,21 +193,7 @@ } STEP(140, "(printing VM operation)" ) -@@ -472,6 +484,14 @@ void VMError::report(outputStream* st) { - op->print_on_error(st); - st->cr(); - st->cr(); -+#ifdef ZERO -+ if (op->calling_thread()->is_Java_thread()) { -+ st->print_cr("Calling thread's Java stack:"); -+ ZeroStackPrinter(st, buf, sizeof(buf)).print( -+ (JavaThread *) op->calling_thread()); -+ st->cr(); -+ } -+#endif // ZERO - } - } - + Index: openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp =================================================================== --- openjdk/hotspot/src/share/vm/runtime/jniHandles.cpp.orig 2009-06-10 11:30:46.000000000 +0200 @@ -219,3 +210,20 @@ } +--- openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:22:25.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/includeDB_core 2009-09-08 13:41:57.000000000 +0100 +@@ -1655,12 +1655,14 @@ + frame_.cpp frame.inline.hpp + frame_.cpp handles.inline.hpp + frame_.cpp interpreter.hpp ++frame_.cpp interpreterRuntime.hpp + frame_.cpp javaCalls.hpp + frame_.cpp markOop.hpp + frame_.cpp methodOop.hpp + frame_.cpp monitorChunk.hpp + frame_.cpp oop.inline.hpp + frame_.cpp resourceArea.hpp ++frame_.cpp scopeDesc.hpp + frame_.cpp signature.hpp + frame_.cpp stubCodeGenerator.hpp + frame_.cpp stubRoutines.hpp diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -45,4 +45,11 @@ public: static DeoptimizerFrame *build(ZeroStack* stack); + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -57,4 +57,11 @@ JavaCallWrapper *call_wrapper() const { return (JavaCallWrapper *) value_of_word(call_wrapper_off); } + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Sep 09 04:44:36 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-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 @@ -47,19 +47,19 @@ "sender should be next Java frame"); map->clear(); assert(map->include_argument_oops(), "should be set by clear"); - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_interpreter_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_compiled_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender_for_deoptimizer_frame(RegisterMap *map) const { - return frame(sender_sp()); + return frame(sender_sp(), sp() + 1); } frame frame::sender(RegisterMap* map) const { @@ -180,3 +180,243 @@ int index = (Interpreter::expr_offset_in_bytes(offset) / wordSize); return &interpreter_frame_tos_address()[index]; } + +void frame::zero_print_on_error(int frame_index, + outputStream* st, + char* buf, + int buflen) const { + // Divide the buffer between the field and the value + buflen >>= 1; + char *fieldbuf = buf; + char *valuebuf = buf + buflen; + + // Print each word of the frame + for (intptr_t *addr = fp(); addr <= sp(); addr++) { + int offset = sp() - addr; + + // Fill in default values, then try and improve them + snprintf(fieldbuf, buflen, "word[%d]", offset); + snprintf(valuebuf, buflen, PTR_FORMAT, *addr); + zeroframe()->identify_word(frame_index, offset, fieldbuf, valuebuf, buflen); + fieldbuf[buflen - 1] = '\0'; + valuebuf[buflen - 1] = '\0'; + + // Print the result + st->print_cr(" " PTR_FORMAT ": %-21s = %s", addr, fieldbuf, valuebuf); + } +} + +void ZeroFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + switch (offset) { + case next_frame_off: + strncpy(fieldbuf, "next_frame", buflen); + break; + + case frame_type_off: + strncpy(fieldbuf, "frame_type", buflen); + if (is_entry_frame()) + strncpy(valuebuf, "ENTRY_FRAME", buflen); + else if (is_interpreter_frame()) + strncpy(valuebuf, "INTERPRETER_FRAME", buflen); + else if (is_shark_frame()) + strncpy(valuebuf, "SHARK_FRAME", buflen); + else if (is_deoptimizer_frame()) + strncpy(valuebuf, "DEOPTIMIZER_FRAME", buflen); + break; + + default: + if (is_entry_frame()) { + as_entry_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_interpreter_frame()) { + as_interpreter_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_shark_frame()) { + as_shark_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + else if (is_deoptimizer_frame()) { + as_deoptimizer_frame()->identify_word( + frame_index, offset, fieldbuf, valuebuf, buflen); + } + } +} + +void EntryFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + switch (offset) { + case call_wrapper_off: + strncpy(fieldbuf, "call_wrapper", buflen); + break; + + default: + snprintf(fieldbuf, buflen, "local[%d]", offset - 3); + } +} + +void InterpreterFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + interpreterState istate = interpreter_state(); + bool is_valid = istate->self_link() == istate; + intptr_t *addr = addr_of_word(offset); + + // Fixed part + if (addr >= (intptr_t *) istate) { + const char *field = istate->name_of_field_at_address((address) addr); + if (field) { + if (is_valid && !strcmp(field, "_method")) { + istate->method()->name_and_sig_as_C_string(valuebuf, buflen); + } + else if (is_valid && !strcmp(field, "_bcp") && istate->bcp()) { + snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", + istate->bcp(), istate->method()->bci_from(istate->bcp())); + } + snprintf(fieldbuf, buflen, "%sistate->%s", + field[strlen(field) - 1] == ')' ? "(": "", field); + } + else if (addr == (intptr_t *) istate) { + strncpy(fieldbuf, "(vtable for istate)", buflen); + } + return; + } + + // Variable part + if (!is_valid) + return; + + // JNI stuff + if (istate->method()->is_native() && addr < istate->stack_base()) { + address hA = istate->method()->signature_handler(); + if (hA != NULL) { + if (hA != (address) InterpreterRuntime::slow_signature_handler) { + InterpreterRuntime::SignatureHandler *handler = + InterpreterRuntime::SignatureHandler::from_handlerAddr(hA); + + intptr_t *params = istate->stack_base() - handler->argument_count(); + if (addr >= params) { + int param = addr - params; + const char *desc = ""; + if (param == 0) + desc = " (JNIEnv)"; + else if (param == 1) { + if (istate->method()->is_static()) + desc = " (mirror)"; + else + desc = " (this)"; + } + snprintf(fieldbuf, buflen, "parameter[%d]%s", param, desc); + return; + } + + for (int i = 0; i < handler->argument_count(); i++) { + if (params[i] == (intptr_t) addr) { + snprintf(fieldbuf, buflen, "unboxed parameter[%d]", i); + return; + } + } + } + } + return; + } + + // Monitors and stack + identify_vp_word(frame_index, addr, + (intptr_t *) istate->monitor_base(), + istate->stack_base(), + fieldbuf, buflen); +} + +void SharkFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + // Fixed part + switch (offset) { + case pc_off: + strncpy(fieldbuf, "pc", buflen); + if (method()->is_oop()) { + nmethod *code = method()->code(); + if (code && code->pc_desc_at(pc())) { + SimpleScopeDesc ssd(code, pc()); + snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", pc(), ssd.bci()); + } + } + return; + + case unextended_sp_off: + strncpy(fieldbuf, "unextended_sp", buflen); + return; + + case method_off: + strncpy(fieldbuf, "method", buflen); + if (method()->is_oop()) { + method()->name_and_sig_as_C_string(valuebuf, buflen); + } + return; + + case oop_tmp_off: + strncpy(fieldbuf, "oop_tmp", buflen); + return; + } + + // Variable part + if (method()->is_oop()) { + identify_vp_word(frame_index, addr_of_word(offset), + addr_of_word(header_words + 1), + unextended_sp() + method()->max_stack(), + fieldbuf, buflen); + } +} + +void ZeroFrame::identify_vp_word(int frame_index, + intptr_t* addr, + intptr_t* monitor_base, + intptr_t* stack_base, + char* fieldbuf, + int buflen) const { + // Monitors + if (addr >= stack_base && addr < monitor_base) { + int monitor_size = frame::interpreter_frame_monitor_size(); + int last_index = (monitor_base - stack_base) / monitor_size - 1; + int index = last_index - (addr - stack_base) / monitor_size; + intptr_t monitor = (intptr_t) ( + (BasicObjectLock *) monitor_base - 1 - index); + intptr_t offset = (intptr_t) addr - monitor; + + if (offset == BasicObjectLock::obj_offset_in_bytes()) + snprintf(fieldbuf, buflen, "monitor[%d]->_obj", index); + else if (offset == BasicObjectLock::lock_offset_in_bytes()) + snprintf(fieldbuf, buflen, "monitor[%d]->_lock", index); + + return; + } + + // Expression stack + if (addr < stack_base) { + snprintf(fieldbuf, buflen, "%s[%d]", + frame_index == 0 ? "stack_word" : "local", + (int) (stack_base - addr - 1)); + return; + } +} + +void DeoptimizerFrame::identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const { + // Deoptimizer frames have no extra words to identify +} diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/frame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -23,24 +23,26 @@ * */ -// A frame represents a physical stack frame (an activation). Frames -// can be C or Java frames, and the Java frames can be interpreted or -// compiled. In contrast, vframes represent source-level activations, -// so that one physical frame can correspond to multiple source level -// frames because of inlining. A frame is comprised of {pc, sp} +// A frame represents a physical stack frame on the Zero stack. public: enum { pc_return_offset = 0 }; + // Constructor public: - // Constructors - frame(intptr_t* sp); + frame(intptr_t* sp, intptr_t* fp); - // accessors for the instance variables + // The sp of a Zero frame is the address of the highest word in + // that frame. We keep track of the lowest address too, so the + // boundaries of the frame are available for debug printing. + private: + intptr_t* _fp; + + public: intptr_t* fp() const { - return (intptr_t *) -1; + return _fp; } #ifdef CC_INTERP @@ -67,3 +69,9 @@ public: frame sender_for_deoptimizer_frame(RegisterMap* map) const; + + public: + void zero_print_on_error(int index, + outputStream* st, + char* buf, + int buflen) const; diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 2003-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 @@ -32,13 +32,15 @@ inline frame::frame() { _sp = NULL; + _fp = NULL; _pc = NULL; _cb = NULL; _deopt_state = unknown; } -inline frame::frame(intptr_t* sp) { +inline frame::frame(intptr_t* sp, intptr_t* fp) { _sp = sp; + _fp = fp; switch (zeroframe()->type()) { case ZeroFrame::ENTRY_FRAME: _pc = StubRoutines::call_stub_return_pc(); diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -65,5 +65,12 @@ interpreterState interpreter_state() const { return (interpreterState) addr_of_word(istate_off); } + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; #endif // CC_INTERP diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -70,4 +70,11 @@ methodOop method() const { return (methodOop) value_of_word(method_off); } + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; }; diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +0,0 @@ -/* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * 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 - * 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 -#include - -class ZeroStackPrinter { - private: - outputStream* _st; - char* _buf; - int _buflen; - - public: - ZeroStackPrinter(outputStream *st, char *buf, int buflen) - : _st(st), _buf(buf), _buflen(buflen) {} - - void print(JavaThread *thread) { - intptr_t *lo_addr = thread->zero_stack()->sp(); - if (!lo_addr) { - _st->print_cr(" stack not set up"); - return; - } - - intptr_t *hi_addr = (intptr_t *) thread->top_zero_frame(); - if (!hi_addr) { - _st->print_cr("no frames pushed"); - return; - } - assert(hi_addr >= lo_addr, "corrupted stack"); - - bool top_frame = true; - while (hi_addr) { - if (!top_frame) - _st->cr(); - ZeroFrame *frame = (ZeroFrame *) hi_addr; - for (intptr_t *addr = lo_addr; addr <= hi_addr; addr++) - print_word(frame, addr, top_frame); - lo_addr = hi_addr + 1; - hi_addr = *(intptr_t **) hi_addr; - top_frame = false; - } - } - - private: - void print_word(ZeroFrame *frame, intptr_t *addr, bool top_frame) { - const char *field = NULL; - const char *value = NULL; - - int word = (intptr_t *) frame - addr; - switch (word) { - case ZeroFrame::next_frame_off: - field = "next_frame"; - break; - case ZeroFrame::frame_type_off: - field = "frame_type"; - switch (*addr) { - case ZeroFrame::ENTRY_FRAME: - value = "ENTRY_FRAME"; - break; - case ZeroFrame::INTERPRETER_FRAME: - value = "INTERPRETER_FRAME"; - break; - case ZeroFrame::SHARK_FRAME: - value = "SHARK_FRAME"; - break; - case ZeroFrame::DEOPTIMIZER_FRAME: - value = "DEOPTIMIZER_FRAME"; - break; - } - break; - } - - if (!field) { - if (frame->is_entry_frame()) { - if (word == EntryFrame::call_wrapper_off) { - field = "call_wrapper"; - } - else { - snprintf(_buf, _buflen, "local[%d]", word - 3); - field = _buf; - } - } - if (frame->is_interpreter_frame()) { - interpreterState istate = - ((InterpreterFrame *) frame)->interpreter_state(); - bool is_valid = istate->self_link() == istate; - - if (addr >= (intptr_t *) istate) { - field = istate->name_of_field_at_address((address) addr); - if (field) { - if (is_valid && !strcmp(field, "_method")) { - value = istate->method()->name_and_sig_as_C_string(_buf,_buflen); - field = "istate->_method"; - } - else if (is_valid && !strcmp(field, "_bcp") && istate->bcp()) { - snprintf(_buf, _buflen, PTR_FORMAT " (bci %d)", istate->bcp(), - istate->method()->bci_from(istate->bcp())); - value = _buf; - field = "istate->_bcp"; - } - else { - snprintf(_buf, _buflen, "%sistate->%s", - field[strlen(field) - 1] == ')' ? "(": "", field); - field = _buf; - } - } - else if (addr == (intptr_t *) istate) { - field = "(vtable for istate)"; - } - } - else if (is_valid) { - intptr_t *monitor_base = (intptr_t *) istate->monitor_base(); - if (addr >= istate->stack_base() && addr < monitor_base) { - int monitor_size = frame::interpreter_frame_monitor_size(); - int last_index = - (monitor_base - istate->stack_base()) / monitor_size - 1; - int index = - last_index - (addr - istate->stack_base()) / monitor_size; - intptr_t monitor = (intptr_t) (istate->monitor_base() - 1 - index); - intptr_t offset = (intptr_t) addr - monitor; - - if (offset == BasicObjectLock::obj_offset_in_bytes()) { - snprintf(_buf, _buflen, "monitor[%d]->_obj", index); - field = _buf; - } - else if (offset == BasicObjectLock::lock_offset_in_bytes()) { - snprintf(_buf, _buflen, "monitor[%d]->_lock", index); - field = _buf; - } - } - else if (addr < istate->stack_base()) { - if (istate->method()->is_native()) { - address hA = istate->method()->signature_handler(); - if (hA != NULL) { - if (hA != (address)InterpreterRuntime::slow_signature_handler){ - InterpreterRuntime::SignatureHandler *handler = - InterpreterRuntime::SignatureHandler::from_handlerAddr(hA); - - intptr_t *params = - istate->stack_base() - handler->argument_count(); - - if (addr >= params) { - int param = addr - params; - const char *desc = ""; - if (param == 0) - desc = " (JNIEnv)"; - else if (param == 1) { - if (istate->method()->is_static()) - desc = " (mirror)"; - else - desc = " (this)"; - } - snprintf(_buf, _buflen, "parameter[%d]%s", param, desc); - field = _buf; - } - else { - for (int i = 0; i < handler->argument_count(); i++) { - if (params[i] == (intptr_t) addr) { - snprintf(_buf, _buflen, "unboxed parameter[%d]", i); - field = _buf; - break; - } - } - } - } - } - } - else { - snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", - top_frame ? "stack_word" : "local", - istate->stack_base() - addr - 1); - field = _buf; - } - } - } - } - if (frame->is_shark_frame()) { - SharkFrame *sf = frame->as_shark_frame(); - methodOop method = sf->method(); - - if (word == SharkFrame::pc_off) { - field = "pc"; - if (method->is_oop()) { - nmethod *code = method->code(); - address pc = sf->pc(); - if (code->pc_desc_at(pc)) { - SimpleScopeDesc ssd(code, pc); - snprintf(_buf, _buflen, PTR_FORMAT " (bci %d)", pc, ssd.bci()); - value = _buf; - } - } - } - else if (word == SharkFrame::unextended_sp_off) { - field = "unextended_sp"; - } - else if (word == SharkFrame::method_off) { - field = "method"; - if (method->is_oop()) - value = method->name_and_sig_as_C_string(_buf, _buflen); - } - else if (word == SharkFrame::oop_tmp_off) { - field = "oop_tmp"; - } - else { - SharkFrame *sf = (SharkFrame *) frame; - intptr_t *monitor_base = - (intptr_t *) frame - SharkFrame::header_words + 1; - intptr_t *stack_base = - sf->unextended_sp() + sf->method()->max_stack(); - - if (addr >= stack_base && addr < monitor_base) { - int monitor_size = frame::interpreter_frame_monitor_size(); - int last_index = (monitor_base - stack_base) / monitor_size - 1; - int index = last_index - (addr - stack_base) / monitor_size; - intptr_t monitor = - (intptr_t) ((BasicObjectLock *) monitor_base - 1 - index); - intptr_t offset = (intptr_t) addr - monitor; - - if (offset == BasicObjectLock::obj_offset_in_bytes()) { - snprintf(_buf, _buflen, "monitor[%d]->_obj", index); - field = _buf; - } - else if (offset == BasicObjectLock::lock_offset_in_bytes()) { - snprintf(_buf, _buflen, "monitor[%d]->_lock", index); - field = _buf; - } - } - else { - snprintf(_buf, _buflen, "%s[" INTPTR_FORMAT "]", - top_frame ? "stack_word" : "local", - stack_base - addr - 1); - field = _buf; - } - } - } - } - - if (!field) { - snprintf(_buf, _buflen, "word[%d]", word); - field = _buf; - } - _st->print(" %p: %-21s = ", addr, field); - if (value) - _st->print_cr("%s", value); - else - _st->print_cr(PTR_FORMAT, *addr); - } -}; - -#ifndef PRODUCT -extern "C" { - void print_zero_threads() { - char buf[O_BUFLEN]; - ZeroStackPrinter zsp(tty, buf, sizeof(buf)); - - for (JavaThread *t = Threads::first(); t; t = t->next()) { - tty->print(PTR_FORMAT, t); - tty->print(" "); - t->print_on_error(tty, buf, sizeof(buf)); - tty->cr(); - tty->cr(); - - zsp.print(t); - if (t->next()) - tty->cr(); - } - } -} -#endif // !PRODUCT diff -r 175266c8ad02 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -179,4 +179,19 @@ assert(is_deoptimizer_frame(), "should be"); return (DeoptimizerFrame *) this; } + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const; + + protected: + void identify_vp_word(int frame_index, + intptr_t* addr, + intptr_t* monitor_base, + intptr_t* stack_base, + char* fieldbuf, + int buflen) const; }; diff -r 175266c8ad02 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Wed Sep 09 04:44:36 2009 -0400 @@ -36,7 +36,18 @@ } frame os::current_frame() { - Unimplemented(); + // The only thing that calls this is the stack printing code in + // VMError::report: + // - Step 110 (printing stack bounds) uses the sp in the frame + // to determine the amount of free space on the stack. We + // set the sp to a close approximation of the real value in + // order to allow this step to complete. + // - Step 120 (printing native stack) tries to walk the stack. + // The frame we create has a NULL pc, which is ignored as an + // invalid frame. + frame dummy = frame(); + dummy.set_sp((intptr_t *) current_stack_pointer()); + return dummy; } char* os::non_memory_address_word() { diff -r 175266c8ad02 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 Tue Sep 08 11:47:14 2009 +0100 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp Wed Sep 09 04:44:36 2009 -0400 @@ -79,7 +79,7 @@ private: frame pd_last_frame() { assert(has_last_Java_frame(), "must have last_Java_sp() when suspended"); - return frame(last_Java_sp()); + return frame(last_Java_sp(), zero_stack()->sp()); } public: From aph at icedtea.classpath.org Wed Sep 9 08:40:59 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Wed, 09 Sep 2009 15:40:59 +0000 Subject: /hg/release/icedtea6-1.6: 2009-09-09 Andrew Haley changeset ddb5f1f057a6 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=ddb5f1f057a6 author: aph date: Wed Sep 09 16:44:12 2009 +0100 2009-09-09 Andrew Haley * NEWS: Update for 1.6. diffstat: 2 files changed, 13 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ NEWS | 10 +++++++++- diffs (35 lines): diff -r 952a01e29182 -r ddb5f1f057a6 ChangeLog --- a/ChangeLog Tue Sep 08 17:30:22 2009 +0100 +++ b/ChangeLog Wed Sep 09 16:44:12 2009 +0100 @@ -1,3 +1,7 @@ 2009-09-08 Andrew Haley + + * NEWS: Update for 1.6. + 2009-09-08 Andrew Haley * icedtea-1.6 release. diff -r 952a01e29182 -r ddb5f1f057a6 NEWS --- a/NEWS Tue Sep 08 17:30:22 2009 +0100 +++ b/NEWS Wed Sep 09 16:44:12 2009 +0100 @@ -1,4 +1,4 @@ New in release 1.6 (UNRELEASED) -New in release 1.6 (UNRELEASED) +New in release 1.6: - Added java method tracing using systemtap version 0.9.9+. - Security fixes for: @@ -12,6 +12,14 @@ New in release 1.6 (UNRELEASED) CVE-2009-2476 - OpenJDK OpenType checks can be bypassed CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary privileges CVE-2009-2690 - OpenJDK private variable information disclosure +- FAST interpreter for ARM +- Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 +- Stackoverflow error fix: +http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 +- Backport regression (NPE) fix for AccessControlContext fix +- Bump to hs14b16 +- The plugin has been updated to improve stability and cookie support. + Support for certificates with mismatched CNs has been added as well. New in release 1.5 (2009-05-20) From aph at icedtea.classpath.org Wed Sep 9 08:43:49 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Wed, 09 Sep 2009 15:43:49 +0000 Subject: /hg/release/icedtea6-1.6: Added tag icedtea-1.6-release for chan... Message-ID: changeset d6379c90d5fe in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=d6379c90d5fe author: aph date: Wed Sep 09 16:44:37 2009 +0100 Added tag icedtea-1.6-release for changeset ddb5f1f057a6 diffstat: 1 file changed, 2 insertions(+) .hgtags | 2 ++ diffs (9 lines): diff -r ddb5f1f057a6 -r d6379c90d5fe .hgtags --- a/.hgtags Wed Sep 09 16:44:12 2009 +0100 +++ b/.hgtags Wed Sep 09 16:44:37 2009 +0100 @@ -23,3 +23,5 @@ 59a945bc902a0954c7f48ce151f390a39d475a87 59a945bc902a0954c7f48ce151f390a39d475a87 icedtea-1.6-release 59a945bc902a0954c7f48ce151f390a39d475a87 icedtea-1.6-release 47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd icedtea-1.6-release +47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd icedtea-1.6-release +ddb5f1f057a62e1278a1eeee2f797f64cf6b0ee9 icedtea-1.6-release From aph at redhat.com Wed Sep 9 10:00:07 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 09 Sep 2009 18:00:07 +0100 Subject: IcedTea6 1.6 Released! Message-ID: <4AA7DF17.20107@redhat.com> We are proud to announce the release of IcedTea6 6. The IcedTea project provides a harness to build the source code from OpenJDK7 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and SPARC via the Zero assembler port. What's New? ----------------- - Added java method tracing using systemtap version 0.9.9+. - Security fixes for: CVE-2009-2670 - OpenJDK Untrusted applet System properties access CVE-2009-2671 CVE-2009-2672 - OpenJDK Proxy mechanism information leaks CVE-2009-2673 - OpenJDK proxy mechanism allows non-authorized socket connections CVE-2009-2674 - Java Web Start Buffer JPEG processing integer overflow CVE-2009-2675 - Java Web Start Buffer unpack200 processing integer overflow CVE-2009-2625 - OpenJDK XML parsing Denial-Of-Service CVE-2009-2475 - OpenJDK information leaks in mutable variables CVE-2009-2476 - OpenJDK OpenType checks can be bypassed CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary privileges CVE-2009-2690 - OpenJDK private variable information disclosure - FAST interpreter for ARM - Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 - Stackoverflow error fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 - Backport regression (NPE) fix for AccessControlContext fix - Bump to hs14b16 - The plugin has been updated to improve stability and cookie support. Support for certificates with mismatched CNs has been added as well. ----------------- The tarball and nosrc RPM can be downloaded here: http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-28.b16.fc11.nosrc.rpm http://icedtea.classpath.org/download/source/icedtea6-1.6.tar.gz The following people helped with this release: Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, Mark Wielaard, Lillian Angel, Matthias Klose, Ed Nevill, and many others. We would also like to thank the bug reporters and testers! To get started: $ hg clone http://icedtea.classpath.org/hg/release/icedtea6-1.6 $ cd icedtea6-1.6 Full build requirements and instructions are in INSTALL: $ ./configure [--enable-visualvm --with-openjdk --enable-pulse-java --enable-systemtap ...] $ make From aph at redhat.com Wed Sep 9 10:04:40 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 09 Sep 2009 18:04:40 +0100 Subject: icedtea-1.6-branch is open In-Reply-To: <4AA68503.9050008@redhat.com> References: <4AA68503.9050008@redhat.com> Message-ID: <4AA7E028.9030307@redhat.com> The branch is now open for bug fixes, usual patch approval rules apply. Andrew. From a.radke at arcor.de Wed Sep 9 13:59:40 2009 From: a.radke at arcor.de (Andreas Radke) Date: Wed, 9 Sep 2009 22:59:40 +0200 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA7DF17.20107@redhat.com> References: <4AA7DF17.20107@redhat.com> Message-ID: <20090909225940.69c265c4@laptop64.home> Am Wed, 09 Sep 2009 18:00:07 +0100 schrieb Andrew Haley : > We are proud to announce the release of IcedTea6 6. > > The IcedTea project provides a harness to build the source code from > OpenJDK7 using Free Software build tools. It also includes the only > Free Java plugin and Web Start implementation, and support for > additional architectures over and above x86, x86_64 and SPARC via the > Zero assembler port. > > > What's New? > ----------------- > - Added java method tracing using systemtap version 0.9.9+. > - Security fixes for: > CVE-2009-2670 - OpenJDK Untrusted applet System properties access > CVE-2009-2671 CVE-2009-2672 - OpenJDK Proxy mechanism information > leaks CVE-2009-2673 - OpenJDK proxy mechanism allows non-authorized > socket connections CVE-2009-2674 - Java Web Start Buffer JPEG > processing integer overflow CVE-2009-2675 - Java Web Start Buffer > unpack200 processing integer overflow CVE-2009-2625 - OpenJDK XML > parsing Denial-Of-Service CVE-2009-2475 - OpenJDK information leaks > in mutable variables CVE-2009-2476 - OpenJDK OpenType checks can be > bypassed CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary > privileges CVE-2009-2690 - OpenJDK private variable information > disclosure > - FAST interpreter for ARM > - Timezone fix: > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 > - Stackoverflow error fix: > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 > - Backport regression (NPE) fix for AccessControlContext fix > - Bump to hs14b16 > - The plugin has been updated to improve stability and cookie support. > Support for certificates with mismatched CNs has been added as well. > ----------------- > > The tarball and nosrc RPM can be downloaded here: > > http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-28.b16.fc11.nosrc.rpm > > http://icedtea.classpath.org/download/source/icedtea6-1.6.tar.gz > > > The following people helped with this release: > Gary Benson, Deepak Bhole, Andrew Haley, Andrew John Hughes, Mark > Wielaard, Lillian Angel, Matthias Klose, Ed Nevill, and many others. > > > We would also like to thank the bug reporters and testers! > > To get started: > $ hg clone http://icedtea.classpath.org/hg/release/icedtea6-1.6 > $ cd icedtea6-1.6 > > Full build requirements and instructions are in INSTALL: > $ ./configure [--enable-visualvm --with-openjdk --enable-pulse-java > --enable-systemtap ...] > $ make > We build our packages with latest openjdk/icedtea. It seems something has changed from 1.5.2 to 1.6: checking for an OpenJDK source zip... /tmp/openjdk6/trunk/src/openjdk-6-src-b16-24_apr_2009.tar.gz checking for a HotSpot source zip... 09f7962b8b44.tar.gz checking for an OpenJDK source directory... /tmp/openjdk6/trunk/src/icedtea6-1.6/openjdk checking for an alternate jar command... not specified checking whether to use CACAO as VM... no checking for CACAO home directory... $(abs_top_builddir)/cacao/install checking for a CACAO source zip... not specified checking whether to disable optimizations... checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking whether to use the zero-assembler port... no checking whether to use the Shark JIT... no checking whether to retrieve the source code from Mercurial... no checking which Mercurial revision to use... tip checking cups/cups.h usability... yes checking cups/cups.h presence... yes checking for cups/cups.h... yes checking cups/ppd.h usability... yes checking cups/ppd.h presence... yes checking for cups/ppd.h... yes checking X11/X.h usability... yes checking X11/X.h presence... yes checking for X11/X.h... yes checking for main in -ljpeg... yes checking for main in -lgif... yes checking for main in -lz... yes checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for XPROTO... yes checking for XT... yes checking for XP... yes checking for X11... yes checking for XINERAMA... yes checking for XRENDER... yes checking for LIBPNG... yes checking for XTST... yes checking for FREETYPE2... yes checking for ALSA... yes checking for XULRUNNER... yes checking for GTK... yes checking for GLIB... yes checking for xulrunner version... 1090102 checking for --with-additional-vms... configure: creating ./config.status config.status: creating Makefile config.status: creating platform_zero config.status: creating jvm.cfg config.status: creating ergo.c config.status: executing depfiles commands configure: WARNING: unrecognized options: --with-openjdk-home mkdir -p bootstrap rm -f bootstrap/jdk1.6.0 ln -sf yes bootstrap/jdk1.6.0; \ if ! bootstrap/jdk1.6.0/bin/java -version ; \ then \ echo "bootstrap/jdk1.6.0/bin/java" \ "cannot be found or is corrupted." ; \ exit 1; \ fi /bin/sh: Zeile 1: bootstrap/jdk1.6.0/bin/java: Datei oder Verzeichnis nicht gefunden bootstrap/jdk1.6.0/bin/java cannot be found or is corrupted. make: *** [stamps/bootstrap-directory-symlink.stamp] Fehler 1 ==> FEHLER: Build fehlgeschlagen. Was has been changed here? -Andy Arch Linux package maintainer From doko at ubuntu.com Wed Sep 9 14:14:19 2009 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 09 Sep 2009 23:14:19 +0200 Subject: IcedTea6 1.6 Released! In-Reply-To: <20090909225940.69c265c4@laptop64.home> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> Message-ID: <4AA81AAB.5080303@ubuntu.com> On 09.09.2009 22:59, Andreas Radke wrote: > configure: WARNING: unrecognized options: --with-openjdk-home > Was has been changed here? run configure --help and look for the changed configuration options. Yes, we missed to document these changes. Matthias From gnu_andrew at member.fsf.org Wed Sep 9 14:27:06 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 9 Sep 2009 22:27:06 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA81AAB.5080303@ubuntu.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> Message-ID: <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> 2009/9/9 Matthias Klose : > On 09.09.2009 22:59, Andreas Radke wrote: > >> configure: WARNING: unrecognized options: --with-openjdk-home > >> Was has been changed here? > > run configure --help and look for the changed configuration options. Yes, we > missed to document these changes. > > ?Matthias > Yeah, the important bit you missed off that big listing was the options you were passing to configure :) But if you change --with-openjdk-home to --with-openjdk, all should be well. I did document this in 7... it just seems that bit didn't get backported :( -- 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 a.radke at arcor.de Thu Sep 10 00:55:49 2009 From: a.radke at arcor.de (Andreas Radke) Date: Thu, 10 Sep 2009 09:55:49 +0200 (CEST) Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> Message-ID: Ok, found out why it failed: _javaver=1.6.0 _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk the configure check failed about this pathname. and exporting $SYSTEM_OPENJDK_DIR couldn't solve it. I have to patch configure to accept our path. Maybe you know a more simple fix. Now a bit further: one patch fails... Checking patches/icedtea-version.patch The text leading up to this was: -------------------------- |--- openjdkold/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 -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored The text leading up to this was: -------------------------- |--- 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 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored The text leading up to this was: -------------------------- |--- 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 -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored ERROR patch patches/icedtea-version.patch FAILED! WARNING make clean-patch before retrying a fix make: *** [stamps/patch.stamp] Fehler 2 How can we solve this? -Andy From aph at redhat.com Thu Sep 10 02:07:17 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 10:07:17 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> Message-ID: <4AA8C1C5.6090404@redhat.com> Andreas Radke wrote: > Ok, found out why it failed: > > _javaver=1.6.0 > _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk > > the configure check failed about this pathname. and exporting > $SYSTEM_OPENJDK_DIR couldn't solve it. I have to patch configure to > accept our path. Maybe you know a more simple fix. > > Now a bit further: one patch fails... > > Checking patches/icedtea-version.patch > The text leading up to this was: > -------------------------- > |--- openjdkold/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 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > The text leading up to this was: > -------------------------- > |--- 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 > -------------------------- > No file to patch. Skipping patch. > 2 out of 2 hunks ignored > The text leading up to this was: > -------------------------- > |--- 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 > -------------------------- > No file to patch. Skipping patch. > 1 out of 1 hunk ignored > ERROR patch patches/icedtea-version.patch FAILED! > WARNING make clean-patch before retrying a fix > make: *** [stamps/patch.stamp] Fehler 2 > > > How can we solve this? I get patching file openjdk/hotspot/make/linux/makefiles/optimized.make Checking patches/icedtea-version.patch Applying patches/icedtea-version.patch patching file openjdk/jdk/make/common/shared/Defs.gmk patching file openjdk/jdk/src/share/classes/sun/misc/Version-template.java patching file openjdk/jdk/make/java/version/Makefile so I do not know what is causing your problem. Please tell us precisely what you did, and some more about your environment. Andrew. From aph at redhat.com Thu Sep 10 05:14:30 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 13:14:30 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> Message-ID: <4AA8EDA6.80909@redhat.com> Andrew John Hughes wrote: > 2009/9/9 Matthias Klose : >> On 09.09.2009 22:59, Andreas Radke wrote: >> >>> configure: WARNING: unrecognized options: --with-openjdk-home >>> Was has been changed here? >> run configure --help and look for the changed configuration options. Yes, we >> missed to document these changes. >> >> Matthias >> > > Yeah, the important bit you missed off that big listing was the > options you were passing to configure :) > > But if you change --with-openjdk-home to --with-openjdk, all should be well. > > I did document this in 7... it just seems that bit didn't get backported :( Can you please back-port the documentation change? Thanks, Andrew. From aph at redhat.com Thu Sep 10 05:20:26 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 13:20:26 +0100 Subject: Miscellaneous jar improvements Message-ID: <4AA8EF0A.9030209@redhat.com> 2009-09-10 Andrew Haley * patches/icedtea-jar-misc.patch: Import patch from upstream OpenJDK 6. http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 This is a patch to make jar much faster. On Zero targets, this much improves the build time, which is very painful on the distro builders. OK for IcedTea trunk and 1.6 branch? Andrew. From mark at klomp.org Thu Sep 10 05:34:18 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 10 Sep 2009 14:34:18 +0200 Subject: Miscellaneous jar improvements In-Reply-To: <4AA8EF0A.9030209@redhat.com> References: <4AA8EF0A.9030209@redhat.com> Message-ID: <1252586058.9780.19.camel@springer.wildebeest.org> On Thu, 2009-09-10 at 13:20 +0100, Andrew Haley wrote: > 2009-09-10 Andrew Haley > > * patches/icedtea-jar-misc.patch: Import patch from upstream > OpenJDK 6. > http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 > > > This is a patch to make jar much faster. On Zero targets, this much > improves the build time, which is very painful on the distro builders. > > OK for IcedTea trunk and 1.6 branch? Yes, I would like to see that speedup! Martin claimed on some setup it reduced the rt.jar building to just 2 seconds (!). Seeing that building rt.jar currently is one of the most time consuming steps in the build that would be fantastic. I think this is fine, it comes with extra tests and is already in jdk7 and jdk6. If the speedup claims are true it would be good to get this sooner rather than later. But lets also try to encourage jdk6 to make a new release soon. Thanks for testing and backporting this, Mark From gnu_andrew at member.fsf.org Thu Sep 10 05:42:45 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 13:42:45 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <1252586058.9780.19.camel@springer.wildebeest.org> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> Message-ID: <17c6771e0909100542x1c840d09h597515dc135e7150@mail.gmail.com> 2009/9/10 Mark Wielaard : > On Thu, 2009-09-10 at 13:20 +0100, Andrew Haley wrote: >> 2009-09-10 ?Andrew Haley ? >> >> ? ? ? * patches/icedtea-jar-misc.patch: Import patch from upstream >> ? ? ? OpenJDK 6. >> ? ? ? http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 >> >> >> This is a patch to make jar much faster. ?On Zero targets, this much >> improves the build time, which is very painful on the distro builders. >> >> OK for IcedTea trunk and 1.6 branch? > > Yes, I would like to see that speedup! Martin claimed on some setup it > reduced the rt.jar building to just 2 seconds (!). Seeing that building > rt.jar currently is one of the most time consuming steps in the build > that would be fantastic. > > I think this is fine, it comes with extra tests and is already in jdk7 > and jdk6. If the speedup claims are true it would be good to get this > sooner rather than later. > Yes please! Don't know how I missed this one, I saw the thread start but didn't see it turn into a commit. > But lets also try to encourage jdk6 to make a new release soon. > Which translates as encourage them to fix jcheck -- because the release is planned, it's waiting on the hs14 merge. > Thanks for testing and backporting this, > > Mark > > Likewise, -- 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 icedtea.classpath.org Thu Sep 10 05:49:04 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Thu, 10 Sep 2009 12:49:04 +0000 Subject: /hg/release/icedtea6-1.6: 2009-09-10 Andrew Haley changeset da4268686a33 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=da4268686a33 author: aph date: Thu Sep 10 13:52:13 2009 +0100 2009-09-10 Andrew Haley * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from upstream OpenJDK 6. http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 diffstat: 3 files changed, 1134 insertions(+), 1 deletion(-) ChangeLog | 6 Makefile.am | 3 patches/icedtea-jar-misc.patch | 1126 ++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 1156 to 500 lines): diff -r d6379c90d5fe -r da4268686a33 ChangeLog --- a/ChangeLog Wed Sep 09 16:44:37 2009 +0100 +++ b/ChangeLog Thu Sep 10 13:52:13 2009 +0100 @@ -1,3 +1,9 @@ 2009-09-09 Andrew Haley + + * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from + upstream OpenJDK 6. + http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 + 2009-09-09 Andrew Haley * NEWS: Update for 1.6. diff -r d6379c90d5fe -r da4268686a33 Makefile.am --- a/Makefile.am Wed Sep 09 16:44:37 2009 +0100 +++ b/Makefile.am Thu Sep 10 13:52:13 2009 +0100 @@ -622,7 +622,8 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6824440.patch \ patches/security/icedtea-6830335.patch \ patches/security/icedtea-6845701.patch \ - patches/security/icedtea-6813167.patch + patches/security/icedtea-6813167.patch \ + patches/icedtea-jar-misc.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r d6379c90d5fe -r da4268686a33 patches/icedtea-jar-misc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jar-misc.patch Thu Sep 10 13:52:13 2009 +0100 @@ -0,0 +1,1126 @@ + +# HG changeset patch +# User martin +# Date 1246913604 25200 +# Node ID b35f1e5075a42030e8624459b13daa45ffc834f8 +# Parent 1661d42b1c09135b77f039e604878f0985d24255 +6854795: Miscellaneous improvements to "jar" +6834805: Improve jar -C performance +6332094: "jar t" and "jar x" should use ZipFile, not ZipInputStream +6496274: jar seems to use more CPU than it should +Summary: backport jdk7 jar command (remove use of nio2) +Reviewed-by: sherman, darcy + +--- openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Thu Jun 25 17:15:18 2009 -0400 ++++ openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Mon Jul 06 13:53:24 2009 -0700 +@@ -32,6 +32,8 @@ import java.util.jar.Manifest; + import java.util.jar.Manifest; + import java.text.MessageFormat; + import sun.misc.JarIndex; ++import static sun.misc.JarIndex.INDEX_NAME; ++import static java.util.jar.JarFile.MANIFEST_NAME; + + /** + * This class implements a simple utility for creating files in the JAR +@@ -46,10 +48,18 @@ class Main { + String zname = ""; + String[] files; + String rootjar = null; +- Hashtable filesTable = new Hashtable(); +- Vector paths = new Vector(); +- Vector v; +- CRC32 crc32 = new CRC32(); ++ ++ // An entryName(path)->File map generated during "expand", it helps to ++ // decide whether or not an existing entry in a jar file needs to be ++ // replaced, during the "update" operation. ++ Map entryMap = new HashMap(); ++ ++ // All files need to be added/updated. ++ Set entries = new LinkedHashSet(); ++ ++ // Directories specified by "-C" operation. ++ Set paths = new HashSet(); ++ + /* + * cflag: create + * uflag: update +@@ -62,11 +72,8 @@ class Main { + */ + boolean cflag, uflag, xflag, tflag, vflag, flag0, Mflag, iflag; + +- static final String MANIFEST = JarFile.MANIFEST_NAME; + static final String MANIFEST_DIR = "META-INF/"; + static final String VERSION = "1.0"; +- static final char SEPARATOR = File.separatorChar; +- static final String INDEX = JarIndex.INDEX_NAME; + + private static ResourceBundle rsrc; + +@@ -118,9 +125,21 @@ class Main { + this.program = program; + } + ++ /** ++ * Creates a new empty temporary file in the same directory as the ++ * specified file. A variant of File.createTempFile. ++ */ ++ private static File createTempFileInSameDirectoryAs(File file) ++ throws IOException { ++ File dir = file.getParentFile(); ++ if (dir == null) ++ dir = new File("."); ++ return File.createTempFile("jartmp", null, dir); ++ } ++ + private boolean ok; + +- /* ++ /** + * Starts main program with the specified arguments. + */ + public synchronized boolean run(String args[]) { +@@ -153,7 +172,7 @@ class Main { + } + addVersion(manifest); + addCreatedBy(manifest); +- if (isAmbigousMainClass(manifest)) { ++ if (isAmbiguousMainClass(manifest)) { + if (in != null) { + in.close(); + } +@@ -175,7 +194,8 @@ class Main { + vflag = false; + } + } +- create(new BufferedOutputStream(out), expand(files), manifest); ++ expand(null, files, false); ++ create(new BufferedOutputStream(out, 4096), manifest); + if (in != null) { + in.close(); + } +@@ -186,9 +206,7 @@ class Main { + FileOutputStream out; + if (fname != null) { + inputFile = new File(fname); +- String path = inputFile.getParent(); +- tmpFile = File.createTempFile("tmp", null, +- new File((path == null) ? "." : path)); ++ tmpFile = createTempFileInSameDirectoryAs(inputFile); + in = new FileInputStream(inputFile); + out = new FileOutputStream(tmpFile); + } else { +@@ -198,8 +216,9 @@ class Main { + } + InputStream manifest = (!Mflag && (mname != null)) ? + (new FileInputStream(mname)) : null; +- expand(files); +- boolean updateOk = update(in, new BufferedOutputStream(out), manifest); ++ expand(null, files, true); ++ boolean updateOk = update(in, new BufferedOutputStream(out), ++ manifest, null); + if (ok) { + ok = updateOk; + } +@@ -217,19 +236,32 @@ class Main { + } + tmpFile.delete(); + } +- } else if (xflag || tflag) { +- InputStream in; ++ } else if (tflag) { ++ replaceFSC(files); + if (fname != null) { +- in = new FileInputStream(fname); ++ list(fname, files); + } else { +- in = new FileInputStream(FileDescriptor.in); +- } +- if (xflag) { +- extract(new BufferedInputStream(in), files); ++ InputStream in = new FileInputStream(FileDescriptor.in); ++ try{ ++ list(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } ++ } else if (xflag) { ++ replaceFSC(files); ++ if (fname != null && files != null) { ++ extract(fname, files); + } else { +- list(new BufferedInputStream(in), files); +- } +- in.close(); ++ InputStream in = (fname == null) ++ ? new FileInputStream(FileDescriptor.in) ++ : new FileInputStream(fname); ++ try { ++ extract(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } + } else if (iflag) { + genIndex(rootjar, files); + } +@@ -248,8 +280,8 @@ class Main { + return ok; + } + +- /* +- * Parse command line arguments. ++ /** ++ * Parses command line arguments. + */ + boolean parseArgs(String args[]) { + /* Preprocess and expand @file arguments */ +@@ -354,7 +386,7 @@ class Main { + while (dir.indexOf("//") > -1) { + dir = dir.replace("//", "/"); + } +- paths.addElement(dir.replace(File.separatorChar, '/')); ++ paths.add(dir.replace(File.separatorChar, '/')); + nameBuf[k++] = dir + args[++i]; + } else { + nameBuf[k++] = args[i]; +@@ -383,21 +415,11 @@ class Main { + return true; + } + +- /* ++ /** + * Expands list of files to process into full list of all files that + * can be found by recursively descending directories. + */ +- String[] expand(String[] files) { +- v = new Vector(); +- expand(null, files, v, filesTable); +- files = new String[v.size()]; +- for (int i = 0; i < files.length; i++) { +- files[i] = ((File)v.elementAt(i)).getPath(); +- } +- return files; +- } +- +- void expand(File dir, String[] files, Vector v, Hashtable t) { ++ void expand(File dir, String[] files, boolean isUpdate) { + if (files == null) { + return; + } +@@ -409,17 +431,20 @@ class Main { + f = new File(dir, files[i]); + } + if (f.isFile()) { +- if (!t.contains(f)) { +- t.put(entryName(f.getPath()), f); +- v.addElement(f); ++ if (entries.add(f)) { ++ if (isUpdate) ++ entryMap.put(entryName(f.getPath()), f); + } + } else if (f.isDirectory()) { +- String dirPath = f.getPath(); +- dirPath = (dirPath.endsWith(File.separator)) ? dirPath : +- (dirPath + File.separator); +- t.put(entryName(dirPath), f); +- v.addElement(f); +- expand(f, f.list(), v, t); ++ if (entries.add(f)) { ++ if (isUpdate) { ++ String dirPath = f.getPath(); ++ dirPath = (dirPath.endsWith(File.separator)) ? dirPath : ++ (dirPath + File.separator); ++ entryMap.put(entryName(dirPath), f); ++ } ++ expand(f, f.list(), isUpdate); ++ } + } else { + error(formatMsg("error.nosuch.fileordir", String.valueOf(f))); + ok = false; +@@ -427,10 +452,10 @@ class Main { + } + } + +- /* ++ /** + * Creates a new JAR file. + */ +- void create(OutputStream out, String[] files, Manifest manifest) ++ void create(OutputStream out, Manifest manifest) + throws IOException + { + ZipOutputStream zos = new JarOutputStream(out); +@@ -446,7 +471,7 @@ class Main { + e.setSize(0); + e.setCrc(0); + zos.putNextEntry(e); +- e = new ZipEntry(MANIFEST); ++ e = new ZipEntry(MANIFEST_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { + crc32Manifest(e, manifest); +@@ -455,42 +480,61 @@ class Main { + manifest.write(zos); + zos.closeEntry(); + } +- for (int i = 0; i < files.length; i++) { +- addFile(zos, new File(files[i])); ++ for (File file: entries) { ++ addFile(zos, file); + } + zos.close(); + } + +- /* +- * update an existing jar file. ++ private char toUpperCaseASCII(char c) { ++ return (c < 'a' || c > 'z') ? c : (char) (c + 'A' - 'a'); ++ } ++ ++ /** ++ * Compares two strings for equality, ignoring case. The second ++ * argument must contain only upper-case ASCII characters. ++ * We don't want case comparison to be locale-dependent (else we ++ * have the notorious "turkish i bug"). ++ */ ++ private boolean equalsIgnoreCase(String s, String upper) { ++ assert upper.toUpperCase(java.util.Locale.ENGLISH).equals(upper); ++ int len; ++ if ((len = s.length()) != upper.length()) ++ return false; ++ for (int i = 0; i < len; i++) { ++ char c1 = s.charAt(i); ++ char c2 = upper.charAt(i); ++ if (c1 != c2 && toUpperCaseASCII(c1) != c2) ++ return false; ++ } ++ return true; ++ } ++ ++ /** ++ * Updates an existing jar file. + */ + boolean update(InputStream in, OutputStream out, +- InputStream newManifest) throws IOException ++ InputStream newManifest, ++ JarIndex jarIndex) throws IOException + { +- Hashtable t = filesTable; +- Vector v = this.v; + ZipInputStream zis = new ZipInputStream(in); + ZipOutputStream zos = new JarOutputStream(out); + ZipEntry e = null; + boolean foundManifest = false; +- byte[] buf = new byte[1024]; +- int n = 0; + boolean updateOk = true; + +- if (t.containsKey(INDEX)) { +- addIndex((JarIndex)t.get(INDEX), zos); ++ if (jarIndex != null) { ++ addIndex(jarIndex, zos); + } + + // put the old entries first, replace if necessary + while ((e = zis.getNextEntry()) != null) { + String name = e.getName(); + +- boolean isManifestEntry = name.toUpperCase( +- java.util.Locale.ENGLISH). +- equals(MANIFEST); +- if ((name.toUpperCase().equals(INDEX) +- && t.containsKey(INDEX)) +- || (Mflag && isManifestEntry)) { ++ boolean isManifestEntry = equalsIgnoreCase(name, MANIFEST_NAME); ++ ++ if ((jarIndex != null && equalsIgnoreCase(name, INDEX_NAME)) ++ || (Mflag && isManifestEntry)) { + continue; + } else if (isManifestEntry && ((newManifest != null) || + (ename != null))) { +@@ -500,9 +544,9 @@ class Main { + // might need it below, and we can't re-read the same data + // twice. + FileInputStream fis = new FileInputStream(mname); +- boolean ambigous = isAmbigousMainClass(new Manifest(fis)); ++ boolean ambiguous = isAmbiguousMainClass(new Manifest(fis)); + fis.close(); +- if (ambigous) { ++ if (ambiguous) { + return false; + } + } +@@ -514,8 +558,7 @@ class Main { + } + updateManifest(old, zos); + } else { +- if (!t.containsKey(name)) { // copy the old stuff +- ++ if (!entryMap.containsKey(name)) { // copy the old stuff + // do our own compression + ZipEntry e2 = new ZipEntry(name); + e2.setMethod(e.getMethod()); +@@ -527,30 +570,24 @@ class Main { + e2.setCrc(e.getCrc()); + } + zos.putNextEntry(e2); +- while ((n = zis.read(buf, 0, buf.length)) != -1) { +- zos.write(buf, 0, n); +- } ++ copy(zis, zos); + } else { // replace with the new files +- addFile(zos, (File)(t.get(name))); +- t.remove(name); +- } +- } +- } +- t.remove(INDEX); ++ File f = entryMap.get(name); ++ addFile(zos, f); ++ entryMap.remove(name); ++ entries.remove(f); ++ } ++ } ++ } + + // add the remaining new files +- if (!t.isEmpty()) { +- for (int i = 0; i < v.size(); i++) { +- File f = (File)v.elementAt(i); +- if (t.containsValue(f)) { +- addFile(zos, f); +- } +- } ++ for (File f: entries) { ++ addFile(zos, f); + } + if (!foundManifest) { + if (newManifest != null) { + Manifest m = new Manifest(newManifest); +- updateOk = !isAmbigousMainClass(m); ++ updateOk = !isAmbiguousMainClass(m); + if (updateOk) { + updateManifest(m, zos); + } +@@ -567,23 +604,16 @@ class Main { + private void addIndex(JarIndex index, ZipOutputStream zos) + throws IOException + { +- ZipEntry e = new ZipEntry(INDEX); ++ ZipEntry e = new ZipEntry(INDEX_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { +- e.setMethod(ZipEntry.STORED); +- File ifile = File.createTempFile("index", null, new File(".")); +- BufferedOutputStream bos = new BufferedOutputStream +- (new FileOutputStream(ifile)); +- index.write(bos); +- crc32File(e, ifile); +- bos.close(); +- ifile.delete(); ++ CRC32OutputStream os = new CRC32OutputStream(); ++ index.write(os); ++ os.updateEntry(e); + } + zos.putNextEntry(e); + index.write(zos); +- if (vflag) { +- // output(getMsg("out.update.manifest")); +- } ++ zos.closeEntry(); + } + + private void updateManifest(Manifest m, ZipOutputStream zos) +@@ -594,10 +624,9 @@ class Main { + if (ename != null) { + addMainClass(m, ename); + } +- ZipEntry e = new ZipEntry(MANIFEST); ++ ZipEntry e = new ZipEntry(MANIFEST_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { +- e.setMethod(ZipEntry.STORED); + crc32Manifest(e, m); + } + zos.putNextEntry(e); +@@ -611,9 +640,9 @@ class Main { + private String entryName(String name) { + name = name.replace(File.separatorChar, '/'); + String matchPath = ""; +- for (int i = 0; i < paths.size(); i++) { +- String path = (String)paths.elementAt(i); +- if (name.startsWith(path) && (path.length() > matchPath.length())) { ++ for (String path : paths) { ++ if (name.startsWith(path) ++ && (path.length() > matchPath.length())) { + matchPath = path; + } + } +@@ -651,7 +680,7 @@ class Main { + global.put(Attributes.Name.MAIN_CLASS, mainApp); + } + +- private boolean isAmbigousMainClass(Manifest m) { ++ private boolean isAmbiguousMainClass(Manifest m) { + if (ename != null) { + Attributes global = m.getMainAttributes(); + if ((global.get(Attributes.Name.MAIN_CLASS) != null)) { +@@ -663,13 +692,12 @@ class Main { From gnu_andrew at member.fsf.org Thu Sep 10 06:26:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 14:26:35 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA8EDA6.80909@redhat.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> Message-ID: <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: >> 2009/9/9 Matthias Klose : >>> On 09.09.2009 22:59, Andreas Radke wrote: >>> >>>> configure: WARNING: unrecognized options: --with-openjdk-home >>>> Was has been changed here? >>> run configure --help and look for the changed configuration options. Yes, we >>> missed to document these changes. >>> >>> ?Matthias >>> >> >> Yeah, the important bit you missed off that big listing was the >> options you were passing to configure :) >> >> But if you change --with-openjdk-home to --with-openjdk, all should be well. >> >> I did document this in 7... it just seems that bit didn't get backported :( > > Can you please back-port the documentation change? > > Thanks, > Andrew. > > Sure, how's this? * INSTALL: Update documentation to reflect recent changes and add Shark requirements. It appears --with-openjdk was never even documented, never mind this change :( Let me know if this is ok to commit and on which branches to do so. I'm also plan to forwardport the two NEWS changesets from 1.6 to HEAD; is that ok? -- 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 7da45c5bcfa0 INSTALL --- a/INSTALL Thu Sep 10 14:16:04 2009 +0100 +++ b/INSTALL Thu Sep 10 14:22:13 2009 +0100 @@ -39,6 +39,8 @@ For building the zero-assembler port (see below), you will need libffi. +For building the Shark JIT, you will need LLVM 2.5 or current SVN. + For building with systemtap support (--enable-systemtap), you will need systemtap-sdt-devel (available since systemtap 0.9.5). This also needs the --with-abs-install-dir configure option to make sure the hotspot.stp.in @@ -51,21 +53,20 @@ See ./configure --help if you need to override the defaults. -To bootstrap IcedTea with ecj: +To bootstrap IcedTea with ecj and a Classpath-based JDK such as GCJ: autoreconf ./configure make -To build IcedTea with an older version of IcedTea, use: +To build IcedTea with an older version of IcedTea or OpenJDK, use: autoreconf -./configure --with-icedtea - [default location: /usr/lib/jvm/java-icedtea, - to specifiy location use --with-icedtea-home=/path/to/icedtea] +./configure --with-openjdk + to specify the location use --with-openjdk=/path/to/icedtea] make There is currently no install target. -IcedTea ends up in openjdk/control/build/- when the build completes. +IcedTea ends up in openjdk/build/- when the build completes. Example instantiations of - include linux-i586, linux-amd64 and linux-ppc64. Rebuilding The IcedTea Plugs From aph at redhat.com Thu Sep 10 06:29:29 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 14:29:29 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> Message-ID: <4AA8FF39.2060704@redhat.com> Andrew John Hughes wrote: > 2009/9/10 Andrew Haley : >> Andrew John Hughes wrote: >>> 2009/9/9 Matthias Klose : >>>> On 09.09.2009 22:59, Andreas Radke wrote: >>>> >>>>> configure: WARNING: unrecognized options: --with-openjdk-home >>>>> Was has been changed here? >>>> run configure --help and look for the changed configuration options. Yes, we >>>> missed to document these changes. >>>> >>>> Matthias >>>> >>> Yeah, the important bit you missed off that big listing was the >>> options you were passing to configure :) >>> >>> But if you change --with-openjdk-home to --with-openjdk, all should be well. >>> >>> I did document this in 7... it just seems that bit didn't get backported :( >> Can you please back-port the documentation change? > > Sure, how's this? > > * INSTALL: Update documentation to reflect recent changes and add > Shark requirements. > > It appears --with-openjdk was never even documented, never mind this change :( > Let me know if this is ok to commit and on which branches to do so. > I'm also plan to forwardport the two NEWS changesets from 1.6 to HEAD; > is that ok? Yes, and yes. The relevant branches are, I think, trunk and 1.6. Andrew. From aph at icedtea.classpath.org Thu Sep 10 06:27:11 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Thu, 10 Sep 2009 13:27:11 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 6aed937c788b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=6aed937c788b author: aph date: Thu Sep 10 13:52:13 2009 +0100 2009-09-10 Andrew Haley * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from upstream OpenJDK 6. http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 changeset c2589b0c25b8 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c2589b0c25b8 author: aph date: Thu Sep 10 14:02:32 2009 +0100 2009-09-10 Andrew Haley * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from upstream OpenJDK 6. http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 diffstat: 3 files changed, 1134 insertions(+), 1 deletion(-) ChangeLog | 6 Makefile.am | 3 patches/icedtea-jar-misc.patch | 1126 ++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 1156 to 500 lines): diff -r 97bab225c4d6 -r c2589b0c25b8 ChangeLog --- a/ChangeLog Wed Sep 09 04:45:17 2009 -0400 +++ b/ChangeLog Thu Sep 10 14:02:32 2009 +0100 @@ -1,3 +1,9 @@ 2009-09-09 Gary Benson + + * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from + upstream OpenJDK 6. + http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 + 2009-09-09 Gary Benson * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp diff -r 97bab225c4d6 -r c2589b0c25b8 Makefile.am --- a/Makefile.am Wed Sep 09 04:45:17 2009 -0400 +++ b/Makefile.am Thu Sep 10 14:02:32 2009 +0100 @@ -627,7 +627,8 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6824440.patch \ patches/security/icedtea-6830335.patch \ patches/security/icedtea-6845701.patch \ - patches/security/icedtea-6813167.patch + patches/security/icedtea-6813167.patch \ + patches/icedtea-jar-misc.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 97bab225c4d6 -r c2589b0c25b8 patches/icedtea-jar-misc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jar-misc.patch Thu Sep 10 14:02:32 2009 +0100 @@ -0,0 +1,1126 @@ + +# HG changeset patch +# User martin +# Date 1246913604 25200 +# Node ID b35f1e5075a42030e8624459b13daa45ffc834f8 +# Parent 1661d42b1c09135b77f039e604878f0985d24255 +6854795: Miscellaneous improvements to "jar" +6834805: Improve jar -C performance +6332094: "jar t" and "jar x" should use ZipFile, not ZipInputStream +6496274: jar seems to use more CPU than it should +Summary: backport jdk7 jar command (remove use of nio2) +Reviewed-by: sherman, darcy + +--- openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Thu Jun 25 17:15:18 2009 -0400 ++++ openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Mon Jul 06 13:53:24 2009 -0700 +@@ -32,6 +32,8 @@ import java.util.jar.Manifest; + import java.util.jar.Manifest; + import java.text.MessageFormat; + import sun.misc.JarIndex; ++import static sun.misc.JarIndex.INDEX_NAME; ++import static java.util.jar.JarFile.MANIFEST_NAME; + + /** + * This class implements a simple utility for creating files in the JAR +@@ -46,10 +48,18 @@ class Main { + String zname = ""; + String[] files; + String rootjar = null; +- Hashtable filesTable = new Hashtable(); +- Vector paths = new Vector(); +- Vector v; +- CRC32 crc32 = new CRC32(); ++ ++ // An entryName(path)->File map generated during "expand", it helps to ++ // decide whether or not an existing entry in a jar file needs to be ++ // replaced, during the "update" operation. ++ Map entryMap = new HashMap(); ++ ++ // All files need to be added/updated. ++ Set entries = new LinkedHashSet(); ++ ++ // Directories specified by "-C" operation. ++ Set paths = new HashSet(); ++ + /* + * cflag: create + * uflag: update +@@ -62,11 +72,8 @@ class Main { + */ + boolean cflag, uflag, xflag, tflag, vflag, flag0, Mflag, iflag; + +- static final String MANIFEST = JarFile.MANIFEST_NAME; + static final String MANIFEST_DIR = "META-INF/"; + static final String VERSION = "1.0"; +- static final char SEPARATOR = File.separatorChar; +- static final String INDEX = JarIndex.INDEX_NAME; + + private static ResourceBundle rsrc; + +@@ -118,9 +125,21 @@ class Main { + this.program = program; + } + ++ /** ++ * Creates a new empty temporary file in the same directory as the ++ * specified file. A variant of File.createTempFile. ++ */ ++ private static File createTempFileInSameDirectoryAs(File file) ++ throws IOException { ++ File dir = file.getParentFile(); ++ if (dir == null) ++ dir = new File("."); ++ return File.createTempFile("jartmp", null, dir); ++ } ++ + private boolean ok; + +- /* ++ /** + * Starts main program with the specified arguments. + */ + public synchronized boolean run(String args[]) { +@@ -153,7 +172,7 @@ class Main { + } + addVersion(manifest); + addCreatedBy(manifest); +- if (isAmbigousMainClass(manifest)) { ++ if (isAmbiguousMainClass(manifest)) { + if (in != null) { + in.close(); + } +@@ -175,7 +194,8 @@ class Main { + vflag = false; + } + } +- create(new BufferedOutputStream(out), expand(files), manifest); ++ expand(null, files, false); ++ create(new BufferedOutputStream(out, 4096), manifest); + if (in != null) { + in.close(); + } +@@ -186,9 +206,7 @@ class Main { + FileOutputStream out; + if (fname != null) { + inputFile = new File(fname); +- String path = inputFile.getParent(); +- tmpFile = File.createTempFile("tmp", null, +- new File((path == null) ? "." : path)); ++ tmpFile = createTempFileInSameDirectoryAs(inputFile); + in = new FileInputStream(inputFile); + out = new FileOutputStream(tmpFile); + } else { +@@ -198,8 +216,9 @@ class Main { + } + InputStream manifest = (!Mflag && (mname != null)) ? + (new FileInputStream(mname)) : null; +- expand(files); +- boolean updateOk = update(in, new BufferedOutputStream(out), manifest); ++ expand(null, files, true); ++ boolean updateOk = update(in, new BufferedOutputStream(out), ++ manifest, null); + if (ok) { + ok = updateOk; + } +@@ -217,19 +236,32 @@ class Main { + } + tmpFile.delete(); + } +- } else if (xflag || tflag) { +- InputStream in; ++ } else if (tflag) { ++ replaceFSC(files); + if (fname != null) { +- in = new FileInputStream(fname); ++ list(fname, files); + } else { +- in = new FileInputStream(FileDescriptor.in); +- } +- if (xflag) { +- extract(new BufferedInputStream(in), files); ++ InputStream in = new FileInputStream(FileDescriptor.in); ++ try{ ++ list(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } ++ } else if (xflag) { ++ replaceFSC(files); ++ if (fname != null && files != null) { ++ extract(fname, files); + } else { +- list(new BufferedInputStream(in), files); +- } +- in.close(); ++ InputStream in = (fname == null) ++ ? new FileInputStream(FileDescriptor.in) ++ : new FileInputStream(fname); ++ try { ++ extract(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } + } else if (iflag) { + genIndex(rootjar, files); + } +@@ -248,8 +280,8 @@ class Main { + return ok; + } + +- /* +- * Parse command line arguments. ++ /** ++ * Parses command line arguments. + */ + boolean parseArgs(String args[]) { + /* Preprocess and expand @file arguments */ +@@ -354,7 +386,7 @@ class Main { + while (dir.indexOf("//") > -1) { + dir = dir.replace("//", "/"); + } +- paths.addElement(dir.replace(File.separatorChar, '/')); ++ paths.add(dir.replace(File.separatorChar, '/')); + nameBuf[k++] = dir + args[++i]; + } else { + nameBuf[k++] = args[i]; +@@ -383,21 +415,11 @@ class Main { + return true; + } + +- /* ++ /** + * Expands list of files to process into full list of all files that + * can be found by recursively descending directories. + */ +- String[] expand(String[] files) { +- v = new Vector(); +- expand(null, files, v, filesTable); +- files = new String[v.size()]; +- for (int i = 0; i < files.length; i++) { +- files[i] = ((File)v.elementAt(i)).getPath(); +- } +- return files; +- } +- +- void expand(File dir, String[] files, Vector v, Hashtable t) { ++ void expand(File dir, String[] files, boolean isUpdate) { + if (files == null) { + return; + } +@@ -409,17 +431,20 @@ class Main { + f = new File(dir, files[i]); + } + if (f.isFile()) { +- if (!t.contains(f)) { +- t.put(entryName(f.getPath()), f); +- v.addElement(f); ++ if (entries.add(f)) { ++ if (isUpdate) ++ entryMap.put(entryName(f.getPath()), f); + } + } else if (f.isDirectory()) { +- String dirPath = f.getPath(); +- dirPath = (dirPath.endsWith(File.separator)) ? dirPath : +- (dirPath + File.separator); +- t.put(entryName(dirPath), f); +- v.addElement(f); +- expand(f, f.list(), v, t); ++ if (entries.add(f)) { ++ if (isUpdate) { ++ String dirPath = f.getPath(); ++ dirPath = (dirPath.endsWith(File.separator)) ? dirPath : ++ (dirPath + File.separator); ++ entryMap.put(entryName(dirPath), f); ++ } ++ expand(f, f.list(), isUpdate); ++ } + } else { + error(formatMsg("error.nosuch.fileordir", String.valueOf(f))); + ok = false; +@@ -427,10 +452,10 @@ class Main { + } + } + +- /* ++ /** + * Creates a new JAR file. + */ +- void create(OutputStream out, String[] files, Manifest manifest) ++ void create(OutputStream out, Manifest manifest) + throws IOException + { + ZipOutputStream zos = new JarOutputStream(out); +@@ -446,7 +471,7 @@ class Main { + e.setSize(0); + e.setCrc(0); + zos.putNextEntry(e); +- e = new ZipEntry(MANIFEST); ++ e = new ZipEntry(MANIFEST_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { + crc32Manifest(e, manifest); +@@ -455,42 +480,61 @@ class Main { + manifest.write(zos); + zos.closeEntry(); + } +- for (int i = 0; i < files.length; i++) { +- addFile(zos, new File(files[i])); ++ for (File file: entries) { ++ addFile(zos, file); + } + zos.close(); + } + +- /* +- * update an existing jar file. ++ private char toUpperCaseASCII(char c) { ++ return (c < 'a' || c > 'z') ? c : (char) (c + 'A' - 'a'); ++ } ++ ++ /** ++ * Compares two strings for equality, ignoring case. The second ++ * argument must contain only upper-case ASCII characters. ++ * We don't want case comparison to be locale-dependent (else we ++ * have the notorious "turkish i bug"). ++ */ ++ private boolean equalsIgnoreCase(String s, String upper) { ++ assert upper.toUpperCase(java.util.Locale.ENGLISH).equals(upper); ++ int len; ++ if ((len = s.length()) != upper.length()) ++ return false; ++ for (int i = 0; i < len; i++) { ++ char c1 = s.charAt(i); ++ char c2 = upper.charAt(i); ++ if (c1 != c2 && toUpperCaseASCII(c1) != c2) ++ return false; ++ } ++ return true; ++ } ++ ++ /** ++ * Updates an existing jar file. + */ + boolean update(InputStream in, OutputStream out, +- InputStream newManifest) throws IOException ++ InputStream newManifest, ++ JarIndex jarIndex) throws IOException + { +- Hashtable t = filesTable; +- Vector v = this.v; + ZipInputStream zis = new ZipInputStream(in); + ZipOutputStream zos = new JarOutputStream(out); + ZipEntry e = null; + boolean foundManifest = false; +- byte[] buf = new byte[1024]; +- int n = 0; + boolean updateOk = true; + +- if (t.containsKey(INDEX)) { +- addIndex((JarIndex)t.get(INDEX), zos); ++ if (jarIndex != null) { ++ addIndex(jarIndex, zos); + } + + // put the old entries first, replace if necessary + while ((e = zis.getNextEntry()) != null) { + String name = e.getName(); + +- boolean isManifestEntry = name.toUpperCase( +- java.util.Locale.ENGLISH). +- equals(MANIFEST); +- if ((name.toUpperCase().equals(INDEX) +- && t.containsKey(INDEX)) +- || (Mflag && isManifestEntry)) { ++ boolean isManifestEntry = equalsIgnoreCase(name, MANIFEST_NAME); ++ ++ if ((jarIndex != null && equalsIgnoreCase(name, INDEX_NAME)) ++ || (Mflag && isManifestEntry)) { + continue; + } else if (isManifestEntry && ((newManifest != null) || + (ename != null))) { +@@ -500,9 +544,9 @@ class Main { + // might need it below, and we can't re-read the same data + // twice. + FileInputStream fis = new FileInputStream(mname); +- boolean ambigous = isAmbigousMainClass(new Manifest(fis)); ++ boolean ambiguous = isAmbiguousMainClass(new Manifest(fis)); + fis.close(); +- if (ambigous) { ++ if (ambiguous) { + return false; + } + } +@@ -514,8 +558,7 @@ class Main { + } + updateManifest(old, zos); + } else { +- if (!t.containsKey(name)) { // copy the old stuff +- ++ if (!entryMap.containsKey(name)) { // copy the old stuff + // do our own compression + ZipEntry e2 = new ZipEntry(name); + e2.setMethod(e.getMethod()); +@@ -527,30 +570,24 @@ class Main { + e2.setCrc(e.getCrc()); + } + zos.putNextEntry(e2); +- while ((n = zis.read(buf, 0, buf.length)) != -1) { +- zos.write(buf, 0, n); +- } ++ copy(zis, zos); + } else { // replace with the new files +- addFile(zos, (File)(t.get(name))); +- t.remove(name); +- } +- } +- } +- t.remove(INDEX); ++ File f = entryMap.get(name); ++ addFile(zos, f); ++ entryMap.remove(name); ++ entries.remove(f); ++ } ++ } ++ } + + // add the remaining new files +- if (!t.isEmpty()) { +- for (int i = 0; i < v.size(); i++) { +- File f = (File)v.elementAt(i); +- if (t.containsValue(f)) { +- addFile(zos, f); +- } +- } ++ for (File f: entries) { ++ addFile(zos, f); + } + if (!foundManifest) { + if (newManifest != null) { + Manifest m = new Manifest(newManifest); +- updateOk = !isAmbigousMainClass(m); ++ updateOk = !isAmbiguousMainClass(m); + if (updateOk) { + updateManifest(m, zos); + } +@@ -567,23 +604,16 @@ class Main { + private void addIndex(JarIndex index, ZipOutputStream zos) + throws IOException + { +- ZipEntry e = new ZipEntry(INDEX); ++ ZipEntry e = new ZipEntry(INDEX_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { +- e.setMethod(ZipEntry.STORED); +- File ifile = File.createTempFile("index", null, new File(".")); +- BufferedOutputStream bos = new BufferedOutputStream +- (new FileOutputStream(ifile)); +- index.write(bos); +- crc32File(e, ifile); +- bos.close(); +- ifile.delete(); ++ CRC32OutputStream os = new CRC32OutputStream(); ++ index.write(os); ++ os.updateEntry(e); + } + zos.putNextEntry(e); + index.write(zos); +- if (vflag) { +- // output(getMsg("out.update.manifest")); +- } ++ zos.closeEntry(); + } + + private void updateManifest(Manifest m, ZipOutputStream zos) +@@ -594,10 +624,9 @@ class Main { + if (ename != null) { + addMainClass(m, ename); + } +- ZipEntry e = new ZipEntry(MANIFEST); ++ ZipEntry e = new ZipEntry(MANIFEST_NAME); + e.setTime(System.currentTimeMillis()); + if (flag0) { +- e.setMethod(ZipEntry.STORED); + crc32Manifest(e, m); + } + zos.putNextEntry(e); +@@ -611,9 +640,9 @@ class Main { + private String entryName(String name) { + name = name.replace(File.separatorChar, '/'); + String matchPath = ""; +- for (int i = 0; i < paths.size(); i++) { +- String path = (String)paths.elementAt(i); +- if (name.startsWith(path) && (path.length() > matchPath.length())) { ++ for (String path : paths) { ++ if (name.startsWith(path) ++ && (path.length() > matchPath.length())) { + matchPath = path; + } + } +@@ -651,7 +680,7 @@ class Main { + global.put(Attributes.Name.MAIN_CLASS, mainApp); + } + +- private boolean isAmbigousMainClass(Manifest m) { ++ private boolean isAmbiguousMainClass(Manifest m) { + if (ename != null) { + Attributes global = m.getMainAttributes(); + if ((global.get(Attributes.Name.MAIN_CLASS) != null)) { +@@ -663,13 +692,12 @@ class Main { From mvyskocil at suse.cz Thu Sep 10 06:36:13 2009 From: mvyskocil at suse.cz (Michal Vyskocil) Date: Thu, 10 Sep 2009 15:36:13 +0200 Subject: [PATCH] icedtea6-1.6-npplugin-xulrunner191.patch Message-ID: <200909101536.19253.mvyskocil@suse.cz> Hi, a following patch enables icedtea npplugin with xulrunner191, because there are some small API changes between 190 and 191. Regards Michal Vyskocil -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea6-1.6-nppplugin-xulrunner191.patch Type: text/x-patch Size: 3551 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090910/1bb7f7f8/icedtea6-1.6-nppplugin-xulrunner191.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part. Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090910/1bb7f7f8/attachment.bin From dbhole at redhat.com Thu Sep 10 07:31:06 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 10 Sep 2009 10:31:06 -0400 Subject: [PATCH] icedtea6-1.6-npplugin-xulrunner191.patch In-Reply-To: <200909101536.19253.mvyskocil@suse.cz> References: <200909101536.19253.mvyskocil@suse.cz> Message-ID: <20090910143106.GA27324@redhat.com> * Michal Vyskocil [2009-09-10 09:36]: > Hi, > > a following patch enables icedtea npplugin with xulrunner191, because there > are some small API changes between 190 and 191. > > Regards > Michal Vyskocil > Index: icedtea6-1.6/plugin/icedteanp/IcedTeaNPPlugin.cc > =================================================================== > --- icedtea6-1.6.orig/plugin/icedteanp/IcedTeaNPPlugin.cc 2009-09-08 16:19:48.000000000 +0200 > +++ icedtea6-1.6/plugin/icedteanp/IcedTeaNPPlugin.cc 2009-09-10 12:50:43.927840173 +0200 > @@ -1824,17 +1824,17 @@ > // Return to the browser the plugin functions that we implement. > pluginTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; > pluginTable->size = sizeof (NPPluginFuncs); > - pluginTable->newp = NewNPP_NewProc (GCJ_New); > - pluginTable->destroy = NewNPP_DestroyProc (GCJ_Destroy); > - pluginTable->setwindow = NewNPP_SetWindowProc (GCJ_SetWindow); > - pluginTable->newstream = NewNPP_NewStreamProc (GCJ_NewStream); > - pluginTable->destroystream = NewNPP_DestroyStreamProc (GCJ_DestroyStream); > - pluginTable->asfile = NewNPP_StreamAsFileProc (GCJ_StreamAsFile); > - pluginTable->writeready = NewNPP_WriteReadyProc (GCJ_WriteReady); > - pluginTable->write = NewNPP_WriteProc (GCJ_Write); > - pluginTable->print = NewNPP_PrintProc (GCJ_Print); > - pluginTable->urlnotify = NewNPP_URLNotifyProc (GCJ_URLNotify); > - pluginTable->getvalue = NewNPP_GetValueProc (GCJ_GetValue); > + pluginTable->newp = NPP_NewProcPtr (GCJ_New); > + pluginTable->destroy = NPP_DestroyProcPtr (GCJ_Destroy); > + pluginTable->setwindow = NPP_SetWindowProcPtr (GCJ_SetWindow); > + pluginTable->newstream = NPP_NewStreamProcPtr (GCJ_NewStream); > + pluginTable->destroystream = NPP_DestroyStreamProcPtr (GCJ_DestroyStream); > + pluginTable->asfile = NPP_StreamAsFileProcPtr (GCJ_StreamAsFile); > + pluginTable->writeready = NPP_WriteReadyProcPtr (GCJ_WriteReady); > + pluginTable->write = NPP_WriteProcPtr (GCJ_Write); > + pluginTable->print = NPP_PrintProcPtr (GCJ_Print); > + pluginTable->urlnotify = NPP_URLNotifyProcPtr (GCJ_URLNotify); > + pluginTable->getvalue = NPP_GetValueProcPtr (GCJ_GetValue); > Thanks. I don't think this patch is needed as is though (in the current incarnation I mean). The code in mercurial already has an if/else based on xulrunner >= 1.9.2. The API in 1.9.2 appears similar to 1.9.1, so it is just a matter of updating the condition. I will need to test it though to make sure it all works. I will make the changes in my next commit. Cheers, Deepak > // Make sure the plugin data directory exists, creating it if > // necessary. > Index: icedtea6-1.6/plugin/icedteanp/IcedTeaScriptablePluginObject.h > =================================================================== > --- icedtea6-1.6.orig/plugin/icedteanp/IcedTeaScriptablePluginObject.h 2009-09-08 16:19:48.000000000 +0200 > +++ icedtea6-1.6/plugin/icedteanp/IcedTeaScriptablePluginObject.h 2009-09-10 12:49:44.027841169 +0200 > @@ -39,7 +39,7 @@ > #ifndef __ICEDTEASCRIPTABLEPLUGINOBJECT_H_ > #define __ICEDTEASCRIPTABLEPLUGINOBJECT_H_ > > -#include "npupp.h" > +#include > > #include "IcedTeaJavaRequestProcessor.h" > #include "IcedTeaNPPlugin.h" > Index: icedtea6-1.6/plugin/icedteanp/IcedTeaNPPlugin.h > =================================================================== > --- icedtea6-1.6.orig/plugin/icedteanp/IcedTeaNPPlugin.h 2009-09-08 16:19:48.000000000 +0200 > +++ icedtea6-1.6/plugin/icedteanp/IcedTeaNPPlugin.h 2009-09-10 13:47:50.816340579 +0200 > @@ -41,7 +41,7 @@ > > // Netscape plugin API includes. > #include > -#include > +#include > #include > > // GLib includes. > Index: icedtea6-1.6/plugin/icedteanp/IcedTeaPluginRequestProcessor.h > =================================================================== > --- icedtea6-1.6.orig/plugin/icedteanp/IcedTeaPluginRequestProcessor.h 2009-09-08 16:19:48.000000000 +0200 > +++ icedtea6-1.6/plugin/icedteanp/IcedTeaPluginRequestProcessor.h 2009-09-10 13:48:46.500338879 +0200 > @@ -46,7 +46,7 @@ > #include > > #include > -#include > +#include > > #include "IcedTeaRunnable.h" > #include "IcedTeaPluginUtils.h" From ed at camswl.com Thu Sep 10 11:03:22 2009 From: ed at camswl.com (Edward Nevill) Date: Thu, 10 Sep 2009 19:03:22 +0100 Subject: Request to committ to trunk - ARM asm improvements Message-ID: <200909101803.n8AI3MZj008799@parsley.camswl.com> Hi folks, I have got a bunch of improvements to the ARM asm interpreter which I would like to commit to the trunk. Because of the limitations on size of message sent to the list I am sending the diffs as 3 messages. The first set (attached below) contains all the diffs to anything other than cppInterpreter_arm.S and bytecodes_arm.def. IE. it contains all the non assembler diffs and hence the diffs most likely to interest you. The second and third set contain the diffs to bytecodes_arm.def and cppInterpreter_arm.S respectively. Please check especially that you are happy with the changes to bytes_zero.hpp and cppInterpreter_zero.cpp Regards, Ed. So, whats new... ----- Makefile.am I have change the 'mkbc' rule from mkbc $< $@ to gcc -E - < $< | mkbc - $@ The idea being to allow you to preprocess the .def file before using mkbc. I have added various #ifdefs to bytecodes_arm.def to allow various optimisations to be enabled and disabled. ----- mkbc.c Change to allow the use of '-' as a filename for stdin / stdout. Also changed to allow '@' as a comment character in addition to '#' to support the use of gcc preprocessing above. ----- ports/hotspot/build/linux/makefiles/zero.make Added rules to build 'asm_helper.cpp' and 'mkoffsets'. Removed the -DHW_NULL_PTR_CHECK. This is the default now. Use -DDISABLE_HW_NULL_PTR_CHECK if undesired. ----- ports/hotspot/src/cpu/zero/vm/asm_helper.cpp New source file. This file serves two purposes. 1) It is built into the JVM image to allow the asm interpreter to access C++ virtual functions. Previously the asm interpreter had to grub around inside C++ V tables to call virtuals which was most non portable. Now it calls a wrapper function in asm_helper.cpp. 2) It is built into the 'mkoffsets' tool to generate the static offsets within various structures in OpenJDK (most notably the JavaThread structure). When 'mkoffsets' is run is generates output of the form #define THREAD_PENDING_EXC 0x04 #define THREAD_SUSPEND_FLAGS 0x18 Thus the offsets are always correct for the version being build. This reduces the possibility of breakage due to offsets changing between openjdk versions (as indeed happened between b14 and b16). Also it allows you to build PRODUCT or DEBUG versions as the offsets change between PRODUCT and DEBUG versions. ----- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp ----- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp I have added fast bytecodes of the form iload_N; iload_N iload; iload_N iload_N; iload This means that the following 4 bytecode sequences can now be executed as a single bytecode my the ARM interpreter. in addition to 3 bytecode varients of the above (ie without the istore on the end and many other 3 bytecode combinations (for example ). ----- ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp I have added the 'get_native' and 'get_Java' optimisations discussed previously on the 'zero' list. The effect of this change is to use the gcc __attribute__(unaligned) to load the unaligned data. A union is defined as follows typedef union unaligned { u4 u; u2 us; u8 ul; } __attribute__((packed)) unaligned; and then, for example, get_native_u2 does static inline u2 get_native_u2(address p){ unaligned *up = (unaligned *)p; return up->us; } Note: on x86 this has no effect as x86 permits unaligned accesses. get_Java_u2 and friends now do byte loads / stores to load / store the halfword / word / doubleword on little endian machines. ----- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp change the #if defined(PRODUCT) && defined(HOTSPOT_ASM) to #ifdef HOTSPOT_ASM remove the definition of BCI_ENTRY not that generate_entry takes an address instead of a BCI_ENTRY and changed the definition of asm_generate_entry to return an address instead of a BCI_ENTRY. Removed the casts. Removed the if (!UseCompiler && !TaggedStackInterpreter & ...) Instead it now always calls asm_generate_entry, asm_generate_entry then tests UseCompiler and TaggedStackInterpreter etc and returns NULL if it cannot support a particular configuration. This is better because the knowledge of which configurations are supported is now embedded in asm_generate_entry instead of cppInterpreter_zero, which means that cppInterpreter_zero does not have to continually change to reflect the stack of asm_generate_entry. ----- ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp removed the #if defined(PRODUCT) --- CUT HERE ---------------------------------------------------------- diff -ruNE old/icedtea6/Makefile.am new/icedtea6/Makefile.am --- old/icedtea6/Makefile.am 2009-09-08 14:30:23.000000000 +0100 +++ new/icedtea6/Makefile.am 2009-09-08 15:08:21.000000000 +0100 @@ -469,8 +469,18 @@ $(abs_top_srcdir)/mkbc: $(abs_top_srcdir)/mkbc.c $(CC) $< -o $@ +# ECN: The following rule has been changed to allow preprocessing of the bytecode definition +# file prior to running 'mkbc'. This allows you to use -DXXX on the gcc command. There are two +# options currently recognized. +# +# -DDISABLE_NOTICE_SAFEPONTS - Always run in 'safe' mode. +# -DDISABLE_FAST_BYTECODES - Disable fast bytecode replacement and bytecode sequences +# +# These options are provided mainly to assist debugging by returning the bytecode interpreter +# to a 'vanilla' interpreter. +# ${ZERO_ASM_BC_ASM}: ${ZERO_ASM_BC_DEF} $(abs_top_srcdir)/mkbc - $(abs_top_srcdir)/mkbc $< $@ + gcc -E - < $< | $(abs_top_srcdir)/mkbc - $@ # Link ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp diff -ruNE old/icedtea6/mkbc.c new/icedtea6/mkbc.c --- old/icedtea6/mkbc.c 2009-09-08 14:30:24.000000000 +0100 +++ new/icedtea6/mkbc.c 2009-09-08 15:09:22.000000000 +0100 @@ -1,3 +1,17 @@ +/* + * Copyright 2009 Edward Nevill + * + * 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). + */ + #include #include #include @@ -10,7 +24,7 @@ #define ISALPHA(c) (isalpha(c) || (c) == '_') #define ISALNUM(c) (isalnum(c) || (c) == '_') -FILE *source_f, *bci_f, *bci_f; +FILE *source_f, *bci_f; typedef struct Bytecode { char *name; @@ -282,7 +296,7 @@ c = (readchar)(); c = skipwhitespace(c); while (c != EOF) { - if (c == '#') { + if (c == '@' || c == '#') { c = skipeol(c); } else if (ISALPHA(c)) { c = readsymbol(c, buf, BUFLEN); @@ -546,7 +560,7 @@ source = bci = 0; while (s = *++argv) { - if (*s == '-') { + if (s[0] == '-' && s[1] != 0) { if (s[1] == 'P') { prefix = s+2; } else { @@ -566,16 +580,26 @@ fprintf(stderr, "Too few arguments\n"); usage(); } - source_f = fopen(source, "r"); - if (!source_f) fatal("Error opening source file"); - bci_f = fopen(bci, "w"); - if (!bci_f) fatal("Error opening bci file for write"); + if (strcmp(source, "-") == 0) { + source_f = stdin; + } else { + source_f = fopen(source, "r"); + if (!source_f) fatal("Error opening source file"); + } + if (strcmp(bci, "-") == 0) { + bci_f = stdout; + } else { + bci_f = fopen(bci, "w"); + if (!bci_f) fatal("Error opening bci file for write"); + } for (i = 0; i < 256; i++) { bytecodes[i].name = "undefined"; bytecodes[i].len = -1; } mkbc(); dumpbc(); - if (fclose(source_f)) fatal("Error reading source"); - if (fclose(bci_f)) fatal("Error writing bci"); + if (ferror(source_f)) fatal("Error reading source"); + if (ferror(bci_f)) fatal("Error writing bci"); + if (source_f != stdin) fclose(source_f); + if (bci_f != stdout) fclose(bci_f); } diff -ruNE old/icedtea6/ports/hotspot/build/linux/makefiles/zero.make new/icedtea6/ports/hotspot/build/linux/makefiles/zero.make --- old/icedtea6/ports/hotspot/build/linux/makefiles/zero.make 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/build/linux/makefiles/zero.make 2009-09-10 14:17:01.000000000 +0100 @@ -24,12 +24,28 @@ # ifeq ($(ZERO_LIBARCH),arm) + +Obj_Files += asm_helper.o Obj_Files += cppInterpreter_arm.o -CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK + +CFLAGS += -DHOTSPOT_ASM + %.o: %.S @echo Assembling $< $(QUIETLY) $(REMOVE_TARGET) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) + +cppInterpreter_arm.o: offsets_arm.s + +offsets_arm.s: mkoffsets + @echo Generating assembler offsets + ./mkoffsets > $@ + +mkoffsets: asm_helper.cpp + @echo Compiling offset generator + $(QUIETLY) $(REMOVE_TARGET) + $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) + endif # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp 2009-09-08 14:33:40.000000000 +0100 @@ -0,0 +1,234 @@ +/* + * Copyright 2009 Edward Nevill + * + * 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). + */ + +#include "incls/_precompiled.incl" + +#ifndef STATIC_OFFSETS + +extern "C" void sanity_check_backtrace(ZeroFrame *frame, int *regs); + +extern "C" void check_java_threads_backtrace(int *regs) +{ + for (JavaThread* jt = Threads::first(); jt != NULL; jt = jt->next()) { + if (jt->threadObj() == NULL || + jt->is_exiting() || + !java_lang_Thread::is_alive(jt->threadObj()) || + jt->is_hidden_from_external_view()) { + continue; + } + if (jt->is_jvmti_agent_thread()) continue; + if (jt->is_attaching()) continue; + sanity_check_backtrace(jt->top_zero_frame(), regs); + } +} + +/* Thease functions allow the ASM interpreter to call CPP virtual functions. + * Otherwise the ASM interpreter has to grup around in the VTABLE which is + * not very portable. + */ +extern "C" bool JavaThread_is_lock_owned(JavaThread *r0, address r1) +{ + return r0->is_lock_owned(r1); +} + +extern "C" HeapWord **CollectedHeap_top_addr(CollectedHeap *r0) +{ + return r0->top_addr(); +} + +extern "C" HeapWord **CollectedHeap_end_addr(CollectedHeap *r0) +{ + return r0->end_addr(); +} + +#endif // STATIC_OFFSETS + +#ifdef STATIC_OFFSETS + +class VMStructs { +public: + static void print_vm_offsets(void); +}; + +#define outfile stdout + +void print_def(const char *s, int v) +{ + fprintf(outfile, "#define %-40s 0x%02x\n", s, v); +} + +void nl(void) +{ + fputc('\n', outfile); +} + +void VMStructs::print_vm_offsets(void) +{ + print_def("THREAD_PENDING_EXC", offset_of(JavaThread, _pending_exception)); + print_def("THREAD_SUSPEND_FLAGS", offset_of(JavaThread, _suspend_flags)); + print_def("THREAD_ACTIVE_HANDLES", offset_of(JavaThread, _active_handles)); + print_def("THREAD_LAST_HANDLE_MARK", offset_of(JavaThread, _last_handle_mark)); + print_def("THREAD_TLAB_TOP", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _top)); + print_def("THREAD_TLAB_END", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _end)); + print_def("THREAD_RESOURCEAREA", offset_of(JavaThread, _resource_area)); + print_def("THREAD_HANDLE_AREA", offset_of(JavaThread, _handle_area)); + print_def("THREAD_STACK_BASE", offset_of(JavaThread, _stack_base)); + print_def("THREAD_STACK_SIZE", offset_of(JavaThread, _stack_size)); + print_def("THREAD_LAST_JAVA_SP", offset_of(JavaThread, _anchor) + offset_of(JavaFrameAnchor, _last_Java_sp)); + print_def("THREAD_JNI_ENVIRONMENT", offset_of(JavaThread, _jni_environment)); + print_def("THREAD_VM_RESULT", offset_of(JavaThread, _vm_result)); + print_def("THREAD_STATE", offset_of(JavaThread, _thread_state)); + print_def("THREAD_DO_NOT_UNLOCK", offset_of(JavaThread, _do_not_unlock_if_synchronized)); + + print_def("THREAD_JAVA_STACK_BASE", offset_of(JavaThread, _zero_stack) + ZeroStack::base_offset()); + print_def("THREAD_JAVA_SP", offset_of(JavaThread, _zero_stack) + ZeroStack::sp_offset()); + print_def("THREAD_TOP_ZERO_FRAME", offset_of(JavaThread, _top_zero_frame)); + print_def("THREAD_SPECIALRUNTIMEEXITCONDITION", offset_of(JavaThread, _special_runtime_exit_condition)); + nl(); + print_def("_thread_external_suspend", Thread::_external_suspend); + print_def("_thread_ext_suspended", Thread::_ext_suspended); + print_def("_thread_deopt_suspend", Thread::_deopt_suspend); + nl(); + print_def("METHOD_CONSTMETHOD", offset_of(methodOopDesc, _constMethod)); + print_def("METHOD_CONSTANTS", offset_of(methodOopDesc, _constants)); + print_def("METHOD_METHODDATA", offset_of(methodOopDesc, _method_data)); + print_def("METHOD_INVOKECOUNT", offset_of(methodOopDesc, _interpreter_invocation_count)); + print_def("METHOD_ACCESSFLAGS", offset_of(methodOopDesc, _access_flags)); + print_def("METHOD_VTABLEINDEX", offset_of(methodOopDesc, _vtable_index)); + print_def("METHOD_RESULTINDEX", offset_of(methodOopDesc, _result_index)); + print_def("METHOD_METHODSIZE", offset_of(methodOopDesc, _method_size)); + print_def("METHOD_MAXSTACK", offset_of(methodOopDesc, _max_stack)); + print_def("METHOD_MAXLOCALS", offset_of(methodOopDesc, _max_locals)); + print_def("METHOD_SIZEOFPARAMETERS", offset_of(methodOopDesc, _size_of_parameters)); + print_def("METHOD_INVOCATIONCOUNTER", offset_of(methodOopDesc, _invocation_counter)); + print_def("METHOD_BACKEDGECOUNTER", offset_of(methodOopDesc, _backedge_counter)); + print_def("METHOD_FROM_INTERPRETED", offset_of(methodOopDesc, _from_interpreted_entry)); + // ECN: These two appear to be just tagged onto the end of the class + print_def("METHOD_NATIVEHANDLER", sizeof(methodOopDesc)); + print_def("METHOD_SIGNATUREHANDLER", sizeof(methodOopDesc)+4); + nl(); + print_def("CONSTMETHOD_CODEOFFSET", sizeof(constMethodOopDesc)); + nl(); + print_def("JNIHANDLEBLOCK_TOP", offset_of(JNIHandleBlock, _top)); + nl(); + print_def("KLASS_PART", klassOopDesc::klass_part_offset_in_bytes()); + print_def("KLASS_ACCESSFLAGS", offset_of(Klass, _access_flags)); + print_def("INSTANCEKLASS_INITSTATE", offset_of(instanceKlass, _init_state)); + print_def("INSTANCEKLASS_VTABLE_LEN", offset_of(instanceKlass, _vtable_len)); + print_def("INSTANCEKLASS_ITABLE_LEN", offset_of(instanceKlass, _itable_len)); + print_def("INSTANCEKLASS_VTABLE_OFFSET", instanceKlass::vtable_start_offset() * sizeof(int *)); + print_def("OBJARRAYKLASS_ELEMENTKLASS", offset_of(objArrayKlass, _element_klass)); + nl(); + print_def("CONSTANTPOOL_TAGS", offset_of(constantPoolOopDesc, _tags)); + print_def("CONSTANTPOOL_CACHE", offset_of(constantPoolOopDesc, _cache)); + nl(); + print_def("SIZEOF_HANDLEMARK", sizeof(HandleMark)); +} + +int main(void) +{ + print_def("JVM_CONSTANT_Utf8", JVM_CONSTANT_Utf8); + print_def("JVM_CONSTANT_Unicode", JVM_CONSTANT_Unicode); + print_def("JVM_CONSTANT_Integer", JVM_CONSTANT_Integer); + print_def("JVM_CONSTANT_Float", JVM_CONSTANT_Float); + print_def("JVM_CONSTANT_Long", JVM_CONSTANT_Long); + print_def("JVM_CONSTANT_Double", JVM_CONSTANT_Double); + print_def("JVM_CONSTANT_Class", JVM_CONSTANT_Class); + print_def("JVM_CONSTANT_String", JVM_CONSTANT_String); + print_def("JVM_CONSTANT_Fieldref", JVM_CONSTANT_Fieldref); + print_def("JVM_CONSTANT_Methodref", JVM_CONSTANT_Methodref); + print_def("JVM_CONSTANT_InterfaceMethodref", JVM_CONSTANT_InterfaceMethodref); + print_def("JVM_CONSTANT_NameAndType", JVM_CONSTANT_NameAndType); + nl(); + print_def("JVM_CONSTANT_UnresolvedClass", JVM_CONSTANT_UnresolvedClass); + print_def("JVM_CONSTANT_ClassIndex", JVM_CONSTANT_ClassIndex); + print_def("JVM_CONSTANT_UnresolvedString", JVM_CONSTANT_UnresolvedString); + print_def("JVM_CONSTANT_StringIndex", JVM_CONSTANT_StringIndex); + print_def("JVM_CONSTANT_UnresolvedClassInError",JVM_CONSTANT_UnresolvedClassInError); + nl(); + print_def("JVM_ACC_PUBLIC", JVM_ACC_PUBLIC); + print_def("JVM_ACC_PRIVATE", JVM_ACC_PRIVATE); + print_def("JVM_ACC_PROTECTED", JVM_ACC_PROTECTED); + print_def("JVM_ACC_STATIC", JVM_ACC_STATIC); + print_def("JVM_ACC_FINAL", JVM_ACC_FINAL); + print_def("JVM_ACC_SYNCHRONIZED", JVM_ACC_SYNCHRONIZED); + print_def("JVM_ACC_SUPER", JVM_ACC_SUPER); + print_def("JVM_ACC_VOLATILE", JVM_ACC_VOLATILE); + print_def("JVM_ACC_BRIDGE", JVM_ACC_BRIDGE); + print_def("JVM_ACC_TRANSIENT", JVM_ACC_TRANSIENT); + print_def("JVM_ACC_VARARGS", JVM_ACC_VARARGS); + print_def("JVM_ACC_NATIVE", JVM_ACC_NATIVE); + print_def("JVM_ACC_INTERFACE", JVM_ACC_INTERFACE); + print_def("JVM_ACC_ABSTRACT", JVM_ACC_ABSTRACT); + print_def("JVM_ACC_STRICT", JVM_ACC_STRICT); + print_def("JVM_ACC_SYNTHETIC", JVM_ACC_SYNTHETIC); + print_def("JVM_ACC_ANNOTATION", JVM_ACC_ANNOTATION); + print_def("JVM_ACC_ENUM", JVM_ACC_ENUM); + print_def("JVM_ACC_HAS_FINALIZER", JVM_ACC_HAS_FINALIZER); + nl(); + print_def("T_BOOLEAN", T_BOOLEAN); + print_def("T_CHAR", T_CHAR); + print_def("T_FLOAT", T_FLOAT); + print_def("T_DOUBLE", T_DOUBLE); + print_def("T_BYTE", T_BYTE); + print_def("T_SHORT", T_SHORT); + print_def("T_INT", T_INT); + print_def("T_LONG", T_LONG); + print_def("T_OBJECT", T_OBJECT); + print_def("T_ARRAY", T_ARRAY); + print_def("T_VOID", T_VOID); + nl(); + print_def("_thread_uninitialized", _thread_uninitialized); + print_def("_thread_new", _thread_new); + print_def("_thread_new_trans", _thread_new_trans); + print_def("_thread_in_native", _thread_in_native); + print_def("_thread_in_native_trans", _thread_in_native_trans); + print_def("_thread_in_vm", _thread_in_vm); + print_def("_thread_in_vm_trans", _thread_in_vm_trans); + print_def("_thread_in_Java", _thread_in_Java); + print_def("_thread_in_Java_trans", _thread_in_Java_trans); + print_def("_thread_blocked", _thread_blocked); + print_def("_thread_blocked_trans", _thread_blocked_trans); + print_def("_thread_max_state", _thread_max_state); + nl(); + print_def("class_unparsable_by_gc", instanceKlass::unparsable_by_gc); + print_def("class_allocated", instanceKlass::allocated); + print_def("class_loaded", instanceKlass::loaded); + print_def("class_linked", instanceKlass::linked); + print_def("class_being_initialized", instanceKlass::being_initialized); + print_def("class_fully_initialized", instanceKlass::fully_initialized); + print_def("class_init_error", instanceKlass::initialization_error); + nl(); + print_def("flag_methodInterface", 1 << ConstantPoolCacheEntry::methodInterface); + print_def("flag_volatileField", 1 << ConstantPoolCacheEntry::volatileField); + print_def("flag_vfinalMethod", 1 << ConstantPoolCacheEntry::vfinalMethod); + print_def("flag_finalField", 1 << ConstantPoolCacheEntry::finalField); + nl(); + print_def("INVOCATIONCOUNTER_COUNTINCREMENT", InvocationCounter::count_increment); + nl(); + VMStructs::print_vm_offsets(); + nl(); + print_def("VMSYMBOLS_ArithmeticException", vmSymbols::java_lang_ArithmeticException_enum); + print_def("VMSYMBOLS_ArrayIndexOutOfBounds", vmSymbols::java_lang_ArrayIndexOutOfBoundsException_enum); + print_def("VMSYMBOLS_ArrayStoreException", vmSymbols::java_lang_ArrayStoreException_enum); + print_def("VMSYMBOLS_ClassCastException", vmSymbols::java_lang_ClassCastException_enum); + print_def("VMSYMBOLS_NullPointerException", vmSymbols::java_lang_NullPointerException_enum); + print_def("VMSYMBOLS_AbstractMethodError", vmSymbols::java_lang_AbstractMethodError_enum); + print_def("VMSYMBOLS_IncompatibleClassChangeError", vmSymbols::java_lang_IncompatibleClassChangeError_enum); + print_def("VMSYMBOLS_InternalError", vmSymbols::java_lang_InternalError_enum); + + return 0; +} + +#endif // STATIC_OFFSETS diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp 2009-09-08 14:55:59.000000000 +0100 @@ -26,19 +26,27 @@ #include "incls/_precompiled.incl" #include "incls/_bytecodes_zero.cpp.incl" -void Bytecodes::pd_initialize() { -#if defined(PRODUCT) && defined(HOTSPOT_ASM) +void Bytecodes::pd_initialize() +{ + // No zero specific initialization +#ifdef HOTSPOT_ASM def(_iaccess_0, "_iaccess_0", "b_jj", NULL, T_INT, 1, true, _aload_0); def(_iaccess_1, "_iaccess_1", "b_jj", NULL, T_INT, 1, true, _aload_1); def(_iaccess_2, "_iaccess_2", "b_jj", NULL, T_INT, 1, true, _aload_2); def(_iaccess_3, "_iaccess_3", "b_jj", NULL, T_INT, 1, true, _aload_3); + def(_invokeresolved, "invokeresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokevirtual); + def(_invokespecialresolved, "invokespecialresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokespecial); + def(_invokestaticresolved, "invokestaticresolved", "bjj", NULL, T_ILLEGAL, 0, true, _invokestatic); + + def(_iload_iload, "iload_iload", "bi_i",NULL, T_INT, 2, false, _iload); + def(_iload_iload_N, "ilaod_iload_N", "bi_", NULL, T_INT, 2, false, _iload); + def(_iload_0_iconst_N, "iload_0_iconst_N", "b_", NULL, T_INT, 2, false, _iload_0); def(_iload_1_iconst_N, "iload_1_iconst_N", "b_", NULL, T_INT, 2, false, _iload_1); def(_iload_2_iconst_N, "iload_2_iconst_N", "b_", NULL, T_INT, 2, false, _iload_2); def(_iload_3_iconst_N, "iload_3_iconst_N", "b_", NULL, T_INT, 2, false, _iload_3); def(_iload_iconst_N, "iload_iconst_N", "bi_", NULL, T_INT, 2, false, _iload); - def(_invokeresolved, "invokeresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokevirtual); def(_iadd_istore_N, "iadd_istore_N", "b_", NULL, T_VOID, -2, false, _iadd); def(_isub_istore_N, "isub_istore_N", "b_", NULL, T_VOID, -2, false, _isub); @@ -52,7 +60,15 @@ def(_ior_u4store, "ior_u4store", "b_i", NULL, T_VOID, -2, false, _ior); def(_ixor_u4store, "ixor_u4store", "b_i", NULL, T_VOID, -2, false, _ixor); - def(_invokespecialresolved, "invokespecialresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokespecial); - def(_invokestaticresolved, "invokestaticresolved", "bjj", NULL, T_ILLEGAL, 0, true, _invokestatic); -#endif // HOTSPOT_ASM + def(_iload_0_iload, "iload_0_iload", "b_i", NULL, T_INT, 2, false, _iload_0); + def(_iload_1_iload, "iload_1_iload", "b_i", NULL, T_INT, 2, false, _iload_1); + def(_iload_2_iload, "iload_2_iload", "b_i", NULL, T_INT, 2, false, _iload_2); + def(_iload_3_iload, "iload_3_iload", "b_i", NULL, T_INT, 2, false, _iload_3); + + def(_iload_0_iload_N, "iload_0_iload_N", "b_", NULL, T_INT, 2, false, _iload_0); + def(_iload_1_iload_N, "iload_1_iload_N", "b_", NULL, T_INT, 2, false, _iload_1); + def(_iload_2_iload_N, "iload_2_iload_N", "b_", NULL, T_INT, 2, false, _iload_2); + def(_iload_3_iload_N, "iload_3_iload_N", "b_", NULL, T_INT, 2, false, _iload_3); + +#endif } diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp 2009-09-08 14:56:18.000000000 +0100 @@ -1,49 +1,37 @@ -/* - * Copyright 1997-2007 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. - * - * 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 defined(PRODUCT) && defined(HOTSPOT_ASM) +#ifdef HOTSPOT_ASM #define _iaccess_0 ((Bytecodes::Code)0xdb) #define _iaccess_1 ((Bytecodes::Code)0xdc) #define _iaccess_2 ((Bytecodes::Code)0xdd) #define _iaccess_3 ((Bytecodes::Code)0xde) + +#define _invokeresolved ((Bytecodes::Code)0xdf) +#define _invokespecialresolved ((Bytecodes::Code)0xe0) +#define _invokestaticresolved ((Bytecodes::Code)0xe1) + +#define _iload_iload ((Bytecodes::Code)0xe3) +#define _iload_iload_N ((Bytecodes::Code)0xe4) + _iload_0_iconst_N , // 231 _iload_1_iconst_N , // 232 _iload_2_iconst_N , // 233 _iload_3_iconst_N , // 234 _iload_iconst_N , // 235 - _invokeresolved , // 236 - _iadd_istore_N , // 237 - _isub_istore_N , // 238 - _iand_istore_N , // 239 - _ior_istore_N , // 240 - _ixor_istore_N , // 241 - _iadd_u4store , // 242 - _isub_u4store , // 243 - _iand_u4store , // 244 - _ior_u4store , // 245 - _ixor_u4store , // 246 - _invokespecialresolved , // 247 - _invokestaticresolved , // 248 -#endif // HOTSPOT_ASM + _iadd_istore_N , // 236 + _isub_istore_N , // 237 + _iand_istore_N , // 238 + _ior_istore_N , // 239 + _ixor_istore_N , // 240 + _iadd_u4store , // 241 + _isub_u4store , // 242 + _iand_u4store , // 243 + _ior_u4store , // 244 + _ixor_u4store , // 245 + _iload_0_iload , // 246 + _iload_1_iload , // 247 + _iload_2_iload , // 248 + _iload_3_iload , // 249 + _iload_0_iload_N , // 250 + _iload_1_iload_N , // 251 + _iload_2_iload_N , // 252 + _iload_3_iload_N , // 253 +#endif diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp 2009-09-10 14:32:44.000000000 +0100 @@ -23,6 +23,12 @@ * */ +typedef union unaligned { + u4 u; + u2 us; + u8 ul; +} __attribute__((packed)) unaligned; + class Bytes: AllStatic { public: // Returns true if the byte ordering used by Java is different @@ -37,197 +43,35 @@ // Efficient reading and writing of unaligned unsigned data in // platform-specific byte ordering. -#ifdef VM_LITTLE_ENDIAN static inline u2 get_native_u2(address p){ - return (intptr_t(p) & 1) == 0 - ? *(u2*)p - : ( u2(p[1]) << 8 ) - | ( u2(p[0]) ); + unaligned *up = (unaligned *)p; + return up->us; } static inline u4 get_native_u4(address p) { - switch (intptr_t(p) & 3) { - case 0: return *(u4*)p; - - case 2: return ( u4( ((u2*)p)[1] ) << 16 ) - | ( u4( ((u2*)p)[0] ) ); - - default: return ( u4(p[3]) << 24 ) - | ( u4(p[2]) << 16 ) - | ( u4(p[1]) << 8 ) - | u4(p[0]); - } + unaligned *up = (unaligned *)p; + return up->u; } static inline u8 get_native_u8(address p) { - switch (intptr_t(p) & 7) { - case 0: return *(u8*)p; - - case 4: return ( u8( ((u4*)p)[1] ) << 32 ) - | ( u8( ((u4*)p)[0] ) ); - - case 2: return ( u8( ((u2*)p)[3] ) << 48 ) - | ( u8( ((u2*)p)[2] ) << 32 ) - | ( u8( ((u2*)p)[1] ) << 16 ) - | ( u8( ((u2*)p)[0] ) ); - - default: return ( u8(p[7]) << 56 ) - | ( u8(p[6]) << 48 ) - | ( u8(p[5]) << 40 ) - | ( u8(p[4]) << 32 ) - | ( u8(p[3]) << 24 ) - | ( u8(p[2]) << 16 ) - | ( u8(p[1]) << 8 ) - | u8(p[0]); - } + unaligned *up = (unaligned *)p; + return up->ul; } static inline void put_native_u2(address p, u2 x) { - if ((intptr_t(p) & 1) == 0) *(u2*) p = x; - else { - p[1] = x >> 8; - p[0] = x; - } + unaligned *up = (unaligned *)p; + up->us = x; } static inline void put_native_u4(address p, u4 x) { - switch ( intptr_t(p) & 3 ) { - case 0: *(u4*)p = x; - break; - - case 2: ((u2*)p)[1] = x >> 16; - ((u2*)p)[0] = x; - break; - - default: ((u1*)p)[3] = x >> 24; - ((u1*)p)[2] = x >> 16; - ((u1*)p)[1] = x >> 8; - ((u1*)p)[0] = x; - break; - } + unaligned *up = (unaligned *)p; + up->u = x; } static inline void put_native_u8(address p, u8 x) { - switch ( intptr_t(p) & 7 ) { - case 0: *(u8*)p = x; - break; - - case 4: ((u4*)p)[1] = x >> 32; - ((u4*)p)[0] = x; - break; - - case 2: ((u2*)p)[3] = x >> 48; - ((u2*)p)[2] = x >> 32; - ((u2*)p)[1] = x >> 16; - ((u2*)p)[0] = x; - break; - - default: ((u1*)p)[7] = x >> 56; - ((u1*)p)[6] = x >> 48; - ((u1*)p)[5] = x >> 40; - ((u1*)p)[4] = x >> 32; - ((u1*)p)[3] = x >> 24; - ((u1*)p)[2] = x >> 16; - ((u1*)p)[1] = x >> 8; - ((u1*)p)[0] = x; - } + unaligned *up = (unaligned *)p; + up->ul = x; } -#else - static inline u2 get_native_u2(address p){ - return (intptr_t(p) & 1) == 0 - ? *(u2*)p - : ( u2(p[0]) << 8 ) - | ( u2(p[1]) ); - } - - static inline u4 get_native_u4(address p) { - switch (intptr_t(p) & 3) { - case 0: return *(u4*)p; - - case 2: return ( u4( ((u2*)p)[0] ) << 16 ) - | ( u4( ((u2*)p)[1] ) ); - - default: return ( u4(p[0]) << 24 ) - | ( u4(p[1]) << 16 ) - | ( u4(p[2]) << 8 ) - | u4(p[3]); - } - } - - static inline u8 get_native_u8(address p) { - switch (intptr_t(p) & 7) { - case 0: return *(u8*)p; - - case 4: return ( u8( ((u4*)p)[0] ) << 32 ) - | ( u8( ((u4*)p)[1] ) ); - - case 2: return ( u8( ((u2*)p)[0] ) << 48 ) - | ( u8( ((u2*)p)[1] ) << 32 ) - | ( u8( ((u2*)p)[2] ) << 16 ) - | ( u8( ((u2*)p)[3] ) ); - - default: return ( u8(p[0]) << 56 ) - | ( u8(p[1]) << 48 ) - | ( u8(p[2]) << 40 ) - | ( u8(p[3]) << 32 ) - | ( u8(p[4]) << 24 ) - | ( u8(p[5]) << 16 ) - | ( u8(p[6]) << 8 ) - | u8(p[7]); - } - } - - static inline void put_native_u2(address p, u2 x) { - if ( (intptr_t(p) & 1) == 0 ) *(u2*)p = x; - else { - p[0] = x >> 8; - p[1] = x; - } - } - - static inline void put_native_u4(address p, u4 x) { - switch ( intptr_t(p) & 3 ) { - case 0: *(u4*)p = x; - break; - - case 2: ((u2*)p)[0] = x >> 16; - ((u2*)p)[1] = x; - break; - - default: ((u1*)p)[0] = x >> 24; - ((u1*)p)[1] = x >> 16; - ((u1*)p)[2] = x >> 8; - ((u1*)p)[3] = x; - break; - } - } - - static inline void put_native_u8(address p, u8 x) { - switch ( intptr_t(p) & 7 ) { - case 0: *(u8*)p = x; - break; - - case 4: ((u4*)p)[0] = x >> 32; - ((u4*)p)[1] = x; - break; - - case 2: ((u2*)p)[0] = x >> 48; - ((u2*)p)[1] = x >> 32; - ((u2*)p)[2] = x >> 16; - ((u2*)p)[3] = x; - break; - - default: ((u1*)p)[0] = x >> 56; - ((u1*)p)[1] = x >> 48; - ((u1*)p)[2] = x >> 40; - ((u1*)p)[3] = x >> 32; - ((u1*)p)[4] = x >> 24; - ((u1*)p)[5] = x >> 16; - ((u1*)p)[6] = x >> 8; - ((u1*)p)[7] = x; - } - } -#endif // VM_LITTLE_ENDIAN // Efficient reading and writing of unaligned unsigned data in Java @@ -235,23 +79,40 @@ #ifdef VM_LITTLE_ENDIAN // Byte-order reversal is needed static inline u2 get_Java_u2(address p) { - return swap_u2(get_native_u2(p)); + return ( u2(p[0]) << 8 ) | ( u2(p[1]) ); } static inline u4 get_Java_u4(address p) { - return swap_u4(get_native_u4(p)); + return ( u4(p[0]) << 24 ) | ( u4(p[1]) << 16 ) | ( u4(p[2]) << 8 ) | ( u4(p[3]) ); } static inline u8 get_Java_u8(address p) { - return swap_u8(get_native_u8(p)); + u4 hi, lo; + hi = ( u4(p[0]) << 24 ) | ( u4(p[1]) << 16 ) | ( u4(p[2]) << 8 ) | ( u4(p[3]) ); + lo = ( u4(p[4]) << 24 ) | ( u4(p[5]) << 16 ) | ( u4(p[6]) << 8 ) | ( u4(p[7]) ); + return u8(lo) | (u8(hi) << 32); } static inline void put_Java_u2(address p, u2 x) { - put_native_u2(p, swap_u2(x)); + p[0] = x >> 8; + p[1] = x; } static inline void put_Java_u4(address p, u4 x) { - put_native_u4(p, swap_u4(x)); + p[0] = x >> 24; + p[1] = x >> 16; + p[2] = x >> 8; + p[3] = x; } static inline void put_Java_u8(address p, u8 x) { - put_native_u8(p, swap_u8(x)); + u4 hi, lo; + lo = x; + hi = x >> 32; + p[0] = hi >> 24; + p[1] = hi >> 16; + p[2] = hi >> 8; + p[3] = hi; + p[4] = lo >> 24; + p[5] = lo >> 16; + p[6] = lo >> 8; + p[7] = lo; } // Efficient swapping of byte ordering diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp 2009-09-08 14:50:09.000000000 +0100 @@ -719,9 +719,8 @@ return generate_entry((address) CppInterpreter::normal_entry); } -#if defined(PRODUCT) && defined(HOTSPOT_ASM) -typedef void (*BCI_ENTRY)(methodOopDesc*, intptr_t, Thread*); -extern "C" BCI_ENTRY asm_generate_method_entry( +#ifdef HOTSPOT_ASM +extern "C" address asm_generate_method_entry( AbstractInterpreter::MethodKind kind); #endif // HOTSPOT_ASM @@ -729,14 +728,10 @@ AbstractInterpreter::MethodKind kind) { address entry_point = NULL; -#if defined(PRODUCT) && defined(HOTSPOT_ASM) - if (!UseCompiler && !TaggedStackInterpreter && - !JvmtiExport::can_post_interpreter_events() && - !PrintCommandLineFlags) { - address asm_entry = (address) asm_generate_method_entry(kind); +#ifdef HOTSPOT_ASM + address asm_entry = asm_generate_method_entry(kind); if (asm_entry) return ((InterpreterGenerator*) this)->generate_entry(asm_entry); - } #endif // HOTSPOT_ASM switch (kind) { diff -ruNE old/icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp new/icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp --- old/icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp 2009-09-08 14:54:17.000000000 +0100 @@ -71,7 +71,7 @@ Unimplemented(); } -#if defined(PRODUCT) && defined(HOTSPOT_ASM) +#ifdef HOTSPOT_ASM extern "C" int asm_check_null_ptr(ucontext_t *uc); #endif // HOTSPOT_ASM @@ -82,7 +82,7 @@ int abort_if_unrecognized) { ucontext_t* uc = (ucontext_t*) ucVoid; -#if defined(PRODUCT) && defined(HOTSPOT_ASM) +#ifdef HOTSPOT_ASM if (sig == SIGSEGV) { if (asm_check_null_ptr(uc)) return 1; } From andrew at icedtea.classpath.org Thu Sep 10 07:44:07 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Sep 2009 14:44:07 +0000 Subject: /hg/icedtea6: 3 new changesets Message-ID: changeset e2bd3952b822 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e2bd3952b822 author: Andrew John Hughes date: Thu Sep 10 15:44:07 2009 +0100 Merge. changeset 161d0ebee520 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=161d0ebee520 author: Andrew John Hughes date: Thu Sep 10 15:44:21 2009 +0100 Merge. changeset 974ba11065ab in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=974ba11065ab author: Andrew John Hughes date: Thu Sep 10 15:46:50 2009 +0100 Update documentation with recent changes and Shark requirements. 2009-09-10 Andrew John Hughes * INSTALL: Update documentation to reflect recent changes and add Shark requirements. diffstat: 81 files changed, 2765 insertions(+), 1330 deletions(-) ChangeLog | 212 + INSTALL | 13 Makefile.am | 3 patches/icedtea-jar-misc.patch | 1126 ++++++++++ patches/icedtea-zero.patch | 114 - ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp | 36 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp | 26 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp | 51 ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp | 43 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 25 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp | 145 - ports/hotspot/src/cpu/zero/vm/codeBuffer_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/copy_zero.hpp | 38 ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp | 8 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 123 - ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/debug_zero.cpp | 3 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp | 10 ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/dump_zero.cpp | 5 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp | 13 ports/hotspot/src/cpu/zero/vm/entry_zero.hpp | 42 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 321 ++ ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 41 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 67 ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp | 9 ports/hotspot/src/cpu/zero/vm/icache_zero.cpp | 8 ports/hotspot/src/cpu/zero/vm/icache_zero.hpp | 11 ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp | 13 ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | 24 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp | 51 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp | 15 ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp | 24 ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp | 20 ports/hotspot/src/cpu/zero/vm/jniFastGetField_zero.cpp | 24 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp | 6 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp | 105 ports/hotspot/src/cpu/zero/vm/registerMap_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/register_zero.hpp | 18 ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp | 35 ports/hotspot/src/cpu/zero/vm/relocInfo_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp | 28 ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp | 19 ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp | 293 -- ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 102 ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp | 27 ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp | 12 ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp | 26 ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp | 26 ports/hotspot/src/cpu/zero/vm/vm_version_zero.hpp | 3 ports/hotspot/src/cpu/zero/vm/vmreg_zero.cpp | 15 ports/hotspot/src/cpu/zero/vm/vmreg_zero.inline.hpp | 8 ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp | 12 ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp | 26 ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp | 78 ports/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp | 9 ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 27 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 149 - ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp | 3 ports/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp | 6 ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp | 9 ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp | 6 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp | 26 ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 46 ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp | 26 ports/hotspot/src/share/vm/shark/sharkCompiler.cpp | 3 ports/hotspot/src/share/vm/shark/sharkEntry.hpp | 2 diffs (truncated from 6353 to 500 lines): diff -r 21edcf84dc76 -r 974ba11065ab ChangeLog --- a/ChangeLog Mon Aug 31 07:45:07 2009 +0200 +++ b/ChangeLog Thu Sep 10 15:46:50 2009 +0100 @@ -1,3 +1,215 @@ 2009-08-31 Mark Wielaard + + * INSTALL: Update documentation to reflect recent changes and add + Shark requirements. + +2009-09-10 Andrew Haley + + * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from + upstream OpenJDK 6. + http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 + +2009-09-09 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp + (ZeroFrame::identify_word): New method. + (ZeroFrame::identify_vp_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp + (EntryFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp + (InterpreterFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp + (SharkFrame::identify_word): New method. + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp + (frame::frame): Added frame pointer argument. + (frame::_fp): New field. + (frame::fp): Return the above, instead of a dummy value. + (frame::zero_print_on_error): New method. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp + (frame::frame): Initialize frame pointer. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp + (frame::sender_for_entry_frame): Pass frame pointer. + (frame::sender_for_interpreter_frame): Likewise. + (frame::sender_for_compiled_frame): Likewise. + (frame::sender_for_deoptimizer_frame): Likewise. + (frame::zero_print_on_error): New method. + (ZeroFrame::identify_word): Likewise. + (EntryFrame::identify_word): Likewise. + (InterpreterFrame::identify_word): Likewise. + (SharkFrame::identify_word): Likewise. + (ZeroFrame::identify_vp_word): Likewise. + (DeoptimizerFrame::identify_word): Likewise. + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::pd_last_frame): Pass frame pointer. + + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp + (os::current_frame): Implemented. + + * patches/icedtea-zero.patch + (VMError::report): Replace stack printer code. + (hotspot/src/share/vm/includeDB_core): Updated. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Removed. + +2009-09-08 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Whitespace changes. + +2009-09-08 Gary Benson + + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp + (JavaThread::pop_zero_frame): Tweak. + +2009-09-04 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp + (ZeroEntry::method_entry_t): Renamed as... + (ZeroEntry::NormalEntryFunc): New type. + (ZeroEntry::osr_entry_t): Renamed as... + (ZeroEntry::OSREntryFunc): New type. + (ZeroEntry::_entry_point): Changed type. + (ZeroEntry::entry_point): Changed signature. + (ZeroEntry::set_entry_point): Likewise. + (ZeroEntry::invoke): Added cast. + (ZeroEntry::invoke_osr): Updated cast. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp + (CppInterpreter::generate_entry): Changed signature. + + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp + (InterpreterGenerator::generate_normal_entry): Added cast. + (InterpreterGenerator::generate_native_entry): Likewise. + (InterpreterGenerator::generate_accessor_entry): Likewise. + (InterpreterGenerator::generate_empty_entry): Likewise. + (AbstractInterpreterGenerator::generate_method_entry): Likewise. + + * ports/hotspot/src/share/vm/shark/sharkCompiler.cpp + (SharkCompiler::compile_method): Updated cast. + + * ports/hotspot/src/share/vm/shark/sharkEntry.hpp + (SharkEntry::code_start): Removed cast. + + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp + (NativeJump::patch_verified_entry): Added cast. + +2009-09-04 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp + (ICache::initialize): New method. + (ICache::invalidate_word): Likewise. + (ICache::invalidate_range): Likewise. + + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp + (ICacheStubGenerator::generate_icache_flush): Replaced with stub. + + * patches/icedtea-zero.patch + (AbstractICache::invalidate_range): Removed #ifdef ZERO. + +2009-09-03 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: Reformatted + with trailing opening braces. + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.inline.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/codeBuffer_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/copy_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/debug_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/dump_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/entry_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/icache_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/jniFastGetField_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/registerMap_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/register_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vm_version_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vmreg_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vmreg_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: + Likewise. + +2009-09-03 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp + Added copyright header. + * ports/hotspot/src/cpu/zero/vm/assembler_zero.inline.hpp: + Added copyright header and "intentionally empty" message. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/depChecker_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/interp_masm_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/register_definitions_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp: + Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateInterpreter_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/templateTable_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/vm_version_zero.cpp: Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp: + Likewise. + * ports/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp: + Likewise. + + * ports/hotspot/src/cpu/zero/vm/stackPrinter_zero.hpp + (ZeroStackPrinter::print_word): Replaced a couple of "%d"s with + INTPTR_FORMAT. + 2009-08-31 Mark Wielaard Keith Seitz diff -r 21edcf84dc76 -r 974ba11065ab INSTALL --- a/INSTALL Mon Aug 31 07:45:07 2009 +0200 +++ b/INSTALL Thu Sep 10 15:46:50 2009 +0100 @@ -39,6 +39,8 @@ netbeans = 6.5 For building the zero-assembler port (see below), you will need libffi. +For building the Shark JIT, you will need LLVM 2.5 or current SVN. + For building with systemtap support (--enable-systemtap), you will need systemtap-sdt-devel (available since systemtap 0.9.5). This also needs the --with-abs-install-dir configure option to make sure the hotspot.stp.in @@ -51,21 +53,20 @@ in the tapset/hotspot.stp file. For exam See ./configure --help if you need to override the defaults. -To bootstrap IcedTea with ecj: +To bootstrap IcedTea with ecj and a Classpath-based JDK such as GCJ: autoreconf ./configure make -To build IcedTea with an older version of IcedTea, use: +To build IcedTea with an older version of IcedTea or OpenJDK, use: autoreconf -./configure --with-icedtea - [default location: /usr/lib/jvm/java-icedtea, - to specifiy location use --with-icedtea-home=/path/to/icedtea] +./configure --with-openjdk + to specify the location use --with-openjdk=/path/to/icedtea] make There is currently no install target. -IcedTea ends up in openjdk/control/build/- when the build completes. +IcedTea ends up in openjdk/build/- when the build completes. Example instantiations of - include linux-i586, linux-amd64 and linux-ppc64. Rebuilding The IcedTea Plugs diff -r 21edcf84dc76 -r 974ba11065ab Makefile.am --- a/Makefile.am Mon Aug 31 07:45:07 2009 +0200 +++ b/Makefile.am Thu Sep 10 15:46:50 2009 +0100 @@ -627,7 +627,8 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6824440.patch \ patches/security/icedtea-6830335.patch \ patches/security/icedtea-6845701.patch \ - patches/security/icedtea-6813167.patch + patches/security/icedtea-6813167.patch \ + patches/icedtea-jar-misc.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 21edcf84dc76 -r 974ba11065ab patches/icedtea-jar-misc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jar-misc.patch Thu Sep 10 15:46:50 2009 +0100 @@ -0,0 +1,1126 @@ + +# HG changeset patch +# User martin +# Date 1246913604 25200 +# Node ID b35f1e5075a42030e8624459b13daa45ffc834f8 +# Parent 1661d42b1c09135b77f039e604878f0985d24255 +6854795: Miscellaneous improvements to "jar" +6834805: Improve jar -C performance +6332094: "jar t" and "jar x" should use ZipFile, not ZipInputStream +6496274: jar seems to use more CPU than it should +Summary: backport jdk7 jar command (remove use of nio2) +Reviewed-by: sherman, darcy + +--- openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Thu Jun 25 17:15:18 2009 -0400 ++++ openjdk/jdk/src/share/classes/sun/tools/jar/Main.java Mon Jul 06 13:53:24 2009 -0700 +@@ -32,6 +32,8 @@ import java.util.jar.Manifest; + import java.util.jar.Manifest; + import java.text.MessageFormat; + import sun.misc.JarIndex; ++import static sun.misc.JarIndex.INDEX_NAME; ++import static java.util.jar.JarFile.MANIFEST_NAME; + + /** + * This class implements a simple utility for creating files in the JAR +@@ -46,10 +48,18 @@ class Main { + String zname = ""; + String[] files; + String rootjar = null; +- Hashtable filesTable = new Hashtable(); +- Vector paths = new Vector(); +- Vector v; +- CRC32 crc32 = new CRC32(); ++ ++ // An entryName(path)->File map generated during "expand", it helps to ++ // decide whether or not an existing entry in a jar file needs to be ++ // replaced, during the "update" operation. ++ Map entryMap = new HashMap(); ++ ++ // All files need to be added/updated. ++ Set entries = new LinkedHashSet(); ++ ++ // Directories specified by "-C" operation. ++ Set paths = new HashSet(); ++ + /* + * cflag: create + * uflag: update +@@ -62,11 +72,8 @@ class Main { + */ + boolean cflag, uflag, xflag, tflag, vflag, flag0, Mflag, iflag; + +- static final String MANIFEST = JarFile.MANIFEST_NAME; + static final String MANIFEST_DIR = "META-INF/"; + static final String VERSION = "1.0"; +- static final char SEPARATOR = File.separatorChar; +- static final String INDEX = JarIndex.INDEX_NAME; + + private static ResourceBundle rsrc; + +@@ -118,9 +125,21 @@ class Main { + this.program = program; + } + ++ /** ++ * Creates a new empty temporary file in the same directory as the ++ * specified file. A variant of File.createTempFile. ++ */ ++ private static File createTempFileInSameDirectoryAs(File file) ++ throws IOException { ++ File dir = file.getParentFile(); ++ if (dir == null) ++ dir = new File("."); ++ return File.createTempFile("jartmp", null, dir); ++ } ++ + private boolean ok; + +- /* ++ /** + * Starts main program with the specified arguments. + */ + public synchronized boolean run(String args[]) { +@@ -153,7 +172,7 @@ class Main { + } + addVersion(manifest); + addCreatedBy(manifest); +- if (isAmbigousMainClass(manifest)) { ++ if (isAmbiguousMainClass(manifest)) { + if (in != null) { + in.close(); + } +@@ -175,7 +194,8 @@ class Main { + vflag = false; + } + } +- create(new BufferedOutputStream(out), expand(files), manifest); ++ expand(null, files, false); ++ create(new BufferedOutputStream(out, 4096), manifest); + if (in != null) { + in.close(); + } +@@ -186,9 +206,7 @@ class Main { + FileOutputStream out; + if (fname != null) { + inputFile = new File(fname); +- String path = inputFile.getParent(); +- tmpFile = File.createTempFile("tmp", null, +- new File((path == null) ? "." : path)); ++ tmpFile = createTempFileInSameDirectoryAs(inputFile); + in = new FileInputStream(inputFile); + out = new FileOutputStream(tmpFile); + } else { +@@ -198,8 +216,9 @@ class Main { + } + InputStream manifest = (!Mflag && (mname != null)) ? + (new FileInputStream(mname)) : null; +- expand(files); +- boolean updateOk = update(in, new BufferedOutputStream(out), manifest); ++ expand(null, files, true); ++ boolean updateOk = update(in, new BufferedOutputStream(out), ++ manifest, null); + if (ok) { + ok = updateOk; + } +@@ -217,19 +236,32 @@ class Main { + } + tmpFile.delete(); + } +- } else if (xflag || tflag) { +- InputStream in; ++ } else if (tflag) { ++ replaceFSC(files); + if (fname != null) { +- in = new FileInputStream(fname); ++ list(fname, files); + } else { +- in = new FileInputStream(FileDescriptor.in); +- } +- if (xflag) { +- extract(new BufferedInputStream(in), files); ++ InputStream in = new FileInputStream(FileDescriptor.in); ++ try{ ++ list(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } ++ } else if (xflag) { ++ replaceFSC(files); ++ if (fname != null && files != null) { ++ extract(fname, files); + } else { +- list(new BufferedInputStream(in), files); +- } +- in.close(); ++ InputStream in = (fname == null) ++ ? new FileInputStream(FileDescriptor.in) ++ : new FileInputStream(fname); ++ try { ++ extract(new BufferedInputStream(in), files); ++ } finally { ++ in.close(); ++ } ++ } + } else if (iflag) { + genIndex(rootjar, files); + } +@@ -248,8 +280,8 @@ class Main { + return ok; + } + +- /* +- * Parse command line arguments. ++ /** ++ * Parses command line arguments. + */ + boolean parseArgs(String args[]) { + /* Preprocess and expand @file arguments */ +@@ -354,7 +386,7 @@ class Main { + while (dir.indexOf("//") > -1) { + dir = dir.replace("//", "/"); + } +- paths.addElement(dir.replace(File.separatorChar, '/')); ++ paths.add(dir.replace(File.separatorChar, '/')); + nameBuf[k++] = dir + args[++i]; + } else { + nameBuf[k++] = args[i]; +@@ -383,21 +415,11 @@ class Main { + return true; + } + +- /* ++ /** + * Expands list of files to process into full list of all files that + * can be found by recursively descending directories. + */ +- String[] expand(String[] files) { +- v = new Vector(); +- expand(null, files, v, filesTable); +- files = new String[v.size()]; +- for (int i = 0; i < files.length; i++) { +- files[i] = ((File)v.elementAt(i)).getPath(); +- } +- return files; +- } +- +- void expand(File dir, String[] files, Vector v, Hashtable t) { ++ void expand(File dir, String[] files, boolean isUpdate) { + if (files == null) { + return; + } +@@ -409,17 +431,20 @@ class Main { + f = new File(dir, files[i]); + } + if (f.isFile()) { +- if (!t.contains(f)) { +- t.put(entryName(f.getPath()), f); +- v.addElement(f); ++ if (entries.add(f)) { ++ if (isUpdate) ++ entryMap.put(entryName(f.getPath()), f); + } + } else if (f.isDirectory()) { +- String dirPath = f.getPath(); +- dirPath = (dirPath.endsWith(File.separator)) ? dirPath : From andrew at icedtea.classpath.org Thu Sep 10 07:48:18 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Sep 2009 14:48:18 +0000 Subject: /hg/icedtea6: 2009-09-09 Andrew Haley Message-ID: changeset dbf2dacce14a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=dbf2dacce14a author: aph date: Wed Sep 09 16:44:12 2009 +0100 2009-09-09 Andrew Haley * NEWS: Update for 1.6. diffstat: 2 files changed, 13 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ NEWS | 10 +++++++++- diffs (35 lines): diff -r 974ba11065ab -r dbf2dacce14a ChangeLog --- a/ChangeLog Thu Sep 10 15:46:50 2009 +0100 +++ b/ChangeLog Wed Sep 09 16:44:12 2009 +0100 @@ -1,3 +1,7 @@ 2009-09-10 Andrew John Hughes + + * NEWS: Update for 1.6. + 2009-09-10 Andrew John Hughes * INSTALL: Update documentation to reflect recent changes and add diff -r 974ba11065ab -r dbf2dacce14a NEWS --- a/NEWS Thu Sep 10 15:46:50 2009 +0100 +++ b/NEWS Wed Sep 09 16:44:12 2009 +0100 @@ -1,4 +1,4 @@ New in release 1.6 (UNRELEASED) -New in release 1.6 (UNRELEASED) +New in release 1.6: - Added java method tracing using systemtap version 0.9.9+. - Security fixes for: @@ -12,6 +12,14 @@ New in release 1.6 (UNRELEASED) CVE-2009-2476 - OpenJDK OpenType checks can be bypassed CVE-2009-2689 - OpenJDK JDK13Services grants unnecessary privileges CVE-2009-2690 - OpenJDK private variable information disclosure +- FAST interpreter for ARM +- Timezone fix: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 +- Stackoverflow error fix: +http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 +- Backport regression (NPE) fix for AccessControlContext fix +- Bump to hs14b16 +- The plugin has been updated to improve stability and cookie support. + Support for certificates with mismatched CNs has been added as well. New in release 1.5 (2009-05-20) From aph at redhat.com Thu Sep 10 07:52:40 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 15:52:40 +0100 Subject: Request to committ to trunk - ARM asm improvements In-Reply-To: <200909101803.n8AI3MZj008799@parsley.camswl.com> References: <200909101803.n8AI3MZj008799@parsley.camswl.com> Message-ID: <4AA912B8.2010003@redhat.com> Hi, Edward Nevill wrote: > I have got a bunch of improvements to the ARM asm interpreter which I would > like to commit to the trunk. > > Because of the limitations on size of message sent to the list I am sending > the diffs as 3 messages. It's probably better to submit them separately, anyway. > The first set (attached below) contains all the diffs to anything other > than cppInterpreter_arm.S and bytecodes_arm.def. IE. it contains all the > non assembler diffs and hence the diffs most likely to interest you. > > The second and third set contain the diffs to bytecodes_arm.def and > cppInterpreter_arm.S respectively. > > Please check especially that you are happy with the changes to > bytes_zero.hpp and cppInterpreter_zero.cpp This all looks perfectly reasonable to me, but please let's have some ChangeLogs. Andrew. From andrew at icedtea.classpath.org Thu Sep 10 07:52:33 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 10 Sep 2009 14:52:33 +0000 Subject: /hg/release/icedtea6-1.6: Update documentation with recent chang... Message-ID: changeset 76a4bf70b153 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=76a4bf70b153 author: Andrew John Hughes date: Thu Sep 10 15:46:50 2009 +0100 Update documentation with recent changes and Shark requirements. 2009-09-10 Andrew John Hughes * INSTALL: Update documentation to reflect recent changes and add Shark requirements. diffstat: 2 files changed, 12 insertions(+), 6 deletions(-) ChangeLog | 5 +++++ INSTALL | 13 +++++++------ diffs (51 lines): diff -r da4268686a33 -r 76a4bf70b153 ChangeLog --- a/ChangeLog Thu Sep 10 13:52:13 2009 +0100 +++ b/ChangeLog Thu Sep 10 15:46:50 2009 +0100 @@ -1,3 +1,8 @@ 2009-09-10 Andrew Haley + + * INSTALL: Update documentation to reflect recent changes and add + Shark requirements. + 2009-09-10 Andrew Haley * Makefile.am, patches/icedtea-jar-misc.patch: Import patch from diff -r da4268686a33 -r 76a4bf70b153 INSTALL --- a/INSTALL Thu Sep 10 13:52:13 2009 +0100 +++ b/INSTALL Thu Sep 10 15:46:50 2009 +0100 @@ -39,6 +39,8 @@ netbeans = 6.5 For building the zero-assembler port (see below), you will need libffi. +For building the Shark JIT, you will need LLVM 2.5 or current SVN. + For building with systemtap support (--enable-systemtap), you will need systemtap-sdt-devel (available since systemtap 0.9.5). This also needs the --with-abs-install-dir configure option to make sure the hotspot.stp.in @@ -51,21 +53,20 @@ in the tapset/hotspot.stp file. For exam See ./configure --help if you need to override the defaults. -To bootstrap IcedTea with ecj: +To bootstrap IcedTea with ecj and a Classpath-based JDK such as GCJ: autoreconf ./configure make -To build IcedTea with an older version of IcedTea, use: +To build IcedTea with an older version of IcedTea or OpenJDK, use: autoreconf -./configure --with-icedtea - [default location: /usr/lib/jvm/java-icedtea, - to specifiy location use --with-icedtea-home=/path/to/icedtea] +./configure --with-openjdk + to specify the location use --with-openjdk=/path/to/icedtea] make There is currently no install target. -IcedTea ends up in openjdk/control/build/- when the build completes. +IcedTea ends up in openjdk/build/- when the build completes. Example instantiations of - include linux-i586, linux-amd64 and linux-ppc64. Rebuilding The IcedTea Plugs From doko at ubuntu.com Thu Sep 10 07:58:36 2009 From: doko at ubuntu.com (Matthias Klose) Date: Thu, 10 Sep 2009 16:58:36 +0200 Subject: /hg/release/icedtea6-1.6: Update documentation with recent chang... In-Reply-To: References: Message-ID: <4AA9141C.3030708@ubuntu.com> On 10.09.2009 16:52, andrew at icedtea.classpath.org wrote: > +For building the Shark JIT, you will need LLVM 2.5 or current SVN. llvm branched two weeks ago, that should be "or the 2.6 branch / 2.6 release from SVN. From gnu_andrew at member.fsf.org Thu Sep 10 08:04:46 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 16:04:46 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA8FF39.2060704@redhat.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> Message-ID: <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: >> 2009/9/10 Andrew Haley : >>> Andrew John Hughes wrote: >>>> 2009/9/9 Matthias Klose : >>>>> On 09.09.2009 22:59, Andreas Radke wrote: >>>>> >>>>>> configure: WARNING: unrecognized options: --with-openjdk-home >>>>>> Was has been changed here? >>>>> run configure --help and look for the changed configuration options. Yes, we >>>>> missed to document these changes. >>>>> >>>>> ?Matthias >>>>> >>>> Yeah, the important bit you missed off that big listing was the >>>> options you were passing to configure :) >>>> >>>> But if you change --with-openjdk-home to --with-openjdk, all should be well. >>>> >>>> I did document this in 7... it just seems that bit didn't get backported :( >>> Can you please back-port the documentation change? > >> >> Sure, how's this? >> >> ? * INSTALL: Update documentation to reflect recent changes and add >> Shark requirements. >> >> It appears --with-openjdk was never even documented, never mind this change :( >> Let me know if this is ok to commit and on which branches to do so. >> I'm also plan to forwardport the two NEWS changesets from 1.6 to HEAD; >> is that ok? > > Yes, and yes. ?The relevant branches are, I think, trunk and 1.6. > > Andrew. > > > Thanks for the quick response. All done: http://icedtea.classpath.org/hg/icedtea6/rev/974ba11065ab http://icedtea.classpath.org/hg/icedtea6/rev/dbf2dacce14a http://icedtea.classpath.org/hg/release/icedtea6-1.6/rev/76a4bf70b153 As I've mentioned before, it would be nice if we could all standardise on having a 1-line summary in commit messages prior to the ChangeLog, as this is the only line that shows up without verbose output (hg log, shortlog and summary pages on the web view). It would make it easier to select changesets that need to be merged. 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 ed at camswl.com Thu Sep 10 11:26:37 2009 From: ed at camswl.com (Edward Nevill) Date: Thu, 10 Sep 2009 19:26:37 +0100 Subject: ARM asm improvements - part 2 Message-ID: <200909101826.n8AIQbkR008895@parsley.camswl.com> Hi, Here is part 2 of the diffs, the changes to bytecodes_arm.def. Whats changed? (the following is a combined list of changes in cppInterpreter_arm.S and bytecodes_arm.def). - Added support for HW floating point. (checks /proc/sys/... to see the processor actually has HW FP before executing any HW FP instructions). - Added #ifdefs to allow disabling of various optimisations. The list is -DDISABLE_NOTICE_SAFEPOINTS -DDISABLE_HW_NULL_PTR_CHECK -DDISABLE_FASTPATH_ENTRY -DDISABLE_NATIVE_ENTRY -DDISABLE_FAST_BYTECODES -DDISABLE_HW_FP - Removed #ifdefs on GCC_VERSION and B14/B16. It should now build for any of gcc 4.1, 4.3 and 4.4 and handle the differences between B14 and B16 automatically using asm_helper.cpp - Added lots of debugging and asert ifdefs. The list is DISPATCH_LOOP CODETRACE DISPATCH_ASSERTS CHECK_LOCALS CHECK_FRAME CHECK_BACKTRACE CHECK_STACK Basically, if DISPATCH_LOOP is set then you can enable any of the other assertions and it will do the appropriate checks after every bytecode. - Support for gcc 4.1 Basically I have inlined the problem functions which were causing unresolved symbols with gcc 4.1. Also changed the code alignment from 64 to 8 as earlier binutils have a problem with 64 byte alignment. - Synchronized native entry is now thrown to cppInterpreter_zero. It was too much of a hazard to maintain/debug this for almost no performance gain. - Optimised integer divide and remainder by constant. - Support for UseCompiler. I have tested this out by building Shark for ARM and it runs at least as well as the C version, however there is a lot of work to make Shark work on ARM so asm_generate_entry still returns NULL if UseCompiler is set. - invokeinterface can now do a fastpath entry, previously always did a slow path and created a full native and java frame. The fast path entry only creates a java frame, no new native frame is created. - Optimised new, checkcast and instanceof. - Added support for additional bytecode sequences of the form - Lots of other minor optimisations. Regards, Ed. --- CUT HERE ----------------------------------------------------------- diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def 2009-09-10 14:18:17.000000000 +0100 @@ -1,3 +1,13 @@ +#ifndef DISABLE_HW_FP +#define HW_FP +#endif +#ifndef DISABLE_NOTICE_SAFEPOINTS +#define NOTICE_SAFEPOINTS +#endif +#ifndef DISABLE_FAST_BYTECODES +#define FAST_BYTECODES +#endif + nop = 0x00, 1 aconst_null = 0x01, 1 iconst_m1 = 0x02, 1 @@ -201,11 +211,13 @@ jsr_w = 0xc9, 0 breakpoint = 0xca, 0 -#agetfield = 0xcb, 3 +#ifdef FAST_BYTECODES + + at agetfield = 0xcb, 3 bgetfield = 0xcc, 3 cgetfield = 0xcd, 3 -#dgetfield = 0xce, 3 -#fgetfield = 0xcf, 3 + at dgetfield = 0xce, 3 + at fgetfield = 0xcf, 3 igetfield = 0xd0, 3 lgetfield = 0xd1, 3 sgetfield = 0xd2, 3 @@ -213,45 +225,56 @@ aputfield = 0xd3, 3 bputfield = 0xd4, 3 cputfield = 0xd5, 3 -#dputfield = 0xd6, 3 -#fputfield = 0xd7, 3 + at dputfield = 0xd6, 3 + at fputfield = 0xd7, 3 iputfield = 0xd8, 3 lputfield = 0xd9, 3 -#sputfield = 0xda, 3 + at sputfield = 0xda, 3 iaccess_0 = 0xdb, 4 iaccess_1 = 0xdc, 4 iaccess_2 = 0xdd, 4 iaccess_3 = 0xde, 4 -#fast_iload = 0xdf, 2 -#fast_iload2 = 0xe0, 4 -#fast_icaload = 0xe1, 3 - -invokevfinal = 0xe2, 3 -#linearswitch = 0xe3, 0 -#binaryswitch = 0xe4, 0 - -iload_0_iconst_N = 231, 2 -iload_1_iconst_N = 232, 2 -iload_2_iconst_N = 233, 2 -iload_3_iconst_N = 234, 2 -iload_iconst_N = 235, 3 -invokeresolved = 236, 3 -iadd_istore_N = 237, 2 -isub_istore_N = 238, 2 -iand_istore_N = 239, 2 -ior_istore_N = 240, 2 -ixor_istore_N = 241, 2 -iadd_u4store = 242, 3 -isub_u4store = 243, 3 -iand_u4store = 244, 3 -ior_u4store = 245, 3 -ixor_u4store = 246, 3 -invokespecialresolved = 247, 3 -invokestaticresolved = 248, 3 +invokeresolved = 0xdf, 3 +invokespecialresolved = 0xe0, 3 +invokestaticresolved = 0xe1, 3 +invokevfinal = 0xe2, 3 + +iload_iload = 0xe3, 4 +iload_iload_N = 0xe4, 3 + + at return_register_finalizer = 0xe5, 1 + +dmac = 0xe6, 2 + +iload_0_iconst_N = 0xe7, 2 +iload_1_iconst_N = 0xe8, 2 +iload_2_iconst_N = 0xe9, 2 +iload_3_iconst_N = 0xea, 2 +iload_iconst_N = 0xeb, 3 +iadd_istore_N = 0xec, 2 +isub_istore_N = 0xed, 2 +iand_istore_N = 0xee, 2 +ior_istore_N = 0xef, 2 +ixor_istore_N = 0xf0, 2 +iadd_u4store = 0xf1, 3 +isub_u4store = 0xf2, 3 +iand_u4store = 0xf3, 3 +ior_u4store = 0xf4, 3 +ixor_u4store = 0xf5, 3 +iload_0_iload = 0xf6, 3 +iload_1_iload = 0xf7, 3 +iload_2_iload = 0xf8, 3 +iload_3_iload = 0xf9, 3 +iload_0_iload_N = 0xfa, 2 +iload_1_iload_N = 0xfb, 2 +iload_2_iload_N = 0xfc, 2 +iload_3_iload_N = 0xfd, 2 + +#endif // FAST_BYTECODES -return_register_finalizer = 229, 0 +return_register_finalizer = 0xe5, 1 (nop) { DISPATCH \seq_len @@ -292,7 +315,7 @@ DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -321,7 +344,7 @@ mov tmp2, #0 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -337,8 +360,8 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (sipush) sipush { DISPATCH_START \seq_len mov tmp1, r1 @@ -352,7 +375,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,fload,aload) u4load { DISPATCH_START \seq_len rsb tmp1, r2, #0 @@ -365,7 +388,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (lload,dload) u8load { DISPATCH_START \seq_len sub r3, locals, r2, lsl #2 @@ -374,7 +397,7 @@ DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -446,7 +469,7 @@ DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -458,17 +481,15 @@ DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (iaload,faload,aaload) u4aload { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry5: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -484,12 +505,10 @@ } (laload,daload) u8aload { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry6: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -501,17 +520,15 @@ DISPATCH_NEXT ldr tmp1, [r3, #20] DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (baload) baload { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry7: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -527,12 +544,10 @@ } (caload) caload { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry8: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -548,12 +563,10 @@ } (saload) saload { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry9: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -568,7 +581,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (astore,istore,fstore) u4store { DISPATCH_START \seq_len rsb tmp1, r2, #0 @@ -581,10 +594,10 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (lstore,dstore) u8store { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT sub r3, locals, r2, lsl #2 DISPATCH_NEXT @@ -641,7 +654,7 @@ (lstore_0,dstore_0) u8store_0 { DISPATCH_START \seq_len DISPATCH_NEXT - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -652,7 +665,7 @@ (lstore_1,dstore_1) u8store_1 { DISPATCH_START \seq_len DISPATCH_NEXT - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -662,7 +675,7 @@ (lstore_2,dstore_2) u8store_2 { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT str tmp2, [locals, #-12] DISPATCH_NEXT @@ -674,7 +687,7 @@ (lstore_3,dstore_3) u8store_3 { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT str tmp2, [locals, #-16] DISPATCH_NEXT @@ -685,12 +698,10 @@ } (iastore,fastore) u4astore { - POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + POP r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry10: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -704,12 +715,10 @@ } (lastore,dastore) u8astore { - POP4 r2, r3, tmp2, tmp1 @ r2,r3 = value, tmp2 = index, tmp1 = arrayref + POP r2, r3, tmp2, tmp1 @ r2,r3 = value, tmp2 = index, tmp1 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry11: ldr ip, [tmp1, #8] @ ip = limit cmp tmp2, ip @@ -725,12 +734,10 @@ } (bastore) bastore { - POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + POP r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry12: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -744,12 +751,10 @@ } (castore,sastore) u2astore { - POP3 r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref + POP r3, tmp2, tmp1 @ r3 = value, tmp2 = index, tmp1 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry13: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -784,21 +789,21 @@ (dup_x1) dup_x1 { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT PUSH r2 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (dup_x2) dup_x2 { DISPATCH_START \seq_len - POP3 r2, r3, lr + POP r2, r3, lr DISPATCH_NEXT PUSH r2 DISPATCH_NEXT - PUSH3 r2, r3, lr + PUSH r2, r3, lr DISPATCH_FINISH } @@ -806,32 +811,32 @@ DISPATCH_START \seq_len ldmib stack, {r2, r3} DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (dup2_x1) dup2_x1 { DISPATCH_START \seq_len - POP3 r2, r3, lr + POP r2, r3, lr DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_NEXT - PUSH3 r2, r3, lr + PUSH r2, r3, lr DISPATCH_FINISH } (dup2_x2) dup2_x2 { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT - PUSH2 r2, r3 - PUSH4 r2, r3, tmp1, lr + PUSH r2, r3 + PUSH r2, r3, tmp1, lr DISPATCH_FINISH } (swap) swap { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT PUSH r2 DISPATCH_NEXT @@ -842,7 +847,7 @@ (iadd) iadd { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT add tmp2, tmp2, tmp1 DISPATCH_NEXT @@ -854,25 +859,18 @@ (ladd) ladd { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT adds r2, r2, tmp1 adc r3, r3, lr DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } -(fadd) fadd { - POP2 r0, r1 - bl __aeabi_fadd - PUSH r0 - DISPATCH \seq_len -} - (isub) isub { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -884,26 +882,18 @@ (lsub) lsub { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT subs r2, tmp1, r2 sbc r3, lr, r3 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } -(fsub) fsub { - POP r1 - POP r0 - bl __aeabi_fsub - PUSH r0 - DISPATCH \seq_len -} - (imul) imul { DISPATCH_START \seq_len - POP2 r2, tmp1 + POP r2, tmp1 DISPATCH_NEXT mul tmp2, r2, tmp1 DISPATCH_NEXT @@ -914,56 +904,33 @@ } (lmul) lmul { - POP4 r2, tmp1, ip, lr + POP r2, tmp1, ip, lr umull r3, r0, ip, r2 mla tmp1, ip, tmp1, r0 DISPATCH_START \seq_len mla tmp1, lr, r2, tmp1 DISPATCH_NEXT - PUSH2 r3, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } -(fmul) fmul { - POP2 r0, r1 - bl __aeabi_fmul - PUSH r0 - DISPATCH \seq_len -} - (ldiv) ldiv { - POP2 r2, r3 - POP2 r0, r1 + POP r2, r3 + POP r0, r1 orrs lr, r2, r3 beq .ldiv_0 bl __aeabi_ldivmod - PUSH2 r0, r1 - DISPATCH \seq_len -} - -(fdiv) fdiv { - POP r1 - POP r0 - bl __aeabi_fdiv - PUSH r0 - DISPATCH \seq_len -} - -(ddiv) ddiv { - POP2 r2, r3 - POP2 r0, r1 - bl __aeabi_ddiv - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } (lrem) lrem { - POP2 r2, r3 - POP2 r0, r1 + POP r2, r3 + POP r0, r1 orrs lr, r2, r3 beq .lrem_0 bl __aeabi_ldivmod - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH \seq_len } @@ -971,10 +938,10 @@ @ ECN: It must be possible to do better than this POP r0 bl __aeabi_f2d - PUSH2 r0, r1 + PUSH r0, r1 GET_STACK 2, r0 bl __aeabi_f2d - POP2 r2, r3 + POP r2, r3 bl fmod bl __aeabi_d2f PUT_STACK 0, r0 @@ -982,10 +949,10 @@ } (drem) drem { - POP2 r2, r3 - POP2 r0, r1 + POP r2, r3 + POP r0, r1 bl fmod - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } @@ -1003,12 +970,12 @@ (lneg) lneg { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT rsbs r2, r2, #0 rsc r3, r3, #0 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } @@ -1034,7 +1001,7 @@ (ishl) ishl { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT and r2, r2, #31 mov r2, r3, lsl r2 @@ -1045,7 +1012,7 @@ (lshl) lshl { DISPATCH_START \seq_len - POP3 r2, r3, lr + POP r2, r3, lr DISPATCH_NEXT tst r2, #32 and r2, r2, #31 @@ -1055,13 +1022,13 @@ moveq lr, lr, lsl r2 rsbeq r2, r2, #32 orreq lr, lr, r3, lsr r2 - PUSH2 tmp1, lr + PUSH tmp1, lr DISPATCH_FINISH } (ishr) ishr { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT and r2, r2, #31 mov r2, r3, asr r2 @@ -1072,7 +1039,7 @@ (lshr) lshr { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT tst r2, #32 and r2, r2, #31 @@ -1082,13 +1049,13 @@ moveq r3, r3, lsr r2 rsbeq r2, r2, #32 orreq r3, r3, tmp1, lsl r2 - PUSH2 r3, lr + PUSH r3, lr DISPATCH_FINISH } (iushr) iushr { DISPATCH_START \seq_len - POP2 r2, r3 + POP r2, r3 DISPATCH_NEXT and r2, r2, #31 mov r2, r3, lsr r2 @@ -1099,7 +1066,7 @@ (lushr) lushr { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT tst r2, #32 and r2, r2, #31 @@ -1109,13 +1076,13 @@ moveq r3, r3, lsr r2 rsbeq r2, r2, #32 orreq r3, r3, tmp1, lsl r2 - PUSH2 r3, lr + PUSH r3, lr DISPATCH_FINISH } (iand) iand { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT and tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -1127,18 +1094,18 @@ (land) land { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT and r2, tmp1, r2 and r3, lr, r3 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (ior) ior { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT orr tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -1150,18 +1117,18 @@ (lor) lor { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT orr r2, tmp1, r2 orr r3, lr, r3 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (ixor) ixor { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT eor tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -1173,16 +1140,16 @@ (lxor) lxor { DISPATCH_START \seq_len - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_NEXT eor r2, tmp1, r2 eor r3, lr, r3 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iinc) iinc { ldrsb lr, [jpc, #2] DISPATCH_START \seq_len @@ -1203,7 +1170,7 @@ DISPATCH_NEXT mov r3, r2, asr #31 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } @@ -1217,7 +1184,7 @@ (i2d) i2d { POP r0 bl __aeabi_i2d - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } @@ -1230,16 +1197,16 @@ } (l2f) l2f { - POP2 r0, r1 + POP r0, r1 bl __aeabi_l2f PUSH r0 DISPATCH \seq_len } (l2d) l2d { - POP2 r0, r1 + POP r0, r1 bl __aeabi_l2d - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } @@ -1253,33 +1220,33 @@ (f2l) f2l { POP r0 bl _ZN13SharedRuntime3f2lEf - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } (f2d) f2d { POP r0 bl __aeabi_f2d - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } (d2i) d2i { - POP2 r0, r1 + POP r0, r1 bl _ZN13SharedRuntime3d2iEd PUSH r0 DISPATCH \seq_len } (d2l) d2l { - POP2 r0, r1 + POP r0, r1 bl _ZN13SharedRuntime3d2lEd - PUSH2 r0, r1 + PUSH r0, r1 DISPATCH \seq_len } (d2f) d2f { - POP2 r0, r1 + POP r0, r1 bl __aeabi_d2f PUSH r0 DISPATCH \seq_len @@ -1319,7 +1286,7 @@ } (lcmp) lcmp { - POP4 r2, r3, tmp1, lr + POP r2, r3, tmp1, lr DISPATCH_START \seq_len subs r2, tmp1, r2 movne r2, #1 @@ -1332,104 +1299,10 @@ DISPATCH_FINISH } -(fcmpl) fcmpl { - ldmib stack, {r0, r1} - bl __aeabi_fcmpgt - cmp r0, #0 - movne r3, #-1 - bne 3f - ldmib stack, {r0, r1} - bl __aeabi_fcmplt - cmp r0, #0 - movne r3, #1 - bne 3f - ldmib stack, {r0, r1} - bl __aeabi_fcmpeq - cmp r0, #0 - movne r3, #0 - moveq r3, #-1 -3: - DISPATCH_START \seq_len - add stack, stack, #8 - DISPATCH_NEXT - PUSH r3 - DISPATCH_FINISH -} - -(fcmpg) fcmpg { - ldmib stack, {r0, r1} - bl __aeabi_fcmpgt - cmp r0, #0 - movne r3, #-1 - bne 4f - ldmib stack, {r0, r1} - bl __aeabi_fcmplt - cmp r0, #0 - movne r3, #1 - bne 4f - ldmib stack, {r0, r1} - bl __aeabi_fcmpeq - cmp r0, #0 - movne r3, #0 - moveq r3, #1 -4: - DISPATCH_START \seq_len - add stack, stack, #8 - DISPATCH_NEXT - PUSH r3 - DISPATCH_FINISH -} - -(dcmpl) dcmpl { - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmpgt - cmp r0, #0 - movne r3, #-1 - bne 5f - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmplt - cmp r0, #0 - movne r3, #1 - bne 5f - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmpeq - cmp r0, #0 - movne r3, #0 - moveq r3, #-1 -5: - DISPATCH_START \seq_len - add stack, stack, #16 - DISPATCH_NEXT - PUSH r3 - DISPATCH_FINISH -} - -(dcmpg) dcmpg { - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmpgt - cmp r0, #0 - movne r3, #-1 - bne 6f - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmplt - cmp r0, #0 - movne r3, #1 - bne 6f - ldmib stack, {r0, r1, r2, r3} - bl __aeabi_dcmpeq - cmp r0, #0 - movne r3, #0 - moveq r3, #1 -6: - DISPATCH_START \seq_len - add stack, stack, #16 - DISPATCH_NEXT - PUSH r3 - DISPATCH_FINISH -} +#ifdef NOTICE_SAFEPOINTS -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (ifeq,ifnull) ifeq_unsafe { POP r3 mov r2, r2, lsl #24 @@ -1503,7 +1376,7 @@ } (if_icmpeq,if_acmpeq) if_icmpeq_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1515,7 +1388,7 @@ } (if_icmpne,if_acmpne) if_icmpne_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1527,7 +1400,7 @@ } (if_icmplt) if_icmplt_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1539,7 +1412,7 @@ } (if_icmpge) if_icmpge_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1551,7 +1424,7 @@ } (if_icmpgt) if_icmpgt_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1563,7 +1436,7 @@ } (if_icmple) if_icmple_unsafe { - POP2 r3, tmp1 + POP r3, tmp1 mov r2, r2, lsl #24 cmp tmp1, r3 orr ip, r1, r2, asr #16 @@ -1581,17 +1454,19 @@ DISPATCH_BYTECODE } +#endif // NOTICE_SAFEPOINTS + (jsr) jsr { ldr r3, [istate, #ISTATE_METHOD] ldr r1, [r3, #8] rsb r2, r1, jpc sub r2, r2, #45 PUSH r2 - b do_goto_safe + b do_goto } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (ret) ret { ldr r0, [istate, #ISTATE_METHOD] ldr r3, [r0, #8] @@ -1600,7 +1475,7 @@ DISPATCH 48 } -# ECN: We dont do safe and unsafe versions of tableswitch and lookupswitch +@ ECN: We dont do safe and unsafe versions of tableswitch and lookupswitch (tableswitch) tableswitch { POP a2 bic a1, jpc, #3 @@ -1679,17 +1554,16 @@ DISPATCH_BYTECODE } +#ifdef FAST_BYTECODES (igetfield) igetfield { DISPATCH_START 3 add tmp2, constpool, r1, lsl #12 POP tmp1 add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry78: ldr tmp2, [tmp1, tmp2] @@ -1705,11 +1579,9 @@ POP tmp1 add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry79: ldrsb tmp2, [tmp1, tmp2] @@ -1725,11 +1597,9 @@ POP tmp1 add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry80: ldrh tmp2, [tmp1, tmp2] @@ -1745,11 +1615,9 @@ POP tmp1 add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry81: ldrsh tmp2, [tmp1, tmp2] @@ -1765,32 +1633,28 @@ POP tmp1 add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT .abortentry82: ldmia tmp2, {tmp2, tmp1} DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (iputfield) iputfield { DISPATCH_START 3 add tmp2, constpool, r1, lsl #12 - POP2 r3, tmp1 @ r3 = value, tmp1 = object + POP r3, tmp1 @ r3 = value, tmp1 = object add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -1802,14 +1666,12 @@ (cputfield) cputfield { DISPATCH_START 3 add tmp2, constpool, r1, lsl #12 - POP2 r3, tmp1 @ r3 = value, tmp1 = object + POP r3, tmp1 @ r3 = value, tmp1 = object add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -1821,14 +1683,12 @@ (bputfield) bputfield { DISPATCH_START 3 add tmp2, constpool, r1, lsl #12 - POP2 r3, tmp1 @ r3 = value, tmp1 = object + POP r3, tmp1 @ r3 = value, tmp1 = object add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -1839,13 +1699,15 @@ (aputfield) aputfield { GET_STACK 1, r0 @ r0 = object - add tmp2, constpool, r1, lsl #12 - POP r1 @ r1 = value - add tmp2, tmp2, r2, lsl #4 - ldr tmp2, [tmp2, #8] - cmp r0, #0 - beq null_ptr_exception - add r0, r0, tmp2 + add r3, constpool, r1, lsl #12 + POP oop_value_tmp @ r1 = value + add r3, r3, r2, lsl #4 + ldr r3, [r3, #CP_OFFSET+8] + SW_NPC cmp r0, #0 + add oop_address_tmp, r0, r3 + SW_NPC beq null_ptr_exception +.abortentry113: + HW_NPC ldr ip, [r0] @ Only to provoke an abort bl oop_store ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] DISPATCH_START 3 @@ -1863,14 +1725,12 @@ (lputfield) lputfield { DISPATCH_START 3 add tmp2, constpool, r1, lsl #12 - POP3 r3, tmp1, lr @ r3, tmp1 = value, lr = object + POP r3, tmp1, lr @ r3, tmp1 = value, lr = object add tmp2, tmp2, r2, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT add tmp2, lr, tmp2 DISPATCH_NEXT @@ -1880,19 +1740,20 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +#endif // FAST_BYTECODES + +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (getstatic) getstatic { - DISPATCH_START \seq_len add tmp2, constpool, r1, lsl #12 - ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags - DISPATCH_NEXT + add tmp2, tmp2, r2, lsl #4 + ldr r3, [tmp2, #CP_OFFSET] and r3, r3, #0x00ff0000 - cmp r3, #178 << 16 - bne resolve_getstatic - ldr r3, [tmp2, #4] - ldr r2, [tmp2, #12] - ldr lr, [tmp2, #8] + cmp r3, #opc_getstatic << 16 + blne resolve_get_put + ldr r3, [tmp2, #CP_OFFSET+4] + ldr r2, [tmp2, #CP_OFFSET+12] + ldr lr, [tmp2, #CP_OFFSET+8] movs r2, r2, lsr #29 bhi getstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 bcs getstatic_h @ C = 1 => R2 = 1 @@ -1902,19 +1763,18 @@ b getstatic_sh } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (putstatic) putstatic { - DISPATCH_START \seq_len add tmp2, constpool, r1, lsl #12 - ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags - DISPATCH_NEXT + add tmp2, tmp2, r2, lsl #4 + ldr r3, [tmp2, #CP_OFFSET] and r3, r3, #0xff000000 - cmp r3, #179 << 24 - bne resolve_putstatic - ldr r3, [tmp2, #4] @ r3 = object - ldr lr, [tmp2, #12] @ lr = tos_type - ldr r2, [tmp2, #8] @ r2 = offset + cmp r3, #opc_putstatic << 24 + blne resolve_get_put + ldr r3, [tmp2, #CP_OFFSET+4] @ r3 = object + ldr lr, [tmp2, #CP_OFFSET+12] @ lr = tos_type + ldr r2, [tmp2, #CP_OFFSET+8] @ r2 = offset movs lr, lr, lsr #29 bhi putstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 bcs putstatic_h @ C = 1 => R2 = 1 @@ -1924,6 +1784,8 @@ b putstatic_sh } +#ifdef NOTICE_SAFEPOINTS + (return) return_unsafe { ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base @@ -1943,14 +1805,17 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] add stack, r1, r0, lsl #2 - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @@ -1959,10 +1824,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: bl return_check_monitors @@ -1988,15 +1852,18 @@ ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -2005,10 +1872,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: bl return_check_monitors @@ -2033,18 +1899,21 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] - POP2 r2, r3 + POP r2, r3 add stack, r1, r0, lsl #2 stmdb stack!, {r2, r3} - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @@ -2053,44 +1922,47 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: bl return_check_monitors b 2b } +#endif // NOTICE_SAFEPOINTS + (ldc) ldc { - ldrb lr, [jpc, #1] ldr r3, [istate, #ISTATE_METHOD] @ method + ldrb lr, [jpc, #1] + + ldr tmp1, [r3, #12] @ constants DISPATCH_START \seq_len - ldr r2, [r3, #12] @ constants - ldr r3, [r2, #8] + ldr r3, [tmp1, #8] + DISPATCH_NEXT add r3, r3, #12 ldrb r3, [r3, lr] DISPATCH_NEXT + DISPATCH_NEXT cmp r3, #JVM_CONSTANT_Integer cmpne r3, #JVM_CONSTANT_Float cmpne r3, #JVM_CONSTANT_String bne 1f + add r3, tmp1, lr, lsl #2 + ldr r3, [r3, #32] DISPATCH_NEXT - - add r3, r2, lr, lsl #2 - ldr lr, [r3, #32] - PUSH lr + PUSH r3 DISPATCH_FINISH 1: cmp r3, #JVM_CONSTANT_Class bne 2f - add r0, r2, #32 + add r0, tmp1, #32 ldr r0, [r0, lr, lsl #2] ldr r1, [r0, #60] PUSH r1 @@ -2098,18 +1970,17 @@ 2: sub jpc, jpc, #\seq_len ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK mov r1, #0 bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb ldr r0, [istate, #ISTATE_THREAD] @ thread - ldr stack, [istate, #ISTATE_STACK] - ldr constpool, [istate, #ISTATE_CONSTANTS] + ASSERT_STACK_CACHED + CACHE_CP ldr r1, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_JPC cmp r1, #0 - ldr locals, [istate, #ISTATE_LOCALS] + ASSERT_LOCALS_CACHED bne handle_exception ldr r3, [r0, #THREAD_VM_RESULT] mov r2, #0 @@ -2133,17 +2004,18 @@ ldrb r3, [r3, lr] DISPATCH_NEXT + DISPATCH_NEXT cmp r3, #JVM_CONSTANT_Integer cmpne r3, #JVM_CONSTANT_Float cmpne r3, #JVM_CONSTANT_String bne 1f - DISPATCH_NEXT - add r3, r2, lr, lsl #2 - ldr lr, [r3, #32] - PUSH lr + ldr r3, [r3, #32] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH 1: cmp r3, #JVM_CONSTANT_Class @@ -2156,20 +2028,19 @@ 2: sub jpc, jpc, #\seq_len ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK mov r1, #1 bl _ZN18InterpreterRuntime3ldcEP10JavaThreadb + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] @ thread - ldr stack, [istate, #ISTATE_STACK] - ldr constpool, [istate, #ISTATE_CONSTANTS] + CACHE_CP ldr r1, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_JPC cmp r1, #0 - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception ldr r3, [r0, #THREAD_VM_RESULT] + bne handle_exception mov r2, #0 PUSH r3 str r2, [r0, #THREAD_VM_RESULT] @@ -2191,23 +2062,26 @@ ldrb tmp1, [tmp1, r3] DISPATCH_NEXT + DISPATCH_NEXT cmp tmp1, #JVM_CONSTANT_Long cmpne tmp1, #JVM_CONSTANT_Double bne vm_fatal_error - DISPATCH_NEXT add tmp1, r2, r3, lsl #2 - add tmp1, tmp1, #32 - ldmia tmp1, {r3, tmp1} - PUSH2 r3, tmp1 + ldr r3, [tmp1, #32] + ldr tmp1, [tmp1, #36] + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp1 DISPATCH_FINISH } +#ifdef FAST_BYTECODES (iadd_u4store) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2221,7 +2095,7 @@ (isub_u4store) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2235,7 +2109,7 @@ (iand_u4store) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT and tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2249,7 +2123,7 @@ (ior_u4store) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT orr tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2263,7 +2137,7 @@ (ixor_u4store) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT eor tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2279,7 +2153,7 @@ DISPATCH_START \seq_len DISPATCH_NEXT rsb r3, lr, #opc_istore_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2293,7 +2167,7 @@ DISPATCH_START \seq_len DISPATCH_NEXT rsb r3, lr, #opc_istore_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2307,7 +2181,7 @@ DISPATCH_START \seq_len DISPATCH_NEXT rsb r3, lr, #opc_istore_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT and tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2321,7 +2195,7 @@ DISPATCH_START \seq_len DISPATCH_NEXT rsb r3, lr, #opc_istore_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT orr tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2335,7 +2209,7 @@ DISPATCH_START \seq_len DISPATCH_NEXT rsb r3, lr, #opc_istore_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT eor tmp2, tmp1, tmp2 DISPATCH_NEXT @@ -2344,7 +2218,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload_iconst_N) { ldrb r3, [jpc, #2] @@ -2356,7 +2230,7 @@ DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } @@ -2371,11 +2245,11 @@ sub tmp2, r2, #opc_iconst_0 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } -# (aload_N)(getfield) +@ (aload_N)(getfield) (iaccess_0,iaccess_1,iaccess_2,iaccess_3) { ldrb r2, [jpc, #3] @@ -2386,12 +2260,10 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, r3, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 DISPATCH_NEXT - ldr tmp2, [tmp2, #8] + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry87: ldr tmp2, [tmp1, tmp2] @@ -2400,451 +2272,837 @@ DISPATCH_FINISH } -############################################################################### -# ECN: Optimised bytecode pairs -############################################################################### - -# --- ECN: load; load --------------------------------------------------------- - -(aload_0,aload_1,aload_2,aload_3) -(aload_0,aload_1,aload_2,aload_3) +@ r2 = [jpc, #1] +(iload_iload) fast_iload_iload { - rsb tmp1, r0, #opc_aload_0 + ldrb r3, [jpc, #3] DISPATCH_START \seq_len - rsb tmp2, r1, #opc_aload_0 + rsb r2, r2, #0 DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - ldr tmp2, [locals, tmp2, lsl #2] + rsb r3, r3, #0 DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } -(aload_0,aload_1,aload_2,aload_3) -(iload_0,iload_1,iload_2,iload_3) +@ r2 = [jpc, #1] +(iload_iload_N) fast_iload_iload_N { - rsb tmp1, r0, #opc_aload_0 + ldrb r3, [jpc, #2] DISPATCH_START \seq_len - rsb tmp2, r1, #opc_iload_0 + rsb r2, r2, #0 DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - ldr tmp2, [locals, tmp2, lsl #2] + rsb r3, r3, #opc_iload_0 DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } -(iload_0,iload_1,iload_2,iload_3) -(aload_0,aload_1,aload_2,aload_3) +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) fast_iload_N_iload { - rsb tmp1, r0, #opc_iload_0 + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload DISPATCH_START \seq_len - rsb tmp2, r1, #opc_aload_0 + rsb r3, r3, #0 DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - ldr tmp2, [locals, tmp2, lsl #2] + ldr tmp1, [locals, r2, lsl #2] DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } -# 7 cycles -(iload_0,iload_1,iload_2,iload_3) -(iload_0,iload_1,iload_2,iload_3) +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) fast_iload_N_iload_N { - rsb tmp1, r0, #opc_iload_0 + rsb r3, r0, #opc_iload_0_iload_N DISPATCH_START \seq_len - rsb tmp2, r1, #opc_iload_0 + rsb r2, r2, #opc_iload_0 DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] - ldr tmp2, [locals, tmp2, lsl #2] + ldr tmp1, [locals, r3, lsl #2] DISPATCH_NEXT + ldr r3, [locals, r2, lsl #2] DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH r3, tmp1 DISPATCH_FINISH } -(aload_0,aload_1,aload_2,aload_3) -(iload,aload,fload) -{ - ldrb r3, [jpc, #2] - rsb tmp1, r0, #opc_aload_0 - DISPATCH_START \seq_len - ldr tmp1, [locals, tmp1, lsl #2] - rsb r3, r3, #0 +#endif // FAST_BYTECODE + +#ifdef HW_FP + +(fadd) fadd_vfp { + DISPATCH_START 1 + vldr s15, [stack, #8] + vldr s14, [stack, #4] DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT + fadds s15, s15, s14 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp1 + vstr s15, [stack, #8] + add stack, stack, #4 DISPATCH_FINISH } -(iload_0,iload_1,iload_2,iload_3) -(iload,aload,fload) -{ - ldrb r3, [jpc, #2] - rsb tmp1, r0, #opc_iload_0 - DISPATCH_START \seq_len - ldr tmp1, [locals, tmp1, lsl #2] - rsb r3, r3, #0 +(dadd) dadd_vfp { + DISPATCH_START 1 + vldr d7, [stack, #12] + vldr d6, [stack, #4] DISPATCH_NEXT - ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT + faddd d0, d7, d6 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp1 + vstr d0, [stack, #12] + add stack, stack, #8 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload) -(aload_0,aload_1,aload_2,aload_3) -{ - DISPATCH_START \seq_len - rsb tmp2, r1, #opc_aload_0 +(fsub) fsub_vfp { + DISPATCH_START 1 + vldr s15, [stack, #8] + vldr s14, [stack, #4] DISPATCH_NEXT - rsb tmp1, r2, #0 - ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] + fsubs s15, s15, s14 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + vstr s15, [stack, #8] + add stack, stack, #4 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload) -(iload_0,iload_1,iload_2,iload_3) -{ - DISPATCH_START \seq_len - rsb tmp2, r1, #opc_iload_0 +(fmul) fmul_vfp { + DISPATCH_START 1 + vldr s15, [stack, #8] + vldr s14, [stack, #4] DISPATCH_NEXT - rsb tmp1, r2, #0 - ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] + fmuls s15, s15, s14 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + vstr s15, [stack, #8] + add stack, stack, #4 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload)(iload,aload,fload) { - ldrb tmp2, [jpc, #3] - rsb tmp1, r2, #0 - DISPATCH_START \seq_len - rsb tmp2, tmp2, #0 - ldr tmp1, [locals, tmp1, lsl #2] +(dmul) dmul_vfp { + FBC cmp r2, #opc_dadd + DISPATCH_START 1 + FBC beq 1f +2: + vldr d7, [stack, #12] + vldr d6, [stack, #4] DISPATCH_NEXT - ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT + fmuld d0, d7, d6 DISPATCH_NEXT - PUSH2 tmp2, tmp1 + DISPATCH_NEXT + vstr d0, [stack, #12] + add stack, stack, #8 DISPATCH_FINISH +1: + FBC mov r2, #opc_dmac + FBC strb r2, [jpc, #-1] + FBC b 2b } -# --- ECN: load; store -------------------------------------------------------- +#ifdef FAST_BYTECODES -(aload_0,aload_1,aload_2,aload_3) -(astore_0,astore_1,astore_2,astore_3) -{ - rsb tmp1, r0, #opc_aload_0 +(dmac) dmac_vfp { DISPATCH_START \seq_len - rsb tmp2, r1, #opc_astore_0 + vldr d2, [stack, #20] + vldr d1, [stack, #12] + vldr d0, [stack, #4] DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT + fmacd d2, d1, d0 DISPATCH_NEXT DISPATCH_NEXT - str tmp1, [locals, tmp2, lsl #2] + vstr d2, [stack, #20] + add stack, stack, #16 DISPATCH_FINISH } -(iload_0,iload_1,iload_2,iload_3) -(istore_0,istore_1,istore_2,istore_3) -{ - rsb tmp1, r0, #opc_iload_0 - DISPATCH_START \seq_len - rsb tmp2, r1, #opc_istore_0 +#endif // FAST_BYTECODES + +(fdiv) fdiv_vfp { + DISPATCH_START 1 + vldr s15, [stack, #8] + vldr s14, [stack, #4] DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT + fdivs s15, s15, s14 DISPATCH_NEXT DISPATCH_NEXT - str tmp1, [locals, tmp2, lsl #2] + vstr s15, [stack, #8] + add stack, stack, #4 DISPATCH_FINISH } -(aload_0,aload_1,aload_2,aload_3) -(astore,istore,fstore) -{ - ldrb tmp2, [jpc, #2] - rsb tmp1, r0, #opc_aload_0 - DISPATCH_START \seq_len - rsb tmp2, tmp2, #0 +(ddiv) ddiv_vfp { + DISPATCH_START 1 + vldr d7, [stack, #12] + vldr d6, [stack, #4] DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT + fdivd d0, d7, d6 DISPATCH_NEXT DISPATCH_NEXT - str tmp1, [locals, tmp2, lsl #2] + vstr d0, [stack, #12] + add stack, stack, #8 DISPATCH_FINISH } -(iload_0,iload_1,iload_2,iload_3) -(astore,istore,fstore) -{ - ldrb tmp2, [jpc, #2] - rsb tmp1, r0, #opc_iload_0 - DISPATCH_START \seq_len - rsb tmp2, tmp2, #0 - DISPATCH_NEXT - ldr tmp1, [locals, tmp1, lsl #2] +(fcmpl) fcmpl_vfp { + DISPATCH_START 1 + flds s14, [stack, #8] + flds s15, [stack, #4] DISPATCH_NEXT DISPATCH_NEXT + fcmpes s14, s15 + add stack, stack, #8 + fmstat + mvnmi r3, #0 + bmi 1f + movgt r3, #1 + bgt 1f + fcmps s14, s15 + fmstat + moveq r3, #0 + mvnne r3, #0 +1: DISPATCH_NEXT - str tmp1, [locals, tmp2, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload) -(astore_0,astore_1,astore_2,astore_3) -{ - DISPATCH_START \seq_len - rsb tmp1, r1, #opc_astore_0 +(fcmpg) fcmpg_vfp { + DISPATCH_START 1 + flds s14, [stack, #8] + flds s15, [stack, #4] DISPATCH_NEXT - rsb tmp2, r2, #0 - ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT + fcmpes s14, s15 + add stack, stack, #8 + fmstat + mvnmi r3, #0 + bmi 1f + movgt r3, #1 + bgt 1f + fcmps s14, s15 + fmstat + moveq r3, #0 + movne r3, #1 +1: DISPATCH_NEXT DISPATCH_NEXT - str tmp2, [locals, tmp1, lsl #2] + PUSH r3 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload) -(istore_0,istore_1,istore_2,istore_3) +(dcmpl) dcmpl_vfp { + DISPATCH_START 1 + fldd d6, [stack, #12] + fldd d7, [stack, #4] + DISPATCH_NEXT + DISPATCH_NEXT + fcmped d6, d7 + fmstat + mvnmi r3, #0 + bmi 1f + movgt r3, #1 + bgt 1f + fcmpd d6, d7 + fmstat + moveq r3, #0 + mvnne r3, #0 +1: + add stack, stack, #16 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(dcmpg) dcmpg_vfp { + DISPATCH_START 1 + fldd d6, [stack, #12] + fldd d7, [stack, #4] + DISPATCH_NEXT + DISPATCH_NEXT + fcmped d6, d7 + fmstat + mvnmi r3, #0 + bmi 1f + movgt r3, #1 + bgt 1f + fcmpd d6, d7 + fmstat + moveq r3, #0 + movne r3, #1 +1: + add stack, stack, #16 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +#endif // HW_FP + +#ifdef FAST_BYTECODES + +@############################################################################## +@ ECN: Optimised bytecode pairs +@############################################################################## + +@ --- ECN: load; iaccess ------------------------------------------------------ + +(iload_0,iload_1,iload_2,iload_3) +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) { + rsb lr, r0, #opc_iload_0 + ldrb r2, [jpc, #4] + rsb tmp1, r1, #opc_iaccess_0 + ldrb r3, [jpc, #3] + ldr lr, [locals, lr, lsl #2] + add tmp2, constpool, r2, lsl #12 DISPATCH_START \seq_len - rsb tmp1, r1, #opc_istore_0 + PUSH lr + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 DISPATCH_NEXT - rsb tmp2, r2, #0 - ldr tmp2, [locals, tmp2, lsl #2] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 DISPATCH_NEXT + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT +.abortentry111: + ldr tmp2, [tmp1, tmp2] DISPATCH_NEXT - str tmp2, [locals, tmp1, lsl #2] + PUSH tmp2 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload)(astore,istore,fstore) { - ldrb tmp1, [jpc, #3] - rsb tmp2, r2, #0 +(iload,aload,fload) +(iaccess_0,iaccess_1,iaccess_2,iaccess_3) +{ + rsb lr, r2, #0 + ldrb r2, [jpc, #5] + rsb tmp1, r1, #opc_iaccess_0 + ldrb r3, [jpc, #4] + ldr lr, [locals, lr, lsl #2] + add tmp2, constpool, r2, lsl #12 DISPATCH_START \seq_len - rsb tmp1, tmp1, #0 + PUSH lr + ldr tmp1, [locals, tmp1, lsl #2] + add tmp2, r3, lsl #4 DISPATCH_NEXT - ldr tmp2, [locals, tmp2, lsl #2] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 DISPATCH_NEXT + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT +.abortentry112: + ldr tmp2, [tmp1, tmp2] DISPATCH_NEXT - str tmp2, [locals, tmp1, lsl #2] + PUSH tmp2 DISPATCH_FINISH } -# --- ECN: load; const ------------------------------------------------------- +@ --- ECN: load; load --------------------------------------------------------- (aload_0,aload_1,aload_2,aload_3) -(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +(aload_0,aload_1,aload_2,aload_3) { rsb tmp1, r0, #opc_aload_0 DISPATCH_START \seq_len - sub tmp2, r1, #opc_iconst_0 + rsb tmp2, r1, #opc_aload_0 DISPATCH_NEXT ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT - PUSH tmp1 DISPATCH_NEXT DISPATCH_NEXT - PUSH tmp2 + PUSH tmp2, tmp1 DISPATCH_FINISH } +(aload_0,aload_1,aload_2,aload_3) (iload_0,iload_1,iload_2,iload_3) -(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) { - add r0, r0, #opc_iload_0_iconst_N-opc_iload_0 - strb r0, [jpc] - b do_iload_0_iconst_N + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2, tmp1 + DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload) -(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +(iload_0,iload_1,iload_2,iload_3) +(aload_0,aload_1,aload_2,aload_3) { - cmp r0, #opc_iload + rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len - sub r3, r1, #opc_iconst_0 - DISPATCH_NEXT - ldr tmp2, [locals, -r2, lsl #2] + rsb tmp2, r1, #opc_aload_0 DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + cmp r0, #opc_igetfield + ldr tmp2, [locals, tmp2, lsl #2] beq 1f +2: DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + DISPATCH_NEXT + PUSH tmp2, tmp1 DISPATCH_FINISH 1: - mov tmp1, #opc_iload_iconst_N - strb tmp1, [jpc, #-\seq_len]! - b do_iload_iconst_N + ldrb lr, [jpc, #-1] + add lr, lr, #opc_iaccess_0-opc_aload_0 + strb lr, [jpc, #-1] + b 2b +} + +@ 7 cycles +(iload_0,iload_1,iload_2,iload_3) +(iload_0,iload_1,iload_2,iload_3) +{ + add r0, r0, #opc_iload_0_iload_N-opc_iload_0 + strb r0, [jpc] + b do_fast_iload_N_iload_N } (aload_0,aload_1,aload_2,aload_3) -(bipush) +(iload,aload,fload) { - ldrsb r2, [jpc, #2] - rsb r3, r0, #opc_aload_0 + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp1 DISPATCH_FINISH } (iload_0,iload_1,iload_2,iload_3) -(bipush) +(aload,fload) { - ldrsb r2, [jpc, #2] - rsb r3, r0, #opc_iload_0 + ldrb r3, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + rsb r3, r3, #0 + DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp1 DISPATCH_FINISH } +(iload_0,iload_1,iload_2,iload_3) +(iload) +{ + add r0, r0, #opc_iload_0_iload-opc_iload_0 + strb r0, [jpc] + b do_fast_iload_N_iload +} + +@ r2 = [jpc, #1] +(iload,aload,fload) (aload_0,aload_1,aload_2,aload_3) -(sipush) { - ldrsb r2, [jpc, #2] @ zero_extendqisi2 - ldrb lr, [jpc, #3] @ zero_extendqisi2 - rsb r3, r0, #opc_aload_0 DISPATCH_START \seq_len - ldr r3, [locals, r3, lsl #2] + rsb tmp2, r1, #opc_aload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + cmp r0, #opc_igetfield + DISPATCH_NEXT + beq 1f +2: + ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT - orr r2, lr, r2, asl #8 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH tmp2, tmp1 DISPATCH_FINISH +1: + ldrb lr, [jpc, #-1] + add lr, lr, #opc_iaccess_0-opc_aload_0 + strb lr, [jpc, #-1] + b 2b } +@ r2 = [jpc, #1] +(aload,fload) (iload_0,iload_1,iload_2,iload_3) -(sipush) { - ldrsb r2, [jpc, #2] @ zero_extendqisi2 - ldrb lr, [jpc, #3] @ zero_extendqisi2 - rsb r3, r0, #opc_iload_0 DISPATCH_START \seq_len - ldr r3, [locals, r3, lsl #2] + rsb tmp2, r1, #opc_iload_0 + DISPATCH_NEXT + rsb tmp1, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT - orr r2, lr, r2, asl #8 DISPATCH_NEXT - PUSH2 r2, r3 + PUSH tmp2, tmp1 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload)(bipush) { - ldrsb r3, [jpc, #3] - DISPATCH_START \seq_len - ldr lr, [locals, -r2, lsl #2] - DISPATCH_NEXT - PUSH2 r3, lr - DISPATCH_FINISH +@ r2 = [jpc, #1] +(iload) +(iload_0,iload_1,iload_2,iload_3) +{ + mov r0, #opc_iload_iload_N + strb r0, [jpc] + b do_fast_iload_iload_N } -# r2 = [jpc, #1] -(iload,aload,fload)(sipush) { - ldrsb r3, [jpc, #3] - ldrb lr, [jpc, #4] +@ r2 = [jpc, #1] +(aload,fload)(iload,aload,fload) { + ldrb tmp2, [jpc, #3] + rsb tmp1, r2, #0 DISPATCH_START \seq_len - ldr tmp1, [locals, -r2, lsl #2] - orr r3, lr, r3, asl #8 + rsb tmp2, tmp2, #0 + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT - PUSH2 r3, tmp1 + DISPATCH_NEXT + PUSH tmp2, tmp1 DISPATCH_FINISH } -# --- ECN: load; Xaload ------------------------------------------------------- +(iload)(iload) { + mov r0, #opc_iload_iload + strb r0, [jpc] + b do_fast_iload_iload +} -(iload_0,iload_1,iload_2,iload_3) -(iaload,aaload,faload) -{ - POP r3 - rsb r2, r0, #opc_iload_0 +(iload)(aload,fload) { + ldrb tmp2, [jpc, #3] + rsb tmp1, r2, #0 DISPATCH_START \seq_len - ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif -.abortentry19: - ldr lr, [r3, #8] @ lr = length + rsb tmp2, tmp2, #0 + ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT - cmp r2, lr - bcs array_bound_exception_jpc_1 - add r3, r3, r2, lsl #2 - ldr lr, [r3, #12] + ldr tmp2, [locals, tmp2, lsl #2] DISPATCH_NEXT - PUSH lr + DISPATCH_NEXT + PUSH tmp2, tmp1 DISPATCH_FINISH } -# r2 = [jpc, #1] -(iload,aload,fload)(iaload,aaload,faload) { - POP r3 - ldr r2, [locals, -r2, lsl #2] +@ --- ECN: load; store -------------------------------------------------------- + +(aload_0,aload_1,aload_2,aload_3) +(astore_0,astore_1,astore_2,astore_3) +{ + rsb tmp1, r0, #opc_aload_0 DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif -.abortentry20: - ldr lr, [r3, #8] @ lr = length + rsb tmp2, r1, #opc_astore_0 DISPATCH_NEXT - cmp r2, lr - bcs array_bound_exception_jpc_1 - add r3, r3, r2, lsl #2 - ldr lr, [r3, #12] + ldr tmp1, [locals, tmp1, lsl #2] DISPATCH_NEXT - PUSH lr + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] DISPATCH_FINISH } (iload_0,iload_1,iload_2,iload_3) -(baload) +(istore_0,istore_1,istore_2,istore_3) { - POP r3 - rsb r2, r0, #opc_iload_0 + rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len - ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + rsb tmp2, r1, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(astore,istore,fstore) +{ + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(astore,istore,fstore) +{ + ldrb tmp2, [jpc, #2] + rsb tmp1, r0, #opc_iload_0 + DISPATCH_START \seq_len + rsb tmp2, tmp2, #0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp1, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload) +(astore_0,astore_1,astore_2,astore_3) +{ + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_astore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload) +(istore_0,istore_1,istore_2,istore_3) +{ + DISPATCH_START \seq_len + rsb tmp1, r1, #opc_istore_0 + DISPATCH_NEXT + rsb tmp2, r2, #0 + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload)(astore,istore,fstore) { + ldrb tmp1, [jpc, #3] + rsb tmp2, r2, #0 + DISPATCH_START \seq_len + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + ldr tmp2, [locals, tmp2, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + DISPATCH_NEXT + str tmp2, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +@ --- ECN: load; const ------------------------------------------------------- + +(aload_0,aload_1,aload_2,aload_3) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + rsb tmp1, r0, #opc_aload_0 + DISPATCH_START \seq_len + sub tmp2, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + add r0, r0, #opc_iload_0_iconst_N-opc_iload_0 + strb r0, [jpc] + b do_iload_0_iconst_N +} + +@ r2 = [jpc, #1] +(iload,aload,fload) +(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) +{ + cmp r0, #opc_iload + DISPATCH_START \seq_len + sub r3, r1, #opc_iconst_0 + DISPATCH_NEXT + ldr tmp2, [locals, -r2, lsl #2] + DISPATCH_NEXT + beq 1f + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3, tmp2 + DISPATCH_FINISH +1: + mov tmp1, #opc_iload_iconst_N + strb tmp1, [jpc, #-\seq_len]! + b do_iload_iconst_N +} + +(aload_0,aload_1,aload_2,aload_3) +(bipush) +{ + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH r2, r3 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(bipush) +{ + ldrsb r2, [jpc, #2] + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + PUSH r2, r3 + DISPATCH_FINISH +} + +(aload_0,aload_1,aload_2,aload_3) +(sipush) +{ + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_aload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH r2, r3 + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(sipush) +{ + ldrsb r2, [jpc, #2] @ zero_extendqisi2 + ldrb lr, [jpc, #3] @ zero_extendqisi2 + rsb r3, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r2, lr, r2, asl #8 + DISPATCH_NEXT + PUSH r2, r3 + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload)(bipush) { + ldrsb r3, [jpc, #3] + DISPATCH_START \seq_len + ldr lr, [locals, -r2, lsl #2] + DISPATCH_NEXT + PUSH r3, lr + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload)(sipush) { + ldrsb r3, [jpc, #3] + ldrb lr, [jpc, #4] + DISPATCH_START \seq_len + ldr tmp1, [locals, -r2, lsl #2] + orr r3, lr, r3, asl #8 + DISPATCH_NEXT + PUSH r3, tmp1 + DISPATCH_FINISH +} + +@ --- ECN: load; Xaload ------------------------------------------------------- + +(iload_0,iload_1,iload_2,iload_3) +(iaload,aaload,faload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry19: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] +(iload,aload,fload)(iaload,aaload,faload) { + POP r3 + ldr r2, [locals, -r2, lsl #2] + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry20: + ldr lr, [r3, #8] @ lr = length + DISPATCH_NEXT + cmp r2, lr + bcs array_bound_exception_jpc_1 + add r3, r3, r2, lsl #2 + ldr lr, [r3, #12] + DISPATCH_NEXT + PUSH lr + DISPATCH_FINISH +} + +(iload_0,iload_1,iload_2,iload_3) +(baload) +{ + POP r3 + rsb r2, r0, #opc_iload_0 + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry21: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2864,10 +3122,8 @@ rsb r2, r0, #opc_iload_0 DISPATCH_START \seq_len ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry22: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2887,10 +3143,8 @@ rsb r2, r0, #opc_iload_0 DISPATCH_START \seq_len ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry23: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2903,15 +3157,13 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,aload,fload)(baload) { POP r3 ldr r2, [locals, -r2, lsl #2] DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry24: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2924,15 +3176,13 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,aload,fload)(caload) { POP r3 ldr r2, [locals, -r2, lsl #2] DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry25: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2945,15 +3195,13 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,aload,fload)(saload) { POP r3 ldr r2, [locals, -r2, lsl #2] DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry26: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -2966,19 +3214,17 @@ DISPATCH_FINISH } -# --- ECN: load; Xastore ------------------------------------------------------- +@ --- ECN: load; Xastore ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (iastore,fastore) { - POP2 r2, r3 + POP r2, r3 rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len ldr tmp1, [locals, tmp1, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry27: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -2993,14 +3239,12 @@ (iload_0,iload_1,iload_2,iload_3) (bastore) { - POP2 r2, r3 + POP r2, r3 rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len ldr tmp1, [locals, tmp1, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry28: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -3015,14 +3259,12 @@ (iload_0,iload_1,iload_2,iload_3) (castore,sastore) { - POP2 r2, r3 + POP r2, r3 rsb tmp1, r0, #opc_iload_0 DISPATCH_START \seq_len ldr tmp1, [locals, tmp1, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry29: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -3035,13 +3277,11 @@ } (iload,aload,fload)(iastore,fastore) { - POP2 r3, tmp1 + POP r3, tmp1 DISPATCH_START \seq_len ldr r2, [locals, -r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry30: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -3054,13 +3294,11 @@ } (iload,aload,fload)(bastore) { - POP2 r3, tmp1 + POP r3, tmp1 DISPATCH_START \seq_len ldr r2, [locals, -r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry31: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -3073,13 +3311,11 @@ } (iload,aload,fload)(castore,sastore) { - POP2 r3, tmp1 + POP r3, tmp1 DISPATCH_START \seq_len ldr r2, [locals, -r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry32: ldr lr, [tmp1, #8] @ lr = limit DISPATCH_NEXT @@ -3091,7 +3327,7 @@ DISPATCH_FINISH } -# --- ECN: load; dataop ------------------------------------------------------- +@ --- ECN: load; dataop ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (iadd) @@ -3181,34 +3417,34 @@ (iload_0,iload_1,iload_2,iload_3) (idiv) { - rsb r0, r0, #opc_iload_0 - ldr r0, [locals, r0, lsl #2] - add jpc, jpc, #1 - POP r1 + rsb tmp2, r0, #opc_iload_0 + DISPATCH_START 2 + ldr tmp2, [locals, tmp2, lsl #2] + POP tmp1 b int_div } (iload,aload,fload)(idiv) { - add jpc, jpc, #2 - POP r1 - ldr r0, [locals, -r2, lsl #2] + DISPATCH_START 3 + POP tmp1 + ldr tmp2, [locals, -r2, lsl #2] b int_div } (iload_0,iload_1,iload_2,iload_3) (irem) { - rsb r0, r0, #opc_iload_0 - ldr r0, [locals, r0, lsl #2] - add jpc, jpc, #1 - POP r1 + rsb tmp2, r0, #opc_iload_0 + DISPATCH_START 2 + ldr tmp2, [locals, tmp2, lsl #2] + POP tmp1 b int_rem } (iload,aload,fload)(irem) { - ldr r0, [locals, -r2, lsl #2] - add jpc, jpc, #2 - POP r1 + DISPATCH_START 3 + POP tmp1 + ldr tmp2, [locals, -r2, lsl #2] b int_rem } @@ -3422,7 +3658,9 @@ DISPATCH_FINISH } -# --- ECN: load; branch ------------------------------------------------------- +#ifdef NOTICE_SAFEPOINTS + +@ --- ECN: load; branch ------------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (ifeq,ifnull) @@ -3808,7 +4046,7 @@ DISPATCH_BYTECODE } -# --- ECN: load; return/invoke ------------------------------------------------- +@ --- ECN: load; return/invoke ------------------------------------------------- (iload_0,iload_1,iload_2,iload_3) (ireturn,areturn,freturn) @@ -3827,14 +4065,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -3843,10 +4085,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -3871,14 +4112,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -3887,10 +4132,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -3900,6 +4144,8 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (iload_0,iload_1,iload_2,iload_3) (invokeresolved) { @@ -4030,6 +4276,7 @@ ldrb r1, [jpc, #2] PUSH r0 b do_invokestaticresolved + } (iload_0,iload_1,iload_2,iload_3) @@ -4038,6 +4285,8 @@ add jpc, jpc, #1 rsb r0, r0, #opc_iload_0 ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] PUSH r0 b do_invokeinterface } @@ -4048,6 +4297,8 @@ add jpc, jpc, #1 rsb r0, r0, #opc_aload_0 ldr r0, [locals, r0, lsl #2] + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] PUSH r0 b do_invokeinterface } @@ -4055,6 +4306,8 @@ (iload,aload,fload)(invokeinterface) { ldr r0, [locals, -r2, lsl #2] add jpc, jpc, #2 + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] PUSH r0 b do_invokeinterface } @@ -4067,7 +4320,7 @@ DISPATCH_BYTECODE } -# 13 cycles +@ 13 cycles (iload,aload,fload)(igetfield) { ldrb ip, [jpc, #4] rsb tmp1, r2, #0 @@ -4077,12 +4330,10 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, r3, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 DISPATCH_NEXT - ldr tmp2, [tmp2, #8] + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry88: ldr tmp2, [tmp1, tmp2] @@ -4091,7 +4342,7 @@ DISPATCH_FINISH } -# --- ECN: iconst; store ------------------------------------------------- +@ --- ECN: iconst; store ------------------------------------------------- (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) (istore_0,istore_1,istore_2,istore_3) @@ -4111,7 +4362,7 @@ DISPATCH_BYTECODE } -# --- ECN: iconst; dataop ------------------------------------------------- +@ --- ECN: iconst; dataop ------------------------------------------------- (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(iadd) { sub tmp1, r0, #opc_iconst_0 @@ -4168,7 +4419,7 @@ b 6f 3: cmp lr, #(opc_iconst_0-opc_iconst_2) - beq .iconst_div_rem_0 + beq div_zero_jpc_1 rsbcc tmp1, tmp1, #0 @ Divide by -1 or 1 b 6f @ divide by 4 @@ -4197,7 +4448,9 @@ DISPATCH_FINISH } -# --- ECN: iconst; branch ------------------------------------------------- +@ --- ECN: iconst; branch ------------------------------------------------- + +#ifdef NOTICE_SAFEPOINTS (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(if_icmpeq) { POP r3 @@ -4303,14 +4556,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -4319,10 +4576,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -4332,6 +4588,8 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5)(invokeresolved) { add jpc, jpc, #1 sub r0, r0, #opc_iconst_0 @@ -4368,16 +4626,14 @@ b do_invokespecialresolved } -## --- Bytecode sequences iaload; xxx ----------------------------------------------- +@# --- Bytecode sequences iaload; xxx ----------------------------------------------- (iaload,faload,aaload)(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) { sub r2, r1, #opc_iconst_0 - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry38: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4386,18 +4642,16 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (iaload,faload,aaload)(bipush) { ldrsb r2, [jpc, #2] - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_3 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_3 .abortentry39: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4406,20 +4660,18 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (iaload,faload,aaload)(sipush) { ldrsb r2, [jpc, #2] ldrb tmp1, [jpc, #3] - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len orr r2, tmp1, r2, lsl #8 -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_4 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_4 .abortentry40: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4428,19 +4680,17 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (iaload,faload,aaload)(iload,fload,aload) { ldrb r2, [jpc, #2] - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len ldr r2, [locals, -r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_3 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_3 .abortentry41: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4449,7 +4699,7 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } @@ -4457,13 +4707,11 @@ (iload_0,iload_1,iload_2,iload_3) { rsb r2, r1, #opc_iload_0 - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry42: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4472,7 +4720,7 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } @@ -4480,13 +4728,11 @@ (aload_0,aload_1,aload_2,aload_3) { rsb r2, r1, #opc_aload_0 - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len ldr r2, [locals, r2, lsl #2] -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry42_1: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4495,17 +4741,15 @@ add lr, lr, r3, lsl #2 ldr r3, [lr, #12] DISPATCH_NEXT - PUSH2 r2, r3 + PUSH r2, r3 DISPATCH_FINISH } (iaload,faload,aaload)(iaload,faload,aaload) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry43: ldr tmp1, [r3, #8] @ tmp1 = length DISPATCH_START \seq_len @@ -4514,10 +4758,8 @@ add r3, r3, r2, lsl #2 POP lr @ r2 = index, lr = arrayref ldr r2, [r3, #12] -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry44: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4532,12 +4774,10 @@ (iaload,faload,aaload)(astore,istore,fstore) { ldrb r2, [jpc, #2] - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_3 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_3 .abortentry45: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4553,12 +4793,10 @@ (iaload,faload,aaload) (istore_0,istore_1,istore_2,istore_3) { rsb r2, r1, #opc_istore_0 - POP2 r3, lr @ r3 = index, lr = arrayref + POP r3, lr @ r3 = index, lr = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry46: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -4572,11 +4810,9 @@ } (iaload,faload,aaload)(iastore,fastore) { - POP2 r3, lr @ r3 = index, lr = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r3, lr @ r3 = index, lr = arrayref + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry47: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_START \seq_len @@ -4585,11 +4821,9 @@ add lr, lr, r3, lsl #2 ldr tmp1, [lr, #12] - POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry48: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -4602,11 +4836,9 @@ } (iaload,faload,aaload)(bastore) { - POP2 r3, lr @ r3 = index, lr = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r3, lr @ r3 = index, lr = arrayref + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry49: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_START \seq_len @@ -4615,11 +4847,9 @@ add lr, lr, r3, lsl #2 ldr tmp1, [lr, #12] - POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry50: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -4632,11 +4862,9 @@ } (iaload,faload,aaload)(castore,sastore) { - POP2 r3, lr @ r3 = index, lr = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r3, lr @ r3 = index, lr = arrayref + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry51: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_START \seq_len @@ -4645,11 +4873,9 @@ add lr, lr, r3, lsl #2 ldr tmp1, [lr, #12] - POP2 r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ tmp1 = value, r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry52: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -4662,12 +4888,10 @@ } (iaload,faload,aaload)(iand) { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry58: ldr tmp1, [r3, #8] @ tmp1 = length DISPATCH_NEXT @@ -4683,12 +4907,10 @@ } (iaload,faload,aaload)(ior) { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry59: ldr tmp1, [r3, #8] @ tmp1 = length DISPATCH_NEXT @@ -4704,12 +4926,10 @@ } (iaload,faload,aaload)(ixor) { - POP2 r2, r3 @ r2 = index, r3 = arrayref + POP r2, r3 @ r2 = index, r3 = arrayref DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_2 -#endif + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_2 .abortentry60: ldr tmp1, [r3, #8] @ tmp1 = length DISPATCH_NEXT @@ -4724,12 +4944,12 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iaload,faload,aaload)(ifeq,ifnull) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry61: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4750,11 +4970,9 @@ } (iaload,faload,aaload)(ifne,ifnonnull) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry62: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4775,11 +4993,9 @@ } (iaload,faload,aaload)(iflt) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry63: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4800,11 +5016,9 @@ } (iaload,faload,aaload)(ifge) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry64: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4825,11 +5039,9 @@ } (iaload,faload,aaload)(ifgt) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry65: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4850,11 +5062,9 @@ } (iaload,faload,aaload)(ifle) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry66: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4875,11 +5085,9 @@ } (iaload,faload,aaload)(if_icmpeq,if_acmpeq) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry67: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4901,11 +5109,9 @@ } (iaload,faload,aaload)(if_icmpne,if_acmpne) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry68: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4927,11 +5133,9 @@ } (iaload,faload,aaload)(if_icmplt) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry69: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4953,11 +5157,9 @@ } (iaload,faload,aaload)(if_icmpge) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry70: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -4979,11 +5181,9 @@ } (iaload,faload,aaload)(if_icmpgt) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry71: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -5005,11 +5205,9 @@ } (iaload,faload,aaload)(if_icmple) { - POP2 r2, r3 @ r2 = index, r3 = arrayref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_0 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_0 .abortentry72: ldr r1, [r3, #8] @ r1 = length cmp r2, r1 @@ -5030,12 +5228,14 @@ DISPATCH_BYTECODE } -# ---- iadd; xxx ------------------------------------------------------------ +#endif // NOTICE_SAFEPOINTS + +@ ---- iadd; xxx ------------------------------------------------------------ (iadd)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT rsb r3, r3, #0 DISPATCH_NEXT @@ -5043,7 +5243,7 @@ DISPATCH_NEXT add tmp2, tmp1, tmp2 DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -5052,25 +5252,23 @@ { DISPATCH_START \seq_len rsb r3, r1, #opc_iload_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] add tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } (iadd)(iaload,aaload,faload) { - POP3 r2, r3, lr @ lr = ref + POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len add r2, r3, r2 @ r2 = index -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry73: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -5097,14 +5295,12 @@ } (iadd)(iastore,fastore) { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len add tmp1, r3, r2 @ tmp1 = value - POP2 r2, r3 @ r2, index, r3 = ref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry106: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -5118,7 +5314,7 @@ (iadd)(iadd) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT add tmp2, r3, r2 DISPATCH_NEXT @@ -5131,7 +5327,7 @@ (iadd)(isub) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT add tmp2, r3, r2 DISPATCH_NEXT @@ -5142,8 +5338,10 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iadd)(ifeq,ifnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5158,7 +5356,7 @@ } (iadd)(ifne,ifnonnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5173,7 +5371,7 @@ } (iadd)(iflt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5188,7 +5386,7 @@ } (iadd)(ifge) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5203,7 +5401,7 @@ } (iadd)(ifgt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5218,7 +5416,7 @@ } (iadd)(ifle) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r3, r3, r2 @@ -5233,7 +5431,7 @@ } (iadd)(if_icmpeq,if_acmpeq) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5248,7 +5446,7 @@ } (iadd)(if_icmpne,if_acmpne) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5263,7 +5461,7 @@ } (iadd)(if_icmplt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5278,7 +5476,7 @@ } (iadd)(if_icmpge) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5293,7 +5491,7 @@ } (iadd)(if_icmpgt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5308,7 +5506,7 @@ } (iadd)(if_icmple) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] add r2, r3, r2 @@ -5328,7 +5526,7 @@ add jpc, jpc, #1 orr ip, ip, r1, lsl #8 DISPATCH_START_REG ip - POP2 r2, r3 + POP r2, r3 add r2, r3, r2 DISPATCH_NEXT PUSH r2 @@ -5336,7 +5534,7 @@ } (iadd)(ireturn) { - POP2 r2, r3 + POP r2, r3 ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end add r1, r3, r2 @@ -5350,14 +5548,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -5366,10 +5568,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -5379,8 +5580,10 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (iadd)(iinc) { - POP2 tmp1, lr + POP tmp1, lr DISPATCH_START \seq_len add tmp1, lr, tmp1 ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc @@ -5393,12 +5596,12 @@ str tmp1, [locals, -r3, lsl #2] DISPATCH_FINISH } -# ---- sub; xxx ------------------------------------------------------------ +@ ---- sub; xxx ------------------------------------------------------------ (isub)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT rsb r3, r3, #0 DISPATCH_NEXT @@ -5406,7 +5609,7 @@ DISPATCH_NEXT sub tmp2, tmp1, tmp2 DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -5415,25 +5618,23 @@ { DISPATCH_START \seq_len rsb r3, r1, #opc_iload_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] sub tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } (isub)(iaload,aaload,faload) { - POP3 r2, r3, lr @ lr = ref + POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len sub r2, r3, r2 @ r2 = index -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry74: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -5460,14 +5661,12 @@ } (isub)(iastore,fastore) { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len sub tmp1, r3, r2 @ tmp1 = value - POP2 r2, r3 @ r2, index, r3 = ref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry105: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -5481,7 +5680,7 @@ (isub)(iadd) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT sub tmp2, r3, r2 DISPATCH_NEXT @@ -5494,7 +5693,7 @@ (isub)(isub) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT sub tmp2, r3, r2 DISPATCH_NEXT @@ -5505,8 +5704,10 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (isub)(ifeq,ifnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5521,7 +5722,7 @@ } (isub)(ifne,ifnonnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5536,7 +5737,7 @@ } (isub)(iflt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5551,7 +5752,7 @@ } (isub)(ifge) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5566,7 +5767,7 @@ } (isub)(ifgt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5581,7 +5782,7 @@ } (isub)(ifle) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r3, r3, r2 @@ -5596,7 +5797,7 @@ } (isub)(if_icmpeq,if_acmpeq) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5611,7 +5812,7 @@ } (isub)(if_icmpne,if_acmpne) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5626,7 +5827,7 @@ } (isub)(if_icmplt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5641,7 +5842,7 @@ } (isub)(if_icmpge) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5656,7 +5857,7 @@ } (isub)(if_icmpgt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5671,7 +5872,7 @@ } (isub)(if_icmple) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] sub r2, r3, r2 @@ -5691,7 +5892,7 @@ add jpc, jpc, #1 orr ip, ip, r1, lsl #8 DISPATCH_START_REG ip - POP2 r2, r3 + POP r2, r3 sub r2, r3, r2 DISPATCH_NEXT PUSH r2 @@ -5699,7 +5900,7 @@ } (isub)(ireturn) { - POP2 r2, r3 + POP r2, r3 ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end sub r1, r3, r2 @@ -5713,14 +5914,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -5729,10 +5934,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -5742,8 +5946,10 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (isub)(iinc) { - POP2 tmp1, lr + POP tmp1, lr DISPATCH_START \seq_len sub tmp1, lr, tmp1 ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc @@ -5756,12 +5962,12 @@ str tmp1, [locals, -r3, lsl #2] DISPATCH_FINISH } -# ---- iand; xxx ------------------------------------------------------------ +@ ---- iand; xxx ------------------------------------------------------------ (iand)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT rsb r3, r3, #0 DISPATCH_NEXT @@ -5769,7 +5975,7 @@ DISPATCH_NEXT and tmp2, tmp1, tmp2 DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -5778,25 +5984,23 @@ { DISPATCH_START \seq_len rsb r3, r1, #opc_iload_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] and tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } (iand)(iaload,aaload,faload) { - POP3 r2, r3, lr @ lr = ref + POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len and r2, r3, r2 @ r2 = index -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry75: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -5823,14 +6027,12 @@ } (iand)(iastore,fastore) { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len and tmp1, r3, r2 @ tmp1 = value - POP2 r2, r3 @ r2, index, r3 = ref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry107: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -5844,7 +6046,7 @@ (iand)(iadd) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT and tmp2, r3, r2 DISPATCH_NEXT @@ -5857,7 +6059,7 @@ (iand)(isub) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT and tmp2, r3, r2 DISPATCH_NEXT @@ -5868,8 +6070,10 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iand)(ifeq,ifnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5884,7 +6088,7 @@ } (iand)(ifne,ifnonnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5899,7 +6103,7 @@ } (iand)(iflt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5914,7 +6118,7 @@ } (iand)(ifge) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5929,7 +6133,7 @@ } (iand)(ifgt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5944,7 +6148,7 @@ } (iand)(ifle) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r3, r3, r2 @@ -5959,7 +6163,7 @@ } (iand)(if_icmpeq,if_acmpeq) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -5974,7 +6178,7 @@ } (iand)(if_icmpne,if_acmpne) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -5989,7 +6193,7 @@ } (iand)(if_icmplt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -6004,7 +6208,7 @@ } (iand)(if_icmpge) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -6019,7 +6223,7 @@ } (iand)(if_icmpgt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -6034,7 +6238,7 @@ } (iand)(if_icmple) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] and r2, r3, r2 @@ -6054,7 +6258,7 @@ add jpc, jpc, #1 orr ip, ip, r1, lsl #8 DISPATCH_START_REG ip - POP2 r2, r3 + POP r2, r3 and r2, r3, r2 DISPATCH_NEXT PUSH r2 @@ -6062,7 +6266,7 @@ } (iand)(ireturn) { - POP2 r2, r3 + POP r2, r3 ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end and r1, r3, r2 @@ -6076,14 +6280,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -6092,10 +6300,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -6105,8 +6312,10 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (iand)(iinc) { - POP2 tmp1, lr + POP tmp1, lr DISPATCH_START \seq_len and tmp1, lr, tmp1 ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc @@ -6119,12 +6328,12 @@ str tmp1, [locals, -r3, lsl #2] DISPATCH_FINISH } -# ---- ior; xxx ------------------------------------------------------------ +@ ---- ior; xxx ------------------------------------------------------------ (ior)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT rsb r3, r3, #0 DISPATCH_NEXT @@ -6132,7 +6341,7 @@ DISPATCH_NEXT orr tmp2, tmp1, tmp2 DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -6141,25 +6350,23 @@ { DISPATCH_START \seq_len rsb r3, r1, #opc_iload_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] orr tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } (ior)(iaload,aaload,faload) { - POP3 r2, r3, lr @ lr = ref + POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len orr r2, r3, r2 @ r2 = index -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry76: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -6186,14 +6393,12 @@ } (ior)(iastore,fastore) { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len orr tmp1, r3, r2 @ tmp1 = value - POP2 r2, r3 @ r2, index, r3 = ref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry108: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -6207,7 +6412,7 @@ (ior)(iadd) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT orr tmp2, r3, r2 DISPATCH_NEXT @@ -6220,7 +6425,7 @@ (ior)(isub) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT orr tmp2, r3, r2 DISPATCH_NEXT @@ -6231,8 +6436,10 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (ior)(ifeq,ifnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6247,7 +6454,7 @@ } (ior)(ifne,ifnonnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6262,7 +6469,7 @@ } (ior)(iflt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6277,7 +6484,7 @@ } (ior)(ifge) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6292,7 +6499,7 @@ } (ior)(ifgt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6307,7 +6514,7 @@ } (ior)(ifle) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r3, r3, r2 @@ -6322,7 +6529,7 @@ } (ior)(if_icmpeq,if_acmpeq) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6337,7 +6544,7 @@ } (ior)(if_icmpne,if_acmpne) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6352,7 +6559,7 @@ } (ior)(if_icmplt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6367,7 +6574,7 @@ } (ior)(if_icmpge) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6382,7 +6589,7 @@ } (ior)(if_icmpgt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6397,7 +6604,7 @@ } (ior)(if_icmple) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] orr r2, r3, r2 @@ -6417,7 +6624,7 @@ add jpc, jpc, #1 orr ip, ip, r1, lsl #8 DISPATCH_START_REG ip - POP2 r2, r3 + POP r2, r3 orr r2, r3, r2 DISPATCH_NEXT PUSH r2 @@ -6425,7 +6632,7 @@ } (ior)(ireturn) { - POP2 r2, r3 + POP r2, r3 ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end orr r1, r3, r2 @@ -6439,14 +6646,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -6455,10 +6666,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -6468,8 +6678,10 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (ior)(iinc) { - POP2 tmp1, lr + POP tmp1, lr DISPATCH_START \seq_len orr tmp1, lr, tmp1 ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc @@ -6483,12 +6695,12 @@ DISPATCH_FINISH } -# ---- ixor; xxx ------------------------------------------------------------ +@ ---- ixor; xxx ------------------------------------------------------------ (ixor)(iload,fload,aload) { ldrb r3, [jpc, #2] DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT rsb r3, r3, #0 DISPATCH_NEXT @@ -6496,7 +6708,7 @@ DISPATCH_NEXT eor tmp2, tmp1, tmp2 DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -6505,25 +6717,23 @@ { DISPATCH_START \seq_len rsb r3, r1, #opc_iload_0 - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT ldr r3, [locals, r3, lsl #2] eor tmp2, tmp1, tmp2 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } (ixor)(iaload,aaload,faload) { - POP3 r2, r3, lr @ lr = ref + POP r2, r3, lr @ lr = ref DISPATCH_START \seq_len eor r2, r3, r2 @ r2 = index -#ifndef HW_NULL_PTR_CHECK - cmp lr, #0 - beq null_ptr_exception_jpc_1 -#endif + SW_NPC cmp lr, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry77: ldr tmp1, [lr, #8] @ tmp1 = length DISPATCH_NEXT @@ -6550,14 +6760,12 @@ } (ixor)(iastore,fastore) { - POP2 r2, r3 + POP r2, r3 DISPATCH_START \seq_len eor tmp1, r3, r2 @ tmp1 = value - POP2 r2, r3 @ r2, index, r3 = ref -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2, index, r3 = ref + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry109: ldr lr, [r3, #8] @ lr = limit DISPATCH_NEXT @@ -6571,7 +6779,7 @@ (ixor)(iadd) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT eor tmp2, r3, r2 DISPATCH_NEXT @@ -6584,7 +6792,7 @@ (ixor)(isub) { DISPATCH_START \seq_len - POP3 r2, r3, tmp1 + POP r2, r3, tmp1 DISPATCH_NEXT eor tmp2, r3, r2 DISPATCH_NEXT @@ -6595,8 +6803,10 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (ixor)(ifeq,ifnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6611,7 +6821,7 @@ } (ixor)(ifne,ifnonnull) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6626,7 +6836,7 @@ } (ixor)(iflt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6641,7 +6851,7 @@ } (ixor)(ifge) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6656,7 +6866,7 @@ } (ixor)(ifgt) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6671,7 +6881,7 @@ } (ixor)(ifle) { - POP2 r2, r3 + POP r2, r3 ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r3, r3, r2 @@ -6686,7 +6896,7 @@ } (ixor)(if_icmpeq,if_acmpeq) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6701,7 +6911,7 @@ } (ixor)(if_icmpne,if_acmpne) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6716,7 +6926,7 @@ } (ixor)(if_icmplt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6731,7 +6941,7 @@ } (ixor)(if_icmpge) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6746,7 +6956,7 @@ } (ixor)(if_icmpgt) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6761,7 +6971,7 @@ } (ixor)(if_icmple) { - POP3 r2, r3, lr + POP r2, r3, lr ldrsb r1, [jpc, #2] ldrb ip, [jpc, #3] eor r2, r3, r2 @@ -6781,7 +6991,7 @@ add jpc, jpc, #1 orr ip, ip, r1, lsl #8 DISPATCH_START_REG ip - POP2 r2, r3 + POP r2, r3 eor r2, r3, r2 DISPATCH_NEXT PUSH r2 @@ -6789,7 +6999,7 @@ } (ixor)(ireturn) { - POP2 r2, r3 + POP r2, r3 ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base ldr tmp1, [istate, #ISTATE_STACK_BASE] @ tmp1 = end eor r1, r3, r2 @@ -6803,14 +7013,18 @@ ldr r0, [istate, #ISTATE_METHOD] ldr r3, [stack, #0] ldrh r0, [r0, #40] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r1, [stack, r0, lsl #2]! - cmp istate, #0 + cmp ip, #0 beq normal_return - ldr jpc, [istate, #ISTATE_BCP] + + sub istate, istate, #ISTATE_NEXT_FRAME + + CACHE_JPC ldr r2, [istate, #ISTATE_STACK_LIMIT] - DISPATCH_START 3 @ ldrb r0, [jpc, #3]! + DISPATCH_START_REG ip sub stack, stack, #4 ldr r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] DISPATCH_NEXT @ ldrb r1, [jpc, #2] @@ -6819,10 +7033,9 @@ str r2, [tmp_xxx, #THREAD_JAVA_SP] DISPATCH_NEXT @ ldrb r2, [jpc, #1] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_CP + CACHE_LOCALS DISPATCH_NEXT @ ands lr, ip, lr - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_FINISH 1: PUSH r1 @@ -6832,8 +7045,10 @@ b 2b } +#endif // NOTICE_SAFEPOINTS + (ixor)(iinc) { - POP2 tmp1, lr + POP tmp1, lr DISPATCH_START \seq_len eor tmp1, lr, tmp1 ldrb r3, [jpc, #-2] @ ECN: jpc now points to next bc @@ -6847,7 +7062,7 @@ DISPATCH_FINISH } -# --- iinc; xxx -------------------------------------------------------------- +@ --- iinc; xxx -------------------------------------------------------------- (iinc)(iconst_m1,iconst_0,iconst_1,iconst_2,iconst_3,iconst_4,iconst_5) { ldrsb tmp1, [jpc, #2] @@ -6902,9 +7117,9 @@ DISPATCH_FINISH } -################################################################################ -## ECN: Optimised bytecode triples -################################################################################ +@############################################################################### +@# ECN: Optimised bytecode triples +@############################################################################### (iaccess_0,iaccess_1,iaccess_2,iaccess_3) (iload,fload,aload) { @@ -6917,19 +7132,17 @@ add tmp2, r3, lsl #4 ldrb r3, [jpc, #-1] DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_5 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_5 DISPATCH_NEXT - ldr tmp2, [tmp2, #8] + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT rsb r3, r3, #0 .abortentry89: ldr tmp2, [tmp1, tmp2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -6944,18 +7157,16 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_4 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_4 DISPATCH_NEXT - ldr tmp2, [tmp2, #8] + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT .abortentry90: ldr tmp2, [tmp1, tmp2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - PUSH2 r3, tmp2 + PUSH r3, tmp2 DISPATCH_FINISH } @@ -6969,12 +7180,10 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 DISPATCH_NEXT -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_4 -#endif + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_4 DISPATCH_NEXT - ldr tmp2, [tmp2, #8] + ldr tmp2, [tmp2, #CP_OFFSET+8] DISPATCH_NEXT POP r3 .abortentry91: @@ -6985,6 +7194,8 @@ DISPATCH_FINISH } +#ifdef NOTICE_SAFEPOINTS + (iaccess_0,iaccess_1,iaccess_2,iaccess_3) (ifeq,ifnull) { ldrb r2, [jpc, #3] @@ -6996,11 +7207,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry92: ldr tmp2, [tmp1, tmp2] @@ -7023,11 +7232,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry93: ldr tmp2, [tmp1, tmp2] @@ -7050,11 +7257,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry94: ldr tmp2, [tmp1, tmp2] @@ -7077,11 +7282,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry95: ldr tmp2, [tmp1, tmp2] @@ -7104,11 +7307,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry96: ldr tmp2, [tmp1, tmp2] @@ -7131,11 +7332,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] orr ip, ip, r0, lsl #8 .abortentry97: ldr tmp2, [tmp1, tmp2] @@ -7158,11 +7357,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry98: @@ -7186,11 +7383,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry99: @@ -7214,11 +7409,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry100: @@ -7242,11 +7435,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry101: @@ -7270,11 +7461,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry102: @@ -7298,11 +7487,9 @@ ldr tmp1, [locals, tmp1, lsl #2] add tmp2, ip, lsl #4 ldrb ip, [jpc, #2] -#ifndef HW_NULL_PTR_CHECK - cmp tmp1, #0 - beq null_ptr_exception_jpc_3 -#endif - ldr tmp2, [tmp2, #8] + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception_jpc_3 + ldr tmp2, [tmp2, #CP_OFFSET+8] POP r3 orr ip, ip, r0, lsl #8 .abortentry103: @@ -7315,6 +7502,8 @@ DISPATCH_BYTECODE } +#endif // NOTICE_SAFEPOINTS + (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) (iadd) { @@ -7400,7 +7589,57 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(idiv) +{ + rsb tmp1, r0, #opc_iload_0_iconst_N + subs lr, r2, #opc_iconst_2 + DISPATCH_START \seq_len + ldr tmp1, [locals, tmp1, lsl #2] + DISPATCH_NEXT + beq 5f + bcc 3f + cmp lr, #(opc_iconst_4-opc_iconst_2) + beq 4f + bcc 2f +@ divide by 5 +1: + mvn lr, #0x198 @ Form 0x66666667 in lr + bic lr, lr, #0x9800 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + mov a3, tmp1, asr #31 + rsb tmp1, a3, a4, asr #1 + b 6f +@ divide by 3 +2: + mvn lr, #0xa9 @ Form 0x55555556 in lr + bic lr, lr, #0xaa00 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + sub tmp1, a4, tmp1, asr #31 + b 6f +3: + cmp lr, #(opc_iconst_0-opc_iconst_2) + beq div_zero_jpc_1 + rsbcc tmp1, tmp1, #0 @ Divide by -1 or 1 + b 6f +@ divide by 4 +4: movs a4, tmp1 + addmi a4, a4, #3 + mov tmp1, a4, asr #2 + b 6f +@ divide by 2 +5: + add tmp1, tmp1, tmp1, lsr #31 + mov tmp1, tmp1, asr #1 +6: + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +} + +@ r2 = [jpc, #1] (iload_iconst_N) (iadd) { @@ -7418,7 +7657,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload_iconst_N) (isub) { @@ -7436,7 +7675,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload_iconst_N) (iand) { @@ -7454,7 +7693,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload_iconst_N) (ior) { @@ -7472,7 +7711,7 @@ DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload_iconst_N) (ixor) { @@ -7490,343 +7729,416 @@ DISPATCH_FINISH } -# Former quads - -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(iadd_u4store) +(iload_iconst_N) +(idiv) { - rsb r3, r0, #opc_iload_0_iconst_N + ldrb lr, [jpc, #2] + rsb tmp1, r2, #0 DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] - ldr r3, [locals, r3, lsl #2] - DISPATCH_NEXT - add r3, r3, r2 + ldr tmp1, [locals, tmp1, lsl #2] + subs lr, lr, #opc_iconst_2 DISPATCH_NEXT - rsb tmp1, tmp1, #0 + beq 5f + bcc 3f + cmp lr, #(opc_iconst_4-opc_iconst_2) + beq 4f + bcc 2f +@ divide by 5 +1: + mvn lr, #0x198 @ Form 0x66666667 in lr + bic lr, lr, #0x9800 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + mov a3, tmp1, asr #31 + rsb tmp1, a3, a4, asr #1 + b 6f +@ divide by 3 +2: + mvn lr, #0xa9 @ Form 0x55555556 in lr + bic lr, lr, #0xaa00 + add lr, lr, lr, lsl #16 + smull a3, a4, tmp1, lr + sub tmp1, a4, tmp1, asr #31 + b 6f +3: + cmp lr, #(opc_iconst_0-opc_iconst_2) + beq div_zero_jpc_1 + rsbcc tmp1, tmp1, #0 @ Divide by -1 or 1 + b 6f +@ divide by 4 +4: movs a4, tmp1 + addmi a4, a4, #3 + mov tmp1, a4, asr #2 + b 6f +@ divide by 2 +5: + add tmp1, tmp1, tmp1, lsr #31 + mov tmp1, tmp1, asr #1 +6: DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + PUSH tmp1 DISPATCH_FINISH } -(iload_iconst_N) -(iadd_u4store) +(iload_iload) +(iadd) { - ldrb r3, [jpc, #2] - ldrb lr, [jpc, #5] + ldrb r3, [jpc, #3] rsb r2, r2, #0 DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + add r3, r2, r3 DISPATCH_NEXT - add r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(iadd_istore_N) +(iload_iload_N) +(iadd) { - rsb r3, r0, #opc_iload_0_iconst_N + ldrb r3, [jpc, #2] + rsb r2, r2, #0 DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + rsb r3, r3, #opc_iload_0 + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - add r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #opc_istore_0 + add r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(iadd_istore_N) +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iadd) { ldrb r3, [jpc, #2] - ldrb lr, [jpc, #4] - rsb r2, r2, #0 + rsb r2, r0, #opc_iload_0_iload DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #opc_istore_0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + add r3, r2, r3 DISPATCH_NEXT - add r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(isub_u4store) +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iadd) { - rsb r3, r0, #opc_iload_0_iconst_N + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - sub r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #0 + add r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(isub_u4store) +(iload_iload) +(isub) { - ldrb r3, [jpc, #2] - ldrb lr, [jpc, #5] + ldrb r3, [jpc, #3] rsb r2, r2, #0 DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + sub r3, r2, r3 DISPATCH_NEXT - sub r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(isub_istore_N) +(iload_iload_N) +(isub) { - rsb r3, r0, #opc_iload_0_iconst_N + ldrb r3, [jpc, #2] + rsb r2, r2, #0 DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + rsb r3, r3, #opc_iload_0 + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - sub r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #opc_istore_0 + sub r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(isub_istore_N) +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(isub) { ldrb r3, [jpc, #2] - ldrb lr, [jpc, #4] - rsb r2, r2, #0 + rsb r2, r0, #opc_iload_0_iload DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #opc_istore_0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + sub r3, r2, r3 DISPATCH_NEXT - sub r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(iand_u4store) +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(isub) { - rsb r3, r0, #opc_iload_0_iconst_N + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - and r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #0 + sub r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(iand_u4store) +(iload_iload) +(iand) { - ldrb r3, [jpc, #2] - ldrb lr, [jpc, #5] + ldrb r3, [jpc, #3] rsb r2, r2, #0 DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + and r3, r2, r3 DISPATCH_NEXT - and r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(iand_istore_N) +(iload_iload_N) +(iand) { - rsb r3, r0, #opc_iload_0_iconst_N + ldrb r3, [jpc, #2] + rsb r2, r2, #0 DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + rsb r3, r3, #opc_iload_0 + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - and r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #opc_istore_0 + and r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(iand_istore_N) +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iand) { ldrb r3, [jpc, #2] - ldrb lr, [jpc, #4] - rsb r2, r2, #0 + rsb r2, r0, #opc_iload_0_iload DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #opc_istore_0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + and r3, r2, r3 DISPATCH_NEXT - and r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(ior_u4store) +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iand) { - rsb r3, r0, #opc_iload_0_iconst_N + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - orr r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #0 + and r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(ior_u4store) +(iload_iload) +(ior) { - ldrb r3, [jpc, #2] - ldrb lr, [jpc, #5] + ldrb r3, [jpc, #3] rsb r2, r2, #0 DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + orr r3, r2, r3 DISPATCH_NEXT - orr r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(ior_istore_N) +(iload_iload_N) +(ior) { - rsb r3, r0, #opc_iload_0_iconst_N + ldrb r3, [jpc, #2] + rsb r2, r2, #0 DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + rsb r3, r3, #opc_iload_0 + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - orr r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #opc_istore_0 + orr r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(ior_istore_N) +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ior) { ldrb r3, [jpc, #2] - ldrb lr, [jpc, #4] - rsb r2, r2, #0 + rsb r2, r0, #opc_iload_0_iload DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #opc_istore_0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + orr r3, r2, r3 DISPATCH_NEXT - orr r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 DISPATCH_FINISH } -(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(ixor_u4store) +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ior) { - rsb r3, r0, #opc_iload_0_iconst_N + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N DISPATCH_START \seq_len - sub r2, r2, #opc_iconst_0 - DISPATCH_NEXT - ldrb tmp1, [jpc, #-1] + ldr r2, [locals, r2, lsl #2] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - eor r3, r3, r2 DISPATCH_NEXT - rsb tmp1, tmp1, #0 + orr r3, r2, r3 DISPATCH_NEXT - str r3, [locals, tmp1, lsl #2] + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } -(iload_iconst_N) -(ixor_u4store) +(iload_iload) +(ixor) { - ldrb r3, [jpc, #2] - ldrb lr, [jpc, #5] + ldrb r3, [jpc, #3] rsb r2, r2, #0 DISPATCH_START \seq_len - sub r3, r3, #opc_iconst_0 + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - rsb tmp2, lr, #0 DISPATCH_NEXT - ldr tmp1, [locals, r2, lsl #2] + eor r3, r2, r3 DISPATCH_NEXT - eor r3, tmp1, r3 DISPATCH_NEXT - str r3, [locals, tmp2, lsl #2] + PUSH r3 + DISPATCH_FINISH +} + +(iload_iload_N) +(ixor) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ixor) +{ + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + DISPATCH_START \seq_len + rsb r3, r3, #0 + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ixor) +{ + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, r2, r3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH r3 DISPATCH_FINISH } +@ Former quads + (iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) -(ixor_istore_N) +(iadd_u4store) { rsb r3, r0, #opc_iload_0_iconst_N DISPATCH_START \seq_len @@ -7835,7 +8147,44 @@ ldrb tmp1, [jpc, #-1] ldr r3, [locals, r3, lsl #2] DISPATCH_NEXT - eor r3, r3, r2 + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iadd_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iadd_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 DISPATCH_NEXT rsb tmp1, tmp1, #opc_istore_0 DISPATCH_NEXT @@ -7844,7 +8193,7 @@ } (iload_iconst_N) -(ixor_istore_N) +(iadd_istore_N) { ldrb r3, [jpc, #2] ldrb lr, [jpc, #4] @@ -7856,8 +8205,1783 @@ DISPATCH_NEXT ldr tmp1, [locals, r2, lsl #2] DISPATCH_NEXT - eor r3, tmp1, r3 + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(isub_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(isub_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(isub_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(isub_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iand_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iand_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(iand_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(iand_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, tmp1, r3 DISPATCH_NEXT str r3, [locals, tmp2, lsl #2] DISPATCH_FINISH } + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ior_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ior_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ior_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ior_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ixor_u4store) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ixor_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(ixor_istore_N) +{ + rsb r3, r0, #opc_iload_0_iconst_N + DISPATCH_START \seq_len + sub r2, r2, #opc_iconst_0 + DISPATCH_NEXT + ldrb tmp1, [jpc, #-1] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iconst_N) +(ixor_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + sub r3, r3, #opc_iconst_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + DISPATCH_NEXT + ldr tmp1, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmpeq,if_acmpeq) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmpeq,if_acmpeq) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmpne,if_acmpne) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmpne,if_acmpne) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmplt) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmplt) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmpge) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmpge) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmpgt) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmpgt) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iconst_N,iload_1_iconst_N,iload_2_iconst_N,iload_3_iconst_N) +(if_icmple) +{ + ldrb r3, [jpc, #1] + rsb r2, r0, #opc_iload_0_iconst_N + ldrsb r1, [jpc, #3] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iconst_N) +(if_icmple) +{ + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + sub r3, r3, #opc_iconst_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload) +(iadd_istore_N) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(iadd_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iadd_istore_N) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #4] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iadd_istore_N) +{ + ldrb tmp1, [jpc, #3] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(isub_istore_N) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(isub_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(isub_istore_N) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #4] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(isub_istore_N) +{ + ldrb tmp1, [jpc, #3] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(iand_istore_N) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(iand_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iand_istore_N) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #4] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iand_istore_N) +{ + ldrb tmp1, [jpc, #3] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(ior_istore_N) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(ior_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ior_istore_N) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #4] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ior_istore_N) +{ + ldrb tmp1, [jpc, #3] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(ixor_istore_N) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(ixor_istore_N) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #4] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #opc_istore_0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ixor_istore_N) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #4] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ixor_istore_N) +{ + ldrb tmp1, [jpc, #3] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #opc_istore_0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(iadd_u4store) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #6] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(iadd_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + add r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iadd_u4store) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #5] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iadd_u4store) +{ + ldrb tmp1, [jpc, #4] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + add r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(isub_u4store) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #6] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(isub_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + sub r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(isub_u4store) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #5] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(isub_u4store) +{ + ldrb tmp1, [jpc, #4] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + sub r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(iand_u4store) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #6] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(iand_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + and r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(iand_u4store) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #5] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(iand_u4store) +{ + ldrb tmp1, [jpc, #4] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + and r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(ior_u4store) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #6] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(ior_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + orr r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ior_u4store) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #5] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ior_u4store) +{ + ldrb tmp1, [jpc, #4] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + orr r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(ixor_u4store) +{ + ldrb r3, [jpc, #3] + ldrb lr, [jpc, #6] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_iload_N) +(ixor_u4store) +{ + ldrb r3, [jpc, #2] + ldrb lr, [jpc, #5] + rsb r2, r2, #0 + DISPATCH_START \seq_len + rsb r3, r3, #opc_iload_0 + DISPATCH_NEXT + rsb tmp2, lr, #0 + ldr tmp1, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + DISPATCH_NEXT + DISPATCH_NEXT + eor r3, tmp1, r3 + DISPATCH_NEXT + str r3, [locals, tmp2, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(ixor_u4store) +{ + rsb r3, r0, #opc_iload_0_iload + ldrb r2, [jpc, #2] + ldrb tmp1, [jpc, #5] + DISPATCH_START \seq_len + rsb r2, r2, #0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(ixor_u4store) +{ + ldrb tmp1, [jpc, #4] + rsb r3, r0, #opc_iload_0_iload_N + DISPATCH_START \seq_len + rsb r2, r2, #opc_iload_0 + DISPATCH_NEXT + ldr r3, [locals, r3, lsl #2] + ldr r2, [locals, r2, lsl #2] + DISPATCH_NEXT + eor r3, r3, r2 + DISPATCH_NEXT + rsb tmp1, tmp1, #0 + DISPATCH_NEXT + str r3, [locals, tmp1, lsl #2] + DISPATCH_FINISH +} + +(iload_iload) +(if_icmpeq,if_acmpeq) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 + ldrb ip, [jpc, #6] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #4 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmpeq,if_acmpeq) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmpeq,if_acmpeq) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmpeq,if_acmpeq) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + beq 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmpne,if_acmpne) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmpne,if_acmpne) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmpne,if_acmpne) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bne 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload) +(if_icmplt) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 + ldrb ip, [jpc, #6] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #4 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmplt) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmplt) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmplt) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + blt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload) +(if_icmpge) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 + ldrb ip, [jpc, #6] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #4 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmpge) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmpge) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmpge) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bge 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload) +(if_icmpgt) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 + ldrb ip, [jpc, #6] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #4 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmpgt) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmpgt) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmpgt) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + bgt 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload) +(if_icmple) { + ldrb r3, [jpc, #3] + rsb r2, r2, #0 + ldrsb r1, [jpc, #5] + rsb r3, r3, #0 + ldrb ip, [jpc, #6] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #4 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_iload_N) +(if_icmple) { + ldrb r3, [jpc, #2] + rsb r2, r2, #0 + ldrsb r1, [jpc, #4] + rsb r3, r3, #opc_iload_0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload,iload_1_iload,iload_2_iload,iload_3_iload) +(if_icmple) { + ldrb r3, [jpc, #2] + rsb r2, r0, #opc_iload_0_iload + ldrsb r1, [jpc, #4] + rsb r3, r3, #0 + ldrb ip, [jpc, #5] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #3 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +(iload_0_iload_N,iload_1_iload_N,iload_2_iload_N,iload_3_iload_N) +(if_icmple) { + rsb r3, r2, #opc_iload_0 + rsb r2, r0, #opc_iload_0_iload_N + ldrsb r1, [jpc, #3] + ldrb ip, [jpc, #4] + ldr r2, [locals, r2, lsl #2] + ldr r3, [locals, r3, lsl #2] + add jpc, jpc, #2 + cmp r2, r3 + orr ip, ip, r1, lsl #8 + ble 1f + mov ip, #3 +1: + ldrb r0, [jpc, ip]! + DISPATCH_BYTECODE +} + +#ifdef HW_FP + +(dmac)(dastore) { + ldr tmp2, [stack, #28] + ldr tmp1, [stack, #32] + vldr d2, [stack, #20] + vldr d1, [stack, #12] + vldr d0, [stack, #4] + DISPATCH_START \seq_len + SW_NPC cmp tmp1, #0 + SW_NPC beq null_ptr_exception +.abortentry120: + ldr ip, [tmp1, #8] + cmp tmp2, ip + DISPATCH_NEXT + bcs array_bound_exception_jpc_1_tmp2 + DISPATCH_NEXT + add tmp2, tmp1, tmp2, lsl #3 + fmacd d2, d1, d0 + vstr d2, [tmp2, #16] + DISPATCH_NEXT + DISPATCH_NEXT + add stack, stack, #32 + DISPATCH_FINISH +} + +#endif //HW_FP + +#endif // FAST_BYTECODES From ed at camswl.com Thu Sep 10 11:28:09 2009 From: ed at camswl.com (Edward Nevill) Date: Thu, 10 Sep 2009 19:28:09 +0100 Subject: ARM asm improvements - part 3 Message-ID: <200909101828.n8AIS91o008904@parsley.camswl.com> And here is part 3, cppInterpreter_asm.S. See part 2 for comments. Regards, Ed. --- CUT HERE ------------------------------------------------------------ diff -ruNE old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S --- old/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-09-08 14:30:25.000000000 +0100 +++ new/icedtea6/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S 2009-09-10 14:18:07.000000000 +0100 @@ -1,17 +1,24 @@ -#if defined(PRODUCT) && defined(HOTSPOT_ASM) -//#define HW_NULL_PTR_CHECK -//#define UNALIGNED_ACCESS -//#define B14 +#ifdef HOTSPOT_ASM #define ARMv4 -#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) - -// ECN: DOH!!! gcc 4.4 has changed the name mangling scheme!!! -#if GCC_VERSION >= 40400 -#define oop_store _Z9oop_storeIP7oopDescEvPT_S1_ -#else -#define oop_store _Z9oop_storeIP7oopDescEvPVT_S1_ +#ifndef DISABLE_NOTICE_SAFEPOINTS +#define NOTICE_SAFEPOINTS +#endif +#ifndef DISABLE_HW_NULL_PTR_CHECK +#define HW_NULL_PTR_CHECK +#endif +#ifndef DISABLE_FASTPATH_ENTRY +#define FASTPATH_ENTRY +#endif +#ifndef DISABLE_NATIVE_ENTRY +#define NATIVE_ENTRY +#endif +#ifndef DISABLE_FAST_BYTECODES +#define FAST_BYTECODES +#endif +#ifndef DISABLE_HW_FP +#define HW_FP #endif #define stack r4 @@ -22,7 +29,7 @@ #define constpool r9 #define arm_sp r13 -#define CONST_POOL_OFFSET 16 +#define CP_OFFSET 16 #define tmp_xxx r7 #define tmp_yyy r5 @@ -32,7 +39,9 @@ #define tmp1 r11 #define tmp2 r10 -#define regset r4-r11 +#define tmp_invoke_len lr + +#define regset r3-r11 #define tos_btos 0 #define tos_ctos 1 @@ -43,114 +52,12 @@ #define tos_dtos 6 #define tos_atos 7 -#define JVM_CONSTANT_Utf8 1 -#define JVM_CONSTANT_Unicode 2 -#define JVM_CONSTANT_Integer 3 -#define JVM_CONSTANT_Float 4 -#define JVM_CONSTANT_Long 5 -#define JVM_CONSTANT_Double 6 -#define JVM_CONSTANT_Class 7 -#define JVM_CONSTANT_String 8 -#define JVM_CONSTANT_Fieldref 9 -#define JVM_CONSTANT_Methodref 10 -#define JVM_CONSTANT_InterfaceMethodref 11 -#define JVM_CONSTANT_NameAndType 12 - -#define JVM_CONSTANT_UnresolvedClass 100 -#define JVM_CONSTANT_ClassIndex 101 -#define JVM_CONSTANT_UnresolvedString 102 -#define JVM_CONSTANT_StringIndex 103 -#define JVM_CONSTANT_UnresolvedClassInError 104 - -#define T_BOOLEAN 4 -#define T_CHAR 5 -#define T_FLOAT 6 -#define T_DOUBLE 7 -#define T_BYTE 8 -#define T_SHORT 9 -#define T_INT 10 -#define T_LONG 11 -#define T_OBJECT 12 -#define T_ARRAY 13 -#define T_VOID 14 - -#define _thread_uninitialized 0 -#define _thread_new 2 -#define _thread_new_trans 3 -#define _thread_in_native 4 -#define _thread_in_native_trans 5 -#define _thread_in_vm 6 -#define _thread_in_vm_trans 7 -#define _thread_in_Java 8 -#define _thread_in_Java_trans 9 -#define _thread_blocked 10 -#define _thread_blocked_trans 11 -#define _thread_max_state 12 - - -#define THREAD_VTABLE 0 -#define THREAD_PENDING_EXC 4 -#define THREAD_SUSPEND_FLAGS 24 -#define THREAD_ACTIVE_HANDLES 32 -#define THREAD_LAST_HANDLE_MARK 40 - -#ifdef B14 -#define THREAD_TLAB_TOP 56 -#define THREAD_TLAB_END 64 -#define THREAD_HANDLE_AREA 152 -#define THREAD_STACK_BASE 156 -#define THREAD_STACK_SIZE 160 -#define THREAD_LAST_JAVA_SP 260 -#define THREAD_JNI_ENVIRONMENT 272 -#define THREAD_VM_RESULT 300 -#define THREAD_STATE 320 -#define THREAD_DO_NOT_UNLOCK 345 -#define THREAD_JAVA_STACK_BASE 476 -#define THREAD_JAVA_SP 484 -#define THREAD_TOP_ZERO_FRAME 488 +#include "offsets_arm.s" -#define THREAD_VTABLE_IS_LOCK_OWNED 56 -#else -#define THREAD_TLAB_TOP 56-4 -#define THREAD_TLAB_END 64-4 -#define THREAD_HANDLE_AREA 152-4 -#define THREAD_STACK_BASE 156-4 -#define THREAD_STACK_SIZE 160-4 -#define THREAD_LAST_JAVA_SP 260-4 -#define THREAD_JNI_ENVIRONMENT 272-4 -#define THREAD_VM_RESULT 300-4 -#define THREAD_STATE 320-4 -#define THREAD_DO_NOT_UNLOCK 345-4 -#define THREAD_JAVA_STACK_BASE 476-4 -#define THREAD_JAVA_SP 484-4 -#define THREAD_TOP_ZERO_FRAME 488-4 - -#define THREAD_VTABLE_IS_LOCK_OWNED 52 -#endif - -#define UNIVERSE_VTABLE 0 -#define UNIVERSE_VTABLE_TOP_ADDR 96 -#define UNIVERSE_VTABLE_END_ADDR 100 - -#ifdef B14 -#define VMSYMBOLS_ArithmeticException 77 -#define VMSYMBOLS_ArrayIndexOutOfBounds 78 -#define VMSYMBOLS_ArrayStoreException 79 -#define VMSYMBOLS_ClassCastException 80 -#define VMSYMBOLS_NullPointerException 95 -#define VMSYMBOLS_AbstractMethodError 103 -#define VMSYMBOLS_IncompatibleClassChangeError 110 -#define VMSYMBOLS_InternalError 111 -#else -#define VMSYMBOLS_ArithmeticException 78 -#define VMSYMBOLS_ArrayIndexOutOfBounds 79 -#define VMSYMBOLS_ArrayStoreException 80 -#define VMSYMBOLS_ClassCastException 81 -#define VMSYMBOLS_NullPointerException 96 -#define VMSYMBOLS_AbstractMethodError 104 -#define VMSYMBOLS_IncompatibleClassChangeError 111 -#define VMSYMBOLS_InternalError 112 -#endif +#define RESOURCEAREA_AREA 0 +#define RESOURCEAREA_CHUNK 4 +#define RESOURCEAREA_HWM 8 +#define RESOURCEAREA_MAX 12 #define ISTATE_THREAD 0 #define ISTATE_BCP 4 @@ -159,7 +66,7 @@ #define ISTATE_METHOD 16 #define ISTATE_MDX 20 #define ISTATE_STACK 24 -#define ISTATE_SAVED_ISTATE 28 +#define ISTATE_ADVANCE_PC 28 #define ISTATE_MSG 28 #define ISTATE_CALLEE 32 // union frame_manager_message @@ -171,24 +78,145 @@ #define ISTATE_SELF_LINK 64 #define ISTATE_CAFEBABF 68 -#define last_implemented_bytecode 248 +#define ISTATE_NEXT_FRAME 72 + +#define FRAME_SIZE 76 + +#define last_implemented_bytecode 201 .macro ALIGN_CODE - .align 6 + .align 3 .endm .macro ALIGN_DATA - .align 6 + .align 3 .endm .macro ALIGN_OPCODE - .align 6 + .align 3 .endm .macro ALIGN_WORD .align 2 .endm + at ------------------------------------------------ +@ Software NULL Pointer check macro. +@ Usage: +@ SW_NPC cmp obj, #0 +@ SW_NPC beq null_ptr_exception + at ------------------------------------------------ + .macro SW_NPC p1, p2, p3, p4 +#ifndef HW_NULL_PTR_CHECK + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif +#endif // HW_NULL_PTR_CHECK + .endm + + .macro HW_NPC p1, p2, p3, p4 +#ifdef HW_NULL_PTR_CHECK + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif +#endif // HW_NULL_PTR_CHECK + .endm + + at ------------------------------------------------ +@ Fast Bytecode Macros FBC and NFBC +@ Use to conditionalise code using fast bytecodes +@ EG: +@ FBC mov r0, #opc_invokeresolved +@ FBC b rewrite_bytecode +@ NFBC code to handle slow case +@ NFBC ... + at ------------------------------------------------ + .macro FBC p1, p2, p3, p4, p5 +#ifdef FAST_BYTECODES + .ifnes "\p5", "" + \p1 \p2, \p3, \p4, \p5 + .else + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif + .endif +#endif + .endm + + .macro NFBC p1, p2, p3, p4 +#ifndef FAST_BYTECODES + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif +#endif + .endm + + at ------------------------------------------------ +@ Notice Safepoints macro +@ Usage: +@ NSP + at ------------------------------------------------ + .macro NSP p1, p2, p3, p4, p5 +#ifdef NOTICE_SAFEPOINTS + .ifnes "\p5", "" + \p1 \p2, \p3, \p4, \p5 + .else + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif + .endif +#endif + .endm + + at ------------------------------------------------ +@ Use Compiler macro +@ Usage: +@ USEC + at ------------------------------------------------ + .macro USEC p1, p2, p3, p4 +#ifdef USE_COMPILER + .ifnes "\p4", "" + \p1 \p2, \p3, \p4 + .else + .ifnes "\p3", "" + \p1 \p2, \p3 + .else + \p1 \p2 + .endif + .endif +#endif + .endm + .macro Opcode label ALIGN_OPCODE do_\label: @@ -202,40 +230,308 @@ str \reg, [stack, #(\offset+1) * 4] .endm - .macro PUSH4 reg1, reg2, reg3, reg4 + .macro PUSH reg1, reg2, reg3, reg4 + .ifnes "\reg4", "" stmda stack!, {\reg1, \reg2, \reg3, \reg4} + .else + .ifnes "\reg3", "" + stmda stack!, {\reg1, \reg2, \reg3} + .else + .ifnes "\reg2", "" + stmda stack!, {\reg1, \reg2} + .else + str \reg1, [stack], #-4 + .endif + .endif + .endif .endm - .macro POP4 reg1, reg2, reg3, reg4 + .macro POP reg1, reg2, reg3, reg4 + .ifnes "\reg4", "" ldmib stack!, {\reg1, \reg2, \reg3, \reg4} + .else + .ifnes "\reg3", "" + ldmib stack!, {\reg1, \reg2, \reg3} + .else + .ifnes "\reg2", "" + ldmib stack!, {\reg1, \reg2} + .else + ldr \reg1, [stack, #4]! + .endif + .endif + .endif .endm - .macro PUSH3 reg1, reg2, reg3 - stmda stack!, {\reg1, \reg2, \reg3} + .macro CACHE_JPC + ldr jpc, [istate, #ISTATE_BCP] .endm - .macro POP3 reg1, reg2, reg3 - ldmib stack!, {\reg1, \reg2, \reg3} + .macro CACHE_LOCALS + ldr locals, [istate, #ISTATE_LOCALS] .endm - .macro PUSH2 reg1, reg2 - stmda stack!, {\reg1, \reg2} + .macro CACHE_STACK + ldr stack, [istate, #ISTATE_STACK] .endm - .macro PUSH reg - str \reg, [stack], #-4 + .macro CACHE_CP + ldr constpool, [istate, #ISTATE_CONSTANTS] .endm - .macro POP2 reg1, reg2 - ldmib stack!, {\reg1, \reg2} + .macro DECACHE_STACK + str stack, [istate, #ISTATE_STACK] + .endm + + .macro DECACHE_JPC + str jpc, [istate, #ISTATE_BCP] + .endm + +@ ECN: I assert that istate->locals and istate->stack cannot move on a GC. +@ The reasoning is that istate itself is stored on the Java stack +@ and locals and stack are relative to istate. Therefore if locals or +@ stack were to move, istate itself would have to move and we would +@ lose our entire interpreter state. +@ To prove this I have changed the code which recaches locals and stack +@ to assert that locals == istate->locals and stack == istate->stack. +@ This saves a lot of needles recaching of interpreter state. + .macro ASSERT_LOCALS_CACHED +#if 0 + str ip, [arm_sp, #-4]! + mrs ip, cpsr + str ip, [arm_sp, #-4]! + mov ip, locals + ldr locals, [istate, #ISTATE_LOCALS] + cmp ip, locals + strne r0, [r0, -r0] + ldr ip, [arm_sp], #4 + msr cpsr, ip + ldr ip, [arm_sp], #4 +#endif + .endm + + .macro ASSERT_STACK_CACHED +#if 0 + str ip, [arm_sp, #-4]! + mrs ip, cpsr + str ip, [arm_sp, #-4]! + mov ip, stack + ldr stack, [istate, #ISTATE_STACK] + cmp ip, stack + strne r0, [r0, -r0] + ldr ip, [arm_sp], #4 + msr cpsr, ip + ldr ip, [arm_sp], #4 +#endif + .endm + +@ DISPATCH_LOOP causes the dispatch code to branch every time to a label 'dispatch_loop' +@ This is primarily for debugging so we can stick assertions at the dispatch_loop label +@ which will then be checked after every bytcode. +@ #define DISPATCH_LOOP + +@ CODETRACE tarces bytecodes in a code buffer which can be examined under gdb +@ Note: DISPATCH_LOOP must be enabled for CODETRACE to work +@ #define CODETRACE + +@ DISPATCH_ASSERTS enables various assertions in the dispatch loop, such as checking +@ stack, frame, locals and constpool are all consistent and not corrupted +@#define DISPATCH_ASSERTS + + .macro ABORTNE + strne r0, [r0, -r0] + .endm + + .macro ABORTCS + strcs r0, [r0, -r0] + .endm + + .macro ABORTCC + strcc r0, [r0, -r0] + .endm + + .macro CHECK_CONSTPOOL +#ifdef DISPATCH_ASSERTS + @ First check istate->constpool == method->constpool + ldr r1, [istate, #ISTATE_CONSTANTS] + ldr r2, [istate, #ISTATE_METHOD] + ldr r2, [r2, #METHOD_CONSTANTS] + ldr r2, [r2, #CONSTANTPOOL_CACHE] + cmp r1, r2 + ABORTNE +@ cmp r1, constpool +@ ABORTNE +#endif + .endm + + .macro CHECK_LOCALS +#ifdef DISPATCH_ASSERTS + @ Check cached locals var is the same as that in istate + ldr r1, [istate, #ISTATE_LOCALS] + cmp r1, locals + ABORTNE +#endif + .endm + + .macro CHECK_FRAME +#ifdef DISPATCH_ASSERTS + @ Check 0xCAFEBABF hasn't been overwritten + ldr r1, [istate, #ISTATE_CAFEBABF] + mvn ip, #0x540 @ form 0xCAFEBABF + bic ip, ip, #0x14000 + bic ip, ip, #0x35000000 + cmp r1, ip + ABORTNE + @ Check we are still the topmost frame + ldr r1, [istate, #ISTATE_THREAD] + ldr r1, [r1, #THREAD_TOP_ZERO_FRAME] + add r2, istate, #ISTATE_NEXT_FRAME + cmp r1, r2 + ABORTNE + @ And check the NEXT_FRAME pointer points to a valid frame (CAFEBABF intact) + ldr r1, [istate, #ISTATE_NEXT_FRAME] + ldr r2, [r1, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r2, r2, #0xff @ ECN: Allow for differing frames + bic ip, ip, #0xff @ Eg. ENTRY_FRAME/INTERPRETER_FRAME/SHARK_FRAME + cmp r2, ip + ABORTNE +#endif + .endm + + .macro CHECK_BACKTRACE +#ifdef DISPATCH_ASSERTS + add r3, istate, #ISTATE_NEXT_FRAME + mvn ip, #0x540 @ form 0xCAFEBABF + bic ip, ip, #0x14000 + bic ip, ip, #0x35000000 +@ ECN: Only check a limited no of frames back. topmost frame already checked +@ Check 2nd frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +@ Check 3rd frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +@ Check 4th frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +@ Check 5th frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +@ Check 7th frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +@ Check 8th frame up + ldr r3, [r3] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r1, ip, #1 + cmp r1, r2 + beq 2f + cmp ip, r2 + ABORTNE @ Must be ENTRY_FRAME, or INTERPRETER_FRAME + ldr r1, [r3, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r2, [r3, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r2, [r2, #12] + ldr r2, [r2, #12] + cmp r1, r2 + ABORTNE +2: +#endif + .endm + + .macro CHECK_STACK +#ifdef DISPATCH_ASSERTS + ldr r1, [istate, #ISTATE_STACK_BASE] + cmp stack, r1 + ABORTCS + ldr r1, [istate, #ISTATE_STACK_LIMIT] + @ ECN: The stack can point below the stack limit in the + @ case that we have a full stack. As long as we dont actually + @ try writing to it. + add r2, stack, #4 + cmp r2, r1 + ABORTCC +#endif + .endm + +#define CODETRACE_BUFFER_SIZE (1 * 1024) + .macro TRACE_CODE +#ifdef CODETRACE + ldr r1, [dispatch, #CodeTrace_Idx-XXX] + cmp r1, #CODETRACE_BUFFER_SIZE + moveq r1, #0 + sub r2, dispatch, #XXX-CodeTrace_Buffer_Base + str jpc, [r2, r1] + add r1, r1, #4 + str r1, [dispatch, #CodeTrace_Idx-XXX] +#endif .endm - .macro POP reg - ldr \reg, [stack, #4]! + .macro BREAK_DISPATCH + ldr r1, [dispatch, #DispatchBreakPoint-XXX] + cmp r1, jpc + bleq do_dispatch_break .endm .set dispatch_state, 0 + .macro DISPATCH_STATE state + .set dispatch_state, \state + .endm + .macro DISPATCH_START step=0 .set dispatch_state, 1 ldrb r0, [jpc, #\step]! @@ -246,10 +542,23 @@ ldrb r0, [jpc, \reg]! .endm - .macro DISPATCH_STATE state - .set dispatch_state, \state +#ifdef DISPATCH_LOOP + .macro DISPATCH_NEXT + .endm + + .macro DISPATCH_FINISH + b dispatch_loop + .endm + + .macro DISPATCH_BYTECODE + b dispatch_loop .endm + .macro DISPATCH step=0 + ldrb r0, [jpc, #\step]! + b dispatch_loop + .endm +#else .macro DISPATCH_1 ldrb r1, [jpc, #2] .endm @@ -333,6 +642,7 @@ ldr ip, [ip, r1, lsl #2] mov pc, ip .endm +#endif // DISPATCH_LOOP #define FFI_TYPE_VOID 0 #define FFI_TYPE_FLOAT 2 @@ -346,48 +656,38 @@ #define FFI_TYPE_POINTER 14 .macro _BLX reg -#ifdef ARMv4 mov lr, pc mov pc, \reg -#else - blx \reg -#endif .endm -#define blx _BLX .macro _BX reg -#ifdef ARMv4 mov pc, \reg -#else - bx \reg -#endif .endm -#define bx _BX .macro _BXEQ reg -#ifdef ARMv4 moveq pc, \reg -#else - bxeq \reg -#endif .endm -#define bxeq _BXEQ .macro _BXNE reg -#ifdef ARMv4 movne pc, \reg -#else - bxne \reg -#endif .endm -#define bxne _BXNE #ifdef ARMv4 + +#define blx _BLX +#define bx _BX +#define bxeq _BXEQ +#define bxne _BXNE .arch armv4 + #else .arch armv7-a #endif +#ifdef HW_FP + .fpu vfp +#else .fpu softvfp +#endif .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 @@ -399,703 +699,506 @@ .text - ALIGN_CODE -build_normal: - ldr ip, [r1, #24] - tst ip, #32 - bne build_normal_synchronized -build_normal_unsynchronized: - stmfd sp!, {r4, r5, r6, r7, r8} - ldr r4, [r0, #8] - ldrh r8, [r1, #38] - ldrh ip, [r1, #40] - mov r5, #0 - sub r3, r4, #4 - str r3, [r0, #8] - str r5, [r4, #-4] - ldr r7, [r0, #8] - mov r6, r0 - sub r3, r7, #4 - str r3, [r0, #8] - mvn r0, #0x540 @ form 0xCAFEBABF in r0 - bic r0, r0, #0x14000 - bic r0, r0, #0x35000000 - mov ip, ip, asl #2 - sub ip, ip, #4 - str r0, [r7, #-4] - ldr r3, [r6, #8] - add r4, r4, ip - sub r0, r3, #68 - str r0, [r6, #8] - str r4, [r0, #8] - str r5, [r0, #44] - str r1, [r0, #16] - str r0, [r0, #64] - str r2, [r3, #-68] - ldr r3, [r1, #8] - cmp r8, r5 - add r3, r3, #48 - str r3, [r0, #4] - ldr r2, [r1, #12] - mov r3, #0 - ldr r1, [r2, #12] - str r5, [r0, #32] - str r5, [r0, #48] - str r1, [r0, #12] - str r5, [r0, #20] - str r3, [r0, #28] - ldr r3, [r6, #8] - str r3, [r0, #60] - ldr r2, [r6, #8] - str r2, [r0, #52] - ldr r3, [r6, #8] - sub r3, r3, #4 - str r3, [r0, #24] - ldrne r3, [r6, #8] - ldreq r3, [r6, #8] - subne r3, r3, r8, asl #2 - strne r3, [r6, #8] - sub r3, r3, #4 - str r3, [r0, #56] - mov r0, r7 - ldmfd sp!, {r4, r5, r6, r7, r8} - bx lr +do_dispatch_break: + mov pc, lr - ALIGN_CODE -build_normal_synchronized: - stmfd sp!, {r4, r5, r6, r7, r8, sl} - ldr r6, [r0, #8] + .global sanity_check_backtrace +sanity_check_backtrace: + cmp r0, #0 + moveq pc, lr + stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11} +@ Check top frame mov r4, r0 - ldrh sl, [r1, #38] - ldrh r0, [r1, #40] - mov r5, r1 - mov ip, #0 - sub r3, r6, #4 - mvn r1, #0x540 @ form 0xCAFEBABF in r1 - bic r1, r1, #0x14000 - bic r1, r1, #0x35000000 - str r3, [r4, #8] - str ip, [r6, #-4] - ldr r7, [r4, #8] - mov r0, r0, asl #2 - sub r3, r7, #4 - str r3, [r4, #8] - str r1, [r7, #-4] - ldr r3, [r4, #8] - sub r8, r0, #4 - sub r0, r3, #68 - str r0, [r4, #8] - str r5, [r0, #16] - str ip, [r0, #44] - str r0, [r0, #64] - str r2, [r3, #-68] - add r2, r6, r8 - str r2, [r0, #8] - ldr r3, [r5, #8] - add r3, r3, #48 - str r3, [r0, #4] - ldr r2, [r5, #12] - mov r3, #0 - ldr r1, [r2, #12] - str ip, [r0, #32] - str ip, [r0, #48] - str r1, [r0, #12] - str ip, [r0, #20] - str r3, [r0, #28] - ldr r3, [r4, #8] - str r3, [r0, #60] - ldr r2, [r4, #8] - sub ip, r2, #8 - str ip, [r4, #8] - ldr r3, [r5, #24] - tst r3, #8 - ldrne r3, [r5, #12] - ldreq r1, [r6, r8] - ldrne r2, [r3, #16] - ldrne r1, [r2, #60] - cmp sl, #0 - str r1, [ip, #4] - ldr r2, [r4, #8] - str r2, [r0, #52] - ldr r3, [r4, #8] - sub r3, r3, #4 - str r3, [r0, #24] - ldrne r3, [r4, #8] - ldreq r3, [r4, #8] - subne r3, r3, sl, asl #2 - strne r3, [r4, #8] - sub r3, r3, #4 - str r3, [r0, #56] - mov r0, r7 - ldmfd sp!, {r4, r5, r6, r7, r8, sl} - bx lr - - ALIGN_CODE -build_native: - ldr ip, [r1, #24] - tst ip, #32 - bne build_native_synchronized -build_native_unsynchronized: - stmfd sp!, {r4, r5, r6, r7} - ldr r6, [r0, #8] - ldrh r4, [r1, #42] - mov r5, r0 - mov r7, #0 - sub r3, r6, #4 - mvn ip, #0x540 @ form 0xCAFEBABF in ip + mvn ip, #0x540 @ form 0xCAFEBABF bic ip, ip, #0x14000 bic ip, ip, #0x35000000 - str r3, [r0, #8] - str r7, [r6, #-4] - ldr r0, [r0, #8] - mov r4, r4, asl #2 - sub r3, r0, #4 - str r3, [r5, #8] - str ip, [r0, #-4] - ldr r3, [r5, #8] - sub r4, r4, #4 - sub ip, r3, #68 - add r6, r6, r4 - str ip, [r5, #8] - str r2, [r3, #-68] - str r6, [ip, #8] - str r1, [ip, #16] - str ip, [ip, #64] - str r7, [ip, #44] - str r7, [ip, #4] - ldr r2, [r1, #12] - mov r3, #2 - ldr r1, [r2, #12] - str r3, [ip, #28] - str r7, [ip, #32] - str r1, [ip, #12] - str r7, [ip, #48] - str r7, [ip, #20] - ldr r3, [r5, #8] - str r3, [ip, #60] - ldr r2, [r5, #8] - str r2, [ip, #52] - ldr r3, [r5, #8] - sub r3, r3, #4 - str r3, [ip, #24] - ldr r2, [r5, #8] - sub r2, r2, #4 - str r2, [ip, #56] - ldmfd sp!, {r4, r5, r6, r7} - bx lr - - ALIGN_CODE -build_native_synchronized: - stmfd sp!, {r4, r5, r6, r7, r8} - ldr r7, [r0, #8] + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 2nd frame mov r5, r0 - mov ip, #0 - ldrh r0, [r1, #42] - mov r6, r1 - sub r3, r7, #4 - mvn r1, #0x540 @ form 0xCAFEBABF in r1 - bic r1, r1, #0x14000 - bic r1, r1, #0x35000000 - str r3, [r5, #8] - str ip, [r7, #-4] - ldr r8, [r5, #8] - mov r0, r0, asl #2 - sub r3, r8, #4 - str r3, [r5, #8] - str r1, [r8, #-4] - ldr r3, [r5, #8] - sub r0, r0, #4 - sub r4, r3, #68 - str r4, [r5, #8] - str r6, [r4, #16] - str r4, [r4, #64] - str ip, [r4, #44] - str ip, [r4, #4] - str r2, [r3, #-68] - add r3, r7, r0 - str r3, [r4, #8] - ldr r2, [r6, #12] - mov r3, #2 - ldr r1, [r2, #12] - str r3, [r4, #28] - str ip, [r4, #32] - str r1, [r4, #12] - str ip, [r4, #48] - str ip, [r4, #20] - ldr r3, [r5, #8] - str r3, [r4, #60] - ldr r2, [r5, #8] - sub r1, r2, #8 - str r1, [r5, #8] - ldr r3, [r6, #24] - tst r3, #8 - ldrne r3, [r6, #12] - ldreq r0, [r7, r0] - ldrne r2, [r3, #16] - ldrne r0, [r2, #60] - str r0, [r1, #4] - ldr r3, [r5, #8] - mov r0, r8 - str r3, [r4, #52] - ldr r2, [r5, #8] - sub r2, r2, #4 - str r2, [r4, #24] - ldr r3, [r5, #8] - sub r3, r3, #4 - str r3, [r4, #56] - ldmfd sp!, {r4, r5, r6, r7, r8} - bx lr - - ALIGN_CODE - .global asm_generate_method_entry -asm_generate_method_entry: - cmp r0, #6 - movcs r0, #0 - adrcc ip, asm_method_table - ldrcc r0, [ip, r0, lsl #2] - bx lr -asm_method_table: - .word normal_entry - .word normal_entry_synchronized - .word native_entry - .word native_entry_synchronized - .word empty_entry - .word accessor_entry + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 3rd frame + mov r6, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 4th frame + mov r7, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 5th frame + mov r8, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 6th frame + mov r9, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 7th frame + mov r10, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE + ldr r0, [r0] +@ Check 8th frame + mov r11, r0 + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CAFEBABF] + bic r3, ip, #1 + cmp r2, r3 + beq 1f + cmp r2, ip + ABORTNE + ldr r2, [r0, #-ISTATE_NEXT_FRAME + ISTATE_CONSTANTS] + ldr r3, [r0, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] + ldr r3, [r3, #12] + ldr r3, [r3, #12] + cmp r2, r3 + ABORTNE +1: + ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11} + mov pc, lr - ALIGN_CODE - .global native_entry_synchronized -native_entry_synchronized: - stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - mov r1, r0 - sub sp, sp, #60 - add r0, r2, #THREAD_JAVA_STACK_BASE - mov r7, r2 - bl build_native - ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] - add r1, sp, #52 - str r1, [sp, #0] - ldr sl, .L306native_entry_synchronized -.LPIC19native_entry_synchronized: - add sl, pc, sl - str r3, [r0, #0] - ldr r2, [r7, #THREAD_STACK_SIZE] - ldr r3, [r7, #THREAD_STACK_BASE] - sub r9, r0, #72 - rsb r3, r2, r3 - str r0, [r7, #THREAD_TOP_ZERO_FRAME] - rsb r3, r3, r1 - ldr r2, [r9, #8] - cmp r3, #3072 - str r2, [sp, #4] - blt .L294native_entry_synchronized - ldr ip, [r9, #16] - ldr r3, [ip, #24] - ands r0, r3, #32 - moveq r8, r0 - bne .L295native_entry_synchronized -.L243native_entry_synchronized: - ldr r4, [ip, #84] - cmp r4, #0 - beq .L296native_entry_synchronized -.L248native_entry_synchronized: - ldr r3, .L306native_entry_synchronized+4 - ldr r2, [sl, r3] - cmp r4, r2 - beq .L297native_entry_synchronized -.L249native_entry_synchronized: - ldr r2, [r4, #4] - ldr ip, [ip, #80] - ldr r1, [r7, #THREAD_JAVA_SP] - mov r2, r2, asl #2 - rsb r2, r2, #0 - str ip, [sp, #8] - add r5, r1, r2 - str r5, [r7, #THREAD_JAVA_SP] - add r3, r7, #THREAD_JNI_ENVIRONMENT - str r3, [sp, #52] - ldr r3, [sp, #0] - add lr, r5, #4 - str r3, [r1, r2] - mov r3, #0 - str r3, [sp, #48] - ldr r2, [r9, #16] - ldr r3, [r2, #24] - tst r3, #8 - bne .L298native_entry_synchronized -.L250native_entry_synchronized: - rsb r3, r5, lr - ldr r2, [r4, #4] - mov ip, r3, asr #2 - cmp ip, r2 - bge .L299native_entry_synchronized - ldr fp, .L306native_entry_synchronized+8 - add r3, ip, #6 - add r1, r4, #24 - mov r3, r3, asl #2 - str r1, [sp, #12] - ldr r6, [sl, fp] - add r1, r4, r3 - ldr r0, [sp, #4] - b .L258native_entry_synchronized -.L257native_entry_synchronized: - cmp r3, #8 - subeq r3, r0, #4 - streq r3, [lr], #4 - ldreq r2, [r4, #4] - add ip, ip, #1 - subeq r0, r3, #4 - cmp ip, r2 - add r1, r1, #4 - bge .L252native_entry_synchronized -.L258native_entry_synchronized: - ldr r3, [r1, #0] - cmp r3, r6 - beq .L300native_entry_synchronized - ldr r3, [r3, #0] - cmp r3, #4 - bne .L257native_entry_synchronized -.L293native_entry_synchronized: - str r0, [lr], #4 -.L291native_entry_synchronized: - ldr r2, [r4, #4] - add ip, ip, #1 - cmp ip, r2 - sub r0, r0, #4 - add r1, r1, #4 - blt .L258native_entry_synchronized -.L252native_entry_synchronized: - ldr r0, [r7, #THREAD_TOP_ZERO_FRAME] - ldr r1, [sp, #8] - mov r3, r5 - str r0, [r7, #THREAD_LAST_JAVA_SP] - mov r2, #_thread_in_native +#ifdef DISPATCH_LOOP +@ r0 = bytecode +@ jpc has been updated +dispatch_loop: + TRACE_CODE +dispatch_check_constpool: + CHECK_CONSTPOOL +dispatch_check_locals: + CHECK_LOCALS +dispatch_check_stack: + CHECK_STACK +dispatch_check_frame: + CHECK_FRAME +dispatch_check_backtrace: + CHECK_BACKTRACE +dispatch_break: + BREAK_DISPATCH + ldrb r1, [jpc, #2] + ldr ip, [dispatch, r0, lsl #2] + ldrb r2, [jpc, #1] + ands lr, ip, #7 + moveq pc, ip + ldrb r1, [jpc, lr] + bic ip, ip, #7 + ldr ip, [ip, r1, lsl #2] + mov pc, ip +#endif + +is_subtype_of: + ldr r2, [r1, #16] + add ip, r0, r2 + ldr ip, [ip, #-8] + cmp ip, r1 + moveq r0, #1 + bxeq lr + cmp r2, #20 + movne r0, #0 + bxne lr + b _ZNK5Klass23search_secondary_supersEP12klassOopDesc + +HandleC: + stmfd sp!, {r4, r5, r6, lr} + ldr r3, HandleC_adcons + subs r5, r1, #0 + mov r4, r0 +.HandleC_pic: + add r3, pc, r3 + streq r5, [r0, #0] + beq 2f + ldr r2, HandleC_adcons+4 + ldr r3, [r3, r2] + ldr r0, [r3, #0] + bl pthread_getspecific + ldr r3, [r0, #THREAD_HANDLE_AREA] + ldr r0, [r3, #8] + ldr r1, [r3, #12] + add r2, r0, #4 + cmp r2, r1 + strls r2, [r3, #8] + bhi 3f +1: + str r5, [r0, #0] + str r0, [r4, #0] +2: mov r0, r4 - str r2, [r7, #THREAD_STATE] - add r2, sp, #40 - bl ffi_call - ldr r2, .L306native_entry_synchronized+12 - mov r3, #_thread_in_native_trans - str r3, [r7, #THREAD_STATE] - ldr r3, [sl, r2] - ldr r1, [r3, #0] - cmp r1, #1 - ble .L259native_entry_synchronized - ldr r3, .L306native_entry_synchronized+16 - ldr r2, [sl, r3] - ldrb r1, [r2, #0] @ zero_extendqisi2 - cmp r1, #0 - bne .L301native_entry_synchronized - ldr r3, .L306native_entry_synchronized+20 - ldr r2, .L306native_entry_synchronized+24 - ldr r0, [sl, r3] - ldr r1, [sl, r2] - mov r2, #1 + ldmfd sp!, {r4, r5, r6, pc} +3: + mov r0, r3 + mov r1, #4 + bl _ZN5Arena4growEj + b 1b +HandleC_adcons: + .word _GLOBAL_OFFSET_TABLE_-(.HandleC_pic+8) + .word _ZN18ThreadLocalStorage13_thread_indexE(GOT) + +HandleMarkCleanerD: + stmfd sp!, {r4, r5, r6, lr} ldr r3, [r0, #0] - ldr ip, [r1, #0] - and r3, r3, r7, lsr #3 - str r2, [ip, r3] -.L259native_entry_synchronized: - ldr r3, .L306native_entry_synchronized+28 - ldr r2, [sl, r3] - ldr r1, [r2, #0] - cmp r1, #0 - beq .L302native_entry_synchronized -.L261native_entry_synchronized: - mov r0, r7 - bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ - .p2align 3 -.L262native_entry_synchronized: - mov r3, #_thread_in_Java - mov r2, #0 - str r3, [r7, #THREAD_STATE] - str r2, [r7, #THREAD_LAST_JAVA_SP] - ldr r0, [sp, #12] - ldr r1, [r4, #4] - ldr r2, [sl, fp] - ldr r3, [r0, r1, asl #2] - cmp r3, r2 - beq .L303native_entry_synchronized -.L263native_entry_synchronized: - ldr r2, [r7, #THREAD_ACTIVE_HANDLES] - cmp r8, #0 - mov r3, #0 - str r3, [r2, #128] - beq .L292native_entry_synchronized - ldr r1, [r7, #THREAD_PENDING_EXC] - cmp r1, #0 - beq .L304native_entry_synchronized -.L241native_entry_synchronized: - ldr r2, [r7, #THREAD_TOP_ZERO_FRAME] - cmp r1, #0 - add r1, r2, #4 - str r1, [r7, #THREAD_JAVA_SP] - ldr r3, [r2, #0] - str r3, [r7, #THREAD_TOP_ZERO_FRAME] - ldr r2, [r9, #16] - ldrh r3, [r2, #42] - mov r3, r3, asl #2 - add r4, r1, r3 - str r4, [r7, #THREAD_JAVA_SP] - beq .L305native_entry_synchronized -.L279native_entry_synchronized: - add sp, sp, #60 - ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} -.L300native_entry_synchronized: + mov r6, r0 + ldr r4, [r3, #40] + ldr r0, [r4, #8] + ldr r5, [r4, #4] ldr r3, [r0, #0] cmp r3, #0 - beq .L293native_entry_synchronized - ldr r3, [r7, #THREAD_JAVA_SP] - sub r2, r3, #4 - str r2, [r7, #THREAD_JAVA_SP] - str r0, [r3, #-4] - ldr r2, [r7, #THREAD_JAVA_SP] - str r2, [lr], #4 - b .L291native_entry_synchronized -.L302native_entry_synchronized: - ldr r3, [r7, #THREAD_SUSPEND_FLAGS] - cmp r3, #0 - beq .L262native_entry_synchronized - mov r0, r7 - bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ - b .L262native_entry_synchronized -.L298native_entry_synchronized: - ldr r1, [r2, #12] - add r3, sp, #56 - mov r2, r9 - ldr r0, [r1, #16] - add lr, lr, #4 - ldr r1, [r0, #60] - str r1, [r2, #48]! - str r2, [r3, #-8]! - str r3, [r5, #4] - b .L250native_entry_synchronized -.L295native_entry_synchronized: - ldr r8, [r9, #52] - ldr fp, .L306native_entry_synchronized+32 - ldr r5, [r8, #4] + beq 1f + bl _ZN5Chunk9next_chopEv + ldr r0, [r4, #8] +1: + str r0, [r5, #4] + mov r0, r6 + ldr r3, [r4, #12] + str r3, [r5, #8] + ldr r3, [r4, #16] + str r3, [r5, #12] + ldmfd sp!, {r4, r5, r6, pc} + +cmpxchg_ptr: + stmfd sp!, {r4, r5, r6, r7, r8, lr} + mov r6, #0xffffffc0 + mov r4, r2 + mov r7, r0 + mov r5, r1 + bic r6, r6, #0xf000 + mov r8, r2 +1: ldr r3, [r5, #0] - orr r4, r3, #1 - str r4, [r8, #0] - .p2align 3 -.L245native_entry_synchronized: - ldr r6, [r5, #0] mov r0, r4 - cmp r4, r6 - mov r1, r8 + mov r1, r7 mov r2, r5 - bne .L244native_entry_synchronized - blx fp + cmp r4, r3 + bne 2f + blx r6 cmp r0, #0 - bne .L245native_entry_synchronized -.L244native_entry_synchronized: - cmp r4, r6 - beq .L290native_entry_synchronized - bic r1, r4, #3 - ldr r3, [r7, #0] - mov r0, r7 - ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] - blx ip - subs r4, r0, #0 - beq .L247native_entry_synchronized - mov r3, #0 - str r3, [r8, #0] - ldr ip, [r9, #16] - b .L243native_entry_synchronized -.L304native_entry_synchronized: - ldr r6, [r8, #0] - ldr r5, [r8, #4] - cmp r6, #0 - str r1, [r8, #4] - ldrne fp, .L306native_entry_synchronized+32 - beq .L292native_entry_synchronized - .p2align 3 -.L283native_entry_synchronized: - ldr r4, [r5, #0] + bne 1b mov r0, r8 - cmp r8, r4 - mov r1, r6 - mov r2, r5 - bne .L265native_entry_synchronized - blx fp - cmp r0, #0 - bne .L283native_entry_synchronized -.L265native_entry_synchronized: - cmp r8, r4 - beq .L292native_entry_synchronized - add r4, sp, #16 + ldmfd sp!, {r4, r5, r6, r7, r8, pc} +2: + mov r8, r3 + mov r0, r8 + ldmfd sp!, {r4, r5, r6, r7, r8, pc} + +ThreadInVMfromJavaD: + stmfd sp!, {r4, r5, r6, lr} + ldr r5, ThreadInVMfromJavaD_adcons + ldr r3, ThreadInVMfromJavaD_adcons+4 + mov r2, #_thread_in_vm_trans +.ThreadInVMfromJavaD_pic: + add r5, pc, r5 + ldr r6, [r0, #0] + mov r4, r0 + ldr r3, [r5, r3] + str r2, [r6, #THREAD_STATE] + ldr r3, [r3, #0] + cmp r3, #1 + ble 1f + ldr r3, ThreadInVMfromJavaD_adcons+8 + ldr r3, [r5, r3] + ldrb r3, [r3, #0] @ zero_extendqisi2 + cmp r3, #0 + bne 6f + ldr r3, ThreadInVMfromJavaD_adcons+12 + mov r1, #1 + ldr r2, ThreadInVMfromJavaD_adcons+16 + ldr r3, [r5, r3] + ldr r2, [r5, r2] + ldr r3, [r3, #0] + ldr r2, [r2, #0] + and r3, r3, r6, lsr #3 + str r1, [r2, r3] +1: + ldr r3, ThreadInVMfromJavaD_adcons+20 + ldr r3, [r5, r3] + ldr r3, [r3, #0] + cmp r3, #0 + bne 5f +2: + mov r3, #8 + str r3, [r6, #THREAD_STATE] + ldr r0, [r4, #0] + ldr r3, [r0, #THREAD_SPECIALRUNTIMEEXITCONDITION] + cmp r3, #0 + bne 3f + ldr r3, [r0, #THREAD_SUSPEND_FLAGS] + tst r3, #_thread_external_suspend + beq 4f +3: + mov r1, #1 + bl _ZN10JavaThread37handle_special_runtime_exit_conditionEb mov r0, r4 - mov r1, r7 - str r5, [r8, #4] - bl _ZN10HandleMark10initializeEP6Thread - ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] - mov r0, r7 - mov r1, r8 - str r3, [r7, #THREAD_LAST_JAVA_SP] - bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - mov r3, #0 + ldmfd sp!, {r4, r5, r6, pc} +4: + ldr r3, [r0, #THREAD_SUSPEND_FLAGS] + tst r3, #_thread_deopt_suspend + bne 3b mov r0, r4 - str r3, [r7, #THREAD_LAST_JAVA_SP] - bl _ZN10HandleMarkD1Ev -.L292native_entry_synchronized: - ldr r1, [r7, #4] - b .L241native_entry_synchronized -.L294native_entry_synchronized: - str r0, [r7, #THREAD_LAST_JAVA_SP] - mov r0, r7 - bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread - mov r3, #0 - ldr r1, [r7, #THREAD_PENDING_EXC] - str r3, [r7, #THREAD_LAST_JAVA_SP] - b .L241native_entry_synchronized -.L247native_entry_synchronized: - ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] - mov r1, r8 - mov r0, r7 - str r3, [r7, #THREAD_LAST_JAVA_SP] - bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock - ldr r1, [r7, #THREAD_PENDING_EXC] - str r4, [r7, #THREAD_LAST_JAVA_SP] - cmp r1, #0 - bne .L241native_entry_synchronized - .p2align 3 -.L290native_entry_synchronized: - ldr ip, [r9, #16] - b .L243native_entry_synchronized -.L301native_entry_synchronized: - ldr r3, .L306native_entry_synchronized+28 - ldr r2, [sl, r3] - ldr r1, [r2, #0] - cmp r1, #0 - bne .L261native_entry_synchronized - b .L302native_entry_synchronized -.L303native_entry_synchronized: - ldr r3, [sp, #40] - cmp r3, #0 - streq r3, [r9, #48] - ldrne r3, [r3, #0] - strne r3, [r9, #48] - b .L263native_entry_synchronized -.L305native_entry_synchronized: - ldr r0, [r9, #16] - bl _ZNK13methodOopDesc11result_typeEv - ldr r2, .L306native_entry_synchronized+36 - ldr r1, [sl, r2] - ldr r3, [r1, r0, asl #2] - sub r3, r4, r3, asl #2 - str r3, [r7, #THREAD_JAVA_SP] - ldr r0, [r9, #16] - bl _ZNK13methodOopDesc11result_typeEv - sub r0, r0, #4 - cmp r0, #9 - addls pc, pc, r0, asl #2 - b .L279native_entry_synchronized -.L278native_entry_synchronized: - b .L269native_entry_synchronized - b .L270native_entry_synchronized - b .L271native_entry_synchronized - b .L272native_entry_synchronized - b .L273native_entry_synchronized - b .L274native_entry_synchronized - b .L275native_entry_synchronized - b .L276native_entry_synchronized - b .L277native_entry_synchronized - b .L277native_entry_synchronized -.L299native_entry_synchronized: - add r0, r4, #24 - ldr fp, .L306native_entry_synchronized+8 - str r0, [sp, #12] - b .L252native_entry_synchronized -.L277native_entry_synchronized: - ldr r3, [r9, #48] - ldr r0, [sp, #4] - str r3, [r0, #0] - b .L279native_entry_synchronized -.L276native_entry_synchronized: - add r3, sp, #40 - ldmia r3, {r3-r4} - ldr r0, [sp, #4] - stmda r0, {r3-r4} - b .L279native_entry_synchronized -.L275native_entry_synchronized: - ldr r3, [sp, #40] - ldr r2, [sp, #4] - str r3, [r2, #0] - b .L279native_entry_synchronized -.L274native_entry_synchronized: - ldrsh r3, [sp, #40] - ldr r1, [sp, #4] - str r3, [r1, #0] - b .L279native_entry_synchronized -.L273native_entry_synchronized: - ldrsb r3, [sp, #40] - ldr r0, [sp, #4] - str r3, [r0, #0] - b .L279native_entry_synchronized -.L272native_entry_synchronized: - add r3, sp, #40 - ldmia r3, {r3-r4} - ldr r2, [sp, #4] - stmda r2, {r3-r4} - b .L279native_entry_synchronized -.L271native_entry_synchronized: - ldr r3, [sp, #40] @ float - ldr r1, [sp, #4] - str r3, [r1, #0] @ float - b .L279native_entry_synchronized -.L270native_entry_synchronized: - ldrh r3, [sp, #40] - ldr r2, [sp, #4] - str r3, [r2, #0] - b .L279native_entry_synchronized -.L269native_entry_synchronized: - ldr r1, [sp, #4] - ldrb r3, [sp, #40] @ zero_extendqisi2 - subs r3, r3, #0 - movne r3, #1 - str r3, [r1, #0] - b .L279native_entry_synchronized -.L296native_entry_synchronized: - ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] - mov r0, r7 - str r3, [r7, #THREAD_LAST_JAVA_SP] - ldr r1, [r9, #16] - bl _ZN18InterpreterRuntime19prepare_native_callEP10JavaThreadP13methodOopDesc - ldr r1, [r7, #THREAD_PENDING_EXC] - str r4, [r7, #THREAD_LAST_JAVA_SP] - cmp r1, #0 - bne .L241native_entry_synchronized - ldr ip, [r9, #16] - ldr r4, [ip, #84] - b .L248native_entry_synchronized -.L297native_entry_synchronized: - ldr r3, [r7, #THREAD_TOP_ZERO_FRAME] - mov r2, #0 - mov r0, r7 - str r3, [r7, #THREAD_LAST_JAVA_SP] - mov r3, r2 - ldr r1, [r9, #16] - bl _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_ - ldr r1, [r7, #THREAD_PENDING_EXC] - mov r3, #0 - cmp r1, #0 - str r3, [r7, #THREAD_LAST_JAVA_SP] - mov r4, r0 - bne .L241native_entry_synchronized - ldr ip, [r9, #16] - b .L249native_entry_synchronized -.L307native_entry_synchronized: - ALIGN_DATA -.L306native_entry_synchronized: - .word _GLOBAL_OFFSET_TABLE_-(.LPIC19native_entry_synchronized+8) - .word _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_(GOT) - .word ffi_type_pointer(GOT) + ldmfd sp!, {r4, r5, r6, pc} +5: + mov r0, r6 + bl _ZN20SafepointSynchronize5blockEP10JavaThread + b 2b +6: + mov r3, #0xffffffa0 + bic r3, r3, #0xf000 + blx r3 + b 1b +ThreadInVMfromJavaD_adcons: + .word _GLOBAL_OFFSET_TABLE_-(.ThreadInVMfromJavaD_pic+8) .word _ZN2os16_processor_countE(GOT) .word UseMembar(GOT) .word _ZN2os20_serialize_page_maskE(GOT) .word _ZN2os19_mem_serialize_pageE(GOT) .word _ZN20SafepointSynchronize6_stateE(GOT) - .word -61504 - .word type2size(GOT) + +#define oop_address_tmp tmp1 +#define oop_value_tmp tmp2 +#define oop_lr locals + + ALIGN_CODE +oop_store: + mov oop_lr, lr +@ mov oop_address_tmp, r0 +@ mov oop_value_tmp, r1 + ldr r3, [dispatch, #oopDesc_Address-XXX] + ldr r3, [r3, #0] + ldr r2, [r3, #8] + cmp r2, #1 + beq 1f + mov r0, r3 + mov r1, oop_address_tmp + ldr r3, [r3, #0] + mov r2, oop_value_tmp + mov lr, pc + ldr pc, [r3, #48] +1: + ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] + ldrb r3, [r3] + cmp r3, #0 + beq 2f + mov r3, #0xffffffa0 + bic r3, r3, #0xf000 + blx r3 +2: + mov lr, oop_lr + CACHE_LOCALS + ldr r3, [dispatch, #oopDesc_Address-XXX] + str oop_value_tmp, [oop_address_tmp, #0] + ldr r3, [r3, #0] + ldr r2, [r3, #8] + cmp r2, #1 + beq 3f + mov r0, r3 + mov r1, oop_address_tmp + mov r2, oop_value_tmp + ldr r3, [r3, #0] + ldr pc, [r3, #52] +3: + ldr r3, [r3, #76] + mov r2, #0 + strb r2, [r3, oop_address_tmp, lsr #9] + mov pc, lr + +build_frame: + mov r3, r0 + ldr r0, [r1, #METHOD_ACCESSFLAGS] + stmfd arm_sp!, {r4, r5, r6, r7, r8} + ands r7, r0, #JVM_ACC_SYNCHRONIZED + movne r7, #2 + tst r0, #JVM_ACC_NATIVE + mov r4, #0 + movne r5, #0 + ldreqh r6, [r1, #METHOD_MAXLOCALS] + ldrneh r6, [r1, #METHOD_SIZEOFPARAMETERS] + ldreq r0, [r3, #8] + subeq r6, r6, #1 + ldrne r0, [r3, #8] + subne r6, r6, #1 + ldreqh r5, [r1, #METHOD_MAXSTACK] + addeq r6, r0, r6, asl #2 + addne r6, r0, r6, asl #2 + sub ip, r0, #4 + str ip, [r3, #8] + mvn ip, #0x540 @ form 0xCAFEBABF + bic ip, ip, #0x14000 + bic ip, ip, #0x35000000 + str r4, [r0, #-4] + ldr r0, [r3, #8] + sub r8, r0, #4 + str r8, [r3, #8] + str ip, [r0, #-4] + ldr r8, [r3, #8] + sub ip, r8, #68 + str ip, [r3, #8] + str r2, [r8, #-68] + mov r8, #0 + str r4, [ip, #44] + str r6, [ip, #8] + str r1, [ip, #16] + str ip, [ip, #64] + ldr r2, [r1, #METHOD_ACCESSFLAGS] + tst r2, #JVM_ACC_NATIVE + mov r2, #0 + ldreq r4, [r1, #METHOD_CONSTMETHOD] + addeq r4, r4, #CONSTMETHOD_CODEOFFSET + str r4, [ip, #4] + ldr r4, [r1, #METHOD_CONSTANTS] + ldr r4, [r4, #CONSTANTPOOL_CACHE] + str r8, [ip, #28] + str r2, [ip, #32] + str r4, [ip, #12] + str r2, [ip, #48] + str r2, [ip, #20] + ldr r2, [r3, #8] + str r2, [ip, #60] + ldr r2, [r1, #METHOD_ACCESSFLAGS] + tst r2, #JVM_ACC_SYNCHRONIZED + beq .L10 + ldr r2, [r3, #8] + sub r7, r2, r7, asl #2 + str r7, [r3, #8] + ldr r2, [r1, #METHOD_ACCESSFLAGS] + tst r2, #JVM_ACC_STATIC + ldrne r2, [r1, #METHOD_CONSTANTS] + ldreq r2, [r6, #0] + ldrne r2, [r2, #16] + ldrne r2, [r2, #60] + str r2, [r7, #4] +.L10: + ldr r2, [r3, #8] + cmp r5, #0 + str r2, [ip, #52] + ldr r2, [r3, #8] + sub r2, r2, #4 + str r2, [ip, #24] + ldrne r2, [r3, #8] + ldreq r5, [r3, #8] + subne r5, r2, r5, asl #2 + strne r5, [r3, #8] + sub r5, r5, #4 + str r5, [ip, #56] + ldmfd arm_sp!, {r4, r5, r6, r7, r8} + bx lr + + ALIGN_CODE + .global asm_generate_method_entry +asm_generate_method_entry: + mov r3, r0 + mov r0, #0 + + adrl ip, dispatch_init_adcon + ldm ip, {r1, r2} + add r1, r1, ip + add r1, r1, r2 @ r1->dispatch + +#ifndef USE_COMPILER + ldr r2, [r1, #UseCompiler_Address-XXX] + ldrb r2, [r2] + cmp r2, #0 + bne 1f +#endif + + ldr r2, [r1, #can_post_interpreter_events-XXX] + ldrb r2, [r2] + cmp r2, #0 + bne 1f + + ldr r2, [r1, #PrintCommandLineFlags_Address-XXX] + ldrb r2, [r2] + cmp r2, #0 + bne 1f + + cmp r3, #6 + adrcc ip, asm_method_table + ldrcc r0, [ip, r3, lsl #2] +1: + bx lr +asm_method_table: + .word normal_entry + .word normal_entry_synchronized +#ifdef NATIVE_ENTRY + .word native_entry +#else + .word 0 +#endif + .word 0 @ cppInterpreter can handle native_entry_synchronized + .word empty_entry + .word accessor_entry ALIGN_CODE .global empty_entry @@ -1133,138 +1236,140 @@ ldr r1, [r0, #15*4] adr ip, abort_table abort_loop: - ldr r2, [ip], #4 + ldr r2, [ip], #8 cmp r2, #0 moveq r0, #0 bxeq lr cmp r2, r1 bne abort_loop - adr r3, abort_table+4 - sub r3, ip, r3 - - adr ip, jpc_correction_table - ldrb r3, [ip, r3, lsr #2] + ldr r3, [ip, #-4] + cmp r3, #8 + bcs 1f ldr ip, [r0, #5*4] sub ip, ip, r3 str ip, [r0, #5*4] adrl r3, null_ptr_exception +1: str r3, [r0, #15*4] do_setcontext: mov r0, #1 bx lr abort_table: - .word .abortentry5 - .word .abortentry6 - .word .abortentry7 - .word .abortentry8 - .word .abortentry9 - .word .abortentry10 - .word .abortentry11 - .word .abortentry12 - .word .abortentry13 - - .word .abortentry19 - .word .abortentry20 - .word .abortentry21 - .word .abortentry22 - .word .abortentry23 - .word .abortentry24 - .word .abortentry25 - .word .abortentry26 - .word .abortentry27 - .word .abortentry28 - .word .abortentry29 - .word .abortentry30 - .word .abortentry31 - .word .abortentry32 - - .word .abortentry38 - .word .abortentry39 - .word .abortentry40 - .word .abortentry41 - .word .abortentry42 - .word .abortentry42_1 - .word .abortentry43 - .word .abortentry44 - .word .abortentry45 - .word .abortentry46 - .word .abortentry47 - .word .abortentry48 - .word .abortentry49 - .word .abortentry50 - .word .abortentry51 - .word .abortentry52 - - .word .abortentry58 - .word .abortentry59 - .word .abortentry60 - - .word .abortentry61 - .word .abortentry62 - .word .abortentry63 - .word .abortentry64 - .word .abortentry65 - .word .abortentry66 - .word .abortentry67 - .word .abortentry68 - .word .abortentry69 - .word .abortentry70 - .word .abortentry71 - .word .abortentry72 - - .word .abortentry73 - .word .abortentry74 - .word .abortentry75 - .word .abortentry76 - .word .abortentry77 - - .word .abortentry78 - .word .abortentry79 - .word .abortentry80 - .word .abortentry81 - .word .abortentry82 - .word .abortentry83 - .word .abortentry84 - .word .abortentry85 - .word .abortentry86 - .word .abortentry87 - - .word .abortentry88 - .word .abortentry89 - .word .abortentry90 - .word .abortentry91 - .word .abortentry92 - .word .abortentry93 - .word .abortentry94 - .word .abortentry95 - .word .abortentry96 - .word .abortentry97 - .word .abortentry98 - .word .abortentry99 - .word .abortentry100 - .word .abortentry101 - .word .abortentry102 - .word .abortentry103 - .word .abortentry104 - .word .abortentry105 - .word .abortentry106 - .word .abortentry107 - .word .abortentry108 - .word .abortentry109 + .word .abortentry5, 1 + .word .abortentry6, 1 + .word .abortentry7, 1 + .word .abortentry8, 1 + .word .abortentry9, 1 + .word .abortentry10, 1 + .word .abortentry11, 1 + .word .abortentry12, 1 + .word .abortentry13, 1 + + FBC .word .abortentry19, 1 + FBC .word .abortentry20, 1 + FBC .word .abortentry21, 1 + FBC .word .abortentry22, 1 + FBC .word .abortentry23, 1 + FBC .word .abortentry24, 1 + FBC .word .abortentry25, 1 + FBC .word .abortentry26, 1 + FBC .word .abortentry27, 1 + FBC .word .abortentry28, 1 + FBC .word .abortentry29, 1 + FBC .word .abortentry30, 1 + FBC .word .abortentry31, 1 + FBC .word .abortentry32, 1 + + FBC .word .abortentry38, 2 + FBC .word .abortentry39, 3 + FBC .word .abortentry40, 4 + FBC .word .abortentry41, 3 + FBC .word .abortentry42, 2 + FBC .word .abortentry42_1, 2 + FBC .word .abortentry43, 0 + FBC .word .abortentry44, 1 + FBC .word .abortentry45, 3 + FBC .word .abortentry46, 2 + FBC .word .abortentry47, 0 + FBC .word .abortentry48, 1 + FBC .word .abortentry49, 0 + FBC .word .abortentry50, 1 + FBC .word .abortentry51, 0 + FBC .word .abortentry52, 1 + + FBC .word .abortentry58, 2 + FBC .word .abortentry59, 2 + FBC .word .abortentry60, 2 + + NSP FBC .word .abortentry61, 0 + NSP FBC .word .abortentry62, 0 + NSP FBC .word .abortentry63, 0 + NSP FBC .word .abortentry64, 0 + NSP FBC .word .abortentry65, 0 + NSP FBC .word .abortentry66, 0 + NSP FBC .word .abortentry67, 0 + NSP FBC .word .abortentry68, 0 + NSP FBC .word .abortentry69, 0 + NSP FBC .word .abortentry70, 0 + NSP FBC .word .abortentry71, 0 + NSP FBC .word .abortentry72, 0 + + FBC .word .abortentry73, 1 + FBC .word .abortentry74, 1 + FBC .word .abortentry75, 1 + FBC .word .abortentry76, 1 + FBC .word .abortentry77, 1 + + FBC .word .abortentry78, 3 + FBC .word .abortentry79, 3 + FBC .word .abortentry80, 3 + FBC .word .abortentry81, 3 + FBC .word .abortentry82, 3 + FBC .word .abortentry83, 3 + FBC .word .abortentry84, 3 + FBC .word .abortentry85, 3 + FBC .word .abortentry86, 3 + FBC .word .abortentry87, 3 + + FBC .word .abortentry88, 3 + FBC .word .abortentry89, 5 + FBC .word .abortentry90, 4 + FBC .word .abortentry91, 4 + NSP FBC .word .abortentry92, 3 + NSP FBC .word .abortentry93, 3 + NSP FBC .word .abortentry94, 3 + NSP FBC .word .abortentry95, 3 + NSP FBC .word .abortentry96, 3 + NSP FBC .word .abortentry97, 3 + NSP FBC .word .abortentry98, 3 + NSP FBC .word .abortentry99, 3 + NSP FBC .word .abortentry100, 3 + NSP FBC .word .abortentry101, 3 + NSP FBC .word .abortentry102, 3 + NSP FBC .word .abortentry103, 3 + FBC .word .abortentry104, 0 + FBC .word .abortentry105, 1 + FBC .word .abortentry106, 1 + FBC .word .abortentry107, 1 + FBC .word .abortentry108, 1 + FBC .word .abortentry109, 1 + .word .abortentry110, 0 + + FBC .word .abortentry111, 3 + FBC .word .abortentry112, 3 + + FBC .word .abortentry113, 0 + .word .abortentry114, 1 + .word .abortentry115, 0 + .word .abortentry116, abstractmethod_exception + FBC .word .abortentry117, 0 + .word .abortentry118, 0 + .word .abortentry119, return_throw_illegal_monitor_state + FBC .word .abortentry120, 0 .word 0 -jpc_correction_table: - .byte 1, 1, 1, 1, 1, 1, 1, 1, 1 - .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - .byte 2, 3, 4, 3, 2, 2, 0, 1, 3, 2, 0, 1, 0, 1, 0, 1 - .byte 2, 2, 2 - .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - .byte 1, 1, 1, 1, 1 - .byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 - .byte 3, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1 - ALIGN_WORD #else .global asm_check_null_ptr @@ -1274,44 +1379,58 @@ #endif +#ifdef NATIVE_ENTRY ALIGN_CODE fast_native_entry: - ldr r2, [istate, #ISTATE_THREAD] + mov r2, tmp1 mov r11, tmp2 - ldrh r1, [r11, #42] +fast_native_entry_with_args: + ldrh r1, [r11, #METHOD_SIZEOFPARAMETERS] ldr r4, [r2, #THREAD_JAVA_SP] - ldr ip, [r2, #THREAD_TOP_ZERO_FRAME] + ldr r3, [r2, #THREAD_TOP_ZERO_FRAME] mov r0, #0 - mvn r10, #0x540 @ form 0xCAFEBABF in r10 - bic r10, r10, #0x14000 - bic r10, r10, #0x35000000 - sub r9, r4, #76 - mov r7, r9 + mvn ip, #0x540 @ form 0xCAFEBABF in ip + sub r9, r4, #FRAME_SIZE + bic ip, ip, #0x14000 str r9, [r2, #THREAD_JAVA_SP] @ drop stack sub r5, r9, #4 @ stack limit = r9 - 4 - mov r3, r9 - stmdb r4, {r0, r3, r5, r7, r9, r10, ip} - str r0, [r9, #ISTATE_CALLEE] - str r0, [r9, #ISTATE_PREV_LINK] + bic ip, ip, #0x35000000 + str r3, [r9, #ISTATE_NEXT_FRAME] + str ip, [r9, #ISTATE_CAFEBABF] + str r9, [r9, #ISTATE_MONITOR_BASE] + str r5, [r9, #ISTATE_STACK_LIMIT] + str r9, [r9, #ISTATE_STACK_BASE] + str r0, [r9, #ISTATE_OOP_TEMP] + +@ str r0, [r9, #ISTATE_CALLEE] +@ str r0, [r9, #ISTATE_PREV_LINK] str r0, [r9, #ISTATE_MSG] - str r0, [r9, #ISTATE_MDX] +@ str r0, [r9, #ISTATE_MDX] + + ldr r10, [r11, #METHOD_CONSTANTS] sub r7, r4, #4 - add r7, r7, r1, lsl #2 mov r5, #0 - ldr r10, [r11, #12] - ldr r10, [r10, #12] - stmia r9, {r2, r5, r7, r10, r11} + add r7, r7, r1, lsl #2 + + ldr r10, [r10, #CONSTANTPOOL_CACHE] + + str r2, [r9, #ISTATE_THREAD] + str r5, [r9, #ISTATE_BCP] + str r7, [r9, #ISTATE_LOCALS] + str r10, [r9, #ISTATE_CONSTANTS] + str r11, [r9, #ISTATE_METHOD] + +@ stmia r9, {r2, r5, r7, r10, r11} + ldr r1, [r2, #THREAD_STACK_SIZE] + ldr r3, [r2, #THREAD_STACK_BASE] add r0, r9, #72 mov r9, r2 -.LPIC18_fast_native_entry: - ldr r2, [r9, #THREAD_STACK_SIZE] - ldr r3, [r9, #THREAD_STACK_BASE] - rsb r3, r2, r3 - rsb r3, r3, sp + rsb r3, r1, r3 + rsb r3, r3, arm_sp cmp r3, #4096 str r0, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r5, [r11, #METHOD_SIGNATUREHANDLER] blt .fast_native_entry_throw_stack_overflow - ldr r5, [r11, #84] cmp r5, #0 bne .fast_native_entry_got_handleraddr str r0, [r9, #THREAD_LAST_JAVA_SP] @@ -1324,7 +1443,7 @@ ldr r11, [r11, #-72 + ISTATE_METHOD] cmp r1, #0 bne .fast_native_entry_exception - ldr r5, [r11, #84] + ldr r5, [r11, #METHOD_SIGNATUREHANDLER] .fast_native_entry_got_handleraddr: ldr r2, [dispatch, #InterpreterRuntime_slow_signature_handler_Address-XXX] cmp r5, r2 @@ -1347,34 +1466,35 @@ .fast_native_entry_get_handler: sub ip, r7, r4 - mov ip, ip, asr #2 - add lr, ip, #4 - bic lr, lr, #1 - add r3, r4, #ISTATE_OOP_TEMP-76 + mov ip, ip, asr #2 mov r4, arm_sp + + add lr, ip, #4 sub arm_sp, arm_sp, #16 - sub arm_sp, arm_sp, lr, lsl #2 - mov lr, arm_sp + bic lr, lr, #1 add r1, r5, #24 + sub arm_sp, arm_sp, lr, lsl #2 add r2, r9, #THREAD_JNI_ENVIRONMENT + + mov lr, arm_sp str r2, [lr], #4 - add r1, r1, #4 - ldr r2, [r11, #24] - tst r2, #8 + ldr r2, [r11, #METHOD_ACCESSFLAGS] + add r1, r1, #4 + tst r2, #JVM_ACC_STATIC beq .do_fast_copy_args - ldr r2, [r11, #12] + ldr r2, [r11, #METHOD_CONSTANTS] ldr r2, [r2, #16] + str r3, [lr], #4 ldr r2, [r2, #60] + add r1, r1, #4 str r2, [r3] - str r3, [lr], #4 - add r1, r1, #4 .do_fast_copy_args: cmp ip, #0 @@ -1383,6 +1503,7 @@ .fast_copy_args: ldr r0, [r1], #4 ldrh r3, [r0, #6] + ldr r2, [r7], #-4 cmp r3, #FFI_TYPE_DOUBLE cmpne r3, #FFI_TYPE_SINT64 beq .fast_copy_long @@ -1390,47 +1511,64 @@ cmp r3, #FFI_TYPE_POINTER beq .fast_copy_ptr - ldr r2, [r7], #-4 - str r2, [lr], #4 subs ip, ip, #1 + str r2, [lr], #4 bge .fast_copy_args b .fast_no_args .fast_copy_long: tst lr, #4 + ldr r3, [r7], #-4 addne lr, lr, #4 - ldmda r7!, {r2, r3} - stmia lr!, {r2, r3} + str r2, [lr, #4] subs ip, ip, #2 + str r3, [lr], #8 bge .fast_copy_args b .fast_no_args .fast_copy_ptr: - ldr r2, [r7], #-4 cmp r2, #0 addne r2, r7, #4 - str r2, [lr], #4 subs ip, ip, #1 + str r2, [lr], #4 bge .fast_copy_args .fast_no_args: ldr r0, [r9, #THREAD_TOP_ZERO_FRAME] - str r0, [r9, #THREAD_LAST_JAVA_SP] - mov r2, #_thread_in_native + + str r0, [r9, #THREAD_LAST_JAVA_SP] str r2, [r9, #THREAD_STATE] - ldr ip, [r11, #80] - ldrh r11, [r11, #42] + ldr ip, [r11, #METHOD_NATIVEHANDLER] + ldrh r11, [r11, #METHOD_SIZEOFPARAMETERS] + +#ifdef CODETRACE + ldr r1, [dispatch, #CodeTrace_Idx-XXX] + cmp r1, #CODETRACE_BUFFER_SIZE + moveq r1, #0 + sub r2, dispatch, #XXX-CodeTrace_Buffer_Base + mov r3, #0x4e << 24 @ 'NATV' -> r3 + orr r3, r3, #0x4a << 16 + orr r3, r3, #0x54 << 8 + orr r3, r3, #0x56 + str r3, [r2, r1] + add r1, r1, #4 + cmp r1, #CODETRACE_BUFFER_SIZE + moveq r1, #0 + str ip, [r2, r1] + add r1, r1, #4 + str r1, [dispatch, #CodeTrace_Idx-XXX] +#endif + ldmia arm_sp!, {r0, r1, r2, r3} blx ip + mov ip, #_thread_in_native_trans mov arm_sp, r4 - mov r3, #_thread_in_native_trans - str r3, [r9, #THREAD_STATE] - ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] + str ip, [r9, #THREAD_STATE] ldr r3, [r3, #0] cmp r3, #0 @@ -1441,6 +1579,7 @@ .fast_native_entry_do_return: mov r3, #_thread_in_Java mov r2, #0 + str r3, [r9, #THREAD_STATE] str r2, [r9, #THREAD_LAST_JAVA_SP] @@ -1448,113 +1587,99 @@ ldr r3, [r5, #4] ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] -@ ldr r11, [r5, #-72 + ISTATE_METHOD] ldr lr, [r5], #4 add r5, r5, r11, lsl #2 ldr ip, [r2, r3, asl #2] - ldrh r2, [ip, #6] - - cmp r2, #FFI_TYPE_POINTER - beq .fast_native_return_obj - - str lr, [r9, #THREAD_TOP_ZERO_FRAME] @ Defer dropping frame until after we have dealt with - @ objects + adr r3, .return_type_table + ldrh r2, [ip, #6] ldr ip, [r9, #THREAD_ACTIVE_HANDLES] - mov r3, #0 @ ECN: OK, not an obj, save to clear handles - str r3, [ip, #128] - cmp r2, #FFI_TYPE_VOID - beq .fast_native_return_void - cmp r2, #FFI_TYPE_FLOAT - cmpne r2, #FFI_TYPE_SINT32 - beq .fast_native_return_w - cmp r2, #FFI_TYPE_DOUBLE - cmpne r2, #FFI_TYPE_SINT64 - beq .fast_native_return_dw - - cmp r2, #FFI_TYPE_UINT16 - beq .fast_native_return_char - cmp r2, #FFI_TYPE_SINT16 - beq .fast_native_return_short - cmp r2, #FFI_TYPE_BOOL - beq .fast_native_return_bool - cmp r2, #FFI_TYPE_SINT8 - beq .fast_native_return_byte + mov tmp1, #0 + ldr pc, [r3, r2, lsl #2] - str r0, [r0, -r0] +.return_type_table: + .word .fast_native_return_void @ FFI_TYPE_VOID == 0 + .word 0 + .word .fast_native_return_w @ FFI_TYPE_FLOAT == 2 + .word .fast_native_return_dw @ FFI_TYPE_DOUBLE == 3 + .word 0 + .word .fast_native_return_bool @ FFI_TYPE_BOOL == 5 + .word .fast_native_return_byte @ FFI_TYPE_SINT8 == 6 + .word .fast_native_return_char @ FFI_TYPE_UINT16 == 7 + .word .fast_native_return_short @ FFI_TYPE_SINT16 == 8 + .word 0 + .word .fast_native_return_w @ FFI_TYPE_SINT32 == 10 + .word 0 + .word .fast_native_return_dw @ FFI_TYPE_SINT64 == 12 + .word 0 + .word .fast_native_return_obj @ FFI_TYPE_POINTER == 14 .fast_native_return_dw: - stmdb r5!, {r0, r1} + str r0, [r5, #-8]! + str lr, [r9, #THREAD_TOP_ZERO_FRAME] + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] + str r1, [r5, #4] + cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - b .fast_native_exit + bne .fast_native_return + ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} .fast_native_return_byte: mov r0, r0, lsl #24 + str lr, [r9, #THREAD_TOP_ZERO_FRAME] mov r0, r0, asr #24 + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! + cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - b .fast_native_exit + bne .fast_native_return + ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} .fast_native_return_char: mov r0, r0, lsl #16 + str lr, [r9, #THREAD_TOP_ZERO_FRAME] mov r0, r0, lsr #16 + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! + cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - b .fast_native_exit + bne .fast_native_return + ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} .fast_native_return_bool: ands r0, r0, #255 + str lr, [r9, #THREAD_TOP_ZERO_FRAME] movne r0, #1 + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] str r0, [r5, #-4]! + cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - b .fast_native_exit - -.fast_native_entry_throw_stack_overflow: - str r0, [r9, #THREAD_LAST_JAVA_SP] - mov r0, r9 - bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread - mov r3, #0 - ldr r1, [r9, #THREAD_PENDING_EXC] - str r3, [r9, #THREAD_LAST_JAVA_SP] -.fast_native_entry_exception: - ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] - ldr r3, [r5], #4 - str r3, [r9, #THREAD_TOP_ZERO_FRAME] - - ldrh r3, [r11, #42] - add r5, r5, r3, lsl #2 - str r5, [r9, #THREAD_JAVA_SP] - b .fast_native_exit - -.fast_native_entry_do_special: - stmdb sp!, {r0, r1} - mov r0, r9 - bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ - ldmia sp!, {r0, r1} - b .fast_native_entry_do_return - + bne .fast_native_return + ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} .fast_native_return_obj: cmp r0, #0 ldrne r0, [r0] str r0, [r5, #-4]! - - str lr, [r9, #THREAD_TOP_ZERO_FRAME] @ Defer dropping frame until after we have dealt with - @ objects - + str lr, [r9, #THREAD_TOP_ZERO_FRAME] + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] + cmp istate, #0 str r5, [r9, #THREAD_JAVA_SP] - ldr r2, [r9, #THREAD_ACTIVE_HANDLES] - mov r3, #0 @ ECN: Now that the object is safe on the Java stack - str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. - b .fast_native_exit + bne .fast_native_return + ldmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} .fast_native_return_short: mov r0, r0, lsl #16 mov r0, r0, asr #16 .fast_native_return_w: str r0, [r5, #-4]! .fast_native_return_void: - str r5, [r9, #THREAD_JAVA_SP] + str lr, [r9, #THREAD_TOP_ZERO_FRAME] + str tmp1, [ip, #JNIHANDLEBLOCK_TOP] .fast_native_exit: + cmp istate, #0 + str r5, [r9, #THREAD_JAVA_SP] + ldmeqfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, pc} +.fast_native_return: ldr r2, [istate, #ISTATE_STACK_LIMIT] sub r5, r5, #4 str r5, [istate, #ISTATE_STACK] @@ -1564,460 +1689,1239 @@ str r2, [r9, #THREAD_JAVA_SP] str r1, [r9, #THREAD_LAST_JAVA_SP] ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_STACK + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] DISPATCH_START 3 - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] DISPATCH_NEXT - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_CP DISPATCH_NEXT cmp r3, #0 DISPATCH_NEXT - bne invokespecial_exception_fix + bne invokenative_exception + DISPATCH_NEXT + CACHE_LOCALS DISPATCH_FINISH +.fast_native_entry_throw_stack_overflow: + str r0, [r9, #THREAD_LAST_JAVA_SP] + mov r0, r9 + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + mov r3, #0 + ldr r1, [r9, #THREAD_PENDING_EXC] + str r3, [r9, #THREAD_LAST_JAVA_SP] +.fast_native_entry_exception: + ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] + ldr r3, [r5], #4 + str r3, [r9, #THREAD_TOP_ZERO_FRAME] + + ldrh r3, [r11, #METHOD_SIZEOFPARAMETERS] + add r5, r5, r3, lsl #2 + b .fast_native_exit + +.fast_native_entry_do_special: + stmdb arm_sp!, {r0, r1} + mov r0, r9 + bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ + ldmia arm_sp!, {r0, r1} + b .fast_native_entry_do_return +#endif // NATIVE_ENTRY + #include "bytecodes_arm.s" Opcode idiv - POP2 r0, r1 + POP tmp2, tmp1 + DISPATCH_START 1 int_div: - cmp r0, #0 - beq .divc_0 + cmp tmp2, #0x20 + DISPATCH_NEXT + adr r3, .div_table + DISPATCH_NEXT + ldrcc pc, [r3, tmp2, lsl #2] - ands a4, a1, #0x80000000 - rsbmi a1, a1, #0 - eors ip, a4, a2, ASR #32 - rsbcs a2, a2, #0 - movs a3, a1 + ands a4, tmp2, #0x80000000 + rsbmi tmp2, tmp2, #0 + eors lr, a4, tmp1, ASR #32 + rsbcs tmp1, tmp1, #0 + movs a3, tmp2 .s_loop: - cmp a3, a2, LSR #8 + cmp a3, tmp1, LSR #8 movls a3, a3, LSL #8 blo .s_loop - cmp a3, a2, LSR #1 + cmp a3, tmp1, LSR #1 bhi .s_jump7 - cmp a3, a2, LSR #2 + cmp a3, tmp1, LSR #2 bhi .s_jump6 - cmp a3, a2, LSR #3 + cmp a3, tmp1, LSR #3 bhi .s_jump5 - cmp a3, a2, LSR #4 + cmp a3, tmp1, LSR #4 bhi .s_jump4 - cmp a3, a2, LSR #5 + cmp a3, tmp1, LSR #5 bhi .s_jump3 - cmp a3, a2, LSR #6 + cmp a3, tmp1, LSR #6 bhi .s_jump2 - cmp a3, a2, LSR #7 + cmp a3, tmp1, LSR #7 bhi .s_jump1 .s_loop2: @ not executed when falling into .s_loop2 movhi a3, a3, LSR #8 - cmp a2, a3, LSL #7 + cmp tmp1, a3, LSL #7 adc a4, a4, a4 - subcs a2, a2, a3, LSL #7 - cmp a2, a3, LSL #6 + subcs tmp1, tmp1, a3, LSL #7 + cmp tmp1, a3, LSL #6 .s_jump1: adc a4, a4, a4 - subcs a2, a2, a3, LSL #6 - cmp a2, a3, LSL #5 + subcs tmp1, tmp1, a3, LSL #6 + cmp tmp1, a3, LSL #5 .s_jump2: adc a4, a4, a4 - subcs a2, a2, a3, LSL #5 - cmp a2, a3, LSL #4 + subcs tmp1, tmp1, a3, LSL #5 + cmp tmp1, a3, LSL #4 .s_jump3: adc a4, a4, a4 - subcs a2, a2, a3, LSL #4 - cmp a2, a3, LSL #3 + subcs tmp1, tmp1, a3, LSL #4 + cmp tmp1, a3, LSL #3 .s_jump4: adc a4, a4, a4 - subcs a2, a2, a3, LSL #3 - cmp a2, a3, LSL #2 + subcs tmp1, tmp1, a3, LSL #3 + cmp tmp1, a3, LSL #2 .s_jump5: adc a4, a4, a4 - subcs a2, a2, a3, LSL #2 - cmp a2, a3, LSL #1 + subcs tmp1, tmp1, a3, LSL #2 + cmp tmp1, a3, LSL #1 .s_jump6: adc a4, a4, a4 - subcs a2, a2, a3, LSL #1 + subcs tmp1, tmp1, a3, LSL #1 .s_jump7: - cmp a2, a3 + cmp tmp1, a3 adc a4, a4, a4 - subcs a2, a2, a3 - cmp a3, a1 + subcs tmp1, tmp1, a3 + cmp a3, tmp2 bne .s_loop2 - DISPATCH_START 1 - movs ip, ip, lsl #1 - DISPATCH_NEXT + movs lr, lr, lsl #1 rsbcs a4, a4, #0 DISPATCH_NEXT DISPATCH_NEXT PUSH a4 DISPATCH_FINISH +.div_table: + .word div_zero_jpc_1 + .word .divc_1 + .word .divc_2 + .word .divc_3 + .word .divc_4 + .word .divc_5 + .word .divc_6 + .word .divc_7 + .word .divc_8 + .word .divc_9 + .word .divc_10 + .word .divc_11 + .word .divc_12 + .word .divc_13 + .word .divc_14 + .word .divc_15 + .word .divc_16 + .word .divc_17 + .word .divc_18 + .word .divc_19 + .word .divc_20 + .word .divc_21 + .word .divc_22 + .word .divc_23 + .word .divc_24 + .word .divc_25 + .word .divc_26 + .word .divc_27 + .word .divc_28 + .word .divc_29 + .word .divc_30 + .word .divc_31 + +.divc_1: + DISPATCH_STATE 3 + DISPATCH_NEXT + DISPATCH_NEXT + PUSH tmp1 + DISPATCH_FINISH +.divc_2: + DISPATCH_STATE 3 + DISPATCH_NEXT + add tmp1, tmp1, tmp1, lsr #31 + mov tmp2, tmp1, asr #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_3: + DISPATCH_STATE 3 + ldr tmp2, .dc_3 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + sub tmp2, a4, tmp1, asr #31 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_4: + DISPATCH_STATE 3 + movs a4, tmp1 + DISPATCH_NEXT + addmi a4, a4, #3 + mov tmp2, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_5: + DISPATCH_STATE 3 + ldr tmp2, .dc_5 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_6: + DISPATCH_STATE 3 + ldr tmp2, .dc_6 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + sub tmp2, a4, tmp1, asr #31 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_7: + DISPATCH_STATE 3 + ldr tmp2, .dc_7 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_8: + DISPATCH_STATE 3 + movs lr, tmp1 + DISPATCH_NEXT + addmi lr, lr, #7 + mov tmp2, lr, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_9: + DISPATCH_STATE 3 + ldr tmp2, .dc_9 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_10: + DISPATCH_STATE 3 + ldr tmp2, .dc_10 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_11: + DISPATCH_STATE 3 + ldr tmp2, .dc_11 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_12: + DISPATCH_STATE 3 + ldr tmp2, .dc_12 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_13: + DISPATCH_STATE 3 + ldr tmp2, .dc_13 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_14: + DISPATCH_STATE 3 + ldr tmp2, .dc_14 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_15: + DISPATCH_STATE 3 + ldr tmp2, .dc_15 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_16: + DISPATCH_STATE 3 + movs lr, tmp1 + DISPATCH_NEXT + addmi lr, lr, #15 + mov tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_17: + DISPATCH_STATE 3 + ldr tmp2, .dc_17 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_18: + DISPATCH_STATE 3 + ldr tmp2, .dc_18 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_19: + DISPATCH_STATE 3 + ldr tmp2, .dc_19 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_20: + DISPATCH_STATE 3 + ldr tmp2, .dc_20 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_21: + DISPATCH_STATE 3 + ldr tmp2, .dc_21 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_22: + DISPATCH_STATE 3 + ldr tmp2, .dc_22 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_23: + DISPATCH_STATE 3 + ldr tmp2, .dc_23 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_24: + DISPATCH_STATE 3 + ldr tmp2, .dc_24 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_25: + DISPATCH_STATE 3 + ldr tmp2, .dc_25 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_26: + DISPATCH_STATE 3 + ldr tmp2, .dc_26 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_27: + DISPATCH_STATE 3 + ldr tmp2, .dc_27 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_28: + DISPATCH_STATE 3 + ldr tmp2, .dc_28 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_29: + DISPATCH_STATE 3 + ldr tmp2, .dc_29 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_30: + DISPATCH_STATE 3 + ldr tmp2, .dc_30 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.divc_31: + DISPATCH_STATE 3 + ldr tmp2, .dc_31 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.dc_7: +.dc_14: + .word 0x92492493 +.dc_15: +.dc_30: + .word 0x88888889 +.dc_23: + .word 0xb21642c9 +.dc_28: + .word 0x92492493 +.dc_29: + .word 0x8d3dcb09 +.dc_31: + .word 0x84210843 +.dc_6: +.dc_12: +.dc_24: + .word 0x2aaaaaab +.dc_19: + .word 0x6bca1af3 +.dc_5: +.dc_10: +.dc_20: + .word 0x66666667 +.dc_21: + .word 0x30c30c31 +.dc_11: +.dc_22: + .word 0x2e8ba2e9 +.dc_26: +.dc_13: + .word 0x4ec4ec4f +.dc_25: + .word 0x51eb851f +.dc_27: + .word 0x4bda12f7 +.dc_3: + .word 0x55555556 +.dc_17: + .word 0x78787879 +.dc_9: +.dc_18: + .word 0x38e38e39 + + Opcode irem - POP2 r0, r1 + POP tmp2, tmp1 + DISPATCH_START 1 int_rem: - cmp r0, #0 - beq .remc_0 + cmp tmp2, #0x20 + DISPATCH_NEXT + adr r3, .rem_table + DISPATCH_NEXT + ldrcc pc, [r3, tmp2, lsl #2] - ands a4, a1, #0x80000000 - rsbmi a1, a1, #0 - eors ip, a4, a2, ASR #32 - rsbcs a2, a2, #0 - movs a3, a1 + ands a4, tmp2, #0x80000000 + rsbmi tmp2, tmp2, #0 + eors lr, a4, tmp1, ASR #32 + rsbcs tmp1, tmp1, #0 + movs a3, tmp2 .r_loop: - cmp a3, a2, LSR #8 + cmp a3, tmp1, LSR #8 movls a3, a3, LSL #8 blo .r_loop - cmp a3, a2, LSR #1 + cmp a3, tmp1, LSR #1 bhi .r_jump7 - cmp a3, a2, LSR #2 + cmp a3, tmp1, LSR #2 bhi .r_jump6 - cmp a3, a2, LSR #3 + cmp a3, tmp1, LSR #3 bhi .r_jump5 - cmp a3, a2, LSR #4 + cmp a3, tmp1, LSR #4 bhi .r_jump4 - cmp a3, a2, LSR #5 + cmp a3, tmp1, LSR #5 bhi .r_jump3 - cmp a3, a2, LSR #6 + cmp a3, tmp1, LSR #6 bhi .r_jump2 - cmp a3, a2, LSR #7 + cmp a3, tmp1, LSR #7 bhi .r_jump1 .r_loop2: @ not executed when falling into .r_loop2 movhi a3, a3, LSR #8 - cmp a2, a3, LSL #7 + cmp tmp1, a3, LSL #7 adc a4, a4, a4 - subcs a2, a2, a3, LSL #7 - cmp a2, a3, LSL #6 + subcs tmp1, tmp1, a3, LSL #7 + cmp tmp1, a3, LSL #6 .r_jump1: adc a4, a4, a4 - subcs a2, a2, a3, LSL #6 - cmp a2, a3, LSL #5 + subcs tmp1, tmp1, a3, LSL #6 + cmp tmp1, a3, LSL #5 .r_jump2: adc a4, a4, a4 - subcs a2, a2, a3, LSL #5 - cmp a2, a3, LSL #4 + subcs tmp1, tmp1, a3, LSL #5 + cmp tmp1, a3, LSL #4 .r_jump3: adc a4, a4, a4 - subcs a2, a2, a3, LSL #4 - cmp a2, a3, LSL #3 + subcs tmp1, tmp1, a3, LSL #4 + cmp tmp1, a3, LSL #3 .r_jump4: adc a4, a4, a4 - subcs a2, a2, a3, LSL #3 - cmp a2, a3, LSL #2 + subcs tmp1, tmp1, a3, LSL #3 + cmp tmp1, a3, LSL #2 .r_jump5: adc a4, a4, a4 - subcs a2, a2, a3, LSL #2 - cmp a2, a3, LSL #1 + subcs tmp1, tmp1, a3, LSL #2 + cmp tmp1, a3, LSL #1 .r_jump6: adc a4, a4, a4 - subcs a2, a2, a3, LSL #1 + subcs tmp1, tmp1, a3, LSL #1 .r_jump7: - cmp a2, a3 + cmp tmp1, a3 adc a4, a4, a4 - subcs a2, a2, a3 - cmp a3, a1 + subcs tmp1, tmp1, a3 + cmp a3, tmp2 bne .r_loop2 - DISPATCH_START 1 - movs ip, ip, lsl #1 - rsbmi a2, a2, #0 - PUSH a2 + movs lr, lr, lsl #1 + DISPATCH_NEXT + DISPATCH_NEXT + rsbmi tmp1, tmp1, #0 + PUSH tmp1 + DISPATCH_FINISH + +.rem_table: + .word div_zero_jpc_1 + .word .remc_1 + .word .remc_2 + .word .remc_3 + .word .remc_4 + .word .remc_5 + .word .remc_6 + .word .remc_7 + .word .remc_8 + .word .remc_9 + .word .remc_10 + .word .remc_11 + .word .remc_12 + .word .remc_13 + .word .remc_14 + .word .remc_15 + .word .remc_16 + .word .remc_17 + .word .remc_18 + .word .remc_19 + .word .remc_20 + .word .remc_21 + .word .remc_22 + .word .remc_23 + .word .remc_24 + .word .remc_25 + .word .remc_26 + .word .remc_27 + .word .remc_28 + .word .remc_29 + .word .remc_30 + .word .remc_31 + +.remc_1: + DISPATCH_STATE 3 + DISPATCH_NEXT + mov tmp2, #0 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_2: + DISPATCH_STATE 3 + add lr, tmp1, tmp1, lsr #31 + mov tmp2, lr, asr #1 + DISPATCH_NEXT + sub tmp2, tmp1, tmp2, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_3: + DISPATCH_STATE 3 + ldr tmp2, .dc_3 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + sub tmp2, a4, tmp1, asr #31 + add lr, tmp2, tmp2, lsl #1 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_4: + DISPATCH_STATE 3 + movs lr, tmp1 + DISPATCH_NEXT + addmi lr, lr, #3 + mov tmp2, lr, asr #2 + sub tmp2, tmp1, tmp2, lsl #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_5: + DISPATCH_STATE 3 + ldr tmp2, .dc_5 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + add lr, tmp2, tmp2, lsl #2 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_6: + DISPATCH_STATE 3 + ldr tmp2, .dc_6 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + sub tmp2, a4, tmp1, asr #31 + add lr, tmp2, tmp2, lsl #1 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_7: + DISPATCH_STATE 3 + ldr tmp2, .dc_7 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #2 + rsb lr, tmp2, tmp2, lsl #3 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_8: + DISPATCH_STATE 3 + movs lr, tmp1 + DISPATCH_NEXT + addmi lr, lr, #7 + mov tmp2, lr, asr #3 + sub tmp2, tmp1, tmp2, lsl #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_9: + DISPATCH_STATE 3 + ldr tmp2, .dc_9 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + add lr, tmp2, tmp2, lsl #3 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_10: + DISPATCH_STATE 3 + ldr tmp2, .dc_10 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #2 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_11: + DISPATCH_STATE 3 + ldr tmp2, .dc_11 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + add lr, tmp2, tmp2, lsl #2 + add lr, tmp2, lr, lsl #1 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_12: + DISPATCH_STATE 3 + ldr tmp2, .dc_12 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #1 + add lr, tmp2, tmp2, lsl #1 + sub tmp2, tmp1, lr, lsl #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_13: + DISPATCH_STATE 3 + ldr tmp2, .dc_13 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #1 + add lr, tmp2, lr, lsl #2 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_14: + DISPATCH_STATE 3 + ldr tmp2, .dc_14 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #3 + rsb lr, tmp2, tmp2, lsl #3 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_15: + DISPATCH_STATE 3 + ldr tmp2, .dc_15 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #3 + rsb lr, tmp2, tmp2, lsl #4 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_16: + DISPATCH_STATE 3 + movs lr, tmp1 + DISPATCH_NEXT + addmi lr, lr, #15 + mov tmp2, lr, asr #4 + sub tmp2, tmp1, tmp2, lsl #4 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_17: + DISPATCH_STATE 3 + ldr tmp2, .dc_17 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #4 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_18: + DISPATCH_STATE 3 + ldr tmp2, .dc_18 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #3 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_19: + DISPATCH_STATE 3 + ldr tmp2, .dc_19 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #3 + add lr, tmp2, lr, lsl #1 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_20: + DISPATCH_STATE 3 + ldr tmp2, .dc_20 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #2 + sub tmp2, tmp1, lr, lsl #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_21: + DISPATCH_STATE 3 + ldr tmp2, .dc_21 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #1 + rsb lr, lr, lr, lsl #3 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_22: + DISPATCH_STATE 3 + ldr tmp2, .dc_22 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #2 + add lr, tmp2, lr, lsl #1 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_23: + DISPATCH_STATE 3 + ldr tmp2, .dc_23 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + add lr, tmp2, tmp2, lsl #1 + rsb lr, tmp2, lr, lsl #3 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_24: + DISPATCH_STATE 3 + ldr tmp2, .dc_24 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #2 + add lr, tmp2, tmp2, lsl #1 + sub tmp2, tmp1, lr, lsl #3 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_25: + DISPATCH_STATE 3 + ldr tmp2, .dc_25 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #2 + add lr, lr, lr, lsl #2 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_26: + DISPATCH_STATE 3 + ldr tmp2, .dc_26 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #1 + add lr, tmp2, lr, lsl #2 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_27: + DISPATCH_STATE 3 + ldr tmp2, .dc_27 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov lr, tmp1, asr #31 + rsb tmp2, lr, a4, asr #3 + add lr, tmp2, tmp2, lsl #1 + add lr, lr, lr, lsl #3 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_28: + DISPATCH_STATE 3 + ldr tmp2, .dc_28 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + rsb lr, tmp2, tmp2, lsl #3 + sub tmp2, tmp1, lr, lsl #2 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_29: + DISPATCH_STATE 3 + ldr tmp2, .dc_29 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + rsb lr, tmp2, tmp2, lsl #3 + add lr, tmp2, lr, lsl #2 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_30: + DISPATCH_STATE 3 + ldr tmp2, .dc_30 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + rsb lr, tmp2, tmp2, lsl #4 + sub tmp2, tmp1, lr, lsl #1 + DISPATCH_NEXT + PUSH tmp2 + DISPATCH_FINISH +.remc_31: + DISPATCH_STATE 3 + ldr tmp2, .dc_31 + DISPATCH_NEXT + smull lr, a4, tmp1, tmp2 + mov tmp2, tmp1, asr #31 + add lr, tmp1, a4 + rsb tmp2, tmp2, lr, asr #4 + rsb lr, tmp2, tmp2, lsl #5 + sub tmp2, tmp1, lr + DISPATCH_NEXT + PUSH tmp2 DISPATCH_FINISH @ ip = branch offset @ r0 = 1st bytecode @ jpc has been updated - Opcode goto_safe + Opcode goto ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] - orr ip, ip, r1, lsl #8 - DISPATCH_START_REG ip + ldrb tmp1, [jpc, #2] + orr tmp1, tmp1, r1, lsl #8 + DISPATCH_START_REG tmp1 branch_taken: - cmp ip, #0 + ldr r2, [dispatch, #SafePointSynchronize_state_Address-XXX] + cmp tmp1, #0 + USEC ldr tmp2, [istate, #ISTATE_METHOD] + ldr r1, [r2] bgt branch_no_check - ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] - ldr r1, [r3] +@ ECN: The C code does... +@ if (UseCompiler && UseLoopCounter) { +@ BACKEDGE_COUNT->increment(); +@ ... +@ } +@ However, I just increment the counter because the check is actually +@ more expensive than the increment. I don't believe this matters +@ semantically, since is UseCompiler or UseLoopCounter is false then +@ we shouldn't even be looking at the backedge counter. +@ +@ ECN: Concerns about counter overflowing +@ + USEC ldr r3, [tmp2, #METHOD_BACKEDGECOUNTER] cmp r1, #1 + USEC add r3, r3, #INVOCATIONCOUNTER_COUNTINCREMENT + USEC str r3, [tmp2, #METHOD_BACKEDGECOUNTER] + bne branch_no_check - ldr r3, [istate, #ISTATE_THREAD] - mov r0, sp - str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + sub jpc, jpc, tmp1 @ Point jpc back at the branch!!! + + add r0, istate, #ISTATE_THREAD + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN20SafepointSynchronize5blockEP10JavaThread + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_CP ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_JPC cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception - DISPATCH_START 0 + + DISPATCH_START_REG tmp1 @ Refetch opcode and update jpc again branch_no_check: - DISPATCH_BYTECODE +@ ECN: There is no protection against INVOCATIONCOUNTER overflowing!!! + USEC ldr r3, [tmp2, #METHOD_INVOCATIONCOUNTER] + DISPATCH_NEXT + USEC add r3, r3, #INVOCATIONCOUNTER_COUNTINCREMENT + DISPATCH_NEXT + USEC str r3, [tmp2, #METHOD_INVOCATIONCOUNTER] + DISPATCH_FINISH - Opcode ifeq_safe - Opcode ifnull_safe + Opcode ifeq + Opcode ifnull POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orreq ip, ip, r1, lsl #8 - ldreqb r0, [jpc, ip]! + orreq tmp1, tmp1, r1, lsl #8 + ldreqb r0, [jpc, tmp1]! ldrneb r0, [jpc, #3]! beq branch_taken DISPATCH_BYTECODE - Opcode ifne_safe - Opcode ifnonnull_safe + Opcode ifne + Opcode ifnonnull POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orrne ip, ip, r1, lsl #8 - ldrneb r0, [jpc, ip]! + orrne tmp1, tmp1, r1, lsl #8 + ldrneb r0, [jpc, tmp1]! ldreqb r0, [jpc, #3]! bne branch_taken DISPATCH_BYTECODE - Opcode iflt_safe + Opcode iflt POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orrlt ip, ip, r1, lsl #8 - ldrltb r0, [jpc, ip]! + orrlt tmp1, tmp1, r1, lsl #8 + ldrltb r0, [jpc, tmp1]! ldrgeb r0, [jpc, #3]! blt branch_taken DISPATCH_BYTECODE - Opcode ifge_safe + Opcode ifge POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orrge ip, ip, r1, lsl #8 - ldrgeb r0, [jpc, ip]! + orrge tmp1, tmp1, r1, lsl #8 + ldrgeb r0, [jpc, tmp1]! ldrltb r0, [jpc, #3]! bge branch_taken DISPATCH_BYTECODE - Opcode ifgt_safe + Opcode ifgt POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orrgt ip, ip, r1, lsl #8 - ldrgtb r0, [jpc, ip]! + orrgt tmp1, tmp1, r1, lsl #8 + ldrgtb r0, [jpc, tmp1]! ldrleb r0, [jpc, #3]! bgt branch_taken DISPATCH_BYTECODE - Opcode ifle_safe + Opcode ifle POP r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, #0 - orrle ip, ip, r1, lsl #8 - ldrleb r0, [jpc, ip]! + orrle tmp1, tmp1, r1, lsl #8 + ldrleb r0, [jpc, tmp1]! ldrgtb r0, [jpc, #3]! ble branch_taken DISPATCH_BYTECODE - Opcode if_icmpeq_safe - Opcode if_acmpeq_safe - POP2 r2, r3 + Opcode if_icmpeq + Opcode if_acmpeq + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orreq ip, ip, r1, lsl #8 - ldreqb r0, [jpc, ip]! + orreq tmp1, tmp1, r1, lsl #8 + ldreqb r0, [jpc, tmp1]! ldrneb r0, [jpc, #3]! beq branch_taken DISPATCH_BYTECODE - Opcode if_icmpne_safe - Opcode if_acmpne_safe - POP2 r2, r3 + Opcode if_icmpne + Opcode if_acmpne + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orrne ip, ip, r1, lsl #8 - ldrneb r0, [jpc, ip]! + orrne tmp1, tmp1, r1, lsl #8 + ldrneb r0, [jpc, tmp1]! ldreqb r0, [jpc, #3]! bne branch_taken DISPATCH_BYTECODE - Opcode if_icmplt_safe - POP2 r2, r3 + Opcode if_icmplt + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orrlt ip, ip, r1, lsl #8 - ldrltb r0, [jpc, ip]! + orrlt tmp1, tmp1, r1, lsl #8 + ldrltb r0, [jpc, tmp1]! ldrgeb r0, [jpc, #3]! blt branch_taken DISPATCH_BYTECODE - Opcode if_icmpge_safe - POP2 r2, r3 + Opcode if_icmpge + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orrge ip, ip, r1, lsl #8 - ldrgeb r0, [jpc, ip]! + orrge tmp1, tmp1, r1, lsl #8 + ldrgeb r0, [jpc, tmp1]! ldrltb r0, [jpc, #3]! bge branch_taken DISPATCH_BYTECODE - Opcode if_icmpgt_safe - POP2 r2, r3 + Opcode if_icmpgt + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orrgt ip, ip, r1, lsl #8 - ldrgtb r0, [jpc, ip]! + orrgt tmp1, tmp1, r1, lsl #8 + ldrgtb r0, [jpc, tmp1]! ldrleb r0, [jpc, #3]! bgt branch_taken DISPATCH_BYTECODE - Opcode if_icmple_safe - POP2 r2, r3 + Opcode if_icmple + POP r2, r3 ldrsb r1, [jpc, #1] - ldrb ip, [jpc, #2] + ldrb tmp1, [jpc, #2] cmp r3, r2 - orrle ip, ip, r1, lsl #8 - ldrleb r0, [jpc, ip]! + orrle tmp1, tmp1, r1, lsl #8 + ldrleb r0, [jpc, tmp1]! ldrgtb r0, [jpc, #3]! ble branch_taken DISPATCH_BYTECODE - Opcode ireturn_safe - Opcode freturn_safe - Opcode lreturn_safe - Opcode dreturn_safe - Opcode areturn_safe - Opcode return_safe + Opcode ireturn + Opcode freturn + Opcode lreturn + Opcode dreturn + Opcode areturn + Opcode return ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] ldr r1, [r3] cmp r1, #1 bne handle_return - ldr r3, [istate, #ISTATE_THREAD] - mov r0, sp - str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + add r0, istate, #ISTATE_THREAD + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN20SafepointSynchronize5blockEP10JavaThread ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] + ASSERT_STACK_CACHED ldr r3, [r0, #THREAD_PENDING_EXC] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_JPC +@ CACHE_LOCALS & CACHE_CP not require for handle_retuen / handle_exception cmp r3, #0 beq handle_return b handle_exception -resolve_putstatic: - mov r1, #179 - sub jpc, jpc, #3 - ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne getfield_exception - ldrb r3, [jpc, #1] - ldrb r2, [jpc, #2] - DISPATCH_START 3 - orr r3, r3, r2, lsl #8 @ r3 = index - add tmp2, constpool, r3, lsl #4 @ tmp2 = cache - DISPATCH_NEXT - ldr r3, [tmp2, #4] @ r3 = object - ldr lr, [tmp2, #12] @ lr = tos_type - ldr r2, [tmp2, #8] @ r2 = offset - movs lr, lr, lsr #29 - bhi putstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 - bcs putstatic_h @ C = 1 => R2 = 1 - beq putstatic_sb @ Z = 1 => R2 = 0 - tst lr, #2 - bne putstatic_dw - b putstatic_sh - -resolve_getstatic: - mov r1, #178 - sub jpc, jpc, #3 - ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne getfield_exception - ldrb r3, [jpc, #1] - ldrb r2, [jpc, #2] - DISPATCH_START 3 - orr r3, r3, r2, lsl #8 @ r3 = index - add tmp2, constpool, r3, lsl #4 @ tmp2 = cache - DISPATCH_NEXT - ldr r3, [tmp2, #4] - ldr r2, [tmp2, #12] - ldr lr, [tmp2, #8] - movs r2, r2, lsr #29 - bhi getstatic_w @ C = 1, Z = 0 => R2 == 3, 5, 7 - bcs getstatic_h @ C = 1 => R2 = 1 - beq getstatic_sb @ Z = 1 => R2 = 0 - tst r2, #2 - bne getstatic_dw - b getstatic_sh - -resolve_putfield: - mov r1, #181 - b resolve_get_put -resolve_getfield: - mov r1, #180 resolve_get_put: + mov r1, r0 mov tmp1, lr ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime15resolve_get_putEP10JavaThreadN9Bytecodes4CodeE + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] + mov lr, tmp1 bne getfield_exception @ Now restart the getfield ldrb r3, [jpc, #1] ldrb r2, [jpc, #2] orr r3, r3, r2, lsl #8 @ r3 = index add tmp2, constpool, r3, lsl #4 @ tmp2 = cache - bx tmp1 + bx lr accessor_non_w: bcs accessor_h @@ -2046,24 +2950,36 @@ Opcode getfield add tmp2, constpool, r1, lsl #12 - ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + add tmp2, tmp2, r2, lsl #4 + ldr r3, [tmp2, #CP_OFFSET] and r3, r3, #0x00ff0000 - cmp r3, #180 << 16 - blne resolve_getfield - - ldr r2, [tmp2, #12] + cmp r3, #opc_getfield << 16 + blne resolve_get_put + NFBC POP tmp1 + ldr r2, [tmp2, #CP_OFFSET+12] + NFBC cmp tmp1, #0 + NFBC beq null_ptr_exception + NFBC ldr tmp2, [tmp2, #CP_OFFSET+8] movs r2, r2, lsr #29 - movhi r0, #opc_igetfield + FBC movhi r0, #opc_igetfield bls getfield_non_w + NFBC ldr tmp2, [tmp1, tmp2] + NFBC PUSH tmp2 + NFBC DISPATCH 3 + +#ifdef FAST_BYTECODES rewrite_bytecode: strb r0, [jpc] DISPATCH_BYTECODE +#endif getfield_non_w: bcs getfield_h @ C = 1 => R2 = 1 beq getfield_sb @ Z = 1 => R2 = 0 tst r2, #2 bne getfield_dw + +#ifdef FAST_BYTECODES getfield_sh: mov r0, #opc_sgetfield b rewrite_bytecode @@ -2076,27 +2992,55 @@ getfield_dw: mov r0, #opc_lgetfield b rewrite_bytecode +#else +getfield_sh: + ldrsh tmp2, [tmp1, tmp2] + PUSH tmp2 + DISPATCH 3 +getfield_h: + ldrh tmp2, [tmp1, tmp2] + PUSH tmp2 + DISPATCH 3 +getfield_sb: + ldrsb tmp2, [tmp1, tmp2] + PUSH tmp2 + DISPATCH 3 +getfield_dw: + add tmp1, tmp1, tmp2 + ldm tmp1, {r2, tmp2} + PUSH r2, tmp2 + DISPATCH 3 +#endif Opcode putfield add tmp2, constpool, r1, lsl #12 - ldr r3, [tmp2, r2, lsl #4]! @ tmp2 = cache, r3 = flags + add tmp2, tmp2, r2, lsl #4 + ldr r3, [tmp2, #CP_OFFSET] and r3, r3, #0xff000000 - cmp r3, #181 << 24 - blne resolve_putfield - - ldr r2, [tmp2, #12] + cmp r3, #opc_putfield << 24 + blne resolve_get_put + ldr r2, [tmp2, #CP_OFFSET+12] + NFBC ldr tmp2, [tmp2, #CP_OFFSET+8] movs r2, r2, lsr #29 bls putfield_non_w - mov r0, #opc_iputfield + FBC mov r0, #opc_iputfield cmp r2, #tos_atos >> 1 - moveq r0, #opc_aputfield - b rewrite_bytecode + FBC moveq r0, #opc_aputfield + FBC b rewrite_bytecode + NFBC beq putfield_a + NFBC POP r2, r3 + NFBC cmp r3, #0 + NFBC beq null_ptr_exception + NFBC str r2, [r3, tmp2] + NFBC DISPATCH 3 putfield_non_w: bcs putfield_h beq putfield_sb tst r2, #2 bne putfield_dw + +#ifdef FAST_BYTECODES putfield_sh: putfield_h: mov r0, #opc_cputfield @@ -2107,37 +3051,71 @@ putfield_dw: mov r0, #opc_lputfield b rewrite_bytecode +#else +putfield_sh: +putfield_h: + POP r2, r3 + cmp r3, #0 + beq null_ptr_exception + strh r2, [r3, tmp2] + DISPATCH 3 +putfield_sb: + POP r2, r3 + cmp r3, #0 + beq null_ptr_exception + strb r2, [r3, tmp2] + DISPATCH 3 +putfield_dw: + POP r2, r3, lr + cmp lr, #0 + beq null_ptr_exception + add tmp2, lr, tmp2 + stm tmp2, {r2, r3} + DISPATCH 3 putfield_a: - mov r0, #opc_aputfield - b rewrite_bytecode + GET_STACK 1, r0 + add oop_address_tmp, r0, tmp2 + POP oop_value_tmp + cmp r0, #0 + beq null_ptr_exception + bl oop_store + ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] + POP r2 + ldr r3, [r3, #0] + ldr r3, [r3, #12] + ldr r3, [r3, #76] + mov tmp2, #0 + strb tmp2, [r3, r2, lsr #9] + DISPATCH 3 +#endif getstatic_sh: - DISPATCH_STATE 2 + DISPATCH_START 3 ldrsh tmp2, [r3, lr] DISPATCH_NEXT PUSH tmp2 DISPATCH_FINISH getstatic_h: - DISPATCH_STATE 2 + DISPATCH_START 3 ldrh tmp2, [r3, lr] DISPATCH_NEXT PUSH tmp2 DISPATCH_FINISH getstatic_sb: - DISPATCH_STATE 2 + DISPATCH_START 3 ldrsb tmp2, [r3, lr] DISPATCH_NEXT PUSH tmp2 DISPATCH_FINISH getstatic_dw: - DISPATCH_STATE 2 + DISPATCH_START 3 add r3, r3, lr ldm r3, {r2, tmp2} DISPATCH_NEXT - PUSH2 r2, tmp2 + PUSH r2, tmp2 DISPATCH_FINISH getstatic_w: - DISPATCH_STATE 2 + DISPATCH_START 3 ldr tmp2, [r3, lr] DISPATCH_NEXT PUSH tmp2 @@ -2145,39 +3123,39 @@ putstatic_sh: putstatic_h: - DISPATCH_STATE 2 + DISPATCH_START 3 POP tmp2 DISPATCH_NEXT strh tmp2, [r3, r2] DISPATCH_FINISH putstatic_w: - DISPATCH_STATE 2 cmp lr, #tos_atos >> 1 @ >> 1 due to lsr #29 above beq putstatic_a + DISPATCH_START 3 POP tmp2 DISPATCH_NEXT str tmp2, [r3, r2] DISPATCH_FINISH putstatic_sb: - DISPATCH_STATE 2 + DISPATCH_START 3 POP tmp2 DISPATCH_NEXT strb tmp2, [r3, r2] DISPATCH_FINISH putstatic_dw: - DISPATCH_STATE 2 + DISPATCH_START 3 add r2, r2, r3 - POP2 r3, tmp2 + POP r3, tmp2 DISPATCH_NEXT stm r2, {r3, tmp2} DISPATCH_FINISH putstatic_a: - POP r1 @ r1 = value - add r0, r3, r2 + POP oop_value_tmp + add oop_address_tmp, r3, r2 PUSH r3 bl oop_store ldr r3, [dispatch, #Universe_collectedHeap_Address-XXX] - DISPATCH_START 0 + DISPATCH_START 3 POP r2 ldr r3, [r3] DISPATCH_NEXT @@ -2188,387 +3166,167 @@ strb tmp2, [r3, r2, lsr #9] DISPATCH_FINISH - +resolve_invokeinterface: + mov r1, #opc_invokeinterface + b resolve_invoke resolve_invokevirtual: - mov tmp1, lr - mov r1, #182 - ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne invokevirtual_exception - - ldrb r3, [jpc, #1] - ldrb r2, [jpc, #2] - orr r3, r3, r2, lsl #8 @ r3 = index - add r0, constpool, r3, lsl #4 @ r1 = cache - bx tmp1 - + mov r1, #opc_invokevirtual + b resolve_invoke +resolve_invokespecial: + mov r1, #opc_invokespecial + b resolve_invoke resolve_invokestatic: + mov r1, #opc_invokestatic +resolve_invoke: mov tmp1, lr - mov r1, #184 ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #4] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne invokestatic_exception - ldrb r3, [jpc, #1] ldrb r2, [jpc, #2] + bne resolve_exception orr r3, r3, r2, lsl #8 @ r3 = index add r0, constpool, r3, lsl #4 @ r1 = cache bx tmp1 -resolve_invokespecial: - mov tmp1, lr - mov r1, #183 +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode new +#define k_entry tmp2 +#define new_result r7 +#define top_addr r7 +#define uch r7 +#define obj_size tmp1 + ldr r3, [istate, #ISTATE_METHOD] + orr r2, r1, r2, lsl #8 + ldr lr, [r3, #METHOD_CONSTANTS] + ldr r1, [lr, #CONSTANTPOOL_TAGS] + add r1, r1, #12 + ldrb r3, [r1, r2] + cmp r3, #JVM_CONSTANT_UnresolvedClassInError + cmpne r3, #JVM_CONSTANT_UnresolvedClass + beq .new_slow_case + + add r3, lr, #32 + ldr k_entry, [r3, r2, lsl #2] + + add r1, k_entry, #KLASS_PART + ldr r3, [r1, #INSTANCEKLASS_INITSTATE] + cmp r3, #class_fully_initialized + bne .new_slow_case + ldr r3, [r1, #4] + tst r3, #1 + bne .new_slow_case + + mov obj_size, r3, asr #2 +.new_retry: + ldr r0, [dispatch, #Universe_collectedHeap_Address-XXX] + ldr r0, [r0] + bl CollectedHeap_top_addr + mov top_addr, r0 + ldr r0, [dispatch, #Universe_collectedHeap_Address-XXX] + ldr r0, [r0] + bl CollectedHeap_end_addr + mov r1, top_addr + ldr new_result, [top_addr, #0] + add ip, new_result, obj_size, lsl #2 + ldr r3, [r0, #0] + cmp ip, r3 + bhi .new_slow_case + mov r2, new_result + add r0, new_result, obj_size, lsl #2 + bl cmpxchg_ptr + cmp r0, new_result + bne .new_retry + subs r2, obj_size, #2 +@ ECN: sub optimimal memset + tst r2, #1 + add r0, new_result, #8 + mov r1, #0 + mov ip, #0 + strne r1, [r0], #4 + tst r2, #2 + mov r3, #0 + mov lr, #0 + stmneia r0!, {r1, r3} + bics r2, r2, #3 + beq .new_zero_done +1: + subs r2, r2, #4 + stmia r0!, {r1, r3, ip, lr} + bne 1b +.new_zero_done: + ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] + mov r2, #1 + ldrb r1, [r3] @ zero_extendqisi2 + str r2, [new_result, #0] + cmp r1, #0 + bne .new_do_update_barrier + str k_entry, [new_result, #4] +.new_exit: + str new_result, [stack], #-4 + CACHE_LOCALS + DISPATCH 3 +.new_do_update_barrier: + add oop_address_tmp, new_result, #4 +@ mov oop_value_tmp, k_entry @ oop_value_tmp == k_entry + adr lr, .new_exit + b oop_store +.new_slow_case: + ldrb r2, [jpc, #1] + ldrb r1, [jpc, #2] + ldr r3, [istate, #ISTATE_METHOD] + DECACHE_JPC + DECACHE_STACK + orr r2, r1, r2, lsl #8 ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + ldr r1, [r3, #METHOD_CONSTANTS] + bl _ZN18InterpreterRuntime4_newEP10JavaThreadP19constantPoolOopDesci ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne invokespecial_exception + ASSERT_STACK_CACHED + ldr ip, [r0, #THREAD_PENDING_EXC] + CACHE_JPC + CACHE_CP + cmp ip, #0 + CACHE_LOCALS + bne handle_exception + ldr r2, [r0, #THREAD_VM_RESULT] + str r2, [stack], #-4 + ldr r3, [istate, #ISTATE_THREAD] + str ip, [r3, #THREAD_VM_RESULT] + DISPATCH 3 - ldrb r3, [jpc, #1] - ldrb r2, [jpc, #2] - orr r3, r3, r2, lsl #8 @ r3 = index - add r0, constpool, r3, lsl #4 @ r1 = cache - bx tmp1 +bytecode_interpreter_str: + .ascii "[Bytecode Interpreter]\000" + ALIGN_WORD - Opcode invokeinterface - ldrb r1, [jpc, #2] @ zero_extendqisi2 - ldrb r3, [jpc, #1] @ zero_extendqisi2 - mov r0, constpool - orr r3, r3, r1, asl #8 - ldr r2, [r0, r3, asl #4] - mov tmp1, r3, asl #4 - add r0, r0, tmp1 - mov r2, r2, asr #16 - and r2, r2, #255 - cmp r2, #185 - beq .invokeinterface_1 - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + Opcode newarray + ldrb r1, [jpc, #1] @ zero_extendqisi2 + ldr r2, [stack, #4] ldr r0, [istate, #ISTATE_THREAD] - mov r1, #185 - bl _ZN18InterpreterRuntime14resolve_invokeEP10JavaThreadN9Bytecodes4CodeE + DECACHE_JPC + DECACHE_STACK + bl _ZN18InterpreterRuntime8newarrayEP10JavaThread9BasicTypei + ASSERT_LOCALS_CACHED + ASSERT_STACK_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception - mov r3, constpool - add r0, r3, tmp1 -.invokeinterface_1: - ldr r3, [r0, #12] - ands tmp_vvv, r3, #16777216 - bne .invokeinterface_6 - ldr lr, [r0, #4] - ldr r3, [r0, #12] - and r3, r3, #255 - ldr r3, [stack, r3, asl #2] - cmp r3, #0 - beq null_ptr_exception - ldr sl, [r3, #4] - add r3, sl, #8 - add tmp1, sl, #304 - ldr r2, [r3, #224] - ldr ip, [r3, #228] - add r2, r2, #1 - bic r2, r2, #1 + CACHE_JPC + ldr ip, [r0, #THREAD_PENDING_EXC] + CACHE_CP cmp ip, #0 - mov r3, r2, asl #2 - add r1, tmp1, r3 - movle r2, tmp_vvv - ble .invokeinterface_4 - ldr r3, [tmp1, r2, asl #2] - cmp lr, r3 - movne r2, tmp_vvv - bne .invokeinterface_3 - b .invokeinterface_5 -.invokeinterface_2: - ldr r3, [r1, #0] - cmp lr, r3 - beq .invokeinterface_5 -.invokeinterface_3: - add r2, r2, #1 - cmp r2, ip - add r1, r1, #8 - blt .invokeinterface_2 -.invokeinterface_4: - cmp r2, ip - beq incompatibleclass_exception -.invokeinterface_5: - ldr r3, [r0, #8] - ldr r2, [r1, #4] - mov r3, r3, asl #2 - add r3, sl, r3 - ldr r0, [r3, r2] - cmp r0, #0 - bne .invokeinterface_7 -abstractmethod_exception: - mov r0, #VMSYMBOLS_AbstractMethodError - b raise_exception -incompatibleclass_exception: - mov r0, #VMSYMBOLS_IncompatibleClassChangeError - b raise_exception - -.invokeinterface_6: - ldr r3, [r0, #12] - mov r1, stack - and r3, r3, #255 - ldr r2, [stack, r3, asl #2] - cmp r2, #0 - beq null_ptr_exception - ldr r3, [r0, #12] - tst r3, #67108864 - ldreq r3, [r0, #12] - ldreq r2, [r0, #8] - andeq r3, r3, #255 - ldrne r0, [r0, #8] - ldreq r1, [stack, r3, asl #2] - moveq r2, r2, asl #2 - ldreq r3, [r1, #4] - addeq r3, r3, r2 - ldreq r0, [r3, #304] -.invokeinterface_7: - str r0, [istate, #ISTATE_CALLEE] - ldr r3, [r0, #76] - mov r1, #0 - str r3, [istate, #36] - str stack, [istate, #ISTATE_STACK] - str jpc, [istate, #ISTATE_BCP] - ldr lr, [istate, #ISTATE_THREAD] - str r1, [lr, #THREAD_LAST_JAVA_SP] - ldr r3, [istate, #ISTATE_STACK] - add r3, r3, #4 - str r3, [lr, #THREAD_JAVA_SP] - ldr ip, [istate, #36] - ldr r2, [istate, #ISTATE_THREAD] - mov r1, ip - ldr ip, [ip] - blx ip - ldr ip, [istate, #ISTATE_THREAD] - ldr r3, [ip, #THREAD_JAVA_SP] - ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub r3, r3, #4 - str r3, [istate, #ISTATE_STACK] - ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] - add r2, r2, #4 - str r2, [ip, #THREAD_JAVA_SP] - str r1, [ip, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr locals, [istate, #ISTATE_LOCALS] - cmp r3, #0 - bne handle_exception -invokeinterface_exit: - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - DISPATCH 5 - - Opcode new - ldrb ip, [jpc, #1] @ zero_extendqisi2 - ldrb r2, [jpc, #2] @ zero_extendqisi2 - ldr r3, [istate, #ISTATE_METHOD] - orr r2, r2, ip, asl #8 - ldr lr, [r3, #12] - mov r2, r2, asl #16 - ldr r1, [lr, #8] - add r1, r1, #12 - ldrb r3, [r1, r2, lsr #16] @ zero_extendqisi2 - mov r2, r2, lsr #16 - and r3, r3, #255 - str r2, [sp, #52] - cmp r3, #104 - cmpne r3, #100 - beq .new_1 - mov r3, r2, asl #2 - add r3, lr, r3 - ldr r3, [r3, #32] - add r1, r3, #8 - str r3, [sp, #84] - str r1, [sp, #88] - ldr r3, [r1, #216] - cmp r3, #5 - beq .new_2 -.new_1: - ldr r3, [istate, #ISTATE_METHOD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - ldr r0, [istate, #ISTATE_THREAD] - ldr r1, [r3, #12] - ldr r2, [sp, #52] - bl _ZN18InterpreterRuntime4_newEP10JavaThreadP19constantPoolOopDesci - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr ip, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp ip, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - beq new_exit - b handle_exception -.new_2: - ldr r3, [r1, #4] - tst r3, #1 - bne .new_1 - mov fp, r3, asr #2 - ldr r3, [dispatch, #UseTLAB_Address-XXX] - ldr r2, [dispatch, #ZeroTLAB_Address-XXX] - ldrb r1, [r3] - cmp r1, #0 - ldrb r0, [r2] - bne .new_9 -.new_3: - mov tmp_vvv, fp, asl #2 -.new_4: - ldr r2, [dispatch, #Universe_collectedHeap_Address-XXX] - str r2, [sp, #20] -.new_5: - ldr r1, [sp, #20] - ldr r2, [r1, #0] - mov r0, r2 - ldr r3, [r2, #UNIVERSE_VTABLE] - ldr ip, [r3, #UNIVERSE_VTABLE_TOP_ADDR] - blx ip - ldr r3, [sp, #20] - ldr r2, [r3, #0] - ldr r3, [r2, #UNIVERSE_VTABLE] - ldr tmp_xxx, [r0, #0] - mov r0, r2 - ldr ip, [r3, #UNIVERSE_VTABLE_END_ADDR] - blx ip - add sl, tmp_xxx, tmp_vvv - ldr r3, [r0, #0] - cmp sl, r3 - bhi .new_1 - ldr ip, [sp, #20] - ldr r3, [ip, #0] - mov r0, r3 - ldr r2, [r3, #UNIVERSE_VTABLE] - ldr ip, [r2, #UNIVERSE_VTABLE_TOP_ADDR] - blx ip - mov r2, tmp_xxx - mov r1, r0 - mov r0, sl - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ - cmp r0, tmp_xxx - bne .new_5 - subs tmp_xxx, r0, #0 - beq .new_1 -.new_6: - subs r2, fp, #2 - bne .new_10 -.new_7: - ldr r3, [dispatch, #UseBiasedLocking_Address-XXX] - ldrb r1, [r3] - cmp r1, #0 - moveq r3, #1 - ldrne r0, [sp, #88] - streq r3, [tmp_xxx, #0] - ldrne r3, [r0, #96] - add r0, tmp_xxx, #4 - strne r3, [tmp_xxx, #0] - ldr r3, [dispatch, #always_do_update_barrier_Address-XXX] - ldrb r1, [r3] @ zero_extendqisi2 - cmp r1, #0 - ldreq r2, [sp, #84] - streq r2, [tmp_xxx, #4] - beq .new_8 - ldr r1, [sp, #84] - bl oop_store -.new_8: - str tmp_xxx, [stack], #-4 - b new_exit_1 -.new_9: - ldr r1, [istate, #ISTATE_THREAD] - ldr r2, [r1, #THREAD_TLAB_TOP] - ldr r3, [r1, #THREAD_TLAB_END] - rsb r3, r2, r3 - cmp fp, r3, lsr #2 - bhi .new_3 - cmp r2, #0 - mov tmp_vvv, fp, asl #2 - add r3, r2, tmp_vvv - mov tmp_xxx, r2 - str r3, [r1, #THREAD_TLAB_TOP] - beq .new_4 - cmp r0, #0 - bne .new_7 - b .new_6 -.new_10: - mov r2, r2, asl #2 - add r0, tmp_xxx, #8 - mov r1, #0 - bl memset - b .new_7 -new_exit: - ldr r2, [r0, #THREAD_VM_RESULT] - str r2, [stack], #-4 - ldr r3, [istate, #ISTATE_THREAD] - str ip, [r3, #THREAD_VM_RESULT] -new_exit_1: - ldr locals, [istate, #ISTATE_LOCALS] - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - DISPATCH 3 - -bytecode_interpreter_str: - .ascii "[Bytecode Interpreter]\000" - ALIGN_WORD - - Opcode newarray - ldrb r1, [jpc, #1] @ zero_extendqisi2 - ldr r2, [stack, #4] - ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime8newarrayEP10JavaThread9BasicTypei - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr ip, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp ip, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception - ldr r2, [r0, #THREAD_VM_RESULT] - str r2, [stack, #4] - ldr r3, [istate, #ISTATE_THREAD] - str ip, [r3, #THREAD_VM_RESULT] - DISPATCH 2 + ldr r2, [r0, #THREAD_VM_RESULT] + bne handle_exception + str r2, [stack, #4] + str ip, [r0, #THREAD_VM_RESULT] + DISPATCH 2 Opcode anewarray ldrb r0, [jpc, #1] @ zero_extendqisi2 @@ -2576,33 +3334,37 @@ ldr lr, [istate, #ISTATE_METHOD] ldrb r2, [jpc, #2] @ zero_extendqisi2 orr r2, r2, r0, asl #8 - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - ldr r1, [lr, #12] + DECACHE_JPC + DECACHE_STACK + ldr r1, [lr, #METHOD_CONSTANTS] ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime9anewarrayEP10JavaThreadP19constantPoolOopDescii + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr ip, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp ip, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception ldr r2, [r0, #THREAD_VM_RESULT] + bne handle_exception str r2, [stack, #4] - ldr r3, [istate, #ISTATE_THREAD] - str ip, [r3, #THREAD_VM_RESULT] + str ip, [r0, #THREAD_VM_RESULT] DISPATCH 3 Opcode arraylength + DISPATCH_START 1 ldr r3, [stack, #4] - cmp r3, #0 - beq null_ptr_exception - ldr r1, [r3, #8] - str r1, [stack, #4] - DISPATCH 1 + DISPATCH_NEXT + DISPATCH_NEXT + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 +.abortentry114: + ldr r3, [r3, #8] + DISPATCH_NEXT + DISPATCH_NEXT + str r3, [stack, #4] + DISPATCH_FINISH Opcode athrow ldr r1, [stack, #4] @@ -2614,159 +3376,181 @@ bl _ZN12ThreadShadow21set_pending_exceptionEP7oopDescPKci b handle_exception +#define secondary_super_cache_offset_in_bytes 20 +#define tmp_chunk locals +#define tmp_hwm stack +#define tmp_max constpool + +# r2 = [jpc, #1] +# r1 = [jpc, #2] Opcode checkcast - ldr r3, [stack, #4] - cmp r3, #0 - beq .checkcast_exit - ldrb sl, [jpc, #2] @ zero_extendqisi2 - ldrb tmp_xxx, [jpc, #1] @ zero_extendqisi2 - orr r1, sl, tmp_xxx, asl #8 ldr r3, [istate, #ISTATE_METHOD] - mov r1, r1, asl #16 - ldr r0, [r3, #12] - mov tmp_xxx, r1, lsr #16 - ldr r2, [r0, #8] - add r2, r2, #12 - ldrb r3, [r2, r1, lsr #16] @ zero_extendqisi2 - and r3, r3, #255 - cmp r3, #104 - cmpne r3, #100 - beq .checkcast_2 -.checkcast_1: - mov r1, tmp_xxx, asl #2 ldr r0, [stack, #4] - ldr r2, [istate, #ISTATE_METHOD] + ldr r3, [r3, #METHOD_CONSTANTS] @ R3 = METHOD->constants() + cmp r0, #0 + ldr ip, [r3, #CONSTANTPOOL_TAGS] + beq .checkcast_exit + add ip, ip, #12 + orr tmp2, r1, r2, lsl #8 + ldrb r2, [ip, tmp2] @ zero_extendqisi2 + cmp r2, #JVM_CONSTANT_UnresolvedClassInError + cmpne r2, #JVM_CONSTANT_UnresolvedClass + beq 3f + +4: ldr r0, [r0, #4] - ldr r3, [r2, #12] - add r3, r3, r1 - ldr tmp_vvv, [r3, #32] - cmp tmp_vvv, r0 + add r3, r3, tmp2, lsl #2 + ldr tmp1, [r3, #32] + cmp tmp1, r0 beq .checkcast_exit - add tmp_xxx, r0, #8 - mov r0, tmp_xxx - mov r1, tmp_vvv - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + + ldr r2, [tmp1, #16] + add tmp2, r0, #8 + add ip, tmp2, r2 + ldr ip, [ip, #-8] + cmp ip, tmp1 + beq .checkcast_exit + + cmp r2, #secondary_super_cache_offset_in_bytes + bne 2f + + mov r0, tmp2 + mov r1, tmp1 + + bl _ZNK5Klass23search_secondary_supersEP12klassOopDesc cmp r0, #0 - bne .checkcast_exit - mov r0, tmp_xxx - add sl, sp, #216 + beq 2f +.checkcast_exit: + DISPATCH 3 + +3: + ldr r0, [istate, #ISTATE_THREAD] + DECACHE_JPC + DECACHE_STACK + bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED + ldr r0, [istate, #ISTATE_THREAD] + CACHE_JPC + ldr r3, [r0, #THREAD_PENDING_EXC] + CACHE_CP + cmp r3, #0 + ldr r3, [istate, #ISTATE_METHOD] + bne handle_exception + ldr r0, [stack, #4] + ldr r3, [r3, #METHOD_CONSTANTS] @ METHOD->constanst() might have moved + b 4b + +2: + DECACHE_JPC + DECACHE_STACK + mov r0, tmp2 ldr r3, [istate, #ISTATE_THREAD] - ldr fp, [r3, #144] @ THREAD_RESOURCE_AREA - ldr r1, [fp, #4] - str r1, [sp, #112] - ldr r2, [fp, #8] - str r2, [sp, #116] - ldr r3, [fp, #12] - str r3, [sp, #120] + ldr tmp2, [r3, #THREAD_RESOURCEAREA] + + ldr tmp_chunk, [tmp2, #RESOURCEAREA_CHUNK] + ldr tmp_hwm, [tmp2, #RESOURCEAREA_HWM] + ldr tmp_max, [tmp2, #RESOURCEAREA_MAX] + bl _ZNK5Klass13external_nameEv - mov tmp_xxx, r0 - add r0, tmp_vvv, #8 + mov ip, r0 + add r0, tmp1, #8 + mov tmp1, ip bl _ZNK5Klass13external_nameEv mov r1, r0 - mov r0, tmp_xxx + mov r0, tmp1 bl _ZN13SharedRuntime27generate_class_cast_messageEPKcS1_ - ldr tmp_xxx, [dispatch, #VmSymbols_symbols_Address-XXX] - ldr ip, [istate, #ISTATE_THREAD] + str r0, [arm_sp, #0] + ldr r0, [istate, #ISTATE_THREAD] adrl r1, bytecode_interpreter_str mov r2, #99 mov r3, #_thread_in_vm - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - str ip, [sl, #-72]! - str r3, [ip, #THREAD_STATE] - ldr r3, [tmp_xxx, #VMSYMBOLS_ClassCastException * 4] - ldr ip, [istate, #ISTATE_THREAD] - str r0, [sp, #0] - mov r0, ip + str r3, [r0, #THREAD_STATE] + ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] + ldr r3, [r3, #VMSYMBOLS_ClassCastException * 4] bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ - mov r0, sl - bl _ZN18ThreadInVMfromJavaD1Ev - ldr r0, [sp, #112] + add r0, istate, #ISTATE_THREAD + bl ThreadInVMfromJavaD + mov r0, tmp_chunk ldr r3, [r0, #0] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC cmp r3, #0 - ldr jpc, [istate, #ISTATE_BCP] beq 1f bl _ZN5Chunk9next_chopEv 1: - ldr r2, [sp, #120] - str r2, [fp, #12] - ldr r3, [sp, #112] - str r3, [fp, #4] - ldr ip, [sp, #116] - str ip, [fp, #8] - b handle_exception -.checkcast_2: - ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] - bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] - cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - beq .checkcast_1 + str tmp_hwm, [tmp2, #RESOURCEAREA_HWM] + str tmp_max, [tmp2, #RESOURCEAREA_MAX] + str tmp_chunk, [tmp2, #RESOURCEAREA_CHUNK] b handle_exception -.checkcast_exit: - ldr locals, [istate, #ISTATE_LOCALS] - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - DISPATCH 3 +# r2 = [jpc, #1] +# r1 = [jpc, #2] Opcode instanceof - ldr r3, [stack, #4] - cmp r3, #0 - beq .instanceof_exit - ldrb tmp1, [jpc, #1] @ zero_extendqisi2 ldr r3, [istate, #ISTATE_METHOD] - ldrb r2, [jpc, #2] @ zero_extendqisi2 - ldr ip, [r3, #12] - orr r2, r2, tmp1, asl #8 - ldr r1, [ip, #8] - mov r2, r2, asl #16 - add r1, r1, #12 - mov tmp1, r2, lsr #16 - ldrb r3, [r1, r2, lsr #16] @ zero_extendqisi2 - and r3, r3, #255 - cmp r3, #104 - cmpne r3, #100 - bne .instanceof_1 + ldr r0, [stack, #4] + ldr r3, [r3, #METHOD_CONSTANTS] + cmp r0, #0 + ldr ip, [r3, #CONSTANTPOOL_TAGS] + beq .instanceof_not_instance + add ip, ip, #12 + orr tmp2, r1, r2, lsl #8 + ldrb r2, [ip, tmp2] + cmp r2, #JVM_CONSTANT_UnresolvedClassInError + cmpne r2, #JVM_CONSTANT_UnresolvedClass + beq 2f + +1: + ldr r0, [r0, #4] + add r3, r3, tmp2, lsl #2 + ldr tmp1, [r3, #32] + cmp tmp1, r0 + beq .instanceof_is_instance + + ldr r2, [tmp1, #16] + add tmp2, r0, #8 + add ip, tmp2, r2 + ldr ip, [ip, #-8] + cmp ip, tmp1 + beq .instanceof_is_instance + + mov r0, #0 + cmp r2, #secondary_super_cache_offset_in_bytes + bne .instanceof_not_instance + + mov r0, tmp2 + mov r1, tmp1 + + bl _ZNK5Klass23search_secondary_supersEP12klassOopDesc + cmp r0, #0 + beq .instanceof_not_instance + +.instanceof_is_instance: + mov r0, #1 + str r0, [stack, #4] + DISPATCH 3 +.instanceof_not_instance: + mov r0, #0 + str r0, [stack, #4] + DISPATCH 3 + +2: ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime13quicken_io_ccEP10JavaThread + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception -.instanceof_1: - mov r1, tmp1, asl #2 + + ldr r3, [istate, #ISTATE_METHOD] ldr r0, [stack, #4] - ldr r2, [istate, #ISTATE_METHOD] - ldr r0, [r0, #4] - ldr r3, [r2, #12] - add r3, r3, r1 - ldr r1, [r3, #32] - cmp r1, r0 - beq .instanceof_2 - add r0, r0, #8 - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc - cmp r0, #0 - streq r0, [stack, #4] - beq .instanceof_exit -.instanceof_2: - mov r3, #1 - str r3, [stack, #4] -.instanceof_exit: - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - DISPATCH 3 + ldr r3, [r3, #METHOD_CONSTANTS] @ METHOD->constanst() might have moved + b 1b Opcode monitorenter ldr r1, [stack, #4] @@ -2797,38 +3581,35 @@ orr tmp1, r3, #1 mov r2, tmp1 str tmp1, [sl, #0] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp r0, tmp1 beq .monitorenter_exit + ldr r0, [istate, #ISTATE_THREAD] bic r1, tmp1, #3 - ldr r2, [istate, #ISTATE_THREAD] - mov r0, r2 - ldr r3, [r2, #0] - ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] - blx ip + bl JavaThread_is_lock_owned cmp r0, #0 movne lr, #0 strne lr, [sl, #0] bne .monitorenter_exit mov r1, sl - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] beq .monitorenter_exit b handle_exception .monitorenter_4: b null_ptr_exception .monitorenter_5: mov lr, #0 - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK ldr r3, [istate, #ISTATE_THREAD] ldr ip, [istate, #ISTATE_THREAD] ldr r1, [r3, #THREAD_JAVA_SP] @@ -2868,11 +3649,11 @@ ldr r1, [istate, #ISTATE_THREAD] ldr r3, [r1, #THREAD_TOP_ZERO_FRAME] str r3, [r1, #THREAD_LAST_JAVA_SP] - ldr stack, [istate, #ISTATE_STACK] + CACHE_STACK ldr sl, [istate, #ISTATE_STACK_BASE] - ldr jpc, [istate, #ISTATE_BCP] ldr r3, [stack, #4] - ldr locals, [istate, #ISTATE_LOCALS] + CACHE_JPC + ASSERT_LOCALS_CACHED mov r1, r3 str r3, [sl, #4] ldr r2, [r3, #0] @@ -2880,35 +3661,31 @@ orr tmp1, r2, #1 mov r2, tmp1 str tmp1, [sl, #0] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp r0, tmp1 beq .monitorenter_exit + ldr r0, [istate, #ISTATE_THREAD] bic r1, tmp1, #3 - ldr r2, [istate, #ISTATE_THREAD] - mov r0, r2 - ldr r3, [r2, #0] - ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] - blx ip + bl JavaThread_is_lock_owned cmp r0, #0 movne ip, #0 strne ip, [sl, #0] bne .monitorenter_exit mov r1, sl ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] beq .monitorenter_exit b handle_exception .monitorenter_exit: - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_CP add stack, stack, #4 DISPATCH 1 @@ -2936,35 +3713,34 @@ beq .monitorexit_exit mov r1, sl mov r2, tmp1 - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp tmp1, r0 beq .monitorexit_exit str sl, [tmp1, #4] mov r1, tmp1 - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r3, [r0, #THREAD_PENDING_EXC] + CACHE_JPC cmp r3, #0 - ldr locals, [istate, #ISTATE_LOCALS] beq .monitorexit_exit b handle_exception .monitorexit_3: b null_ptr_exception .monitorexit_4: ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread b handle_exception_with_bcp .monitorexit_exit: add stack, stack, #4 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_CP DISPATCH 1 vm_fatal_error: @@ -2977,23 +3753,24 @@ ALIGN_WORD Opcode aastore - ldr tmp1, [stack, #12] + ldr tmp1, [stack, #12] @ arrObj ldr tmp_vvv, [stack, #8] - cmp tmp1, #0 + SW_NPC cmp tmp1, #0 ldr sl, [stack, #4] - beq null_ptr_exception + SW_NPC beq null_ptr_exception +.abortentry115: ldr r3, [tmp1, #8] cmp tmp_vvv, r3 bcs array_bounds_exception cmp sl, #0 beq .aastore_exit - ldr r3, [tmp1, #4] + ldr r3, [tmp1, #4] @ arrObj->klass() ldr r0, [sl, #4] - ldr r1, [r3, #136] + ldr r1, [r3, #KLASS_PART+OBJARRAYKLASS_ELEMENTKLASS] cmp r0, r1 beq .aastore_exit add r0, r0, #8 - bl _ZNK5Klass13is_subtype_ofEP12klassOopDesc + bl is_subtype_of cmp r0, #0 moveq r0, #VMSYMBOLS_ArrayStoreException beq raise_exception @@ -3007,8 +3784,7 @@ add stack, stack, #12 ldr r3, [r3, #76] strb lr, [r3, r1, lsr #9] - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_CP DISPATCH 1 Opcode wide @@ -3061,6 +3837,7 @@ DISPATCH 4 case_wide_istore: case_wide_fstore: +case_wide_astore: POP r2 str r2, [locals, -r1, lsl #2] DISPATCH 4 @@ -3068,21 +3845,14 @@ case_wide_lload: sub r1, locals, r1, lsl #2 ldmda r1, {r1, r2} - PUSH2 r1, r2 + PUSH r1, r2 DISPATCH 4 case_wide_dstore: case_wide_lstore: - POP2 r2, r3 + POP r2, r3 sub r1, locals, r1, lsl #2 stmda r1, {r2, r3} DISPATCH 4 -case_wide_astore: - mov r3, r1 - mov r0, stack - mvn r1, #0 - mov r2, locals - bl _ZN19BytecodeInterpreter6astoreEPiiS0_i - DISPATCH 4 do_wide_ret: ldr r2, [istate, #ISTATE_METHOD] ldr r2, [r2, #8] @@ -3102,25 +3872,21 @@ ldrb tmp1, [jpc, #3] @ zero_extendqisi2 ldr r0, [istate, #ISTATE_THREAD] add r1, stack, tmp1, lsl #2 - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime14multianewarrayEP10JavaThreadPi + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r1, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r1, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception ldr r3, [r0, #THREAD_VM_RESULT] - str r3, [stack, tmp1, asl #2] - ldr r2, [istate, #ISTATE_THREAD] - mov r3, tmp1, asl #2 - sub r3, r3, #4 - str r1, [r2, #THREAD_VM_RESULT] - add stack, stack, r3 + bne handle_exception + str r3, [stack, tmp1, asl #2]! + str r1, [r0, #THREAD_VM_RESULT] + sub stack, stack, #4 DISPATCH 4 Opcode jsr_w @@ -3148,57 +3914,82 @@ ldr r1, [r3] cmp r1, #1 bne 1f - ldr r3, [istate, #ISTATE_THREAD] - mov r0, sp - str r3, [sp] - bl _ZN17HandleMarkCleanerD1Ev + add r0, istate, #ISTATE_THREAD + bl HandleMarkCleanerD ldr r0, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN20SafepointSynchronize5blockEP10JavaThread + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception 1: DISPATCH 0 Opcode breakpoint mov r2, jpc - str stack, [istate, #ISTATE_STACK] - str jpc, [istate, #ISTATE_BCP] + DECACHE_STACK + DECACHE_JPC ldr r0, [istate, #ISTATE_THREAD] ldr r1, [istate, #ISTATE_METHOD] bl _ZN18InterpreterRuntime24get_original_bytecode_atEP10JavaThreadP13methodOopDescPh - ldr stack, [istate, #ISTATE_STACK] - ldmib istate, {jpc, locals} @ phole ldm mov tmp1, r0 ldr r0, [istate, #ISTATE_THREAD] ldr r3, [r0, #THREAD_PENDING_EXC] cmp r3, #0 bne handle_exception - str stack, [istate, #ISTATE_STACK] - str jpc, [istate, #ISTATE_BCP] - mov r2, jpc + ldr r2, [istate, #ISTATE_BCP] ldr r1, [istate, #ISTATE_METHOD] bl _ZN18InterpreterRuntime11_breakpointEP10JavaThreadP13methodOopDescPh + ASSERT_STACK_CACHED + ASSERT_LOCALS_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_CP cmp r3, #0 - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET - ldr locals, [istate, #ISTATE_LOCALS] - bne handle_exception and r0, tmp1, #255 + bne handle_exception DISPATCH_BYTECODE +#ifndef FAST_BYTECODES + Opcode bgetfield + Opcode cgetfield + Opcode igetfield + Opcode lgetfield + Opcode sgetfield + Opcode aputfield + Opcode bputfield + Opcode cputfield + Opcode iputfield + Opcode lputfield + Opcode invokevfinal + Opcode invokeresolved + Opcode invokespecialresolved + Opcode invokestaticresolved + Opcode iaccess_0 + Opcode iload_0_iconst_N + Opcode iload_iconst_N + Opcode iadd_istore_N + Opcode isub_istore_N + Opcode iand_istore_N + Opcode ior_istore_N + Opcode ixor_istore_N + Opcode iadd_u4store + Opcode isub_u4store + Opcode iand_u4store + Opcode ior_u4store + Opcode ixor_u4store + Opcode fast_iload_iload + Opcode fast_iload_iload_N + Opcode fast_iload_N_iload + Opcode fast_iload_N_iload_N +#endif Opcode undefined ldr r2, [dispatch, #Bytecodes_name_Address-XXX] ldrb r3, [jpc, #0] @ zero_extendqisi2 @@ -3208,7 +3999,7 @@ ldrcc ip, [r2, r3, asl #2] adr r2, unimplemented_opcode_msg mov r1, #99 - str ip, [sp, #0] + str ip, [arm_sp, #0] bl _Z19report_fatal_varargPKciS0_z b breakpoint unimplemented_opcode_msg: @@ -3220,18 +4011,18 @@ Opcode return_register_finalizer ldr r1, [locals, #0] ldr r3, [r1, #4] - ldr r2, [r3, #84] - tst r2, #1073741824 + ldr r2, [r3, #KLASS_PART+KLASS_ACCESSFLAGS] + tst r2, #JVM_ACC_HAS_FINALIZER beq handle_return - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] bl _ZN18InterpreterRuntime18register_finalizerEP10JavaThreadP7oopDesc + ASSERT_STACK_CACHED ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] + CACHE_JPC ldr r3, [r0, #THREAD_PENDING_EXC] - ldr locals, [istate, #ISTATE_LOCALS] +@ CACHE_LOCALS & CACHE_CP not require for handle_retuen / handle_exception cmp r3, #0 beq handle_return b handle_exception @@ -3240,12 +4031,11 @@ @ may or may not be synchronized. So we still have to check the synchronized @ flag in the synchronized path, otherwise we may get an IllegalMonitor. normal_entry_synchronized: - stmfd sp!, {regset, lr} - sub sp, sp, #220 + stmfd arm_sp!, {regset, lr} mov sl, r0 mov tmp1, r2 - ldrh r2, [sl, #40] - ldrh r3, [sl, #42] + ldrh r2, [sl, #METHOD_MAXLOCALS] + ldrh r3, [sl, #METHOD_SIZEOFPARAMETERS] rsb tmp_zzz, r3, r2 cmp tmp_zzz, #0 ble .normal_entry_synchronized_no_locals @@ -3262,15 +4052,11 @@ mov r2, tmp1 mov r1, sl add r0, tmp1, #THREAD_JAVA_STACK_BASE - bl build_normal -@ add lr, sp, #192 -@ str r0, [sp, #56] + bl build_frame mov tmp_vvv, r0 ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] sub r0, r0, #72 -@ str lr, [sp, #32] mov istate, r0 -@ str r0, [sp, #60] str r3, [tmp_vvv, #0] ldr r0, [tmp1, #THREAD_STACK_SIZE] ldr r3, [tmp1, #THREAD_STACK_BASE] @@ -3279,61 +4065,48 @@ adrl ip, dispatch_init_adcon rsb r3, r0, r3 rsb r2, r1, r2 - ldmia ip, {r0, r1} - rsb r3, r3, sp + ldm ip, {r0, r1} + rsb r3, r3, arm_sp cmp r2, #4096 cmpge r3, #32768 add r0, r0, ip str tmp_vvv, [tmp1, #THREAD_TOP_ZERO_FRAME] + CACHE_JPC str tmp_vvv, [tmp1, #THREAD_LAST_JAVA_SP] add dispatch, r1, r0 blt .throw_stack_overflow - ldr stack, [istate, #ISTATE_STACK] - ldmib istate, {jpc, locals} @ phole ldm ldr r0, [istate, #ISTATE_METHOD] - ldr r3, [r0, #24] - tst r3, #32 + CACHE_STACK + ldr r3, [r0, #METHOD_ACCESSFLAGS] + CACHE_LOCALS + tst r3, #JVM_ACC_SYNCHRONIZED + CACHE_CP bne normal_do_synchronization - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH 0 do_execute_java_bytecodes_restore_locals_and_jpc: - ldr jpc, [istate, #ISTATE_BCP] + CACHE_JPC do_execute_java_bytecodes_restore_locals: - ldr locals, [istate, #ISTATE_LOCALS] - ldr constpool, [istate, #ISTATE_CONSTANTS] - add constpool, constpool, #CONST_POOL_OFFSET + CACHE_LOCALS + CACHE_CP DISPATCH 0 normal_do_synchronization: - tst r3, #8 - ldrne r3, [r0, #12] + tst r3, #JVM_ACC_STATIC + ldrne r3, [r0, #METHOD_CONSTANTS] ldreq sl, [locals, #0] ldrne r2, [r3, #16] - ldr r3, [dispatch, #UseBiasedLocking_Address-XXX] - ldr ip, [istate, #ISTATE_MONITOR_BASE] + ldr tmp1, [istate, #ISTATE_MONITOR_BASE] ldrne sl, [r2, #60] - str ip, [sp, #100] - ldrb r1, [r3] - cmp r1, #0 - beq .normal_do_synchronisation_1 - ldr tmp_xxx, [sl, #0] - and r3, tmp_xxx, #7 - cmp r3, #5 - beq .normal_do_synchronisation_4 -.normal_do_synchronisation_1: - ldr r0, [sp, #100] ldr r3, [sl, #0] - sub fp, r0, #8 orr tmp_xxx, r3, #1 - str tmp_xxx, [r0, #-8] + str tmp_xxx, [tmp1, #-8]! .normal_do_synchronisation_2: ldr tmp_vvv, [sl, #0] cmp tmp_xxx, tmp_vvv bne .normal_do_synchronisation_3 mov r0, tmp_xxx - mov r1, fp + mov r1, tmp1 mov r2, sl mov r3, #0xffffffc0 bic r3, r3, #0xf000 @@ -3343,85 +4116,153 @@ .normal_do_synchronisation_3: cmp tmp_xxx, tmp_vvv beq do_execute_java_bytecodes_restore_locals + ldr r0, [istate, #ISTATE_THREAD] bic r1, tmp_xxx, #3 - ldr r2, [istate, #ISTATE_THREAD] - mov r0, r2 - ldr r3, [r2, #0] - ldr ip, [r3, #THREAD_VTABLE_IS_LOCK_OWNED] - blx ip + bl JavaThread_is_lock_owned cmp r0, #0 - beq .handle_exception_28 - ldr r0, [sp, #100] + beq .normal_do_synchronisation_4 mov r3, #0 - str r3, [r0, #-8] + str r3, [tmp1] b do_execute_java_bytecodes_restore_locals .normal_do_synchronisation_4: - ldr r2, [sl, #4] - ldr r2, [r2, #104] + mov r1, tmp1 + DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] - eor r3, r2, r0 - eor r3, r3, tmp_xxx - bics ip, r3, #120 - beq do_execute_java_bytecodes_restore_locals - mov r0, r2 - mov r1, sl - mov r2, tmp_xxx - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ - cmp tmp_xxx, r0 - beq .normal_do_synchronisation_1 - b do_execute_java_bytecodes_restore_locals + bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock + ldr r0, [istate, #ISTATE_THREAD] + ASSERT_STACK_CACHED + ldr r3, [r0, #THREAD_PENDING_EXC] + cmp r3, #0 + mov r2, r0 + beq do_execute_java_bytecodes_restore_locals_and_jpc + b handle_exception_do_not_unlock # r2 = [jpc, #1] # r1 = [jpc, #2] - Opcode invokevirtual - add r0, constpool, r1, lsl #12 - ldr r2, [r0, r2, asl #4]! @ r0 = cache - and r2, r2, #0xff000000 - cmp r2, #182 << 24 - blne resolve_invokevirtual - ldr r3, [r0, #12] - mov r0, #opc_invokeresolved - tst r3, #67108864 - movne r0, #opc_invokevfinal - b rewrite_bytecode - - Opcode invokespecial + Opcode invokeinterface + DECACHE_STACK add r0, constpool, r1, lsl #12 - ldr r2, [r0, r2, asl #4]! @ r0 = cache + add r0, r0, r2, asl #4 + DECACHE_JPC + ldr r2, [r0, #CP_OFFSET] and r2, r2, #0x00ff0000 - cmp r2, #183 << 16 - blne resolve_invokespecial - mov r0, #opc_invokespecialresolved - b rewrite_bytecode + cmp r2, #opc_invokeinterface << 16 + blne resolve_invokeinterface - Opcode invokestatic - add r0, constpool, r1, lsl #12 - ldr r2, [r0, r2, asl #4]! @ r0 = cache - and r2, r2, #0x00ff0000 - cmp r2, #184 << 16 - blne resolve_invokestatic - mov r0, #opc_invokestaticresolved - b rewrite_bytecode + ldr r3, [r0, #CP_OFFSET+12] + and r2, r3, #255 + ldr r2, [stack, r2, lsl #2] + SW_NPC cmp r2, #0 + SW_NPC beq null_ptr_exception +.abortentry110: + ldr tmp2, [r2, #4] @ rcvr->klass() + tst r3, #flag_methodInterface + bne .invokeinterface_methodInterface + + ldr lr, [r0, #CP_OFFSET+4] @ lr = iclass + + add r1, tmp2, #INSTANCEKLASS_VTABLE_OFFSET + ldr r2, [tmp2, #KLASS_PART+INSTANCEKLASS_VTABLE_LEN] + ldr ip, [tmp2, #KLASS_PART+INSTANCEKLASS_ITABLE_LEN] + add r2, r2, #1 + bic r2, r2, #1 + + add r1, r1, r2, lsl #2 + mov r2, #0 +1: + cmp r2, ip + beq incompatibleclass_exception + ldr r3, [r1], #8 + add r2, r2, #1 + cmp lr, r3 + bne 1b + + ldr r3, [r0, #CP_OFFSET+8] + ldr r2, [r1, #-4] + add r3, tmp2, r3, lsl #2 + ldr tmp2, [r3, r2] + SW_NPC cmp tmp2, #0 + SW_NPC beq abstractmethod_exception +.invokeinterface_invoke: + ldr tmp1, [istate, #ISTATE_THREAD] +@ str tmp2, [istate, #ISTATE_CALLEE] +.abortentry116: + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] + mov r1, #0 + str ip, [istate, #36] + str r1, [tmp1, #THREAD_LAST_JAVA_SP] + + add stack, stack, #4 + str stack, [tmp1, #THREAD_JAVA_SP] + + ldr r3, [ip] + + mov tmp_invoke_len, #5 + + adr r0, normal_entry + cmp r3, r0 + beq fast_normal_entry_with_len + + mov r0, tmp2 + mov r1, ip + mov r2, tmp1 + blx r3 + + ASSERT_LOCALS_CACHED + + ldr ip, [istate, #ISTATE_THREAD] + CACHE_JPC + ldr stack, [ip, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + sub stack, stack, #4 + + ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [ip, #THREAD_JAVA_SP] + str r1, [ip, #THREAD_LAST_JAVA_SP] + DISPATCH_START 5 + ldr r3, [ip, #4] + DISPATCH_NEXT + DISPATCH_NEXT + cmp r3, #0 + DISPATCH_NEXT + bne invokeinterface_exception_fix + DISPATCH_NEXT + CACHE_CP + DISPATCH_FINISH + +.invokeinterface_methodInterface: + tst r3, #flag_vfinalMethod + ldrne tmp2, [r0, #CP_OFFSET+8] + bne .invokeinterface_invoke + ldr r1, [r0, #CP_OFFSET+8] + add r3, tmp2, r1, lsl #2 + ldr tmp2, [r3, #INSTANCEKLASS_VTABLE_OFFSET] + b .invokeinterface_invoke + +#ifdef FAST_BYTECODES # r2 = [jpc, #1] # r1 = [jpc, #2] Opcode invokevfinal - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK add r0, constpool, r1, lsl #12 - str jpc, [istate, #ISTATE_BCP] + DECACHE_JPC add r0, r2, asl #4 - ldr r3, [r0, #12] + ldr r3, [r0, #CP_OFFSET+12] ldr tmp1, [istate, #ISTATE_THREAD] and r1, r3, #255 ldr r2, [stack, r1, asl #2] mov r1, #0 - cmp r2, #0 - beq null_ptr_exception + SW_NPC cmp r2, #0 + SW_NPC beq null_ptr_exception +.abortentry117: + HW_NPC ldr r3, [r2] @ Only to provoke abort - ldr tmp2, [r0, #8] + ldr tmp2, [r0, #CP_OFFSET+8] - str tmp2, [istate, #ISTATE_CALLEE] - ldr ip, [tmp2, #76] +@ str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] str r1, [tmp1, #THREAD_LAST_JAVA_SP] str ip, [istate, #36] @@ -3429,42 +4270,82 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] - adr lr, normal_entry - cmp r3, lr +#ifdef FASTPATH_ENTRY + adr r0, normal_entry + cmp r3, r0 beq fast_normal_entry - adr lr, native_entry - cmp r3, lr +#ifdef NATIVE_ENTRY + adrl r0, native_entry + cmp r3, r0 beq fast_native_entry - adr lr, accessor_entry - cmp r3, lr +#endif + adr r0, accessor_entry + cmp r3, r0 beq fast_accessor_entry +#endif b normal_dispatch_and_return +#endif // FAST_BYTECODES # r2 = [jpc, #1] # r1 = [jpc, #2] - Opcode invokeresolved - str stack, [istate, #ISTATE_STACK] + Opcode invokevirtual add r0, constpool, r1, lsl #12 - str jpc, [istate, #ISTATE_BCP] add r0, r0, r2, asl #4 - ldr r3, [r0, #12] + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0xff000000 + cmp r2, #opc_invokevirtual << 24 + blne resolve_invokevirtual + ldr r3, [r0, #CP_OFFSET+12] +#ifdef FAST_BYTECODES + mov r0, #opc_invokeresolved + tst r3, #flag_vfinalMethod + movne r0, #opc_invokevfinal + b rewrite_bytecode +#else + DECACHE_STACK + DECACHE_JPC ldr tmp1, [istate, #ISTATE_THREAD] and r1, r3, #255 ldr r2, [stack, r1, asl #2] mov r1, #0 -#ifndef HW_NULL_PTR_CHECK cmp r2, #0 - beq null_ptr_exception_jpc_0 -#endif + beq null_ptr_exception - ldr tmp2, [r0, #8] + ldr tmp2, [r0, #CP_OFFSET+8] + tst r3, #flag_vfinalMethod + bne 1f + + ldr r3, [r2, #4] + add r3, r3, tmp2, lsl #2 + ldr tmp2, [r3, #INSTANCEKLASS_VTABLE_OFFSET] +1: +#endif // FAST_BYTECODES + +#ifdef FAST_BYTECODES +# r2 = [jpc, #1] +# r1 = [jpc, #2] + Opcode invokeresolved + DECACHE_STACK + add r0, constpool, r1, lsl #12 + DECACHE_JPC + add r0, r0, r2, asl #4 + ldr r3, [r0, #CP_OFFSET+12] + ldr tmp1, [istate, #ISTATE_THREAD] + and r1, r3, #255 + ldr r2, [stack, r1, asl #2] + mov r1, #0 + SW_NPC cmp r2, #0 + SW_NPC beq null_ptr_exception_jpc_0 + + ldr tmp2, [r0, #CP_OFFSET+8] .abortentry104: ldr r3, [r2, #4] add r3, r3, tmp2, lsl #2 - ldr tmp2, [r3, #304] + ldr tmp2, [r3, #INSTANCEKLASS_VTABLE_OFFSET] +#endif // FAST_BYTECODES - str tmp2, [istate, #ISTATE_CALLEE] - ldr ip, [tmp2, #76] +@ str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] str r1, [tmp1, #THREAD_LAST_JAVA_SP] str ip, [istate, #36] @@ -3472,57 +4353,70 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] - adr lr, normal_entry - cmp r3, lr +#ifdef FASTPATH_ENTRY + adr r0, normal_entry + cmp r3, r0 beq fast_normal_entry - adr lr, native_entry - cmp r3, lr +#ifdef NATIVE_ENTRY + adr r0, native_entry + cmp r3, r0 beq fast_native_entry - adr lr, accessor_entry - cmp r3, lr +#endif + adr r0, accessor_entry + cmp r3, r0 beq fast_accessor_entry +#endif normal_dispatch_and_return: mov r0, tmp2 mov r1, ip + mov r2, tmp1 ldr r2, [istate, #ISTATE_THREAD] blx r3 + ASSERT_LOCALS_CACHED + ldr ip, [istate, #ISTATE_THREAD] - ldr r3, [ip, #THREAD_JAVA_SP] + CACHE_JPC + ldr stack, [ip, #THREAD_JAVA_SP] ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub r3, r3, #4 - str r3, [istate, #ISTATE_STACK] + sub stack, stack, #4 ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] add r2, r2, #4 str r2, [ip, #THREAD_JAVA_SP] str r1, [ip, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] - ldr r3, [r0, #4] DISPATCH_START 3 - ldr locals, [istate, #ISTATE_LOCALS] - ldr constpool, [istate, #ISTATE_CONSTANTS] + ldr r3, [ip, #4] DISPATCH_NEXT DISPATCH_NEXT - add constpool, constpool, #CONST_POOL_OFFSET cmp r3, #0 DISPATCH_NEXT - bne invokespecial_exception_fix + bne invoke_exception_fix + DISPATCH_NEXT + CACHE_CP DISPATCH_FINISH - Opcode invokestaticresolved - str stack, [istate, #ISTATE_STACK] + Opcode invokestatic add r0, constpool, r1, lsl #12 - str jpc, [istate, #ISTATE_BCP] - add r0, r2, asl #4 + add r0, r0, r2, asl #4 + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokestatic << 16 + blne resolve_invokestatic + FBC mov r0, #opc_invokestaticresolved + FBC b rewrite_bytecode + + FBC Opcode invokestaticresolved + DECACHE_STACK + FBC add r0, constpool, r1, lsl #12 + DECACHE_JPC + FBC add r0, r2, asl #4 - ldr tmp2, [r0, #4] + ldr tmp2, [r0, #CP_OFFSET+4] mov r1, #0 - str tmp2, [istate, #ISTATE_CALLEE] - ldr r3, [tmp2, #76] +@ str tmp2, [istate, #ISTATE_CALLEE] + ldr r3, [tmp2, #METHOD_FROM_INTERPRETED] ldr tmp1, [istate, #ISTATE_THREAD] str r3, [istate, #36] str r1, [tmp1, #THREAD_LAST_JAVA_SP] @@ -3532,35 +4426,78 @@ ldr ip, [istate, #36] ldr r3, [ip, #0] - adr lr, normal_entry - cmp r3, lr +#ifdef FASTPATH_ENTRY + adr r0, normal_entry + cmp r3, r0 beq fast_normal_entry - adr lr, native_entry - cmp r3, lr +#ifdef NATIVE_ENTRY + adr r0, native_entry + cmp r3, r0 beq fast_native_entry - adr lr, accessor_entry - cmp r3, lr +#endif + adr r0, accessor_entry + cmp r3, r0 beq fast_accessor_entry +#endif b normal_dispatch_and_return - Opcode invokespecialresolved - str stack, [istate, #ISTATE_STACK] + ALIGN_CODE +normal_entry: + adrl ip, dispatch_init_adcon + stmfd arm_sp!, {regset, lr} + mov tmp2, r0 + ldm ip, {r0, r1} + + mov tmp_invoke_len, #0 + mov tmp1, r2 + + add r0, r0, ip + add dispatch, r1, r0 + + ldr stack, [tmp1, #THREAD_JAVA_SP] + + ldr r0, [tmp1, #THREAD_STACK_SIZE] + ldr r3, [tmp1, #THREAD_STACK_BASE] + rsb r3, r0, r3 + rsb r3, r3, arm_sp + cmp r3, #32768 + bge fast_normal_entry_with_len + + mov r0, tmp1 + bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread + + ldmfd arm_sp!, {regset, pc} + + Opcode invokespecial add r0, constpool, r1, lsl #12 - str jpc, [istate, #ISTATE_BCP] - add r0, r2, asl #4 + add r0, r0, r2, asl #4 + ldr r2, [r0, #CP_OFFSET] + and r2, r2, #0x00ff0000 + cmp r2, #opc_invokespecial << 16 + blne resolve_invokespecial + FBC mov r0, #opc_invokespecialresolved + FBC b rewrite_bytecode - ldr r3, [r0, #12] + FBC Opcode invokespecialresolved + DECACHE_STACK + FBC add r0, constpool, r1, lsl #12 + DECACHE_JPC + FBC add r0, r2, asl #4 + + ldr r3, [r0, #CP_OFFSET+12] ldr tmp1, [istate, #ISTATE_THREAD] and r3, r3, #255 ldr r2, [stack, r3, asl #2] mov r1, #0 - cmp r2, #0 - beq null_ptr_exception + SW_NPC cmp r2, #0 + SW_NPC beq null_ptr_exception +.abortentry118: + HW_NPC ldr r3, [r2] @ Only to provoke abort - ldr tmp2, [r0, #4] + ldr tmp2, [r0, #CP_OFFSET+4] - str tmp2, [istate, #ISTATE_CALLEE] - ldr ip, [tmp2, #76] +@ str tmp2, [istate, #ISTATE_CALLEE] + ldr ip, [tmp2, #METHOD_FROM_INTERPRETED] str r1, [tmp1, #THREAD_LAST_JAVA_SP] str ip, [istate, #36] @@ -3568,15 +4505,19 @@ str stack, [tmp1, #THREAD_JAVA_SP] ldr r3, [ip, #0] - adr lr, normal_entry - cmp r3, lr +#ifdef FASTPATH_ENTRY + adr r0, normal_entry + cmp r3, r0 beq fast_normal_entry - adr lr, native_entry - cmp r3, lr +#ifdef NATIVE_ENTRY + adr r0, native_entry + cmp r3, r0 beq fast_native_entry - adr lr, accessor_entry - cmp r3, lr +#endif + adr r0, accessor_entry + cmp r3, r0 beq fast_accessor_entry +#endif b normal_dispatch_and_return ALIGN_CODE @@ -3591,403 +4532,59 @@ ldrb r3, [r1, #50] ldrb r1, [r1, #51] cmp ip, #0 - ldr ip, [r0, #12] - bne normal_entry - ldr ip, [ip, #12] - orr r3, r3, r1, lsl #8 @ r3 = index - - add r1, ip, #16 - ldr r3, [r1, r3, lsl #4]! @ r1 = cache, r3 = flags - ldr ip, [r2, #THREAD_JAVA_SP] @ ip == stack - and r3, r3, #0x00ff0000 - cmp r3, #180 << 16 - ldr r3, [ip, #0] - bne normal_entry - - cmp r3, #0 - beq normal_entry - - ldr r0, [r1, #12] - ldr r1, [r1, #8] - movs r0, r0, lsr #29 - bls accessor_non_w - - ldr r0, [r3, r1] - str r0, [ip, #0] - bx lr - - ALIGN_CODE -normal_entry: - adrl ip, dispatch_init_adcon - stmfd sp!, {regset, lr} - mov tmp2, r0 - ldmia ip, {r0, r1} - sub sp, sp, #220 - - mov istate, #ISTATE_THREAD - add dispatch, ip, r3 - - add r0, r0, ip - add dispatch, r1, r0 - - ldrh r1, [tmp2, #40] - ldrh r3, [tmp2, #42] - mov tmp1, r2 - - rsb tmp_xxx, r3, r1 - ldr stack, [tmp1, #THREAD_JAVA_SP] - movs tmp_xxx, tmp_xxx, asr #1 - mov r0, #0 - mov ip, #0 - strcs r0, [stack, #-4]! -.zero_locals: - subs tmp_xxx, tmp_xxx, #1 - stmgedb stack!, {r0, ip} - bgt .zero_locals - -@ r11 = thread -@ r10 = method - ldrh r2, [r10, #38] - mvn tmp_vvv, #0x540 @ form 0xCAFEBABF - bic tmp_vvv, tmp_vvv, #0x14000 - bic tmp_vvv, tmp_vvv, #0x35000000 - str istate, [stack, #-76 + ISTATE_SAVED_ISTATE] - sub istate, stack, #76 @ istate == istate - mov r7, istate @ monitor_base == istate - sub r5, istate, r2, lsl #2 - str r5, [tmp1, #THREAD_JAVA_SP] @ drop stack now - sub r5, r5, #4 @ stack limit = istate - stackwords - 4 - mov r3, istate - stmdb stack, {r0, r3, r5, r7, istate, tmp_vvv, ip} @ - - str ip, [istate, #ISTATE_CALLEE] - str ip, [istate, #ISTATE_MDX] - str ip, [istate, #ISTATE_PREV_LINK] - - sub locals, stack, #4 - add locals, locals, r1, lsl #2 @ locals == r7 - - ldr jpc, [r10, #8] @ jpc == r5 - ldr constpool, [r10, #12] @ - - sub stack, istate, #ISTATE_BCP @ stack == r4 - str stack, [istate, #ISTATE_STACK] - - add jpc, jpc, #48 - - ldr constpool, [constpool, #12] - - str tmp1, [istate, #ISTATE_THREAD] - stmib istate, {jpc, locals, constpool, r10} - - add constpool, constpool, #CONST_POOL_OFFSET - - str stack, [istate, #ISTATE_STACK] - - add tmp2, istate, #72 - - ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] - str r3, [istate, #72] @ Fill in prev_link - ldr r0, [tmp1, #THREAD_STACK_SIZE] - ldr r3, [tmp1, #THREAD_STACK_BASE] - ldr r2, [tmp1, #THREAD_JAVA_SP] - ldr r1, [tmp1, #THREAD_JAVA_STACK_BASE] - rsb r3, r0, r3 - DISPATCH_START 0 - rsb r2, r1, r2 - rsb r3, r3, sp - DISPATCH_NEXT - cmp r2, #4096 - cmpge r3, #32768 - DISPATCH_NEXT - str tmp2, [tmp1, #THREAD_TOP_ZERO_FRAME] - str tmp2, [tmp1, #THREAD_LAST_JAVA_SP] - DISPATCH_NEXT - blt .throw_stack_overflow - DISPATCH_FINISH - - ALIGN_CODE -native_entry: - adrl ip, dispatch_init_adcon - stmfd sp!, {r3, r4, r5, r7, r9, r10, r11, lr} - at --- - ldmia ip, {dispatch, r7} - mov r11, r0 - ldrh r1, [r11, #42] - add dispatch, dispatch, ip - ldr r4, [r2, #THREAD_JAVA_SP] - add dispatch, dispatch, r7 - ldr ip, [r2, #THREAD_TOP_ZERO_FRAME] - mov r0, #0 - mvn r10, #0x540 @ form 0xCAFEBABF in r10 - bic r10, r10, #0x14000 - bic r10, r10, #0x35000000 - sub r9, r4, #76 - mov r7, r9 - str r9, [r2, #THREAD_JAVA_SP] @ drop stack - sub r5, r9, #4 @ stack limit = r9 - 4 - mov r3, r9 - stmdb r4, {r0, r3, r5, r7, r9, r10, ip} - str r0, [r9, #ISTATE_CALLEE] - str r0, [r9, #ISTATE_PREV_LINK] - str r0, [r9, #ISTATE_MSG] - str r0, [r9, #ISTATE_MDX] - sub r7, r4, #4 - add r7, r7, r1, lsl #2 - mov r5, #0 - ldr r10, [r11, #12] - ldr r10, [r10, #12] - stmia r9, {r2, r5, r7, r10, r11} - add r0, r9, #72 - mov r9, r2 - at --- -.LPIC18_native_entry: - ldr r2, [r9, #THREAD_STACK_SIZE] - ldr r3, [r9, #THREAD_STACK_BASE] - rsb r3, r2, r3 - rsb r3, r3, sp - cmp r3, #4096 - str r0, [r9, #THREAD_TOP_ZERO_FRAME] - blt .native_entry_throw_stack_overflow - ldr r5, [r11, #84] - cmp r5, #0 - bne .native_entry_got_handleraddr - str r0, [r9, #THREAD_LAST_JAVA_SP] - mov r0, r9 - mov r1, r11 - bl _ZN18InterpreterRuntime19prepare_native_callEP10JavaThreadP13methodOopDesc - ldr r1, [r9, #THREAD_PENDING_EXC] - str r5, [r9, #THREAD_LAST_JAVA_SP] - cmp r1, #0 - bne .native_entry_exception - ldr r5, [r11, #84] -.native_entry_got_handleraddr: - ldr r2, [dispatch, #InterpreterRuntime_slow_signature_handler_Address-XXX] - cmp r5, r2 - bne .native_entry_get_handler - ldr r3, [r9, #THREAD_TOP_ZERO_FRAME] - mov r2, #0 - mov r0, r9 - str r3, [r9, #THREAD_LAST_JAVA_SP] - mov r3, r2 - mov r1, r11 - bl _ZN18InterpreterRuntime22slow_signature_handlerEP10JavaThreadP13methodOopDescPiS4_ - ldr r1, [r9, #THREAD_PENDING_EXC] - mov r3, #0 - cmp r1, #0 - str r3, [r9, #THREAD_LAST_JAVA_SP] - mov r5, r0 - bne .native_entry_exception -.native_entry_get_handler: - - sub ip, r7, r4 - mov ip, ip, asr #2 - add lr, ip, #4 - bic lr, lr, #1 - - add r3, r4, #ISTATE_OOP_TEMP-76 - - mov r4, sp - sub sp, sp, #16 - sub sp, sp, lr, lsl #2 - mov lr, sp - - add r1, r5, #24 - - add r2, r9, #THREAD_JNI_ENVIRONMENT - str r2, [lr], #4 - add r1, r1, #4 - - ldr r2, [r11, #24] - tst r2, #8 - beq .do_copy_args - - ldr r2, [r11, #12] - ldr r2, [r2, #16] - ldr r2, [r2, #60] - str r2, [r3] - - str r3, [lr], #4 - add r1, r1, #4 - -.do_copy_args: - cmp ip, #0 - blt .no_args - -.copy_args: - ldr r0, [r1], #4 - ldrh r3, [r0, #6] - cmp r3, #FFI_TYPE_DOUBLE - cmpne r3, #FFI_TYPE_SINT64 - beq .copy_long - - cmp r3, #FFI_TYPE_POINTER - beq .copy_ptr - - ldr r2, [r7], #-4 - str r2, [lr], #4 - subs ip, ip, #1 - bge .copy_args - b .no_args - -.copy_long: - tst lr, #4 - addne lr, lr, #4 - ldmda r7!, {r2, r3} - stmia lr!, {r2, r3} - subs ip, ip, #2 - bge .copy_args - b .no_args - -.copy_ptr: - ldr r2, [r7], #-4 - cmp r2, #0 - addne r2, r7, #4 - str r2, [lr], #4 - subs ip, ip, #1 - bge .copy_args - -.no_args: - ldr r0, [r9, #THREAD_TOP_ZERO_FRAME] - str r0, [r9, #THREAD_LAST_JAVA_SP] - - mov r2, #_thread_in_native - str r2, [r9, #THREAD_STATE] - - ldr ip, [r11, #80] - ldrh r11, [r11, #42] - ldmia sp!, {r0, r1, r2, r3} - blx ip - - mov sp, r4 - - mov r3, #_thread_in_native_trans - str r3, [r9, #THREAD_STATE] - -.L206_native_entry: - ldr r3, [dispatch, #SafePointSynchronize_state_Address-XXX] - ldr r3, [r3, #0] - cmp r3, #0 - ldreq r3, [r9, #THREAD_SUSPEND_FLAGS] - cmpeq r3, #0 - bne .native_entry_do_special - -.native_entry_do_return: - mov r3, #_thread_in_Java - mov r2, #0 - str r3, [r9, #THREAD_STATE] - str r2, [r9, #THREAD_LAST_JAVA_SP] - - add r2, r5, #24 - ldr r3, [r5, #4] - - ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] - ldr ip, [r5], #4 - str ip, [r9, #THREAD_TOP_ZERO_FRAME] - - add r5, r5, r11, lsl #2 - - ldr ip, [r2, r3, asl #2] - ldrh r2, [ip, #6] + ldr ip, [r0, #12] + bne normal_entry + ldr ip, [ip, #12] + orr r3, r3, r1, lsl #8 @ r3 = index - cmp r2, #FFI_TYPE_POINTER - beq .native_return_obj + add r1, ip, #16 + ldr r3, [r1, r3, lsl #4]! @ r1 = cache, r3 = flags + ldr ip, [r2, #THREAD_JAVA_SP] @ ip == stack + and r3, r3, #0x00ff0000 + cmp r3, #opc_getfield << 16 + ldr r3, [ip, #0] + bne normal_entry - ldr ip, [r9, #THREAD_ACTIVE_HANDLES] - mov r3, #0 @ ECN: OK, not an obj, save to clear handles - str r3, [ip, #128] + cmp r3, #0 + beq normal_entry - cmp r2, #FFI_TYPE_VOID - beq .native_return_void - cmp r2, #FFI_TYPE_FLOAT - cmpne r2, #FFI_TYPE_SINT32 - beq .native_return_w - cmp r2, #FFI_TYPE_DOUBLE - cmpne r2, #FFI_TYPE_SINT64 - beq .native_return_dw - - cmp r2, #FFI_TYPE_UINT16 - beq .native_return_char - cmp r2, #FFI_TYPE_SINT16 - beq .native_return_short - cmp r2, #FFI_TYPE_BOOL - beq .native_return_bool - cmp r2, #FFI_TYPE_SINT8 - beq .native_return_byte + ldr r0, [r1, #12] + ldr r1, [r1, #8] + movs r0, r0, lsr #29 + bls accessor_non_w - str r0, [r0, -r0] + ldr r0, [r3, r1] + str r0, [ip, #0] + bx lr -.native_return_obj: - cmp r0, #0 - ldrne r0, [r0] - str r0, [r5, #-4]! - str r5, [r9, #THREAD_JAVA_SP] - ldr r2, [r9, #THREAD_ACTIVE_HANDLES] - mov r3, #0 @ ECN: Now that the object is safe on the Java stack - str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_return_short: - mov r0, r0, lsl #16 - mov r0, r0, asr #16 -.native_return_w: - str r0, [r5, #-4]! -.native_return_void: - str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_return_dw: - stmdb r5!, {r0, r1} - str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_return_byte: - mov r0, r0, lsl #24 - mov r0, r0, asr #24 - str r0, [r5, #-4]! - str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_return_char: - mov r0, r0, lsl #16 - mov r0, r0, lsr #16 - str r0, [r5, #-4]! - str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_return_bool: - ands r0, r0, #255 - movne r0, #1 - str r0, [r5, #-4]! - str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} +#ifdef NATIVE_ENTRY + ALIGN_CODE +native_entry: + adrl ip, dispatch_init_adcon + stmfd arm_sp!, {r3, r4, r5, r6, r7, r8, r9, r10, r11, lr} -.native_entry_throw_stack_overflow: - str r0, [r9, #THREAD_LAST_JAVA_SP] - mov r0, r9 - bl _ZN18InterpreterRuntime24throw_StackOverflowErrorEP10JavaThread - mov r3, #0 - ldr r1, [r9, #THREAD_PENDING_EXC] - str r3, [r9, #THREAD_LAST_JAVA_SP] -.native_entry_exception: - ldr r5, [r9, #THREAD_TOP_ZERO_FRAME] - ldr r3, [r5], #4 - str r3, [r9, #THREAD_TOP_ZERO_FRAME] + ldm ip, {dispatch, r7} + mov r11, r0 + add dispatch, dispatch, ip + add dispatch, dispatch, r7 - ldrh r3, [r11, #42] - add r5, r5, r3, lsl #2 - str r5, [r9, #THREAD_JAVA_SP] + mov istate, #0 - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} -.native_entry_do_special: - stmdb sp!, {r0, r1} - mov r0, r9 - bl _ZN10JavaThread40check_special_condition_for_native_transEPS_ - ldmia sp!, {r0, r1} - b .native_entry_do_return + b fast_native_entry_with_args +#endif +@ tmp1 = thread +@ tmp2 == method +@ stack == THREAD_JAVA_SP (=> FULL stack) ALIGN_CODE fast_normal_entry: - ldrh r0, [tmp2, #40] + mov tmp_invoke_len, #3 +fast_normal_entry_with_len: + ldrh r0, [tmp2, #METHOD_MAXLOCALS] mov r1, #0 - ldrh r3, [tmp2, #42] + ldrh r3, [tmp2, #METHOD_SIZEOFPARAMETERS] mvn ip, #0x540 @ form 0xCAFEBABF in ip - ldrh r2, [tmp2, #38] + ldrh r2, [tmp2, #METHOD_MAXSTACK] bic ip, ip, #0x35000000 sub r7, r0, r3 subs r5, r7, #2 @@ -4001,43 +4598,56 @@ subs r5, r5, #2 bcs 1b 3: - ldr lr, [tmp1, #THREAD_TOP_ZERO_FRAME] - str istate, [stack, #-76 + ISTATE_SAVED_ISTATE] - sub istate, stack, #76 @ istate == istate + ldr r3, [tmp1, #THREAD_TOP_ZERO_FRAME] + sub istate, stack, #FRAME_SIZE sub r2, istate, r2, lsl #2 - str r1, [stack, #-76 + ISTATE_MDX] - mov r7, istate @ monitor_base == istate + str tmp_invoke_len, [istate, #ISTATE_ADVANCE_PC] str r2, [tmp1, #THREAD_JAVA_SP] sub r5, r2, #4 @ stack limit = istate - stackwords - 4 - mov r3, istate - stmdb stack, {r1, r3, r5, r7, istate, ip, lr} @ + str r3, [istate, #ISTATE_NEXT_FRAME] + str ip, [istate, #ISTATE_CAFEBABF] +@ str istate, [istate, #ISTATE_SELF_LINK] + str istate, [istate, #ISTATE_MONITOR_BASE] + str r5, [istate, #ISTATE_STACK_LIMIT] + str istate, [istate, #ISTATE_STACK_BASE] sub locals, stack, #4 - add locals, locals, r0, lsl #2 @ locals == r7 + str r1, [istate, #ISTATE_OOP_TEMP] + add locals, locals, r0, lsl #2 ldr r3, [tmp1, #THREAD_JAVA_STACK_BASE] - sub stack, istate, #4 @ stack == r4 - ldr jpc, [tmp2, #8] - ldr constpool, [tmp2, #12] @ - str stack, [istate, #ISTATE_STACK] - add ip, istate, #72 + sub stack, istate, #4 + ldr jpc, [tmp2, #METHOD_CONSTMETHOD] + ldr constpool, [tmp2, #METHOD_CONSTANTS] + add ip, istate, #ISTATE_NEXT_FRAME DISPATCH_START 48 - mov lr, #0 @ ECN: FIXME - r1 already 0 - ldr constpool, [constpool, #12] + ldr constpool, [constpool, #CONSTANTPOOL_CACHE] str ip, [tmp1, #THREAD_TOP_ZERO_FRAME] rsb r2, r3, r2 str ip, [tmp1, #THREAD_LAST_JAVA_SP] DISPATCH_NEXT str tmp1, [istate, #ISTATE_THREAD] - stmib istate, {jpc, locals, constpool, r10} + str locals, [istate, #ISTATE_LOCALS] + str constpool, [istate, #ISTATE_CONSTANTS] DISPATCH_NEXT cmp r2, #4096 - add constpool, constpool, #CONST_POOL_OFFSET - str lr, [istate, #ISTATE_PREV_LINK] - blt .throw_stack_overflow + blt 1f DISPATCH_NEXT - str lr, [istate, #ISTATE_CALLEE] + DISPATCH_NEXT + str r10, [istate, #ISTATE_METHOD] +@ mov lr, #0 +@ str lr, [istate, #ISTATE_PREV_LINK] +@ str lr, [istate, #ISTATE_CALLEE] DISPATCH_FINISH +1: + str r10, [istate, #ISTATE_METHOD] + DECACHE_JPC + ldr stack, [istate, #ISTATE_STACK_BASE] + sub stack, stack, #4 + DECACHE_STACK + b .throw_stack_overflow handle_return: +@ CHECK_CONSTPOOL +@ CHECK_BACKTRACE ldr tmp2, [istate, #ISTATE_MONITOR_BASE] @ tmp2 = base @@ -4047,8 +4657,11 @@ cmp tmp1, tmp2 blcc return_check_monitors +@ CHECK_CONSTPOOL +@ CHECK_BACKTRACE + mov r3, #0 - ldrb ip, [jpc, #0] + ldrb lr, [jpc, #0] ldr r2, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] str r3, [tmp_xxx, #THREAD_LAST_JAVA_SP] @@ -4058,57 +4671,76 @@ add r1, r2, #4 str r3, [tmp_xxx, #THREAD_TOP_ZERO_FRAME] + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] + add r1, r1, r0, lsl #2 - cmp ip, #opc_lreturn - cmpne ip, #opc_dreturn + cmp lr, #opc_lreturn + cmpne lr, #opc_dreturn ldreq r0, [stack, #8] streq r0, [r1, #-4]! - cmpne ip, #opc_ireturn - cmpne ip, #opc_freturn - cmpne ip, #opc_areturn + cmpne lr, #opc_ireturn + cmpne lr, #opc_freturn + cmpne lr, #opc_areturn ldreq r0, [stack, #4] streq r0, [r1, #-4]! - ldr istate, [istate, #ISTATE_SAVED_ISTATE] - str r1, [tmp_xxx, #THREAD_JAVA_SP] - cmp istate, #ISTATE_THREAD + cmp ip, #0 + + ldmeqfd arm_sp!, {regset, pc} + + ldr lr, [istate, #-ISTATE_NEXT_FRAME+ISTATE_THREAD]! + CACHE_JPC + ldr stack, [lr, #THREAD_JAVA_SP] + ldr r2, [istate, #ISTATE_STACK_LIMIT] + sub stack, stack, #4 - addeq sp, sp, #220 - ldmeqfd sp!, {regset, pc} + ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] + add r2, r2, #4 + str r2, [lr, #THREAD_JAVA_SP] + str r1, [lr, #THREAD_LAST_JAVA_SP] + ldr r3, [lr, #THREAD_PENDING_EXC] + DISPATCH_START_REG ip + CACHE_LOCALS + DISPATCH_NEXT + DISPATCH_NEXT + cmp r3, #0 + DISPATCH_NEXT + bne return_exception + DISPATCH_NEXT + CACHE_CP + DISPATCH_FINISH +@ ip = PC ADVANCE fast_handle_return: - ldr ip, [istate, #ISTATE_THREAD] - ldr r3, [ip, #THREAD_JAVA_SP] + ldr lr, [istate, #-ISTATE_NEXT_FRAME+ISTATE_THREAD]! + CACHE_JPC + ldr stack, [lr, #THREAD_JAVA_SP] ldr r2, [istate, #ISTATE_STACK_LIMIT] - sub r3, r3, #4 - str r3, [istate, #ISTATE_STACK] + sub stack, stack, #4 - ldr r1, [ip, #THREAD_TOP_ZERO_FRAME] + ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] add r2, r2, #4 - str r2, [ip, #THREAD_JAVA_SP] - str r1, [ip, #THREAD_LAST_JAVA_SP] - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] - ldr r3, [r0, #THREAD_PENDING_EXC] - DISPATCH_START 3 - ldr constpool, [istate, #ISTATE_CONSTANTS] - ldr locals, [istate, #ISTATE_LOCALS] + str r2, [lr, #THREAD_JAVA_SP] + str r1, [lr, #THREAD_LAST_JAVA_SP] + ldr r3, [lr, #THREAD_PENDING_EXC] + DISPATCH_START_REG ip + CACHE_LOCALS DISPATCH_NEXT - add constpool, constpool, #CONST_POOL_OFFSET DISPATCH_NEXT cmp r3, #0 DISPATCH_NEXT bne return_exception + DISPATCH_NEXT + CACHE_CP DISPATCH_FINISH normal_return: - add sp, sp, #220 str stack, [tmp_xxx, #THREAD_JAVA_SP] - ldmfd sp!, {regset, pc} + ldmfd arm_sp!, {regset, pc} return_check_monitors: ldr r2, [istate, #ISTATE_METHOD] @@ -4125,13 +4757,17 @@ cmp tmp1, tmp2 bcc 1b +#define RETURN_STACKSIZE SIZEOF_HANDLEMARK + .return_unlock: tst r0, #1<<5 bxeq lr - ldr tmp1, [tmp2, #4] @ base->obj == NULL - cmp tmp1, #0 - beq return_throw_illegal_monitor_state + ldr tmp1, [tmp2, #4] @ base->obj == NULL + SW_NPC cmp tmp1, #0 + SW_NPC beq return_throw_illegal_monitor_state +.abortentry119: + HW_NPC ldr ip, [tmp1] @ Only to provoke abort ldr r0, [tmp2, #0] @ r0 = header mov r3, #0 @@ -4142,38 +4778,43 @@ mov tmp_vvv, lr mov r1, tmp1 mov r2, tmp2 - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ + bl cmpxchg_ptr cmp tmp2, r0 bxeq tmp_vvv str tmp1, [tmp2, #4] - add r0, sp, #144 + sub arm_sp, arm_sp, #RETURN_STACKSIZE + mov r0, arm_sp mov r1, tmp_xxx bl _ZN10HandleMark10initializeEP6Thread mov r1, tmp2 mov r0, tmp_xxx - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - ldr stack, [istate, #ISTATE_STACK] - ldr jpc, [istate, #ISTATE_BCP] - add r0, sp, #144 + ASSERT_STACK_CACHED + CACHE_JPC + mov r0, arm_sp bl _ZN10HandleMarkD1Ev + add arm_sp, arm_sp, #RETURN_STACKSIZE ldr r3, [tmp_xxx, #THREAD_PENDING_EXC] cmp r3, #0 bne handle_exception - bx tmp_vvv + mov lr, tmp_vvv + bx lr return_throw_illegal_monitor_state: - add r0, sp, #144 + sub arm_sp, arm_sp, #RETURN_STACKSIZE + mov r0, arm_sp mov r1, tmp_xxx bl _ZN10HandleMark10initializeEP6Thread - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + DECACHE_JPC + DECACHE_STACK mov r0, tmp_xxx bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread - add r0, sp, #144 + mov r0, arm_sp bl _ZN10HandleMarkD1Ev + add arm_sp, arm_sp, #RETURN_STACKSIZE b handle_exception_with_bcp @ ---------------------------------------------------------------------------------------- @@ -4194,10 +4835,10 @@ mov r3, r3, asl #2 add r1, r1, r3 str r1, [ip, #THREAD_JAVA_SP] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] - cmp istate, #ISTATE_THREAD - addeq sp, sp, #220 - ldmeqfd sp!, {regset, pc} + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] + cmp ip, #0 + ldmeqfd arm_sp!, {regset, pc} b fast_handle_return handle_exception_do_not_unlock: @@ -4205,51 +4846,71 @@ strb r3, [r2, #THREAD_DO_NOT_UNLOCK] b handle_exception +abstractmethod_exception: + mov r0, #VMSYMBOLS_AbstractMethodError + b raise_exception +incompatibleclass_exception: + mov r0, #VMSYMBOLS_IncompatibleClassChangeError raise_exception: adr r1, null_str raise_exception_with_msg: - str r1, [sp] + str r1, [arm_sp] ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] ldr r3, [r3, r0, lsl #2] - ldr tmp1, [istate, #ISTATE_THREAD] - str jpc, [istate, #ISTATE_BCP] - str stack, [istate, #ISTATE_STACK] + ldr r0, [istate, #ISTATE_THREAD] + DECACHE_JPC + DECACHE_STACK mov ip, #_thread_in_vm - str ip, [tmp1, #THREAD_STATE] + str ip, [r0, #THREAD_STATE] mov r2, #99 - ldr r0, [istate, #ISTATE_THREAD] adrl r1, bytecode_interpreter_str bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ - mov r0, sp - str tmp1, [sp] - bl _ZN18ThreadInVMfromJavaD1Ev + add r0, istate, #ISTATE_THREAD + bl ThreadInVMfromJavaD b handle_exception_with_bcp null_str: .byte 0 ALIGN_WORD -invokespecial_exception_fix: -invokestatic_exception_fix: -invokevirtual_exception_fix: +#define EXCEPTION_HANDLEMARK 0 +#define EXCEPTION_THREAD EXCEPTION_HANDLEMARK + SIZEOF_HANDLEMARK +#define EXCEPTION_EXCEPTION EXCEPTION_THREAD + 4 +#define EXCEPTION_EXCEPTION2 EXCEPTION_EXCEPTION + 4 +#define EXCEPTION_MONITORBASE EXCEPTION_EXCEPTION2 + 4 +#define EXCEPTION_TMP1 EXCEPTION_MONITORBASE + 4 +#define EXCEPTION_HANDLEMARK2 EXCEPTION_TMP1 + 4 +#define EXCEPTION_HANDLE EXCEPTION_HANDLEMARK2 + SIZEOF_HANDLEMARK +#define EXCEPTION_HANDLE2 EXCEPTION_HANDLE + 4 +#define EXCEPTION_HANDLE3 EXCEPTION_HANDLE2 + 4 + +#define EXCEPTION_STACKSIZE EXCEPTION_HANDLE3 + 4 + +#define except_sp r13 + +invokeinterface_exception_fix: + sub jpc, jpc, #2 +invoke_exception_fix: +invokenative_exception: return_exception: sub jpc, jpc, #3 -invokespecial_exception: -invokestatic_exception: -invokevirtual_exception: +resolve_exception: putfield_exception: getfield_exception: handle_exception: - str jpc, [istate, #ISTATE_BCP] +@ jpc = Exception PC +@ stack = garbage +@ locals = garbage +@ constpool = garbage + DECACHE_JPC handle_exception_with_bcp: + sub except_sp, except_sp, #EXCEPTION_STACKSIZE ldr stack, [istate, #ISTATE_STACK_BASE] sub stack, stack, #4 - str stack, [istate, #ISTATE_STACK] - add r1, sp, #168 - str r1, [sp, #36] + DECACHE_STACK ldr r0, [istate, #ISTATE_THREAD] handle_exception_1: ldr sl, [r0, #4] - str r0, [sp, #124] + str r0, [except_sp, #EXCEPTION_THREAD] cmp sl, #0 moveq tmp_yyy, sl beq .handle_exception_3 @@ -4270,7 +4931,7 @@ ldr r0, [istate, #ISTATE_THREAD] .handle_exception_3: mov r1, r0 - ldr r0, [sp, #36] + add r0, except_sp, #EXCEPTION_HANDLEMARK bl _ZN10HandleMark10initializeEP6Thread ldr r0, [istate, #ISTATE_THREAD] bl _ZN12ThreadShadow23clear_pending_exceptionEv @@ -4279,18 +4940,18 @@ cmp tmp_yyy, #0 sub stack, r1, #4 moveq r1, tmp_yyy - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK ldrne r1, [tmp_yyy, #0] bl _ZN18InterpreterRuntime31exception_handler_for_exceptionEP10JavaThreadP7oopDesc - ldr stack, [istate, #ISTATE_STACK] + ASSERT_STACK_CACHED mov sl, r0 ldr r0, [istate, #ISTATE_THREAD] ldr r3, [r0, #THREAD_PENDING_EXC] cmp r3, #0 beq .handle_exception_5 - ldr r0, [sp, #36] + add r0, except_sp, #EXCEPTION_HANDLEMARK bl _ZN10HandleMarkD1Ev - ldr r1, [sp, #124] + ldr r1, [except_sp, #EXCEPTION_THREAD] ldr tmp_yyy, [r1, #THREAD_LAST_HANDLE_MARK] ldr r0, [tmp_yyy, #8] ldr sl, [tmp_yyy, #4] @@ -4341,13 +5002,13 @@ str r0, [stack, #0] sub stack, stack, #4 ldr r3, [istate, #ISTATE_METHOD] - ldr r0, [sp, #36] + add r0, except_sp, #EXCEPTION_HANDLEMARK ldr r2, [r3, #8] add r2, r2, #48 add ip, r2, sl str ip, [istate, #ISTATE_BCP] bl _ZN10HandleMarkD1Ev - ldr r1, [sp, #124] + ldr r1, [except_sp, #EXCEPTION_THREAD] ldr tmp_yyy, [r1, #THREAD_LAST_HANDLE_MARK] ldr r0, [tmp_yyy, #8] ldr sl, [tmp_yyy, #4] @@ -4362,6 +5023,7 @@ str r3, [sl, #8] ldr r2, [tmp_yyy, #16] str r2, [sl, #12] + add except_sp, except_sp, #EXCEPTION_STACKSIZE b do_execute_java_bytecodes_restore_locals_and_jpc .handle_exception_9: cmp r1, #0 @@ -4373,7 +5035,7 @@ ldr r0, [istate, #ISTATE_THREAD] ldr tmp_yyy, [r0, #4] cmp tmp_yyy, #0 - streq tmp_yyy, [sp, #48] + streq tmp_yyy, [except_sp, #EXCEPTION_EXCEPTION] beq .handle_exception_11 ldr r0, [r0, #THREAD_HANDLE_AREA] ldr r1, [r0, #8] @@ -4389,19 +5051,19 @@ .handle_exception_10: str tmp_yyy, [r3, #0] ldr r0, [istate, #ISTATE_THREAD] - str r3, [sp, #48] + str r3, [except_sp, #EXCEPTION_EXCEPTION] .handle_exception_11: bl _ZN12ThreadShadow23clear_pending_exceptionEv mov r1, #0 ldr r0, [istate, #ISTATE_THREAD] - str r1, [sp, #44] + str r1, [except_sp, #EXCEPTION_EXCEPTION2] ldrb r3, [r0, #THREAD_DO_NOT_UNLOCK] @ zero_extendqisi2 cmp r3, r1 beq .handle_exception_15 strb r1, [r0, #THREAD_DO_NOT_UNLOCK] ldr r0, [istate, #ISTATE_THREAD] .handle_exception_12: - ldr r1, [sp, #48] + ldr r1, [except_sp, #EXCEPTION_EXCEPTION] cmp r1, #0 movne r2, r1 ldrne r1, [r2, #0] @@ -4412,7 +5074,7 @@ mov r3, #0 ldr r2, [istate, #ISTATE_BCP] ldrb r2, [r2, #0] @ zero_extendqisi2 - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK str r2, [istate, #ISTATE_CALLEE] ldr lr, [istate, #ISTATE_THREAD] ldr r1, [lr, #THREAD_TOP_ZERO_FRAME] @@ -4423,12 +5085,12 @@ str r3, [lr, #THREAD_TOP_ZERO_FRAME] ldr r1, [istate, #ISTATE_METHOD] ldrh r3, [r1, #40] - ldr r0, [sp, #36] + add r0, except_sp, #EXCEPTION_HANDLEMARK mov r3, r3, asl #2 add r2, r2, r3 str r2, [lr, #THREAD_JAVA_SP] bl _ZN10HandleMarkD1Ev - ldr r0, [sp, #124] + ldr r0, [except_sp, #EXCEPTION_THREAD] ldr tmp_yyy, [r0, #THREAD_LAST_HANDLE_MARK] ldr r0, [tmp_yyy, #8] ldr sl, [tmp_yyy, #4] @@ -4443,29 +5105,27 @@ str r3, [sl, #8] ldr r2, [tmp_yyy, #16] str r2, [sl, #12] - ldr istate, [istate, #ISTATE_SAVED_ISTATE] - cmp istate, #ISTATE_THREAD + add except_sp, except_sp, #EXCEPTION_STACKSIZE + ldr ip, [istate, #ISTATE_ADVANCE_PC] + ldr istate, [istate, #ISTATE_NEXT_FRAME] + cmp ip, #0 bne fast_handle_return - add sp, sp, #220 - ldmfd sp!, {regset, pc} + ldmfd arm_sp!, {regset, pc} .handle_exception_15: ldr ip, [istate, #ISTATE_MONITOR_BASE] ldr r2, [istate, #ISTATE_METHOD] - str ip, [sp, #92] + str ip, [except_sp, #EXCEPTION_MONITORBASE] ldr tmp_vvv, [istate, #ISTATE_STACK_BASE] ldr r3, [r2, #24] mov r3, r3, lsr #5 ands r3, r3, #1 subne ip, ip, #8 - strne ip, [sp, #92] - ldr lr, [sp, #92] - str r3, [sp, #96] + strne ip, [except_sp, #EXCEPTION_MONITORBASE] + ldr lr, [except_sp, #EXCEPTION_MONITORBASE] + str r3, [except_sp, #EXCEPTION_TMP1] cmp tmp_vvv, lr bcs .handle_exception_21 - add r0, sp, #144 - add r1, sp, #212 - str r0, [sp, #28] - str r1, [sp, #24] + .p2align 3 .handle_exception_16: ldr tmp_yyy, [tmp_vvv, #4] @@ -4493,33 +5153,33 @@ cmp tmp_vvv, sl beq .handle_exception_19 str tmp_yyy, [tmp_vvv, #4] - ldr r0, [sp, #28] + add r0, except_sp, #EXCEPTION_HANDLEMARK2 ldr r1, [istate, #ISTATE_THREAD] bl _ZN10HandleMark10initializeEP6Thread mov r1, tmp_vvv ldr r0, [istate, #ISTATE_THREAD] - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock - ldr stack, [istate, #ISTATE_STACK] - ldr r0, [sp, #28] + ASSERT_STACK_CACHED + add r0, except_sp, #EXCEPTION_HANDLEMARK2 bl _ZN10HandleMarkD1Ev .handle_exception_19: - ldr r1, [sp, #44] + ldr r1, [except_sp, #EXCEPTION_EXCEPTION2] cmp r1, #0 beq .handle_exception_27 ldr r3, [r1, #0] cmp r3, #0 beq .handle_exception_27 .handle_exception_20: - ldr r3, [sp, #92] + ldr r3, [except_sp, #EXCEPTION_MONITORBASE] add tmp_vvv, tmp_vvv, #8 cmp tmp_vvv, r3 bcc .handle_exception_16 .handle_exception_21: - ldr ip, [sp, #96] + ldr ip, [except_sp, #EXCEPTION_TMP1] cmp ip, #0 beq .handle_exception_23 - ldr r0, [sp, #92] + ldr r0, [except_sp, #EXCEPTION_MONITORBASE] ldr sl, [r0, #4] cmp sl, #0 beq .handle_exception_26 @@ -4530,33 +5190,33 @@ str r3, [ip, #4] beq .handle_exception_23 mov r1, sl - ldr r2, [sp, #92] - bl _ZN6Atomic11cmpxchg_ptrEPvPVvS0_ - ldr r1, [sp, #92] + ldr r2, [except_sp, #EXCEPTION_MONITORBASE] + bl cmpxchg_ptr + ldr r1, [except_sp, #EXCEPTION_MONITORBASE] cmp r1, r0 beq .handle_exception_22 - ldr r3, [sp, #92] - add tmp_yyy, sp, #144 + ldr r3, [except_sp, #EXCEPTION_MONITORBASE] + add tmp_yyy, except_sp, #EXCEPTION_HANDLEMARK2 mov r0, tmp_yyy str sl, [r3, #4] ldr r1, [istate, #ISTATE_THREAD] bl _ZN10HandleMark10initializeEP6Thread - ldr r1, [sp, #92] + ldr r1, [except_sp, #EXCEPTION_MONITORBASE] ldr r0, [istate, #ISTATE_THREAD] - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK bl _ZN18InterpreterRuntime11monitorexitEP10JavaThreadP15BasicObjectLock mov r0, tmp_yyy - ldr stack, [istate, #ISTATE_STACK] + ASSERT_STACK_CACHED bl _ZN10HandleMarkD1Ev ldr r0, [istate, #ISTATE_THREAD] ldr r1, [r0, #4] cmp r1, #0 beq .handle_exception_24 - add r0, sp, #204 - bl _ZN6HandleC1EP7oopDesc - ldr r1, [sp, #204] + add r0, except_sp, #EXCEPTION_HANDLE2 + bl HandleC + ldr r1, [except_sp, #EXCEPTION_HANDLE2] ldr r0, [istate, #ISTATE_THREAD] - str r1, [sp, #44] + str r1, [except_sp, #EXCEPTION_EXCEPTION2] bl _ZN12ThreadShadow23clear_pending_exceptionEv .handle_exception_22: ldr r0, [istate, #ISTATE_THREAD] @@ -4564,17 +5224,17 @@ .handle_exception_23: ldr r0, [istate, #ISTATE_THREAD] .handle_exception_24: - ldr r3, [sp, #44] + ldr r3, [except_sp, #EXCEPTION_EXCEPTION2] cmp r3, #0 beq .handle_exception_12 .handle_exception_25: - ldr lr, [sp, #44] + ldr lr, [except_sp, #EXCEPTION_EXCEPTION2] ldr r1, [lr, #0] cmp r1, #0 bne .handle_exception_13 b .handle_exception_12 .handle_exception_26: - ldr r1, [sp, #44] + ldr r1, [except_sp, #EXCEPTION_EXCEPTION2] cmp r1, #0 beq .handle_exception_29 ldr r3, [r1, #0] @@ -4584,66 +5244,54 @@ b .handle_exception_25 .handle_exception_27: - ldr r0, [sp, #28] + add r0, except_sp, #EXCEPTION_HANDLEMARK2 ldr r1, [istate, #ISTATE_THREAD] bl _ZN10HandleMark10initializeEP6Thread ldr r0, [istate, #ISTATE_THREAD] - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread - ldr r0, [sp, #28] - ldr stack, [istate, #ISTATE_STACK] + add r0, except_sp, #EXCEPTION_HANDLEMARK2 + ASSERT_STACK_CACHED bl _ZN10HandleMarkD1Ev - ldr r0, [sp, #24] + add r0, except_sp, #EXCEPTION_HANDLE ldr r3, [istate, #ISTATE_THREAD] ldr r1, [r3, #4] - bl _ZN6HandleC1EP7oopDesc - ldr r2, [sp, #212] + bl HandleC + ldr r2, [except_sp, #EXCEPTION_HANDLE] ldr r0, [istate, #ISTATE_THREAD] - str r2, [sp, #44] + str r2, [except_sp, #EXCEPTION_EXCEPTION2] bl _ZN12ThreadShadow23clear_pending_exceptionEv b .handle_exception_20 -.handle_exception_28: - mov r1, fp - str stack, [istate, #ISTATE_STACK] - ldr r0, [istate, #ISTATE_THREAD] - bl _ZN18InterpreterRuntime12monitorenterEP10JavaThreadP15BasicObjectLock - ldr r0, [istate, #ISTATE_THREAD] - ldr stack, [istate, #ISTATE_STACK] - ldr r3, [r0, #THREAD_PENDING_EXC] - cmp r3, #0 - mov r2, r0 - beq do_execute_java_bytecodes_restore_locals_and_jpc - b handle_exception_do_not_unlock .handle_exception_29: - add tmp_yyy, sp, #144 + add tmp_yyy, except_sp, #EXCEPTION_HANDLEMARK2 mov r0, tmp_yyy ldr r1, [istate, #ISTATE_THREAD] bl _ZN10HandleMark10initializeEP6Thread ldr r0, [istate, #ISTATE_THREAD] - str stack, [istate, #ISTATE_STACK] + DECACHE_STACK bl _ZN18InterpreterRuntime37throw_illegal_monitor_state_exceptionEP10JavaThread mov r0, tmp_yyy - ldr stack, [istate, #ISTATE_STACK] + ASSERT_STACK_CACHED bl _ZN10HandleMarkD1Ev ldr r3, [istate, #ISTATE_THREAD] - add r0, sp, #208 + add r0, except_sp, #EXCEPTION_HANDLE3 ldr r1, [r3, #4] - bl _ZN6HandleC1EP7oopDesc - ldr r2, [sp, #208] + bl HandleC + ldr r2, [except_sp, #EXCEPTION_HANDLE3] ldr r0, [istate, #ISTATE_THREAD] - str r2, [sp, #44] + str r2, [except_sp, #EXCEPTION_EXCEPTION2] bl _ZN12ThreadShadow23clear_pending_exceptionEv ldr r0, [istate, #ISTATE_THREAD] b .handle_exception_24 -opclabels_data_adcon: - .word opclabels_data(GOTOFF) + +#ifdef FASTPATH_ENTRY ALIGN_CODE fast_accessor_entry: ldr ip, [dispatch, #SafePointSynchronize_state_Address-XXX] ldr r3, [tmp2, #8] ldr ip, [ip, #0] - ldrb lr, [r3, #50] + ldrb r2, [r3, #50] ldrb r3, [r3, #51] cmp ip, #0 ldr ip, [tmp2, #12] @@ -4652,28 +5300,28 @@ DISPATCH_START 3 - orr lr, lr, r3, lsl #8 @ lr = index + orr r2, r2, r3, lsl #8 @ r2 = index add r3, ip, #16 - ldr lr, [r3, lr, lsl #4]! @ r3 = cache, lr = flags + ldr r2, [r3, r2, lsl #4]! @ r3 = cache, r2 = flags DISPATCH_NEXT - cmp lr, #180 << 16 - GET_STACK 0, lr + cmp r2, #opc_getfield << 16 + GET_STACK 0, r2 bne fast_normal_entry - cmp lr, #0 + cmp r2, #0 beq fast_normal_entry - ldr r2, [r3, #12] + ldr lr, [r3, #12] ldr r3, [r3, #8] - movs r2, r2, lsr #29 + movs lr, lr, lsr #29 bls .fast_accessor_non_w DISPATCH_NEXT - ldr tmp1, [lr, r3] + ldr tmp1, [r2, r3] DISPATCH_NEXT DISPATCH_NEXT @@ -4685,12 +5333,12 @@ .fast_accessor_non_w: bcs .fast_accessor_h beq .fast_accessor_sb - tst r2, #2 + tst lr, #2 bne .fast_accessor_dw .fast_accessor_sh: DISPATCH_STATE 2 DISPATCH_NEXT - ldrsh tmp1, [lr, r3] + ldrsh tmp1, [r2, r3] DISPATCH_NEXT DISPATCH_NEXT PUT_STACK 0, tmp1 @@ -4698,7 +5346,7 @@ .fast_accessor_h: DISPATCH_STATE 2 DISPATCH_NEXT - ldrh tmp1, [lr, r3] + ldrh tmp1, [r2, r3] DISPATCH_NEXT DISPATCH_NEXT PUT_STACK 0, tmp1 @@ -4706,14 +5354,14 @@ .fast_accessor_sb: DISPATCH_STATE 2 DISPATCH_NEXT - ldrsb tmp1, [lr, r3] + ldrsb tmp1, [r2, r3] DISPATCH_NEXT DISPATCH_NEXT PUT_STACK 0, tmp1 DISPATCH_FINISH .fast_accessor_dw: DISPATCH_STATE 2 - add tmp1, lr, r3 + add tmp1, r2, r3 DISPATCH_NEXT ldm tmp1, {tmp2, tmp1} DISPATCH_NEXT @@ -4722,12 +5370,12 @@ PUSH tmp2 DISPATCH_FINISH -.iconst_div_rem_0: +#endif // FASTPATH_ENTRY + +div_zero_jpc_1: sub jpc, jpc, #1 @ Point to idiv .lrem_0: .ldiv_0: -.remc_0: -.divc_0: divide_by_zero_exception: mov r0, #VMSYMBOLS_ArithmeticException adr r1, div_zero_msg @@ -4761,11 +5409,26 @@ array_bound_exception_jpc_0: array_bounds_exception: adr r1, percent_d_str - add r0, sp, #168 + sub arm_sp, arm_sp, #16 + add r0, arm_sp, #4 bl sprintf - add r1, sp, #168 + add r1, arm_sp, #4 mov r0, #VMSYMBOLS_ArrayIndexOutOfBounds - b raise_exception_with_msg + str r1, [arm_sp] + ldr r3, [dispatch, #VmSymbols_symbols_Address-XXX] + ldr r3, [r3, r0, lsl #2] + ldr r0, [istate, #ISTATE_THREAD] + DECACHE_JPC + DECACHE_STACK + mov ip, #_thread_in_vm + str ip, [r0, #THREAD_STATE] + mov r2, #99 + adrl r1, bytecode_interpreter_str + bl _ZN10Exceptions10_throw_msgEP6ThreadPKciP13symbolOopDescS3_ + add r0, istate, #ISTATE_THREAD + bl ThreadInVMfromJavaD + add arm_sp, arm_sp, #16 + b handle_exception_with_bcp percent_d_str: .ascii "%d\000" ALIGN_WORD @@ -4787,6 +5450,133 @@ mov r0, #VMSYMBOLS_NullPointerException b raise_exception +@ ==== SW FP ============================================================================== + + Opcode fadd + POP r0, r1 + bl __aeabi_fadd + PUSH r0 + DISPATCH 1 + + Opcode fsub + POP r1 + POP r0 + bl __aeabi_fsub + PUSH r0 + DISPATCH 1 + + Opcode fmul + POP r0, r1 + bl __aeabi_fmul + PUSH r0 + DISPATCH 1 + + Opcode fdiv + POP r1 + POP r0 + bl __aeabi_fdiv + PUSH r0 + DISPATCH 1 + + Opcode ddiv + POP r2, r3 + POP r0, r1 + bl __aeabi_ddiv + PUSH r0, r1 + DISPATCH 1 + + Opcode fcmpl + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 3f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +3: + DISPATCH_START 1 + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + + Opcode fcmpg + ldmib stack, {r0, r1} + bl __aeabi_fcmpgt + cmp r0, #0 + movne r3, #-1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmplt + cmp r0, #0 + movne r3, #1 + bne 4f + ldmib stack, {r0, r1} + bl __aeabi_fcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +4: + DISPATCH_START 1 + add stack, stack, #8 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + + Opcode dcmpl + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 5f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #-1 +5: + DISPATCH_START 1 + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + + Opcode dcmpg + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpgt + cmp r0, #0 + movne r3, #-1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmplt + cmp r0, #0 + movne r3, #1 + bne 6f + ldmib stack, {r0, r1, r2, r3} + bl __aeabi_dcmpeq + cmp r0, #0 + movne r3, #0 + moveq r3, #1 +6: + DISPATCH_START 1 + add stack, stack, #16 + DISPATCH_NEXT + PUSH r3 + DISPATCH_FINISH + @ ==== Fast SW FP emulation =============================================================== #define al r0 @@ -4801,7 +5591,7 @@ @ What we actually do is TOS = TOS + TOSM1 @ --- do_dadd_vtos ------------------------------------------------- Opcode dadd - POP4 al, ah, bl, bh + POP al, ah, bl, bh mov tmp, #0xff000000 orr tmp, tmp, #0x00e00000 bics ex_add, tmp, ah, LSL #1 @@ -4893,7 +5683,7 @@ orr ah, ah, #0x00f00000 orr ah,ah,a3 .dadd_exit: - PUSH2 al, ah + PUSH al, ah DISPATCH 1 .dadd_uncommon: @@ -4937,7 +5727,7 @@ @ ECN: We want TOSM1 - TOS, but args end up in wrong order so do rsb @ --- do_dsub_itos ------------------------------------------------- Opcode dsub - POP4 al, ah, bl, bh + POP al, ah, bl, bh mov tmp, #0xff000000 orr tmp, tmp, #0x00e00000 bics ex_add, tmp, ah, LSL #1 @@ -5039,7 +5829,7 @@ add ah, ah, ex_add, LSL #20 .dsub_return1: .dsub_exit: - PUSH2 al, ah + PUSH al, ah DISPATCH 1 .dsub_ex_one: @ underflow when ex = 1 - shift back to denorm movs ah, ah, ASR #1 @@ -5203,8 +5993,8 @@ @ --- do_dmul_itos ------------------------------------------------- Opcode dmul - POP4 al, ah, bl, bh - stmdb sp!, {r4, r5} + POP al, ah, bl, bh + stmdb arm_sp!, {r4, r5} mov tmp, #0x7f00000 orr tmp, tmp, #0x00f0000 bics ex_m, tmp, ah, LSR #4 @ test for Infs or NaNs @@ -5270,8 +6060,8 @@ bicnes uh, uh, ah @ is exp 0 or 7FF? beq .dmul_outflow .dmul_exit: - ldmia sp!, {r4, r5} - PUSH2 al, ah + ldmia arm_sp!, {r4, r5} + PUSH al, ah DISPATCH 1 .dmul_rdirect: @@ -5289,7 +6079,7 @@ addle ah, ah, #0x60000000 @ Bias up if underflow subge ah, ah, #0x60000000 @ Bias down if overflow mov ip, rs - ldmia sp!, {r4, r5} + ldmia arm_sp!, {r4, r5} ble .__dunder @ underflow b .return_double_Inf @@ -5405,7 +6195,7 @@ b .dmul_exit .dmul_ivo: - ldmia sp!, {r4, r5} + ldmia arm_sp!, {r4, r5} b .return_double_NaN #undef al @@ -5433,8 +6223,9 @@ .global _ZN14CppInterpreter17ignore_safepointsEv .type _ZN14CppInterpreter17ignore_safepointsEv, %function _ZN14CppInterpreter17ignore_safepointsEv: +#ifdef NOTICE_SAFEPOINTS adrl ip, dispatch_init_adcon - ldmia ip, {r2, r3} + ldm ip, {r2, r3} add r2, r2, ip add ip, r3, r2 ldr r2, [ip, #AbstractInterpreter_notice_safepoints-XXX] @@ -5450,15 +6241,22 @@ str r1, [ip], #4 subs r2, r2, #1 bne 1b - +#ifdef HW_FP + sub ip, ip, #256*4 + ldr r0, [ip, #VFP_Flag-XXX] + cmp r0, #0 + beq update_vfp_table +#endif // HW_FP +#endif // NOTICE_SAFEPOINTS bx lr @ --- notice_safepoints --------------------------------------------------------------------------- .global _ZN14CppInterpreter17notice_safepointsEv .type _ZN14CppInterpreter17notice_safepointsEv, %function _ZN14CppInterpreter17notice_safepointsEv: +#ifdef NOTICE_SAFEPOINTS adrl ip, dispatch_init_adcon - ldmia ip, {r2, r3} + ldm ip, {r2, r3} add r2, r2, ip add ip, r3, r2 ldr r2, [ip, #AbstractInterpreter_notice_safepoints-XXX] @@ -5474,17 +6272,18 @@ str r1, [ip], #4 subs r2, r2, #1 bne 1b - +#endif bx lr @ --- END execute.s ---------------------------------------------------------------------------- + ALIGN_CODE bci_init: - adr r3, dispatch_init_adcon - ldmia r3, {r0, r1} + adrl r3, dispatch_init_adcon + ldm r3, {r0, r1} add r0, r0, r3 add r1, r1, r0 - adr r2, adcon_init_table + adrl r2, adcon_init_table mov r3, r1 1: ldr ip, [r2], #4 @@ -5492,7 +6291,7 @@ ldrne ip, [r0, ip] strne ip, [r1, #-4]! bne 1b - adr r2, main_dispatch_table + adrl r2, main_dispatch_table mov r1, #256 2: ldr ip, [r2], #4 @@ -5500,8 +6299,88 @@ subs r1, r1, #1 bne 2b +#ifdef HW_FP +vfp_init: + stmfd sp!, {r4, r5, lr} + sub sp, sp, #132 + mov r4, #0 + adr r0, proc_self_auxv + mov r1, #0 + bl open + subs r5, r0, #0 + blt .exit_vfp_init +.vfp_init_read_loop: + mov r2, #128 + mov r0, r5 + mov r1, sp + bl read + mov r2, sp + mov r3, r0, lsr #3 + b .vfp_init_1 +.vfp_init_vec_loop: + ldmia r2!, {r1, ip} + cmp r1, #0 + beq .fini_vfp_init + cmp r1, #16 + bne .vfp_init_1 + tst ip, #64 + movne r4, #1 + bne .fini_vfp_init +.vfp_init_1: + subs r3, r3, #1 + bpl .vfp_init_vec_loop + cmp r0, #128 + beq .vfp_init_read_loop +.fini_vfp_init: + mov r0, r5 + bl close +.exit_vfp_init: + movs r0, r4 + add sp, sp, #132 + ldmfd sp!, {r4, r5, lr} + bxne lr @ We have HW FP - just exit + +@ No HW FP - replace the HW FP entries with SW entries +update_vfp_table: + adr r0, vfp_table + adrl ip, dispatch_init_adcon + ldm ip, {r2, r3} + add r2, r2, ip + add ip, r3, r2 + mov r1, #1 + str r1, [ip, #VFP_Flag-XXX] +.update_vfp_loop: + ldr r1, [r0], #4 + cmp r1, #0 + ldrne r2, [r0], #4 + strne r2, [ip, r1, lsl #2] + bne .update_vfp_loop +#endif // HW_FP + bx lr +#ifdef HW_FP +vfp_table: + .word opc_fadd, do_fadd + .word opc_dadd, do_dadd + .word opc_fsub, do_fsub + .word opc_dsub, do_dsub + .word opc_fmul, do_fmul + .word opc_dmul, do_dmul + .word opc_fdiv, do_fdiv + .word opc_ddiv, do_ddiv + .word opc_fcmpl, do_fcmpl + .word opc_fcmpg, do_fcmpg + .word opc_dcmpl, do_dcmpl + .word opc_dcmpg, do_dcmpg + .word 0 + +proc_self_auxv: + .ascii "/proc/self/auxv\000" + .align 2 + +#endif // HW_FP + ALIGN_DATA dispatch_init_adcon: .word _GLOBAL_OFFSET_TABLE_-dispatch_init_adcon, opclabels_data(GOTOFF) @@ -5510,18 +6389,23 @@ .word _ZN20SafepointSynchronize6_stateE(GOT) .word _ZN9vmSymbols8_symbolsE(GOT) .word always_do_update_barrier(GOT) - .word UseBiasedLocking(GOT) .word _ZN8Universe14_collectedHeapE(GOT) - .word ZeroTLAB(GOT) - .word UseTLAB(GOT) .word _ZN9Bytecodes5_nameE(GOT) .word _ZN19AbstractInterpreter18_notice_safepointsE(GOT) .word _ZN18ThreadLocalStorage13_thread_indexE(GOT) + .word _ZN7oopDesc3_bsE(GOT) + .word PrintCommandLineFlags(GOT) + .word _ZN11JvmtiExport28_can_post_interpreter_eventsE(GOT) + .word UseCompiler(GOT) .word 0 ALIGN_DATA main_dispatch_table: MAIN_DISPATCH_TABLE + +@ ECN: Strange logic here! We don't need the safe_dispatch_table if NOTICE_SAFEPOINTS is +@ disabled because in this case the main_dispatch_table must be safepoint safe. +#ifdef NOTICE_SAFEPOINTS safe_dispatch_table: .word do_nop .word do_u4const_0 @@ -5676,31 +6560,31 @@ .word do_fcmpg .word do_dcmpl .word do_dcmpg - .word do_ifeq_safe - .word do_ifne_safe - .word do_iflt_safe - .word do_ifge_safe - .word do_ifgt_safe - .word do_ifle_safe - .word do_if_icmpeq_safe - .word do_if_icmpne_safe - .word do_if_icmplt_safe - .word do_if_icmpge_safe - .word do_if_icmpgt_safe - .word do_if_icmple_safe - .word do_if_icmpeq_safe - .word do_if_icmpne_safe - .word do_goto_safe + .word do_ifeq + .word do_ifne + .word do_iflt + .word do_ifge + .word do_ifgt + .word do_ifle + .word do_if_icmpeq + .word do_if_icmpne + .word do_if_icmplt + .word do_if_icmpge + .word do_if_icmpgt + .word do_if_icmple + .word do_if_icmpeq + .word do_if_icmpne + .word do_goto .word do_jsr .word do_ret .word do_tableswitch .word do_lookupswitch - .word do_ireturn_safe - .word do_lreturn_safe - .word do_ireturn_safe - .word do_lreturn_safe - .word do_ireturn_safe - .word do_return_safe + .word do_ireturn + .word do_lreturn + .word do_ireturn + .word do_lreturn + .word do_ireturn + .word do_return .word do_getstatic .word do_putstatic .word do_getfield @@ -5721,8 +6605,8 @@ .word do_monitorexit .word do_wide .word do_multianewarray - .word do_ifeq_safe - .word do_ifne_safe + .word do_ifeq + .word do_ifne .word do_goto_w .word do_jsr_w .word do_breakpoint @@ -5746,12 +6630,12 @@ .word do_iaccess_0 .word do_iaccess_0 .word do_iaccess_0 - .word do_undefined - .word do_undefined - .word do_undefined + .word do_invokeresolved + .word do_invokespecialresolved + .word do_invokestaticresolved .word do_invokevfinal - .word do_undefined - .word do_undefined + .word do_fast_iload_iload + .word do_fast_iload_iload_N .word do_return_register_finalizer .word do_undefined .word do_iload_0_iconst_N @@ -5759,7 +6643,6 @@ .word do_iload_0_iconst_N .word do_iload_0_iconst_N .word do_iload_iconst_N - .word do_invokeresolved .word do_iadd_istore_N .word do_isub_istore_N .word do_iand_istore_N @@ -5770,15 +6653,17 @@ .word do_iand_u4store .word do_ior_u4store .word do_ixor_u4store - .word do_invokespecialresolved - .word do_invokestaticresolved - .word do_undefined - .word do_undefined - .word do_undefined - .word do_undefined - .word do_undefined + .word do_fast_iload_N_iload + .word do_fast_iload_N_iload + .word do_fast_iload_N_iload + .word do_fast_iload_N_iload + .word do_fast_iload_N_iload_N + .word do_fast_iload_N_iload_N + .word do_fast_iload_N_iload_N + .word do_fast_iload_N_iload_N .word do_undefined .word do_undefined +#endif SUB_DISPATCH_TABLES @@ -5787,14 +6672,22 @@ .data ALIGN_DATA - .word 0, 0, 0, 0, 0 +#ifdef CODETRACE +CodeTrace_Buffer_Base: + .space CODETRACE_BUFFER_SIZE +#endif + .word 0 +DispatchBreakPoint: .word 0 +VFP_Flag: .word 0 +CodeTrace_Idx: .word 0 +UseCompiler_Address: .word 0 +can_post_interpreter_events: .word 0 +PrintCommandLineFlags_Address: .word 0 +oopDesc_Address: .word 0 ThreadLocalStorage_thread_index: .word 0 AbstractInterpreter_notice_safepoints: .word 0 Bytecodes_name_Address: .word 0 -UseTLAB_Address: .word 0 -ZeroTLAB_Address: .word 0 Universe_collectedHeap_Address: .word 0 -UseBiasedLocking_Address: .word 0 always_do_update_barrier_Address: .word 0 VmSymbols_symbols_Address: .word 0 SafePointSynchronize_state_Address: .word 0 @@ -5817,4 +6710,4 @@ .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -#endif // HOTSPOT_ASM +#endif From aph at redhat.com Thu Sep 10 08:24:23 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 16:24:23 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> Message-ID: <4AA91A27.2080100@redhat.com> Andrew John Hughes wrote: > As I've mentioned before, it would be nice if we could all standardise > on having a 1-line summary in commit messages prior to the ChangeLog, > as this is the only line that shows up without verbose output (hg log, > shortlog and summary pages on the web view). It would make it easier > to select changesets that need to be merged. I do not believe this would, in general, be a Good Thing. A single summary line can be misleading, so it would be irresponsible for someone to merge changesets based on the summary. A missing summary line is a clue to someone merging that they really ought to look at the whole ChangeLog entry. While a single line summary can make sense for some things -- "Merge" or "Added tag ..." are good examples -- I'm not sure that this particular feature of Mercurial is useful enough to dictate how we work. That would be, as they say, the tail wagging the dog. Andrew. From gnu_andrew at member.fsf.org Thu Sep 10 08:30:46 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 16:30:46 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA91A27.2080100@redhat.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> <4AA91A27.2080100@redhat.com> Message-ID: <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: > >> As I've mentioned before, it would be nice if we could all standardise >> on having a 1-line summary in commit messages prior to the ChangeLog, >> as this is the only line that shows up without verbose output (hg log, >> shortlog and summary pages on the web view). ?It would make it easier >> to select changesets that need to be merged. > > I do not believe this would, in general, be a Good Thing. > > A single summary line can be misleading, so it would be irresponsible > for someone to merge changesets based on the summary. ?A missing summary > line is a clue to someone merging that they really ought to look at the > whole ChangeLog entry. > > While a single line summary can make sense for some things -- "Merge" > or "Added tag ..." are good examples -- I'm not sure that this > particular feature of Mercurial is useful enough to dictate how we > work. ?That would be, as they say, the tail wagging the dog. > > Andrew. > I'm not suggesting using it as the sole basis for merging; that would be wrong as you say. But having a summary line better than 2009-08-27 Matthias Klose or 2009-09-09 Andrew Haley would mean you can make a more educated guess as to whether it's worth looking at the entire changeset. You're always going to get this 1-line summary regardless, it would be good to have it as something sensible. -- 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 Sep 10 08:36:01 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 16:36:01 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <20090909225940.69c265c4@laptop64.home> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> <4AA91A27.2080100@redhat.com> <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> Message-ID: <4AA91CE1.9020403@redhat.com> Andrew John Hughes wrote: > I'm not suggesting using it as the sole basis for merging; that would > be wrong as you say. But having a summary line better than 2009-08-27 > Matthias Klose or 2009-09-09 Andrew Haley > would mean you can make a more educated guess as to > whether it's worth looking at the entire changeset. Sure, it's better for the person merging, but even more admin for the person committing. I think we have quite enough procedural rules without this. > You're always going to get this 1-line summary regardless, it would be > good to have it as something sensible. It would be nice, but every time we add more things that a committer must do we make it harder for people to contribute. This one isn't worth it. Andrew. From gnu_andrew at member.fsf.org Thu Sep 10 08:44:44 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 16:44:44 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <4AA91CE1.9020403@redhat.com> References: <4AA7DF17.20107@redhat.com> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> <4AA91A27.2080100@redhat.com> <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> <4AA91CE1.9020403@redhat.com> Message-ID: <17c6771e0909100844l657d3753kcc5b5010a186cc11@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: > >> I'm not suggesting using it as the sole basis for merging; that would >> be wrong as you say. ?But having a summary line better than 2009-08-27 >> ?Matthias Klose ? or 2009-09-09 ?Andrew Haley >> would mean you can make a more educated guess as to >> whether it's worth looking at the entire changeset. > > Sure, it's better for the person merging, but even more admin for the > person committing. ?I think we have quite enough procedural rules without > this. > I don't think one line is a major grievance, and we don't really have any more rules than post your patch from approval and including the changelog entry in your commit message. >> You're always going to get this 1-line summary regardless, it would be >> good to have it as something sensible. > > It would be nice, but every time we add more things that a committer > must do we make it harder for people to contribute. ?This one isn't > worth it. > That depends how happy you are with changesets being missed. Our current standard for commit messages currently makes that far more likely than it would be otherwise. > 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 martinrb at google.com Thu Sep 10 09:45:04 2009 From: martinrb at google.com (Martin Buchholz) Date: Thu, 10 Sep 2009 09:45:04 -0700 Subject: Miscellaneous jar improvements In-Reply-To: <1252586058.9780.19.camel@springer.wildebeest.org> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> Message-ID: <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> Regarding improving build times: The jar command that is actually used to build rt.jar is from the bootstrap jdk, so patching the jdk that you are about to build won't help directly. However, there is another patch that will improve build times even when using an old boot jdk. changeset: 1283:ff32c270102a user: martin date: Mon Jun 22 21:07:20 2009 -0700 summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons All told, there were at least 3 separate changesets in openjdk7 to make building rt.jar faster. Martin On Thu, Sep 10, 2009 at 05:34, Mark Wielaard wrote: > On Thu, 2009-09-10 at 13:20 +0100, Andrew Haley wrote: >> 2009-09-10 ?Andrew Haley ? >> >> ? ? ? * patches/icedtea-jar-misc.patch: Import patch from upstream >> ? ? ? OpenJDK 6. >> ? ? ? http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 >> >> >> This is a patch to make jar much faster. ?On Zero targets, this much >> improves the build time, which is very painful on the distro builders. >> >> OK for IcedTea trunk and 1.6 branch? > > Yes, I would like to see that speedup! Martin claimed on some setup it > reduced the rt.jar building to just 2 seconds (!). Seeing that building > rt.jar currently is one of the most time consuming steps in the build > that would be fantastic. > > I think this is fine, it comes with extra tests and is already in jdk7 > and jdk6. If the speedup claims are true it would be good to get this > sooner rather than later. > > But lets also try to encourage jdk6 to make a new release soon. > > Thanks for testing and backporting this, > > Mark > > From aph at redhat.com Thu Sep 10 09:57:15 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 17:57:15 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> Message-ID: <4AA92FEB.30804@redhat.com> Martin Buchholz wrote: > Regarding improving build times: > > The jar command that is actually used to build rt.jar is from the > bootstrap jdk, > so patching the jdk that you are about to build won't help directly. Sure, but building JDK on any free software distro uses the immediately previous JDK. Therefore, all that means is that the improvement is delayed by one release cycle. > However, there is another patch that will improve build times > even when using an old boot jdk. > > changeset: 1283:ff32c270102a > user: martin > date: Mon Jun 22 21:07:20 2009 -0700 > summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons > > All told, there were at least 3 separate changesets in openjdk7 to > make building rt.jar faster. But you put the lot into http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4, right? That's what we have in IcedTea 6. Andrew. > On Thu, Sep 10, 2009 at 05:34, Mark Wielaard wrote: >> On Thu, 2009-09-10 at 13:20 +0100, Andrew Haley wrote: >>> 2009-09-10 Andrew Haley >>> >>> * patches/icedtea-jar-misc.patch: Import patch from upstream >>> OpenJDK 6. >>> http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 >>> >>> >>> This is a patch to make jar much faster. On Zero targets, this much >>> improves the build time, which is very painful on the distro builders. >>> >>> OK for IcedTea trunk and 1.6 branch? >> Yes, I would like to see that speedup! Martin claimed on some setup it >> reduced the rt.jar building to just 2 seconds (!). Seeing that building >> rt.jar currently is one of the most time consuming steps in the build >> that would be fantastic. >> >> I think this is fine, it comes with extra tests and is already in jdk7 >> and jdk6. If the speedup claims are true it would be good to get this >> sooner rather than later. >> >> But lets also try to encourage jdk6 to make a new release soon. >> >> Thanks for testing and backporting this, >> >> Mark >> >> From martinrb at google.com Thu Sep 10 10:16:46 2009 From: martinrb at google.com (Martin Buchholz) Date: Thu, 10 Sep 2009 10:16:46 -0700 Subject: Miscellaneous jar improvements In-Reply-To: <4AA92FEB.30804@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> Message-ID: <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: > Martin Buchholz wrote: >> Regarding improving build times: >> >> The jar command that is actually used to build rt.jar is from the >> bootstrap jdk, >> so patching the jdk that you are about to build won't help directly. > > Sure, but building JDK on any free software distro uses the immediately > previous JDK. ?Therefore, all that means is that the improvement is > delayed by one release cycle. > >> However, there is another patch that will improve build times >> even when using an old boot jdk. >> >> changeset: ? 1283:ff32c270102a >> user: ? ? ? ?martin >> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >> >> All told, there were at least 3 separate changesets in openjdk7 to >> make building rt.jar faster. > > But you put the lot into http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4, > right? ?That's what we have in IcedTea 6. No, I was too lazy to backport 6853806. (Perhaps I determined it was unnecessary? I don't recall) The changes to the jar command benefit all users of the jar command, unlike 6853806, which only benefits us poor folks building openjdk. Martin > Andrew. > > >> On Thu, Sep 10, 2009 at 05:34, Mark Wielaard wrote: >>> On Thu, 2009-09-10 at 13:20 +0100, Andrew Haley wrote: >>>> 2009-09-10 ?Andrew Haley ? >>>> >>>> ? ? ? * patches/icedtea-jar-misc.patch: Import patch from upstream >>>> ? ? ? OpenJDK 6. >>>> ? ? ? http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 >>>> >>>> >>>> This is a patch to make jar much faster. ?On Zero targets, this much >>>> improves the build time, which is very painful on the distro builders. >>>> >>>> OK for IcedTea trunk and 1.6 branch? >>> Yes, I would like to see that speedup! Martin claimed on some setup it >>> reduced the rt.jar building to just 2 seconds (!). Seeing that building >>> rt.jar currently is one of the most time consuming steps in the build >>> that would be fantastic. >>> >>> I think this is fine, it comes with extra tests and is already in jdk7 >>> and jdk6. If the speedup claims are true it would be good to get this >>> sooner rather than later. >>> >>> But lets also try to encourage jdk6 to make a new release soon. >>> >>> Thanks for testing and backporting this, >>> >>> Mark >>> >>> > > From gnu_andrew at member.fsf.org Thu Sep 10 10:21:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 18:21:04 +0100 Subject: HotSpot 16 Message-ID: <17c6771e0909101021y1d508250pd673289e4f0911b9@mail.gmail.com> What's our plan for HotSpot 16? It now has a stabilisation tree and will be in Sun's proprietary JDK6 builds soon: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-August/000704.html http://hg.openjdk.java.net/hsx/hsx16/master/shortlog Given we've just had a release, this would be a sensible time to start testing it if we want to use it in 1.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 aph at redhat.com Thu Sep 10 10:24:40 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 18:24:40 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> Message-ID: <4AA93658.5060306@redhat.com> Martin Buchholz wrote: > On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >> Martin Buchholz wrote: >>> Regarding improving build times: >>> >>> The jar command that is actually used to build rt.jar is from the >>> bootstrap jdk, >>> so patching the jdk that you are about to build won't help directly. >> Sure, but building JDK on any free software distro uses the immediately >> previous JDK. Therefore, all that means is that the improvement is >> delayed by one release cycle. >> >>> However, there is another patch that will improve build times >>> even when using an old boot jdk. >>> >>> changeset: 1283:ff32c270102a >>> user: martin >>> date: Mon Jun 22 21:07:20 2009 -0700 >>> summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons Weird, I can't find that changeset. Got a URL? >>> All told, there were at least 3 separate changesets in openjdk7 to >>> make building rt.jar faster. >> But you put the lot into http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4, >> right? That's what we have in IcedTea 6. > > No, I was too lazy to backport 6853806. > (Perhaps I determined it was unnecessary? I don't recall) > > The changes to the jar command benefit all users of the jar command, > unlike 6853806, which only benefits us poor folks building openjdk. Aha! Proof, if any more were needed, that it would be better to have had the backport discussion online... ;-) Out of interest, why does changing "jar -C" to (cd $dir && jar) make anything go faster? Andrew. From gnu_andrew at member.fsf.org Thu Sep 10 10:30:00 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 18:30:00 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <4AA93658.5060306@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> Message-ID: <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> 2009/9/10 Andrew Haley : > Martin Buchholz wrote: >> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>> Martin Buchholz wrote: >>>> Regarding improving build times: >>>> >>>> The jar command that is actually used to build rt.jar is from the >>>> bootstrap jdk, >>>> so patching the jdk that you are about to build won't help directly. >>> Sure, but building JDK on any free software distro uses the immediately >>> previous JDK. ?Therefore, all that means is that the improvement is >>> delayed by one release cycle. >>> >>>> However, there is another patch that will improve build times >>>> even when using an old boot jdk. >>>> >>>> changeset: ? 1283:ff32c270102a >>>> user: ? ? ? ?martin >>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons > > Weird, I can't find that changeset. ?Got a URL? > changeset: 1341:ff32c270102a user: martin date: Mon Jun 22 21:07:20 2009 -0700 summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a Oh the benefits of a useful summary... >>>> All told, there were at least 3 separate changesets in openjdk7 to >>>> make building rt.jar faster. >>> But you put the lot into http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4, >>> right? ?That's what we have in IcedTea 6. >> >> No, I was too lazy to backport 6853806. >> (Perhaps I determined it was unnecessary? ?I don't recall) >> >> The changes to the jar command benefit all users of the jar command, >> unlike 6853806, which only benefits us poor folks building openjdk. > > Aha! ?Proof, if any more were needed, that it would be better to have > had the backport discussion online... ;-) > > Out of interest, why does changing "jar -C" to (cd $dir && jar) make > anything go faster? > > 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 aph at redhat.com Thu Sep 10 10:34:45 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 18:34:45 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> Message-ID: <4AA938B5.5050603@redhat.com> Andrew John Hughes wrote: > 2009/9/10 Andrew Haley : >> Martin Buchholz wrote: >>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>> Martin Buchholz wrote: >>>>> >>>>> changeset: 1283:ff32c270102a >>>>> user: martin >>>>> date: Mon Jun 22 21:07:20 2009 -0700 >>>>> summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >> Weird, I can't find that changeset. Got a URL? >> > > changeset: 1341:ff32c270102a > user: martin > date: Mon Jun 22 21:07:20 2009 -0700 > summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons > > http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a Ta; no idea why i couldn't find it. > Oh the benefits of a useful summary... He. That's not a summary, it's (almost) the entire comment! Andrew. From gnu_andrew at member.fsf.org Thu Sep 10 10:35:03 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 18:35:03 +0100 Subject: PING 2: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS Message-ID: <17c6771e0909101035p2aefb870gc27e9f966fc42591@mail.gmail.com> 2009/9/8 Andrew John Hughes : > 2009/9/3 Andrew John Hughes : >> IcedTea6, as currently built, does not support elliptic curve >> cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). >> ?For this to be enabled, the provider must be added to >> jre/lib/security/java.security and configured to point to the system >> NSS. >> >> With the proprietary JDK, this is not something that can be done 'out >> of the box', but we can do this with IcedTea by detecting NSS using >> configure. ?The attached patch does just that. ?It also fixes an issue >> (6763530) that prevents newer versions of NSS from working. ?When >> applied, NSS can be enabled just by passing --enable-nss to configure. >> >> The following then works: >> >> $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC >> -keysize 256 -keystore ectest.jks >> Enter keystore password: >> Re-enter new password: >> etc. >> >> The configure check doesn't verify that NSS was built with EC support. >> ?I couldn't find an easy way of doing this. ?It is enabled during the >> build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). ?From >> mozilla/security/coreconf/config.mk: >> >> ifdef NSS_ENABLE_ECC >> DEFINES += -DNSS_ENABLE_ECC >> endif >> >> Thus the define is not available in the installed headers, so the only >> way to do a check would seem to be to write code to generate an EC key >> with NSS and check for failure. ?The same check would later be >> invalidated if the system NSS changes after OpenJDK is built, and so >> OpenJDK would need to be rebuilt. >> >> If someone wants to write such a test, feel free but AFAICS it >> wouldn't gain anything. ?OpenJDK will still build (linking is done at >> runtime) and if NSS doesn't have EC support, then OpenJDK won't which >> is no different from the current status quo. >> >> Does this look ok for commit? >> >> ChangeLog: >> >> ? ? ? ?* HACKING: Updated. >> ? ? ? ?* Makefile.am: >> ? ? ? ?Add two new patches. ?Copy nss.cfg to jre/lib/security if >> ? ? ? ?NSS is enabled. >> ? ? ? ?* configure.ac:Check for NSS and set NSS_LIBDIR >> ? ? ? ?and ENABLE_NSS if found. >> ? ? ? ?* nss.cfg.in: Template for the nss configuration file. >> ? ? ? ?* patches/icedtea-nss-6763530.patch: >> ? ? ? ?Fix for Sun bug 6763530 which is triggered by newer >> ? ? ? ?versions of NSS. >> ? ? ? ?* patches/icedtea-nss-config.patch: Patch java.security >> ? ? ? ?with the PCKS11 provider configuration. >> >> -- >> 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 >> > > Ping? > > I know it was a long weekend for some, but the Sun engineers have even > responded to a patch I posted to hotspot-dev in the same time frame as > this one... > -- > 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 > Ping! Ping! Ping! -- 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 Sep 10 10:37:10 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 18:37:10 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <4AA938B5.5050603@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> Message-ID: <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: >> 2009/9/10 Andrew Haley : >>> Martin Buchholz wrote: >>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>> Martin Buchholz wrote: >>>>>> >>>>>> changeset: ? 1283:ff32c270102a >>>>>> user: ? ? ? ?martin >>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>> Weird, I can't find that changeset. ?Got a URL? >>> >> >> changeset: ? 1341:ff32c270102a >> user: ? ? ? ?martin >> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >> >> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a > > Ta; no idea why i couldn't find it. > >> Oh the benefits of a useful summary... > > He. ?That's not a summary, it's (almost) the entire comment! > Ha, yeah. The bugID per changeset thing does come in useful though when you need to do this kind of lookup as you can just search the output of hg log for the bug ID. > 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 aph at redhat.com Thu Sep 10 10:39:51 2009 From: aph at redhat.com (Andrew Haley) Date: Thu, 10 Sep 2009 18:39:51 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> Message-ID: <4AA939E7.9010108@redhat.com> Andrew John Hughes wrote: > 2009/9/10 Andrew Haley : >> Andrew John Hughes wrote: >>> 2009/9/10 Andrew Haley : >>>> Martin Buchholz wrote: >>>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>>> Martin Buchholz wrote: >>>>>>> changeset: 1283:ff32c270102a >>>>>>> user: martin >>>>>>> date: Mon Jun 22 21:07:20 2009 -0700 >>>>>>> summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>> Weird, I can't find that changeset. Got a URL? >>>> >>> changeset: 1341:ff32c270102a >>> user: martin >>> date: Mon Jun 22 21:07:20 2009 -0700 >>> summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>> >>> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a >> Ta; no idea why i couldn't find it. >> >>> Oh the benefits of a useful summary... >> >> He. That's not a summary, it's (almost) the entire comment! > > Ha, yeah. The bugID per changeset thing does come in useful though > when you need to do this kind of lookup as you can just search the > output of hg log for the bug ID. I don't get it. How does a summary line help searching? You could just as easily, and more reliably, search the full log for the bug ID. Andrew. From Tim.Bell at Sun.COM Thu Sep 10 10:43:57 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Thu, 10 Sep 2009 10:43:57 -0700 Subject: Miscellaneous jar improvements In-Reply-To: <4AA93658.5060306@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> Message-ID: <4AA93ADD.6080806@sun.com> Andrew wrote: >>>> changeset: 1283:ff32c270102a >>>> user: martin >>>> date: Mon Jun 22 21:07:20 2009 -0700 >>>> summary: 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons > > Weird, I can't find that changeset. Got a URL? Here is is in the JDK7 master forest: http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a Martin wrote: >>>> All told, there were at least 3 separate changesets in openjdk7 to >>>> make building rt.jar faster. More went by recently, including: 6834805: Improve jar -C performance http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ce55eb6668d9 6854795: Miscellaneous improvements to "jar" http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/0cabe1192c8b Discussed here: http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-July/001993.html >>> But you put the lot into http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4, >>> right? That's what we have in IcedTea 6. >> No, I was too lazy to backport 6853806.http://hg.openjdk.java.net/jdk7/jdk7/jdk/raw-rev/0cabe1192c8b >> (Perhaps I determined it was unnecessary? I don't recall) >> >> The changes to the jar command benefit all users of the jar command, >> unlike 6853806, which only benefits us poor folks building openjdk. > > Aha! Proof, if any more were needed, that it would be better to have > had the backport discussion online... ;-) > > Out of interest, why does changing "jar -C" to (cd $dir && jar) make > anything go faster? > contributed by Jeremy Manson, who writes: > > """Basically, rt.jar seems to be built by taking a huge long list of > directories: > jar -C dir class -C dir class -C dir class > All of these directories are *exactly the same place*. However, the jar command > gives each a separate entry in the big list of directories. > For each class, it iterates through all 16000 identical entries to find the > right directory. Using HashSet reduces the size of this set to 1.""" See the full thread here: http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-April/001516.html HTH- Tim From gnu_andrew at member.fsf.org Thu Sep 10 10:48:19 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 18:48:19 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <4AA939E7.9010108@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> <4AA939E7.9010108@redhat.com> Message-ID: <17c6771e0909101048n60ac697ep6151d84efa8d9b8d@mail.gmail.com> 2009/9/10 Andrew Haley : > Andrew John Hughes wrote: >> 2009/9/10 Andrew Haley : >>> Andrew John Hughes wrote: >>>> 2009/9/10 Andrew Haley : >>>>> Martin Buchholz wrote: >>>>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>>>> Martin Buchholz wrote: >>>>>>>> changeset: ? 1283:ff32c270102a >>>>>>>> user: ? ? ? ?martin >>>>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>> Weird, I can't find that changeset. ?Got a URL? >>>>> >>>> changeset: ? 1341:ff32c270102a >>>> user: ? ? ? ?martin >>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>> >>>> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a >>> Ta; no idea why i couldn't find it. >>> >>>> Oh the benefits of a useful summary... >>> >>> He. ?That's not a summary, it's (almost) the entire comment! >> >> Ha, yeah. ?The bugID per changeset thing does come in useful though >> when you need to do this kind of lookup as you can just search the >> output of hg log for the bug ID. > > I don't get it. ?How does a summary line help searching? ?You could just as > easily, and more reliably, search the full log for the bug ID. > Admittedly on the command line it's just a case of less data being generated. The problem is more acute when you're viewing the changeset via the web interface, where you have to click through to view the whole changeset to determine what's going on. Take a look at http://icedtea.classpath.org/hg/icedtea6/shortlog and then compare it with http://hg.openjdk.java.net/hsx/hsx16/master/shortlog > 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 mark at klomp.org Thu Sep 10 11:35:38 2009 From: mark at klomp.org (Mark Wielaard) Date: Thu, 10 Sep 2009 20:35:38 +0200 Subject: IcedTea6 1.6 Released! In-Reply-To: <17c6771e0909100844l657d3753kcc5b5010a186cc11@mail.gmail.com> References: <4AA7DF17.20107@redhat.com> <4AA81AAB.5080303@ubuntu.com> <17c6771e0909091427t66346840ub2891b843d2b4d97@mail.gmail.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> <4AA91A27.2080100@redhat.com> <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> <4AA91CE1.9020403@redhat.com> <17c6771e0909100844l657d3753kcc5b5010a186cc11@mail.gmail.com> Message-ID: <1252607738.9780.58.camel@springer.wildebeest.org> On Thu, 2009-09-10 at 16:44 +0100, Andrew John Hughes wrote: > 2009/9/10 Andrew Haley : > > Andrew John Hughes wrote: > > > >> I'm not suggesting using it as the sole basis for merging; that would > >> be wrong as you say. But having a summary line better than 2009-08-27 > >> Matthias Klose or 2009-09-09 Andrew Haley > >> would mean you can make a more educated guess as to > >> whether it's worth looking at the entire changeset. > > > > Sure, it's better for the person merging, but even more admin for the > > person committing. I think we have quite enough procedural rules without > > this. > > > I don't think one line is a major grievance, and we don't really have > any more rules than post your patch from approval and including the > changelog entry in your commit message. > > >> You're always going to get this 1-line summary regardless, it would be > >> good to have it as something sensible. > > > > It would be nice, but every time we add more things that a committer > > must do we make it harder for people to contribute. This one isn't > > worth it. > > > That depends how happy you are with changesets being missed. Our > current standard for commit messages currently makes that far more > likely than it would be otherwise. I strongly agree. And we could formulate it as making it less work for the committer. Just leaving off the duplicated first line that contains the name and the date would already be a great improvement, and one less line to type for the committer! Also having a consistent format of the first line so that all output looks identical (say just bug id if available plus a summary < 80 chars of what is being fixed) would make it much easier to would safe (at least me) lots of time going through a hg log or mercurial web search. Note that it could then also be used to make an automatic list of items for the release announcement. hg log -r icedtea-1.6:tip --template "{desc|firstline}\n" Sure it would still need editing by hand, but having the bug id and summary for each commit would make the life of the release master much easier imho. I really like how Xiomara automated this from the summary lines for jdk7 releases by just grabbing the hg rev, the bug id, adding a link, plus the summary line to give a quick overview of what changed: e.g. http://download.java.net/jdk7/changes/jdk7-b71.html I would love to do the same for IcedTea if we agreed on a similar format. Cheers, Mark From gnu_andrew at member.fsf.org Thu Sep 10 13:00:12 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 21:00:12 +0100 Subject: IcedTea6 1.6 Released! In-Reply-To: <1252607738.9780.58.camel@springer.wildebeest.org> References: <4AA7DF17.20107@redhat.com> <4AA8EDA6.80909@redhat.com> <17c6771e0909100626y60145523le4c528cc0b7ecc6f@mail.gmail.com> <4AA8FF39.2060704@redhat.com> <17c6771e0909100804w28d882b7ve1b806e3e10d2cd0@mail.gmail.com> <4AA91A27.2080100@redhat.com> <17c6771e0909100830o65f3c8e5t41e3c6f32b72cc3a@mail.gmail.com> <4AA91CE1.9020403@redhat.com> <17c6771e0909100844l657d3753kcc5b5010a186cc11@mail.gmail.com> <1252607738.9780.58.camel@springer.wildebeest.org> Message-ID: <17c6771e0909101300t66eeeb7cle9b22b26d8a5c81b@mail.gmail.com> 2009/9/10 Mark Wielaard : > On Thu, 2009-09-10 at 16:44 +0100, Andrew John Hughes wrote: >> 2009/9/10 Andrew Haley : >> > Andrew John Hughes wrote: >> > >> >> I'm not suggesting using it as the sole basis for merging; that would >> >> be wrong as you say. ?But having a summary line better than 2009-08-27 >> >> ?Matthias Klose ? or 2009-09-09 ?Andrew Haley >> >> would mean you can make a more educated guess as to >> >> whether it's worth looking at the entire changeset. >> > >> > Sure, it's better for the person merging, but even more admin for the >> > person committing. ?I think we have quite enough procedural rules without >> > this. >> > >> I don't think one line is a major grievance, and we don't really have >> any more rules than post your patch from approval and including the >> changelog entry in your commit message. >> >> >> You're always going to get this 1-line summary regardless, it would be >> >> good to have it as something sensible. >> > >> > It would be nice, but every time we add more things that a committer >> > must do we make it harder for people to contribute. ?This one isn't >> > worth it. >> > >> That depends how happy you are with changesets being missed. ?Our >> current standard for commit messages currently makes that far more >> likely than it would be otherwise. > > I strongly agree. And we could formulate it as making it less work for > the committer. Just leaving off the duplicated first line that contains > the name and the date would already be a great improvement, and one less > line to type for the committer! > Unfortunately, the first line after the name/date is not that helpful in all cases, as it represents only part of the log of changes: 2009-03-09 Gary Benson * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp would become: summary: * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp which isn't that helpful either, especially as that patches touches many more files. A summary would be generally helpful as an overview of the purpose for the change. With a lot of changes, it's not always clear. Better ChangeLog comments could help there too. When we were tracking down the patches for IcedTea to list on the wiki, a number were just committed as 'new file' which doesn't tell you anything about what it does. Writing good comments that are useful later is an art, and one we all probably need to improve on. Yeah this is all more work for the committer, but it makes the whole repository more maintainable in the long run. > Also having a consistent format of the first line so that all output > looks identical (say just bug id if available plus a summary < 80 chars > of what is being fixed) would make it much easier to would safe (at > least me) lots of time going through a hg log or mercurial web search. > +1 We should keep the bug ID optional though. I think Sun's bug ID per change results in an overcrowded database where the actual real bugs reported by real users can get lost. > Note that it could then also be used to make an automatic list of items > for the release announcement. > hg log -r icedtea-1.6:tip --template "{desc|firstline}\n" > Sure it would still need editing by hand, but having the bug id and > summary for each commit would make the life of the release master much > easier imho. > Good idea. Then we'd be less likely to miss things like the change to --with-openjdk (*ahem*) > I really like how Xiomara automated this from the summary lines for jdk7 > releases by just grabbing the hg rev, the bug id, adding a link, plus > the summary line to give a quick overview of what changed: > e.g. http://download.java.net/jdk7/changes/jdk7-b71.html > I would love to do the same for IcedTea if we agreed on a similar > format. > I like the pages Xiomara publishes and I regularly use them for updating IcedTea7. They've proved invaluable on many an occasion. > 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 martinrb at google.com Thu Sep 10 13:05:38 2009 From: martinrb at google.com (Martin Buchholz) Date: Thu, 10 Sep 2009 13:05:38 -0700 Subject: Miscellaneous jar improvements In-Reply-To: <4AA939E7.9010108@redhat.com> References: <4AA8EF0A.9030209@redhat.com> <1252586058.9780.19.camel@springer.wildebeest.org> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> <4AA939E7.9010108@redhat.com> Message-ID: <1ccfd1c10909101305j7a648b5akd37eeb9f24fe9c6d@mail.gmail.com> It was bugging me that hg log only shows the first line of the description, when the full description is usually what you want. Anyways, I just added the hg alias below in my .hgrc, and seems to make me happier. [alias] logv = log --template='changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\n{desc}\n\n' Martin On Thu, Sep 10, 2009 at 10:39, Andrew Haley wrote: > Andrew John Hughes wrote: >> 2009/9/10 Andrew Haley : >>> Andrew John Hughes wrote: >>>> 2009/9/10 Andrew Haley : >>>>> Martin Buchholz wrote: >>>>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>>>> Martin Buchholz wrote: >>>>>>>> changeset: ? 1283:ff32c270102a >>>>>>>> user: ? ? ? ?martin >>>>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>> Weird, I can't find that changeset. ?Got a URL? >>>>> >>>> changeset: ? 1341:ff32c270102a >>>> user: ? ? ? ?martin >>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>> >>>> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a >>> Ta; no idea why i couldn't find it. >>> >>>> Oh the benefits of a useful summary... >>> >>> He. ?That's not a summary, it's (almost) the entire comment! >> >> Ha, yeah. ?The bugID per changeset thing does come in useful though >> when you need to do this kind of lookup as you can just search the >> output of hg log for the bug ID. > > I don't get it. ?How does a summary line help searching? ?You could just as > easily, and more reliably, search the full log for the bug ID. > > Andrew. > From gnu_andrew at member.fsf.org Thu Sep 10 13:17:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 21:17:04 +0100 Subject: Miscellaneous jar improvements In-Reply-To: <1ccfd1c10909101305j7a648b5akd37eeb9f24fe9c6d@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <1ccfd1c10909100945i1ed79496mcea5d848e570dfc8@mail.gmail.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> <4AA939E7.9010108@redhat.com> <1ccfd1c10909101305j7a648b5akd37eeb9f24fe9c6d@mail.gmail.com> Message-ID: <17c6771e0909101317v4be06998u2dca2e63f411385d@mail.gmail.com> 2009/9/10 Martin Buchholz : > It was bugging me that hg log only shows the first line of the description, > when the full description is usually what you want. > Anyways, I just added the hg alias below in my .hgrc, > and seems to make me happier. > > [alias] > logv = log --template='changeset: > {rev}:{node|short}\n{branches}{tags}{parents}user: > {author}\ndate: ? ? ? ?{date|date}\n{desc}\n\n' > Thanks Martin. That produces some nice output. I moved the \n from before {branches} to after {parents} and add spaces between each of branches, tags and parents, so that you get: changeset:5:a16ad9963666 jdk6-b02 user:ohair rather than changeset:5:a16ad9963666 jdk6-b02user:ohair > Martin > > On Thu, Sep 10, 2009 at 10:39, Andrew Haley wrote: >> Andrew John Hughes wrote: >>> 2009/9/10 Andrew Haley : >>>> Andrew John Hughes wrote: >>>>> 2009/9/10 Andrew Haley : >>>>>> Martin Buchholz wrote: >>>>>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>>>>> Martin Buchholz wrote: >>>>>>>>> changeset: ? 1283:ff32c270102a >>>>>>>>> user: ? ? ? ?martin >>>>>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>>> Weird, I can't find that changeset. ?Got a URL? >>>>>> >>>>> changeset: ? 1341:ff32c270102a >>>>> user: ? ? ? ?martin >>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>> >>>>> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a >>>> Ta; no idea why i couldn't find it. >>>> >>>>> Oh the benefits of a useful summary... >>>> >>>> He. ?That's not a summary, it's (almost) the entire comment! >>> >>> Ha, yeah. ?The bugID per changeset thing does come in useful though >>> when you need to do this kind of lookup as you can just search the >>> output of hg log for the bug ID. >> >> I don't get it. ?How does a summary line help searching? ?You could just as >> easily, and more reliably, search the full log for the bug ID. >> >> 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 icedtea.classpath.org Thu Sep 10 13:28:37 2009 From: langel at icedtea.classpath.org (langel at icedtea.classpath.org) Date: Thu, 10 Sep 2009 20:28:37 +0000 Subject: /hg/icedtea6: 2009-09-09 Lillian Angel Message-ID: changeset 738d06e2778e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=738d06e2778e author: langel date: Thu Sep 10 16:31:56 2009 -0400 2009-09-09 Lillian Angel * Makefile.am: Added NB_PLATFORM and NB_APISUPPORT to determine current versions to use. This will prevent future failures whenever NetBeans is updated. diffstat: 2 files changed, 18 insertions(+), 4 deletions(-) ChangeLog | 6 ++++++ Makefile.am | 16 ++++++++++++---- diffs (60 lines): diff -r dbf2dacce14a -r 738d06e2778e ChangeLog --- a/ChangeLog Wed Sep 09 16:44:12 2009 +0100 +++ b/ChangeLog Thu Sep 10 16:31:56 2009 -0400 @@ -1,3 +1,9 @@ 2009-09-09 Andrew Haley + + * Makefile.am: Added NB_PLATFORM and NB_APISUPPORT to determine + current versions to use. This will prevent future failures whenever + NetBeans is updated. + 2009-09-09 Andrew Haley * NEWS: Update for 1.6. diff -r dbf2dacce14a -r 738d06e2778e Makefile.am --- a/Makefile.am Wed Sep 09 16:44:12 2009 +0100 +++ b/Makefile.am Thu Sep 10 16:31:56 2009 -0400 @@ -28,6 +28,14 @@ LIVECONNECT_DIR = LIVECONNECT_DIR = NPPLUGIN_DIR = endif +endif + +if WITH_VISUALVM +NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) +NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) +else +NB_PLATFORM= +NB_APISUPPORT= endif if ENABLE_PULSE_JAVA @@ -1190,7 +1198,7 @@ if WITH_VISUALVM $(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 \ + cp -r netbeans/nbbuild/netbeans_visualvm/$(NB_PLATFORM) \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm @@ -1275,7 +1283,7 @@ if WITH_VISUALVM $(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 \ + cp -r netbeans/nbbuild/netbeans_visualvm/$(NB_PLATFORM) \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm @@ -2033,8 +2041,8 @@ if WITH_VISUALVM cd netbeans ; \ rm nbbuild/external/binaries-list ; \ 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)/$(NB_PLATFORM)/ ./nbbuild/netbeans_visualvm/$(NB_PLATFORM) ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/$(NB_APISUPPORT)/ ./nbbuild/netbeans_visualvm/$(NB_APISUPPORT) ; \ ln -s $(SYSTEM_NETBEANS_DIR)/harness/ ./nbbuild/netbeans_visualvm/harness ; \ if ! (uname -a | grep x86_64) ; then \ mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ From gnu_andrew at member.fsf.org Thu Sep 10 13:51:45 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Thu, 10 Sep 2009 21:51:45 +0100 Subject: /hg/release/icedtea6-1.6: Update documentation with recent chang... In-Reply-To: <4AA9141C.3030708@ubuntu.com> References: <4AA9141C.3030708@ubuntu.com> Message-ID: <17c6771e0909101351s364d22f8x59fe50dc3d4e3be7@mail.gmail.com> 2009/9/10 Matthias Klose : > On 10.09.2009 16:52, andrew at icedtea.classpath.org wrote: >> >> +For building the Shark JIT, you will need LLVM 2.5 or current SVN. > > llvm branched two weeks ago, that should be "or the 2.6 branch / 2.6 release > from SVN. > I just copied the line from IcedTea7 which was true given what I was told at the time. Feel free to update this in both trees if the status quo has changed. This is still better than not mentioning any requirements for Shark at all, as we were before. -- 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 Thu Sep 10 15:19:36 2009 From: martinrb at google.com (Martin Buchholz) Date: Thu, 10 Sep 2009 15:19:36 -0700 Subject: Miscellaneous jar improvements In-Reply-To: <17c6771e0909101317v4be06998u2dca2e63f411385d@mail.gmail.com> References: <4AA8EF0A.9030209@redhat.com> <4AA92FEB.30804@redhat.com> <1ccfd1c10909101016i2bdcd84bld4fa73e5b3f9423c@mail.gmail.com> <4AA93658.5060306@redhat.com> <17c6771e0909101030h32fac395h13d7f4faab7b0ae4@mail.gmail.com> <4AA938B5.5050603@redhat.com> <17c6771e0909101037n415fb947y6e4a9ebebed3552@mail.gmail.com> <4AA939E7.9010108@redhat.com> <1ccfd1c10909101305j7a648b5akd37eeb9f24fe9c6d@mail.gmail.com> <17c6771e0909101317v4be06998u2dca2e63f411385d@mail.gmail.com> Message-ID: <1ccfd1c10909101519v7c51eb00y584336190668e0bb@mail.gmail.com> Thanks, Andrew(s) I can't say that I'm really happy with mercurial's templating mini-language, but here's my latest good-enough version, incorporating your suggestion. [alias] logv = log --template='changeset: {rev}:{node|short} {branches} {tags} {parents}\nuser: {author}\ndate: {date|isodate}\n{desc}\n\n' Martin On Thu, Sep 10, 2009 at 13:17, Andrew John Hughes wrote: > 2009/9/10 Martin Buchholz : >> It was bugging me that hg log only shows the first line of the description, >> when the full description is usually what you want. >> Anyways, I just added the hg alias below in my .hgrc, >> and seems to make me happier. >> >> [alias] >> logv = log --template='changeset: >> {rev}:{node|short}\n{branches}{tags}{parents}user: >> {author}\ndate: ? ? ? ?{date|date}\n{desc}\n\n' >> > > Thanks Martin. ?That produces some nice output. ?I moved the \n from > before {branches} to after {parents} and add spaces between each of > branches, tags and parents, so that you get: > > changeset:5:a16ad9963666 ?jdk6-b02 > user:ohair > > rather than > > changeset:5:a16ad9963666 > jdk6-b02user:ohair > >> Martin >> >> On Thu, Sep 10, 2009 at 10:39, Andrew Haley wrote: >>> Andrew John Hughes wrote: >>>> 2009/9/10 Andrew Haley : >>>>> Andrew John Hughes wrote: >>>>>> 2009/9/10 Andrew Haley : >>>>>>> Martin Buchholz wrote: >>>>>>>> On Thu, Sep 10, 2009 at 09:57, Andrew Haley wrote: >>>>>>>>> Martin Buchholz wrote: >>>>>>>>>> changeset: ? 1283:ff32c270102a >>>>>>>>>> user: ? ? ? ?martin >>>>>>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>>>> Weird, I can't find that changeset. ?Got a URL? >>>>>>> >>>>>> changeset: ? 1341:ff32c270102a >>>>>> user: ? ? ? ?martin >>>>>> date: ? ? ? ?Mon Jun 22 21:07:20 2009 -0700 >>>>>> summary: ? ? 6853806: Prefer (cd $dir && jar) to jar -C for performance reasons >>>>>> >>>>>> http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/ff32c270102a >>>>> Ta; no idea why i couldn't find it. >>>>> >>>>>> Oh the benefits of a useful summary... >>>>> >>>>> He. ?That's not a summary, it's (almost) the entire comment! >>>> >>>> Ha, yeah. ?The bugID per changeset thing does come in useful though >>>> when you need to do this kind of lookup as you can just search the >>>> output of hg log for the bug ID. >>> >>> I don't get it. ?How does a summary line help searching? ?You could just as >>> easily, and more reliably, search the full log for the bug ID. >>> >>> 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 mvfranz at gmail.com Thu Sep 10 17:07:24 2009 From: mvfranz at gmail.com (Michael Franz) Date: Thu, 10 Sep 2009 20:07:24 -0400 Subject: test_gamma failure on OS X (Leopard) with bsd-port (1.11) In-Reply-To: <4AA56A2B.3060201@Sun.COM> References: <4AA56A2B.3060201@Sun.COM> Message-ID: Christian, I don't know enough about OS Xs loading mechanism to try and get this to work. I hope it is safe to just ignore the tests, that is what I have been doing. Michael On Mon, Sep 7, 2009 at 4:16 PM, Christian Thalinger < Christian.Thalinger at sun.com> wrote: > Michael Franz wrote: > > Hi, > > > > I have been struggling with this for a few weeks and do not know what is > > causing this problem. The ecj build works fine, but when the process > > runs the test_gamma the javac fails to startup so that Queens is not > > compiled. Thus the running of Queens fails as Queens is not available. > > I have enabled a bunch of debugging switches that I have found in the > > code and force the JVM to produce a core dump when it fails. When > > looking at the core file I am lost trying to figure out what it is > > telling me. If I just continue after this error I get another error > > about the crc-32 from java.util.ZipEntry. If I copy this image > > (openjkd-ecj/build/bsd-i586/j2sdk-image) and use it as my bootstrap JDK > > I have the same results, so I think the JDK is built correctly, it just > > fails at the test_gamma run. > > > > I can remove the test_gamma test and build a working JDK. Good enough > > that I can run NetBeans with it. I would like to figure out why the > > test_gamma test fails. > > I have the same problem. The problem seems to be the way Darwin does > the library resolving. It seems to always give the precedence to > libraries in the current directory without setting {DY}LD_LIBRARY_PATH. > So when javac from the bootstrap JDK is executed in the build > directory, it picks up the newly built libjvm and of course the > bootstrap classes and the new VM do not match. Not sure how to fix that... > > -- Christian > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090910/c3a458a5/attachment.html From enevill at icedtea.classpath.org Fri Sep 11 06:09:02 2009 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Fri, 11 Sep 2009 13:09:02 +0000 Subject: /hg/icedtea6: Edward Nevill (ed@camswl.com) Message-ID: changeset b7e6ccea40d4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b7e6ccea40d4 author: "Edward Nevill (ed at camswl.com)" date: Fri Sep 11 14:12:15 2009 +0100 Edward Nevill (ed at camswl.com) diffstat: 11 files changed, 7037 insertions(+), 4216 deletions(-) ChangeLog | 21 Makefile.am | 12 mkbc.c | 44 ports/hotspot/build/linux/makefiles/zero.make | 18 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 4486 +++++++-- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 30 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 70 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp | 221 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 6334 +++++++------- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 13 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 4 diffs (truncated from 15832 to 500 lines): diff -r 738d06e2778e -r b7e6ccea40d4 ChangeLog --- a/ChangeLog Thu Sep 10 16:31:56 2009 -0400 +++ b/ChangeLog Fri Sep 11 14:12:15 2009 +0100 @@ -1,3 +1,24 @@ 2009-09-09 Lillian Angel + + * Makefile.am: Changed mkbc rule to allow preprocessing by gcc + * mkbc.c: Changed to allow preprocessing by gcc + * zero.make: Added support for automatic offset generation + * asm_helper.c: Support for offset generation and calling of + C++ virtual functions from Asm + * bytecodes_zero.cpp: Added new fast bytecodes + * bytecodes_zero.hpp: Ditto + * bytes_zero.hpp: Optimised get_native_X and get_Java_X + * cppInterpreter_zero.cpp: Fixed some type definitions & casts + Moved configuration checking from here to asm_generate_entry + * os_linux_zero.cpp: Removed #if defined(PRODUCT) + * cppInterpreter_arm.S: + * bytecodes_arm.def: + Support for HW FP. Lots of debugs and asserts. Build for gcc 4.1 + Automatic generation of asm offsets. Removed sync. native entry. + Support for UseCompiler. Fastpath invokeinterface. Optimised new, + instanceof & checkcast. Additional fast bytecodes and bc sequences. + Fast div and rem by constant. Other minor optimisations. + 2009-09-09 Lillian Angel * Makefile.am: Added NB_PLATFORM and NB_APISUPPORT to determine diff -r 738d06e2778e -r b7e6ccea40d4 Makefile.am --- a/Makefile.am Thu Sep 10 16:31:56 2009 -0400 +++ b/Makefile.am Fri Sep 11 14:12:15 2009 +0100 @@ -477,8 +477,18 @@ ZERO_ASM_BC_ASM_COND = $(shell test -f $ $(abs_top_srcdir)/mkbc: $(abs_top_srcdir)/mkbc.c $(CC) $< -o $@ +# ECN: The following rule has been changed to allow preprocessing of the bytecode definition +# file prior to running 'mkbc'. This allows you to use -DXXX on the gcc command. There are two +# options currently recognized. +# +# -DDISABLE_NOTICE_SAFEPONTS - Always run in 'safe' mode. +# -DDISABLE_FAST_BYTECODES - Disable fast bytecode replacement and bytecode sequences +# +# These options are provided mainly to assist debugging by returning the bytecode interpreter +# to a 'vanilla' interpreter. +# ${ZERO_ASM_BC_ASM}: ${ZERO_ASM_BC_DEF} $(abs_top_srcdir)/mkbc - $(abs_top_srcdir)/mkbc $< $@ + gcc -E - < $< | $(abs_top_srcdir)/mkbc - $@ # Link ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp diff -r 738d06e2778e -r b7e6ccea40d4 mkbc.c --- a/mkbc.c Thu Sep 10 16:31:56 2009 -0400 +++ b/mkbc.c Fri Sep 11 14:12:15 2009 +0100 @@ -1,3 +1,17 @@ +/* + * Copyright 2009 Edward Nevill + * + * 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). + */ + #include #include #include @@ -10,7 +24,7 @@ static char *prefix = DEFAULT_PREFIX; #define ISALPHA(c) (isalpha(c) || (c) == '_') #define ISALNUM(c) (isalnum(c) || (c) == '_') -FILE *source_f, *bci_f, *bci_f; +FILE *source_f, *bci_f; typedef struct Bytecode { char *name; @@ -282,7 +296,7 @@ void mkbc(void) c = (readchar)(); c = skipwhitespace(c); while (c != EOF) { - if (c == '#') { + if (c == '@' || c == '#') { c = skipeol(c); } else if (ISALPHA(c)) { c = readsymbol(c, buf, BUFLEN); @@ -546,7 +560,7 @@ int main(int argc, char **argv) source = bci = 0; while (s = *++argv) { - if (*s == '-') { + if (s[0] == '-' && s[1] != 0) { if (s[1] == 'P') { prefix = s+2; } else { @@ -566,16 +580,26 @@ int main(int argc, char **argv) fprintf(stderr, "Too few arguments\n"); usage(); } - source_f = fopen(source, "r"); - if (!source_f) fatal("Error opening source file"); - bci_f = fopen(bci, "w"); - if (!bci_f) fatal("Error opening bci file for write"); + if (strcmp(source, "-") == 0) { + source_f = stdin; + } else { + source_f = fopen(source, "r"); + if (!source_f) fatal("Error opening source file"); + } + if (strcmp(bci, "-") == 0) { + bci_f = stdout; + } else { + bci_f = fopen(bci, "w"); + if (!bci_f) fatal("Error opening bci file for write"); + } for (i = 0; i < 256; i++) { bytecodes[i].name = "undefined"; bytecodes[i].len = -1; } mkbc(); dumpbc(); - if (fclose(source_f)) fatal("Error reading source"); - if (fclose(bci_f)) fatal("Error writing bci"); -} + if (ferror(source_f)) fatal("Error reading source"); + if (ferror(bci_f)) fatal("Error writing bci"); + if (source_f != stdin) fclose(source_f); + if (bci_f != stdout) fclose(bci_f); +} diff -r 738d06e2778e -r b7e6ccea40d4 ports/hotspot/build/linux/makefiles/zero.make --- a/ports/hotspot/build/linux/makefiles/zero.make Thu Sep 10 16:31:56 2009 -0400 +++ b/ports/hotspot/build/linux/makefiles/zero.make Fri Sep 11 14:12:15 2009 +0100 @@ -24,12 +24,28 @@ # ifeq ($(ZERO_LIBARCH),arm) + +Obj_Files += asm_helper.o Obj_Files += cppInterpreter_arm.o -CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK + +CFLAGS += -DHOTSPOT_ASM + %.o: %.S @echo Assembling $< $(QUIETLY) $(REMOVE_TARGET) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) + +cppInterpreter_arm.o: offsets_arm.s + +offsets_arm.s: mkoffsets + @echo Generating assembler offsets + ./mkoffsets > $@ + +mkoffsets: asm_helper.cpp + @echo Compiling offset generator + $(QUIETLY) $(REMOVE_TARGET) + $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) + endif # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized diff -r 738d06e2778e -r b7e6ccea40d4 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Thu Sep 10 16:31:56 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Fri Sep 11 14:12:15 2009 +0100 @@ -1,3 +1,13 @@ nop = 0x00, 1 +#ifndef DISABLE_HW_FP +#define HW_FP +#endif +#ifndef DISABLE_NOTICE_SAFEPOINTS +#define NOTICE_SAFEPOINTS +#endif +#ifndef DISABLE_FAST_BYTECODES +#define FAST_BYTECODES +#endif + nop = 0x00, 1 aconst_null = 0x01, 1 iconst_m1 = 0x02, 1 @@ -201,11 +211,13 @@ jsr_w = 0xc9, 0 jsr_w = 0xc9, 0 breakpoint = 0xca, 0 -#agetfield = 0xcb, 3 +#ifdef FAST_BYTECODES + + at agetfield = 0xcb, 3 bgetfield = 0xcc, 3 cgetfield = 0xcd, 3 -#dgetfield = 0xce, 3 -#fgetfield = 0xcf, 3 + at dgetfield = 0xce, 3 + at fgetfield = 0xcf, 3 igetfield = 0xd0, 3 lgetfield = 0xd1, 3 sgetfield = 0xd2, 3 @@ -213,45 +225,56 @@ aputfield = 0xd3, 3 aputfield = 0xd3, 3 bputfield = 0xd4, 3 cputfield = 0xd5, 3 -#dputfield = 0xd6, 3 -#fputfield = 0xd7, 3 + at dputfield = 0xd6, 3 + at fputfield = 0xd7, 3 iputfield = 0xd8, 3 lputfield = 0xd9, 3 -#sputfield = 0xda, 3 + at sputfield = 0xda, 3 iaccess_0 = 0xdb, 4 iaccess_1 = 0xdc, 4 iaccess_2 = 0xdd, 4 iaccess_3 = 0xde, 4 -#fast_iload = 0xdf, 2 -#fast_iload2 = 0xe0, 4 -#fast_icaload = 0xe1, 3 - -invokevfinal = 0xe2, 3 -#linearswitch = 0xe3, 0 -#binaryswitch = 0xe4, 0 - -iload_0_iconst_N = 231, 2 -iload_1_iconst_N = 232, 2 -iload_2_iconst_N = 233, 2 -iload_3_iconst_N = 234, 2 -iload_iconst_N = 235, 3 -invokeresolved = 236, 3 -iadd_istore_N = 237, 2 -isub_istore_N = 238, 2 -iand_istore_N = 239, 2 -ior_istore_N = 240, 2 -ixor_istore_N = 241, 2 -iadd_u4store = 242, 3 -isub_u4store = 243, 3 -iand_u4store = 244, 3 -ior_u4store = 245, 3 -ixor_u4store = 246, 3 -invokespecialresolved = 247, 3 -invokestaticresolved = 248, 3 - -return_register_finalizer = 229, 0 +invokeresolved = 0xdf, 3 +invokespecialresolved = 0xe0, 3 +invokestaticresolved = 0xe1, 3 +invokevfinal = 0xe2, 3 + +iload_iload = 0xe3, 4 +iload_iload_N = 0xe4, 3 + + at return_register_finalizer = 0xe5, 1 + +dmac = 0xe6, 2 + +iload_0_iconst_N = 0xe7, 2 +iload_1_iconst_N = 0xe8, 2 +iload_2_iconst_N = 0xe9, 2 +iload_3_iconst_N = 0xea, 2 +iload_iconst_N = 0xeb, 3 +iadd_istore_N = 0xec, 2 +isub_istore_N = 0xed, 2 +iand_istore_N = 0xee, 2 +ior_istore_N = 0xef, 2 +ixor_istore_N = 0xf0, 2 +iadd_u4store = 0xf1, 3 +isub_u4store = 0xf2, 3 +iand_u4store = 0xf3, 3 +ior_u4store = 0xf4, 3 +ixor_u4store = 0xf5, 3 +iload_0_iload = 0xf6, 3 +iload_1_iload = 0xf7, 3 +iload_2_iload = 0xf8, 3 +iload_3_iload = 0xf9, 3 +iload_0_iload_N = 0xfa, 2 +iload_1_iload_N = 0xfb, 2 +iload_2_iload_N = 0xfc, 2 +iload_3_iload_N = 0xfd, 2 + +#endif // FAST_BYTECODES + +return_register_finalizer = 0xe5, 1 (nop) { DISPATCH \seq_len @@ -292,7 +315,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -321,7 +344,7 @@ return_register_finalizer = 229, 0 mov tmp2, #0 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -337,8 +360,8 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (sipush) sipush { DISPATCH_START \seq_len mov tmp1, r1 @@ -352,7 +375,7 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,fload,aload) u4load { DISPATCH_START \seq_len rsb tmp1, r2, #0 @@ -365,7 +388,7 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (lload,dload) u8load { DISPATCH_START \seq_len sub r3, locals, r2, lsl #2 @@ -374,7 +397,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -446,7 +469,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -458,17 +481,15 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (iaload,faload,aaload) u4aload { - POP2 r2, r3 @ r2 = index, r3 = arrayref - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry5: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -484,12 +505,10 @@ return_register_finalizer = 229, 0 } (laload,daload) u8aload { - POP2 r2, r3 - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry6: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -501,17 +520,15 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT ldr tmp1, [r3, #20] DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (baload) baload { - POP2 r2, r3 @ r2 = index, r3 = arrayref - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry7: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -527,12 +544,10 @@ return_register_finalizer = 229, 0 } (caload) caload { - POP2 r2, r3 @ r2 = index, r3 = arrayref - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry8: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -548,12 +563,10 @@ return_register_finalizer = 229, 0 } (saload) saload { - POP2 r2, r3 @ r2 = index, r3 = arrayref - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry9: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -568,7 +581,7 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (astore,istore,fstore) u4store { DISPATCH_START \seq_len rsb tmp1, r2, #0 @@ -581,10 +594,10 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (lstore,dstore) u8store { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT sub r3, locals, r2, lsl #2 DISPATCH_NEXT @@ -641,7 +654,7 @@ return_register_finalizer = 229, 0 (lstore_0,dstore_0) u8store_0 { DISPATCH_START \seq_len DISPATCH_NEXT - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -652,7 +665,7 @@ return_register_finalizer = 229, 0 (lstore_1,dstore_1) u8store_1 { DISPATCH_START \seq_len DISPATCH_NEXT - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT @@ -662,7 +675,7 @@ return_register_finalizer = 229, 0 (lstore_2,dstore_2) u8store_2 { DISPATCH_START \seq_len - POP2 tmp2, tmp1 + POP tmp2, tmp1 DISPATCH_NEXT str tmp2, [locals, #-12] DISPATCH_NEXT @@ -674,7 +687,7 @@ return_register_finalizer = 229, 0 From aph at redhat.com Fri Sep 11 07:05:30 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 11 Sep 2009 15:05:30 +0100 Subject: Releasing IcedTea instructions Message-ID: <4AAA592A.2020101@redhat.com> Now at http://icedtea.classpath.org/wiki/ReleasingIcedTea I think I got everything, but there are bound to be some omissions. Enjoy. Andrew. From andrew at icedtea.classpath.org Fri Sep 11 07:29:05 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 11 Sep 2009 14:29:05 +0000 Subject: /hg/icedtea: 2 new changesets Message-ID: changeset 0373c927e1e9 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=0373c927e1e9 author: Andrew John Hughes date: Fri Sep 11 14:09:28 2009 +0100 Bump to b71 and disable the intree EC provider. 2009-09-11 Andrew John Hughes * Makefile.am: Bump to b71. Turn on DISABLE_INTREE_EC to prevent the intree EC provider being built. * patches/hotspot/default/icedtea-params-cast-size_t.patch: Regenerated. changeset 755ac518cabd in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=755ac518cabd author: Andrew John Hughes date: Fri Sep 11 15:32:10 2009 +0100 Support the PKCS11 EC provider with --enable-nss. 2009-09-04 Andrew John Hughes * HACKING: Updated. * Makefile.am: Add two new patches. Copy nss.cfg to jre/lib/security if NSS is enabled. * configure.ac:Check for NSS and set NSS_LIBDIR and ENABLE_NSS if found. * nss.cfg.in: Template for the nss configuration file. * patches/icedtea-disable-intree-ec.patch: Turn off the new EC provider in java.security as we don't build it. * patches/icedtea-nss-6763530.patch: Fix for Sun bug 6763530 which is triggered by newer versions of NSS. * patches/icedtea-nss-config.patch: Patch java.security with the PCKS11 provider configuration. diffstat: 9 files changed, 204 insertions(+), 49 deletions(-) ChangeLog | 25 ++++++ HACKING | 2 Makefile.am | 56 ++++++++----- configure.ac | 20 ++++ nss.cfg.in | 4 patches/hotspot/default/icedtea-params-cast-size_t.patch | 58 +++++++------- patches/icedtea-disable-intree-ec.patch | 23 +++++ patches/icedtea-nss-6763530.patch | 55 +++++++++++++ patches/icedtea-nss-config.patch | 10 ++ diffs (425 lines): diff -r d719734879cc -r 755ac518cabd ChangeLog --- a/ChangeLog Thu Aug 27 17:40:22 2009 +0200 +++ b/ChangeLog Fri Sep 11 15:32:10 2009 +0100 @@ -1,3 +1,28 @@ 2009-08-27 Matthias Klose + + * HACKING: Updated. + * Makefile.am: + Add two new patches. Copy nss.cfg to jre/lib/security if + NSS is enabled. + * configure.ac:Check for NSS and set NSS_LIBDIR + and ENABLE_NSS if found. + * nss.cfg.in: Template for the nss configuration file. + * patches/icedtea-disable-intree-ec.patch: Turn off + the new EC provider in java.security as we don't build it. + * patches/icedtea-nss-6763530.patch: + Fix for Sun bug 6763530 which is triggered by newer + versions of NSS. + * patches/icedtea-nss-config.patch: Patch java.security + with the PCKS11 provider configuration. + +2009-09-11 Andrew John Hughes + + * Makefile.am: + Bump to b71. Turn on DISABLE_INTREE_EC to + prevent the intree EC provider being built. + * patches/hotspot/default/icedtea-params-cast-size_t.patch: + Regenerated. + 2009-08-27 Matthias Klose * acinclude.m4, configure.ac (FIND_PULSEAUDIO): Remove. diff -r d719734879cc -r 755ac518cabd HACKING --- a/HACKING Thu Aug 27 17:40:22 2009 +0200 +++ b/HACKING Fri Sep 11 15:32:10 2009 +0100 @@ -114,6 +114,8 @@ The following patches are only applied t is broken in libgcj 4.3. * icedtea-override.patch: Remove @Override annotation in javax.management.AttributeValueExp (unsupported by ecj < 3.4). +* icedtea-nss-config.patch: Add the NSS PKCS11 security provider. (PR356) +* icedtea-nss-6763530.patch: Fix PKCS11 provider when used with newer version of NSS (>=3.12.3) (PR356, S6763530). The following patches are only applied to the icedtea-ecj bootstrap tree: diff -r d719734879cc -r 755ac518cabd Makefile.am --- a/Makefile.am Thu Aug 27 17:40:22 2009 +0200 +++ b/Makefile.am Fri Sep 11 15:32:10 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b70 -OPENJDK_VERSION = b70 - -OPENJDK_CHANGESET = 1bbbd5c42f3a -CORBA_CHANGESET = 309d97756352 -JAXP_CHANGESET = df9569f46ae8 -JAXWS_CHANGESET = c33dece1b2b3 -JDK_CHANGESET = 1b0f308e49c3 -LANGTOOLS_CHANGESET = 742987f2c0d2 -HOTSPOT_CHANGESET = 468ea732650d - -OPENJDK_MD5SUM = 84dabfc7b592490dcd4b2a232bde44ef -CORBA_MD5SUM = ec0de438056ee14c48deb510c0d583dc -JAXP_MD5SUM = 732708e633ffef87fb4095ecbbf4add0 -JAXWS_MD5SUM = 492e61bf7f96d3832b3246c01c716aa8 -JDK_MD5SUM = f286fbed4ffb4bb5d368e8cab11b50fd -LANGTOOLS_MD5SUM = a0a13535ef6eec2292daa14f4cfe849d -HOTSPOT_MD5SUM = 9e2a49be9371abe80c6fb1bd4ad3de3e +OPENJDK_VERSION = b71 + +OPENJDK_CHANGESET = 47425552fc70 +CORBA_CHANGESET = 109171aadcfa +JAXP_CHANGESET = 6d4f2360ffe6 +JAXWS_CHANGESET = 75cfe6f615df +JDK_CHANGESET = 2a1a7fb44226 +LANGTOOLS_CHANGESET = 70cd643d6217 +HOTSPOT_CHANGESET = 73abf11e8e61 + +OPENJDK_MD5SUM = d0753b769317c497ae14d9ab089504f7 +CORBA_MD5SUM = 5cb4f5afbef00fd662c554b9dd7312a7 +JAXP_MD5SUM = 0203983e81a05e548f7fc7bed557bf2c +JAXWS_MD5SUM = 07015564ab925a96cebf363814707d64 +JDK_MD5SUM = 9297009647ee6d3711fb59c3d3914404 +LANGTOOLS_MD5SUM = 70c0690c8ee523beb2a19dd1b7d2a9f9 +HOTSPOT_MD5SUM = 27eabf6067ac04edf002fad94671bbe1 CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa @@ -1582,7 +1582,8 @@ ICEDTEA_ENV = \ ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \ ALT_LIVECONNECT_DIST="$(abs_top_builddir)" \ DEBUG_CLASSFILES="true" \ - DEBUG_BINARIES="true" + DEBUG_BINARIES="true" \ + DISABLE_INTREE_EC="true" if WITH_CACAO ICEDTEA_ENV += \ @@ -1670,7 +1671,8 @@ ICEDTEA_ENV_ECJ = \ ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \ ALT_LIVECONNECT_DIST="$(abs_top_builddir)" \ DEBUG_CLASSFILES="true" \ - DEBUG_BINARIES="true" + DEBUG_BINARIES="true" \ + DISABLE_INTREE_EC="true" if WITH_CACAO ICEDTEA_ENV_ECJ += \ @@ -2078,7 +2080,8 @@ ICEDTEA_PATCHES = \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-xml-encodinginfo.patch \ patches/icedtea-cc-interp-backedge.patch \ - patches/icedtea-netx.patch + patches/icedtea-netx.patch \ + patches/icedtea-disable-intree-ec.patch if WITH_RHINO ICEDTEA_PATCHES += \ @@ -2136,6 +2139,11 @@ if ENABLE_NPPLUGIN if ENABLE_NPPLUGIN ICEDTEA_PATCHES += patches/icedtea-liveconnect-dist.patch endif +endif + +if ENABLE_NSS +ICEDTEA_PATCHES += patches/icedtea-nss-config.patch \ + patches/icedtea-nss-6763530.patch endif ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES) @@ -2758,6 +2766,10 @@ if ENABLE_SYSTEMTAP $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; +endif @echo "IcedTea is served:" $(BUILD_OUTPUT_DIR) mkdir -p stamps touch stamps/icedtea.stamp @@ -2843,6 +2855,10 @@ if ENABLE_SYSTEMTAP cp $(abs_top_builddir)/tapset/hotspot.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi +endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; endif @echo "IcedTea (debug build) is served:" \ $(BUILD_OUTPUT_DIR)-debug diff -r d719734879cc -r 755ac518cabd configure.ac --- a/configure.ac Thu Aug 27 17:40:22 2009 +0200 +++ b/configure.ac Fri Sep 11 15:32:10 2009 +0100 @@ -141,6 +141,14 @@ AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$ENABLE_SYSTEMTAP = xyes]) AC_MSG_RESULT(${ENABLE_SYSTEMTAP}) +AC_MSG_CHECKING([whether to include elliptic curve cryptography support via NSS]) +AC_ARG_ENABLE([nss], + [AS_HELP_STRING([--enable-nss], + [Enable inclusion of NSS security provider])], + [ENABLE_NSS="${enableval}"], [ENABLE_NSS='no']) +AM_CONDITIONAL([ENABLE_NSS], [test x$ENABLE_NSS = xyes]) +AC_MSG_RESULT(${ENABLE_NSS}) + AC_MSG_CHECKING([how many parallel build jobs to execute]) AC_ARG_WITH([parallel-jobs], [AS_HELP_STRING([--with-parallel-jobs], @@ -444,6 +452,18 @@ then AC_SUBST(GTK_LIBS) fi +if test "x${ENABLE_NSS}" = "xyes" +then + PKG_CHECK_MODULES(NSS, nss, [NSS_FOUND=yes], [NSS_FOUND=no]) + if test "x${NSS_FOUND}" = xno + then + AC_MSG_ERROR([Could not find NSS. Either install it or configure using --disable-nss.]) + fi + NSS_LIBDIR=`$PKG_CONFIG --variable=libdir nss` + AC_SUBST(NSS_LIBDIR) + AC_CONFIG_FILES([nss.cfg]) +fi + if test "x${ZERO_BUILD_TRUE}" = x || test "x${ADD_ZERO_BUILD_TRUE}" = x; then dnl Check for libffi headers and libraries. PKG_CHECK_MODULES(LIBFFI, libffi,[LIBFFI_FOUND=yes],[LIBFFI_FOUND=no]) diff -r d719734879cc -r 755ac518cabd nss.cfg.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nss.cfg.in Fri Sep 11 15:32:10 2009 +0100 @@ -0,0 +1,4 @@ +name = NSS +nssLibraryDirectory = @NSS_LIBDIR@ +nssDbMode = noDb +attributes = compatibility diff -r d719734879cc -r 755ac518cabd patches/hotspot/default/icedtea-params-cast-size_t.patch --- a/patches/hotspot/default/icedtea-params-cast-size_t.patch Thu Aug 27 17:40:22 2009 +0200 +++ b/patches/hotspot/default/icedtea-params-cast-size_t.patch Fri Sep 11 15:32:10 2009 +0100 @@ -1,7 +1,7 @@ diff -Nru openjdk.orig/hotspot/src/share 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 @@ +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-06-30 14:25:09.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2009-09-04 18:12:23.000000000 +0100 +@@ -940,7 +940,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"); @@ -10,7 +10,7 @@ diff -Nru openjdk.orig/hotspot/src/share } if (expand_bytes > 0) { if (PrintGCDetails && Verbose) { -@@ -6044,7 +6044,7 @@ +@@ -6063,7 +6063,7 @@ HeapWord* curAddr = _markBitMap.startWord(); while (curAddr < _markBitMap.endWord()) { size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr); @@ -19,7 +19,7 @@ diff -Nru openjdk.orig/hotspot/src/share _markBitMap.clear_large_range(chunk); if (ConcurrentMarkSweepThread::should_yield() && !foregroundGCIsActive() && -@@ -6332,7 +6332,7 @@ +@@ -6351,7 +6351,7 @@ return; } // Double capacity if possible @@ -29,9 +29,9 @@ diff -Nru openjdk.orig/hotspot/src/share // 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 @@ +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-05-08 17:40:27.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2009-09-04 18:12:23.000000000 +0100 +@@ -863,8 +863,8 @@ void PSParallelCompact::initialize_dead_wood_limiter() { const size_t max = 100; @@ -43,8 +43,8 @@ diff -Nru openjdk.orig/hotspot/src/share 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 +--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-03-30 17:15:27.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp 2009-09-04 18:12:23.000000000 +0100 @@ -63,7 +63,7 @@ _last_used = current_live; @@ -55,9 +55,9 @@ diff -Nru openjdk.orig/hotspot/src/share // 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 @@ +--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-03-30 17:15:27.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp 2009-09-04 18:12:23.000000000 +0100 +@@ -281,7 +281,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. @@ -67,9 +67,9 @@ diff -Nru openjdk.orig/hotspot/src/share 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 @@ +--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-03-30 17:15:27.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2009-09-04 18:12:23.000000000 +0100 +@@ -221,7 +221,7 @@ size_t init_sz; if (TLABSize > 0) { @@ -79,27 +79,27 @@ diff -Nru openjdk.orig/hotspot/src/share // 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 +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2009-09-04 16:27:02.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2009-09-04 18:13:00.000000000 +0100 +@@ -1064,7 +1064,7 @@ + // NewSize was set on the command line and it is larger than + // preferred_max_new_size. 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)) { +@@ -1083,7 +1083,7 @@ + // there was no obvious reason. Also limit to the case where + // MaxNewSize has not been set. + - 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 @@ + // Code along this path potentially sets NewSize and OldSize + +@@ -1125,8 +1125,8 @@ // Unless explicitly requested otherwise, make young gen // at least min_new, and at most preferred_max_new_size. if (FLAG_IS_DEFAULT(NewSize)) { @@ -110,7 +110,7 @@ diff -Nru openjdk.orig/hotspot/src/share if(PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize); -@@ -1079,7 +1079,7 @@ +@@ -1137,7 +1137,7 @@ // later NewRatio will decide how it grows; see above. if (FLAG_IS_DEFAULT(OldSize)) { if (max_heap > NewSize) { diff -r d719734879cc -r 755ac518cabd patches/icedtea-disable-intree-ec.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-disable-intree-ec.patch Fri Sep 11 15:32:10 2009 +0100 @@ -0,0 +1,23 @@ +diff -Nru openjdk.orig/jdk/src/share/lib/security/java.security openjdk/jdk/src/share/lib/security/java.security +--- openjdk.orig/jdk/src/share/lib/security/java.security 2009-09-10 19:04:25.000000000 +0100 ++++ openjdk/jdk/src/share/lib/security/java.security 2009-09-11 14:53:07.000000000 +0100 +@@ -45,13 +45,12 @@ + # + security.provider.1=sun.security.provider.Sun + security.provider.2=sun.security.rsa.SunRsaSign +-security.provider.3=sun.security.ec.SunEC +-security.provider.4=com.sun.net.ssl.internal.ssl.Provider +-security.provider.5=com.sun.crypto.provider.SunJCE +-security.provider.6=sun.security.jgss.SunProvider +-security.provider.7=com.sun.security.sasl.Provider +-security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI +-security.provider.9=sun.security.smartcardio.SunPCSC ++security.provider.3=com.sun.net.ssl.internal.ssl.Provider ++security.provider.4=com.sun.crypto.provider.SunJCE ++security.provider.5=sun.security.jgss.SunProvider ++security.provider.6=com.sun.security.sasl.Provider ++security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI ++security.provider.8=sun.security.smartcardio.SunPCSC + + # + # Select the source of seed data for SecureRandom. By default an diff -r d719734879cc -r 755ac518cabd patches/icedtea-nss-6763530.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-6763530.patch Fri Sep 11 15:32:10 2009 +0100 @@ -0,0 +1,55 @@ +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Thu Sep 03 18:47:40 2009 +0100 +@@ -40,6 +40,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * EC KeyFactory implemenation. + * +@@ -201,7 +203,14 @@ + + private PublicKey generatePublic(ECPoint point, ECParameterSpec params) throws PKCS11Exception { + byte[] encodedParams = ECParameters.encodeParameters(params); +- byte[] encodedPoint = ECParameters.encodePoint(point, params.getCurve()); ++ DerValue pkECPoint = new DerValue(DerValue.tag_OctetString, ++ ECParameters.encodePoint(point, params.getCurve())); ++ byte[] encodedPoint = null; ++ try { ++ encodedPoint = pkECPoint.toByteArray(); ++ } catch (IOException e) { ++ throw new IllegalArgumentException("Could not DER encode point", e); ++ } + CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] { + new CK_ATTRIBUTE(CKA_CLASS, CKO_PUBLIC_KEY), + new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_EC), +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11Key.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Thu Sep 03 18:47:40 2009 +0100 +@@ -44,6 +44,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * Key implementation classes. + * +@@ -1014,10 +1016,13 @@ + }; + fetchAttributes(attributes); + try { ++ DerValue wECPoint = new DerValue(attributes[0].getByteArray()); ++ if (wECPoint.getTag() != DerValue.tag_OctetString) ++ throw new IOException("Unexpected tag: " + wECPoint.getTag()); + params = P11ECKeyFactory.decodeParameters + (attributes[1].getByteArray()); + w = P11ECKeyFactory.decodePoint +- (attributes[0].getByteArray(), params.getCurve()); ++ (wECPoint.getDataBytes(), params.getCurve()); + } catch (Exception e) { + throw new RuntimeException("Could not parse key values", e); + } diff -r d719734879cc -r 755ac518cabd patches/icedtea-nss-config.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-config.patch Fri Sep 11 15:32:10 2009 +0100 @@ -0,0 +1,10 @@ +--- openjdk.orig/jdk/src/share/lib/security/java.security 2009-08-25 11:43:59.000000000 +0100 ++++ openjdk/jdk/src/share/lib/security/java.security 2009-08-27 14:23:54.000000000 +0100 +@@ -51,6 +51,7 @@ + security.provider.6=com.sun.security.sasl.Provider + security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI + security.provider.8=sun.security.smartcardio.SunPCSC ++security.provider.9=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg + + # + # Select the source of seed data for SecureRandom. By default an From gnu_andrew at member.fsf.org Fri Sep 11 09:05:15 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 11 Sep 2009 17:05:15 +0100 Subject: [PATCH FOR REVIEW]: Don't copy plugin sources Message-ID: <17c6771e0909110905y71635a7bqa981b6d90998add4@mail.gmail.com> The attached patch avoids making a copy of the netscape.* plugin sources in rt, instead referencing them by path in the javac invocations. This avoids the issue where the files are in rt and are then included in a release tarball, which breaks the --disable-plugin build. Ok for commit to 1.6 branch and HEAD? ChangeLog: * Makefile.am: Reference netscape.* plugin sources rather than copying to rt. -- 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 -------------- A non-text attachment was scrubbed... Name: liveconnect-sources.patch Type: application/octet-stream Size: 1935 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090911/330765b4/liveconnect-sources.patch From aph at redhat.com Fri Sep 11 09:07:29 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 11 Sep 2009 17:07:29 +0100 Subject: [PATCH FOR REVIEW]: Don't copy plugin sources In-Reply-To: <17c6771e0909110905y71635a7bqa981b6d90998add4@mail.gmail.com> References: <17c6771e0909110905y71635a7bqa981b6d90998add4@mail.gmail.com> Message-ID: <4AAA75C1.9020005@redhat.com> Andrew John Hughes wrote: > The attached patch avoids making a copy of the netscape.* plugin > sources in rt, instead referencing them by path in the javac > invocations. This avoids the issue where the files are in rt and are > then included in a release tarball, which breaks the --disable-plugin > build. > > Ok for commit to 1.6 branch and HEAD? > > ChangeLog: > > * Makefile.am: Reference netscape.* plugin sources rather than copying to rt. OK, ta. Andrew. From andrew at icedtea.classpath.org Fri Sep 11 09:06:47 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 11 Sep 2009 16:06:47 +0000 Subject: /hg/release/icedtea6-1.6: Reference rather than copy the netscap... Message-ID: changeset ef5ed16daa87 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=ef5ed16daa87 author: Andrew John Hughes date: Fri Sep 11 17:09:38 2009 +0100 Reference rather than copy the netscape.* plugin sources. 2009-09-11 Andrew John Hughes * Makefile.am: Reference netscape.* plugin sources by path rather than copying them to rt. This avoids them getting packaged in tarballs. diffstat: 2 files changed, 12 insertions(+), 6 deletions(-) ChangeLog | 7 +++++++ Makefile.am | 11 +++++------ diffs (72 lines): diff -r 76a4bf70b153 -r ef5ed16daa87 ChangeLog --- a/ChangeLog Thu Sep 10 15:46:50 2009 +0100 +++ b/ChangeLog Fri Sep 11 17:09:38 2009 +0100 @@ -1,3 +1,10 @@ 2009-09-10 Andrew John Hughes + + * Makefile.am: + Reference netscape.* plugin sources by path rather than + copying them to rt. This avoids them getting packaged + in tarballs. + 2009-09-10 Andrew John Hughes * INSTALL: Update documentation to reflect recent changes and add diff -r 76a4bf70b153 -r ef5ed16daa87 Makefile.am --- a/Makefile.am Thu Sep 10 15:46:50 2009 +0100 +++ b/Makefile.am Fri Sep 11 17:09:38 2009 +0100 @@ -14,6 +14,7 @@ PLUGIN_PATCH = patches/icedtea-liveconne PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp +LIVECONNECT_SRCS = $(NPPLUGIN_DIR)/java else if ENABLE_PLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin @@ -21,12 +22,14 @@ PLUGIN_PATCH = patches/icedtea-liveconne PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR = +LIVECONNECT_SRCS = $(abs_top_srcdir)/plugin/icedtea else ICEDTEAPLUGIN_CLEAN = ICEDTEAPLUGIN_TARGET = PLUGIN_PATCH = LIVECONNECT_DIR = NPPLUGIN_DIR = +LIVECONNECT_SRCS = endif endif @@ -823,13 +826,9 @@ stamps/patch.stamp: stamps/patch-fsg.sta if ENABLE_NPPLUGIN cp -a $(abs_top_srcdir)/plugin/icedteanp/java/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ - mkdir -p rt - cp -a $(abs_top_srcdir)/plugin/icedteanp/java/netscape rt/ else if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ - mkdir -p rt - cp -a $(abs_top_srcdir)/plugin/icedtea/netscape rt/ endif endif @@ -1486,7 +1485,7 @@ hotspot-tools-source-files.txt: stamps/r find hotspot-tools -name '*.java' | sort > $@ mkdir -p lib/hotspot-tools -ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt +ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt:$(LIVECONNECT_SRCS) stamps/hotspot-tools-class-files.stamp: hotspot-tools-source-files.txt if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ @@ -1535,7 +1534,7 @@ bootstrap/jdk1.7.0/jre/lib/tools.jar: st # rt-closed.jar class files. rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp - find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt -name '*.java' \ + find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ | sort -u > $@ stamps/rt-class-files.stamp: rt-source-files.txt From mr at sun.com Fri Sep 11 09:22:52 2009 From: mr at sun.com (Mark Reinhold) Date: Fri, 11 Sep 2009 09:22:52 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: joe.darcy@sun.com; Tue, 25 Aug 2009 21:36:27 PDT; <4A94BBCB.9020206@sun.com> Message-ID: <20090911162252.501B95B8@eggemoggin.niobe.net> I've updated the jcheck extension to allow the unique-bugid restriction to be disabled, and I've disabled that check in the jdk6 forest. Joe: For the benefit of those using jcheck in their working repos I suggest you update the .jcheck/conf file in each repo to read: project=jdk6 whitespace=lax comments=lax bugids=dup As for the extension itself, I'm working to get it published externally, hopefully in the next week or two. - Mark From gnu_andrew at member.fsf.org Fri Sep 11 10:06:06 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Fri, 11 Sep 2009 18:06:06 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <20090911162252.501B95B8@eggemoggin.niobe.net> References: <4A94BBCB.9020206@sun.com> <20090911162252.501B95B8@eggemoggin.niobe.net> Message-ID: <17c6771e0909111006p8f4eb43wc006678ed55af3f1@mail.gmail.com> 2009/9/11 Mark Reinhold : > I've updated the jcheck extension to allow the unique-bugid > restriction to be disabled, and I've disabled that check in > the jdk6 forest. > > Joe: For the benefit of those using jcheck in their working > repos I suggest you update the .jcheck/conf file in each repo > to read: > > ? ?project=jdk6 > ? ?whitespace=lax > ? ?comments=lax > ? ?bugids=dup > > As for the extension itself, I'm working to get it published > externally, hopefully in the next week or two. > > - Mark > I don't yet see any incoming changes for jdk6, but I'll check again on Sunday and try to push the HotSpot merge. I'm away next week and don't really want to leave it pending much longer. -- 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 Fri Sep 11 10:07:06 2009 From: aph at redhat.com (Andrew Haley) Date: Fri, 11 Sep 2009 18:07:06 +0100 Subject: IcedTea6 1.6.1 In-Reply-To: <4AA7DF17.20107@redhat.com> References: <4AA7DF17.20107@redhat.com> Message-ID: <4AAA83BA.4090809@redhat.com> The tarball version of IcedTea6 1.6 doesn't build correctly with --disable-plugin, due to a bug in the way that the plugin is built, or rather a conflict between that and make dist. The version in Hg is fine, however. Andrew Hughes has written a fix for the plugin build, and I'm going to respin for 1.6.1. Happily this respin will also pick up a jar speedups patch and some install documentation changes. Andrew. From Kelly.Ohair at Sun.COM Fri Sep 11 10:26:31 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Fri, 11 Sep 2009 10:26:31 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <20090911162252.501B95B8@eggemoggin.niobe.net> References: <20090911162252.501B95B8@eggemoggin.niobe.net> Message-ID: <4AAA8847.4060409@sun.com> I think a bugid will be needed to push in the changesets that change the .jcheck/conf files in jdk6, shall I file one? One bugid should cover all of the jdk6 repositories. And I could push the changes in if need be, just say the word. -kto Mark Reinhold wrote: > I've updated the jcheck extension to allow the unique-bugid > restriction to be disabled, and I've disabled that check in > the jdk6 forest. > > Joe: For the benefit of those using jcheck in their working > repos I suggest you update the .jcheck/conf file in each repo > to read: > > project=jdk6 > whitespace=lax > comments=lax > bugids=dup > > As for the extension itself, I'm working to get it published > externally, hopefully in the next week or two. > > - Mark From Joe.Darcy at Sun.COM Fri Sep 11 10:30:16 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Fri, 11 Sep 2009 10:30:16 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAA8847.4060409@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> Message-ID: <4AAA8928.7030204@sun.com> Kelly, Yes, please file a bug and push the changes; I approve these changes going back. -Joe Kelly O'Hair wrote: > I think a bugid will be needed to push in the changesets that > change the .jcheck/conf files in jdk6, shall I file one? > One bugid should cover all of the jdk6 repositories. > > And I could push the changes in if need be, just say the word. > > -kto > > Mark Reinhold wrote: >> I've updated the jcheck extension to allow the unique-bugid >> restriction to be disabled, and I've disabled that check in >> the jdk6 forest. >> >> Joe: For the benefit of those using jcheck in their working >> repos I suggest you update the .jcheck/conf file in each repo >> to read: >> >> project=jdk6 >> whitespace=lax >> comments=lax >> bugids=dup >> >> As for the extension itself, I'm working to get it published >> externally, hopefully in the next week or two. >> >> - Mark From Kelly.Ohair at Sun.COM Fri Sep 11 11:04:22 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Fri, 11 Sep 2009 11:04:22 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAA8928.7030204@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> Message-ID: <4AAA9126.2030308@sun.com> Pushing now... or should I say ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg nnnnnnnnnooooooooooowwwwwwwwwww It's very slow. :^( Hopefully in the next 30mins... -kto Joseph D. Darcy wrote: > Kelly, > > Yes, please file a bug and push the changes; I approve these changes > going back. > > -Joe > > Kelly O'Hair wrote: >> I think a bugid will be needed to push in the changesets that >> change the .jcheck/conf files in jdk6, shall I file one? >> One bugid should cover all of the jdk6 repositories. >> >> And I could push the changes in if need be, just say the word. >> >> -kto >> >> Mark Reinhold wrote: >>> I've updated the jcheck extension to allow the unique-bugid >>> restriction to be disabled, and I've disabled that check in >>> the jdk6 forest. >>> >>> Joe: For the benefit of those using jcheck in their working >>> repos I suggest you update the .jcheck/conf file in each repo >>> to read: >>> >>> project=jdk6 >>> whitespace=lax >>> comments=lax >>> bugids=dup >>> >>> As for the extension itself, I'm working to get it published >>> externally, hopefully in the next week or two. >>> >>> - Mark > From Joe.Darcy at Sun.COM Fri Sep 11 11:43:47 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Fri, 11 Sep 2009 11:43:47 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAA9126.2030308@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> Message-ID: <4AAA9A63.2010200@sun.com> Thanks Kelly, -Joe Kelly O'Hair wrote: > Pushing now... or should I say > ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg > nnnnnnnnnooooooooooowwwwwwwwwww > > It's very slow. :^( > > Hopefully in the next 30mins... > > -kto > > Joseph D. Darcy wrote: >> Kelly, >> >> Yes, please file a bug and push the changes; I approve these changes >> going back. >> >> -Joe >> >> Kelly O'Hair wrote: >>> I think a bugid will be needed to push in the changesets that >>> change the .jcheck/conf files in jdk6, shall I file one? >>> One bugid should cover all of the jdk6 repositories. >>> >>> And I could push the changes in if need be, just say the word. >>> >>> -kto >>> >>> Mark Reinhold wrote: >>>> I've updated the jcheck extension to allow the unique-bugid >>>> restriction to be disabled, and I've disabled that check in >>>> the jdk6 forest. >>>> >>>> Joe: For the benefit of those using jcheck in their working >>>> repos I suggest you update the .jcheck/conf file in each repo >>>> to read: >>>> >>>> project=jdk6 >>>> whitespace=lax >>>> comments=lax >>>> bugids=dup >>>> >>>> As for the extension itself, I'm working to get it published >>>> externally, hopefully in the next week or two. >>>> >>>> - Mark >> From Kelly.Ohair at Sun.COM Fri Sep 11 12:35:30 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Fri, 11 Sep 2009 12:35:30 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAA9A63.2010200@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> Message-ID: <4AAAA682.8060703@sun.com> Push has finished. -kto Joseph D. Darcy wrote: > Thanks Kelly, > > -Joe > > Kelly O'Hair wrote: >> Pushing now... or should I say >> ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg >> nnnnnnnnnooooooooooowwwwwwwwwww >> >> It's very slow. :^( >> >> Hopefully in the next 30mins... >> >> -kto >> >> Joseph D. Darcy wrote: >>> Kelly, >>> >>> Yes, please file a bug and push the changes; I approve these changes >>> going back. >>> >>> -Joe >>> >>> Kelly O'Hair wrote: >>>> I think a bugid will be needed to push in the changesets that >>>> change the .jcheck/conf files in jdk6, shall I file one? >>>> One bugid should cover all of the jdk6 repositories. >>>> >>>> And I could push the changes in if need be, just say the word. >>>> >>>> -kto >>>> >>>> Mark Reinhold wrote: >>>>> I've updated the jcheck extension to allow the unique-bugid >>>>> restriction to be disabled, and I've disabled that check in >>>>> the jdk6 forest. >>>>> >>>>> Joe: For the benefit of those using jcheck in their working >>>>> repos I suggest you update the .jcheck/conf file in each repo >>>>> to read: >>>>> >>>>> project=jdk6 >>>>> whitespace=lax >>>>> comments=lax >>>>> bugids=dup >>>>> >>>>> As for the extension itself, I'm working to get it published >>>>> externally, hopefully in the next week or two. >>>>> >>>>> - Mark >>> > From bugzilla-daemon at icedtea.classpath.org Fri Sep 11 12:46:41 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 11 Sep 2009 19:46:41 +0000 Subject: [Bug 384] New: InetAddress.isReachable() not defined Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=384 Summary: InetAddress.isReachable() not defined Product: IcedTea Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: ian.springer at gmail.com I get the below compile error from openjdk6 on Fedora when trying to compile a class that calls InetAddress.isReachable(int): # [INFO] Compiling 1 source file to /home/thesteve04/workspace/rhq/modules/plugins/netservices/target/classes # [INFO] ------------------------------------------------------------------------ # [ERROR] BUILD FAILURE # [INFO] ------------------------------------------------------------------------ # [INFO] Compilation failure # # could not parse error message: ---------- # 1. ERROR in /home/thesteve04/workspace/rhq/modules/plugins/netservices/src/main/java/org/rhq/plugins/netservices/PingNetServiceComponent.java (at line 75) # return address.isReachable(5000) ? AvailabilityType.UP : AvailabilityType.DOWN; # ^^^^^^^^^^^ # # no more tokens - could not parse error message: The method isReachable(int) is undefined for the type InetAddress # ---------- # 2. ERROR in /home/thesteve04/workspace/rhq/modules/plugins/netservices/src/main/java/org/rhq/plugins/netservices/PingNetServiceComponent.java (at line 93) # address.isReachable(5000); # ^^^^^^^^^^^ The output from java -version is: java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-27.b16.fc11-i386) OpenJDK Server VM (build 14.0-b15, mixed mode) Is this because isReachable isn't implemented by Classpath? If not, are there plans to implement it? -- 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 Sep 11 13:16:33 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 11 Sep 2009 20:16:33 +0000 Subject: [Bug 384] InetAddress.isReachable() not defined Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=384 ------- Comment #1 from mark at klomp.org 2009-09-11 20:16 ------- (In reply to comment #0) > I get the below compile error from openjdk6 on Fedora when trying to compile a > class that calls InetAddress.isReachable(int): > [...] > The method isReachable(int) is undefined for the type InetAddress > The output from java -version is: > > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-27.b16.fc11-i386) > OpenJDK Server VM (build 14.0-b15, mixed mode) > > Is this because isReachable isn't implemented by Classpath? That is likely the cause. Indeed GNU Classpath doesn't define InetAddress.isReachable(). But that would mean your javac or ant build script is picking up the wrong compiler and/or class library. Could you double check that the javac/compiler you are using in the build above corresponds to the IcedTea 1.5 build? -- 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 Sep 11 13:22:03 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 11 Sep 2009 20:22:03 +0000 Subject: [Bug 384] InetAddress.isReachable() not defined Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=384 ------- Comment #2 from jon.vanalten at redhat.com 2009-09-11 20:22 ------- Created an attachment (id=262) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=262&action=view) Test case for issue. I put together a quick test case to see if that method is there. I am using same version in F11, and don't have problems compiling and running. Are you sure that you are using IcedTea's JDK when you have this problem? -- 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 Sat Sep 12 04:42:12 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sat, 12 Sep 2009 12:42:12 +0100 Subject: IcedTea6 1.6.1 In-Reply-To: <4AAA83BA.4090809@redhat.com> References: <4AA7DF17.20107@redhat.com> <4AAA83BA.4090809@redhat.com> Message-ID: <17c6771e0909120442g55311173h21128f1a5e96363d@mail.gmail.com> 2009/9/11 Andrew Haley : > The tarball version of IcedTea6 1.6 doesn't build correctly with --disable-plugin, > due to a bug in the way that the plugin is built, or rather a conflict between > that and make dist. ?The version in Hg is fine, however. > > Andrew Hughes has written a fix for the plugin build, and I'm going to respin > for 1.6.1. ?Happily this respin will also pick up a jar speedups patch and > some install documentation changes. > > Andrew. > > Thanks for fixing 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 andrew at icedtea.classpath.org Sat Sep 12 04:42:05 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Sat, 12 Sep 2009 11:42:05 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 7c3d22953ef6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=7c3d22953ef6 author: Andrew John Hughes date: Fri Sep 11 17:09:38 2009 +0100 Reference rather than copy the netscape.* plugin sources. 2009-09-11 Andrew John Hughes * Makefile.am: Reference netscape.* plugin sources by path rather than copying them to rt. This avoids them getting packaged in tarballs. changeset ff08018c9fb6 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ff08018c9fb6 author: Andrew John Hughes date: Sat Sep 12 12:45:13 2009 +0100 Merge diffstat: 11 files changed, 7068 insertions(+), 4227 deletions(-) ChangeLog | 34 Makefile.am | 41 mkbc.c | 44 ports/hotspot/build/linux/makefiles/zero.make | 18 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def | 4486 +++++++-- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 30 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 70 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp | 221 ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S | 6334 +++++++------- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 13 ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 4 diffs (truncated from 15939 to 500 lines): diff -r dbf2dacce14a -r ff08018c9fb6 ChangeLog --- a/ChangeLog Wed Sep 09 16:44:12 2009 +0100 +++ b/ChangeLog Sat Sep 12 12:45:13 2009 +0100 @@ -1,3 +1,37 @@ 2009-09-09 Andrew Haley + + * Makefile.am: + Reference netscape.* plugin sources by path rather than + copying them to rt. This avoids them getting packaged + in tarballs. + +2009-09-11 Edward Nevill + + * Makefile.am: Changed mkbc rule to allow preprocessing by gcc + * mkbc.c: Changed to allow preprocessing by gcc + * zero.make: Added support for automatic offset generation + * asm_helper.c: Support for offset generation and calling of + C++ virtual functions from Asm + * bytecodes_zero.cpp: Added new fast bytecodes + * bytecodes_zero.hpp: Ditto + * bytes_zero.hpp: Optimised get_native_X and get_Java_X + * cppInterpreter_zero.cpp: Fixed some type definitions & casts + Moved configuration checking from here to asm_generate_entry + * os_linux_zero.cpp: Removed #if defined(PRODUCT) + * cppInterpreter_arm.S: + * bytecodes_arm.def: + Support for HW FP. Lots of debugs and asserts. Build for gcc 4.1 + Automatic generation of asm offsets. Removed sync. native entry. + Support for UseCompiler. Fastpath invokeinterface. Optimised new, + instanceof & checkcast. Additional fast bytecodes and bc sequences. + Fast div and rem by constant. Other minor optimisations. + +2009-09-09 Lillian Angel + + * Makefile.am: Added NB_PLATFORM and NB_APISUPPORT to determine + current versions to use. This will prevent future failures whenever + NetBeans is updated. + 2009-09-09 Andrew Haley * NEWS: Update for 1.6. diff -r dbf2dacce14a -r ff08018c9fb6 Makefile.am --- a/Makefile.am Wed Sep 09 16:44:12 2009 +0100 +++ b/Makefile.am Sat Sep 12 12:45:13 2009 +0100 @@ -14,6 +14,7 @@ PLUGIN_PATCH = patches/icedtea-liveconne PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR=$(abs_top_srcdir)/plugin/icedteanp +LIVECONNECT_SRCS = $(NPPLUGIN_DIR)/java else if ENABLE_PLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin @@ -21,13 +22,23 @@ PLUGIN_PATCH = patches/icedtea-liveconne PLUGIN_PATCH = patches/icedtea-liveconnect.patch LIVECONNECT_DIR = -C lib/rt netscape NPPLUGIN_DIR = +LIVECONNECT_SRCS = $(abs_top_srcdir)/plugin/icedtea else ICEDTEAPLUGIN_CLEAN = ICEDTEAPLUGIN_TARGET = PLUGIN_PATCH = LIVECONNECT_DIR = NPPLUGIN_DIR = -endif +LIVECONNECT_SRCS = +endif +endif + +if WITH_VISUALVM +NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) +NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) +else +NB_PLATFORM= +NB_APISUPPORT= endif if ENABLE_PULSE_JAVA @@ -469,8 +480,18 @@ ZERO_ASM_BC_ASM_COND = $(shell test -f $ $(abs_top_srcdir)/mkbc: $(abs_top_srcdir)/mkbc.c $(CC) $< -o $@ +# ECN: The following rule has been changed to allow preprocessing of the bytecode definition +# file prior to running 'mkbc'. This allows you to use -DXXX on the gcc command. There are two +# options currently recognized. +# +# -DDISABLE_NOTICE_SAFEPONTS - Always run in 'safe' mode. +# -DDISABLE_FAST_BYTECODES - Disable fast bytecode replacement and bytecode sequences +# +# These options are provided mainly to assist debugging by returning the bytecode interpreter +# to a 'vanilla' interpreter. +# ${ZERO_ASM_BC_ASM}: ${ZERO_ASM_BC_DEF} $(abs_top_srcdir)/mkbc - $(abs_top_srcdir)/mkbc $< $@ + gcc -E - < $< | $(abs_top_srcdir)/mkbc - $@ # Link ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp @@ -829,13 +850,9 @@ stamps/patch.stamp: stamps/patch-fsg.sta if ENABLE_NPPLUGIN cp -a $(abs_top_srcdir)/plugin/icedteanp/java/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ - mkdir -p rt - cp -a $(abs_top_srcdir)/plugin/icedteanp/java/netscape rt/ else if ENABLE_PLUGIN cp -a $(abs_top_srcdir)/plugin/icedtea/sun/applet/*java openjdk/jdk/src/share/classes/sun/applet/ - mkdir -p rt - cp -a $(abs_top_srcdir)/plugin/icedtea/netscape rt/ endif endif @@ -1190,7 +1207,7 @@ if WITH_VISUALVM $(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 \ + cp -r netbeans/nbbuild/netbeans_visualvm/$(NB_PLATFORM) \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm @@ -1275,7 +1292,7 @@ if WITH_VISUALVM $(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 \ + cp -r netbeans/nbbuild/netbeans_visualvm/$(NB_PLATFORM) \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm ; \ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm @@ -1492,7 +1509,7 @@ hotspot-tools-source-files.txt: stamps/r find hotspot-tools -name '*.java' | sort > $@ mkdir -p lib/hotspot-tools -ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt +ABS_SOURCE_DIRS = $(abs_top_builddir)/generated:$(abs_top_builddir)/rt:$(abs_top_srcdir)/rt:$(LIVECONNECT_SRCS) stamps/hotspot-tools-class-files.stamp: hotspot-tools-source-files.txt if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ @@ -1541,7 +1558,7 @@ bootstrap/jdk1.7.0/jre/lib/tools.jar: st # rt-closed.jar class files. rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp - find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt -name '*.java' \ + find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ | sort -u > $@ stamps/rt-class-files.stamp: rt-source-files.txt @@ -2033,8 +2050,8 @@ if WITH_VISUALVM cd netbeans ; \ rm nbbuild/external/binaries-list ; \ 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)/$(NB_PLATFORM)/ ./nbbuild/netbeans_visualvm/$(NB_PLATFORM) ; \ + ln -s $(SYSTEM_NETBEANS_DIR)/$(NB_APISUPPORT)/ ./nbbuild/netbeans_visualvm/$(NB_APISUPPORT) ; \ ln -s $(SYSTEM_NETBEANS_DIR)/harness/ ./nbbuild/netbeans_visualvm/harness ; \ if ! (uname -a | grep x86_64) ; then \ mkdir -p lib.profiler/release/lib/deployed/jdk15/linux ; \ diff -r dbf2dacce14a -r ff08018c9fb6 mkbc.c --- a/mkbc.c Wed Sep 09 16:44:12 2009 +0100 +++ b/mkbc.c Sat Sep 12 12:45:13 2009 +0100 @@ -1,3 +1,17 @@ +/* + * Copyright 2009 Edward Nevill + * + * 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). + */ + #include #include #include @@ -10,7 +24,7 @@ static char *prefix = DEFAULT_PREFIX; #define ISALPHA(c) (isalpha(c) || (c) == '_') #define ISALNUM(c) (isalnum(c) || (c) == '_') -FILE *source_f, *bci_f, *bci_f; +FILE *source_f, *bci_f; typedef struct Bytecode { char *name; @@ -282,7 +296,7 @@ void mkbc(void) c = (readchar)(); c = skipwhitespace(c); while (c != EOF) { - if (c == '#') { + if (c == '@' || c == '#') { c = skipeol(c); } else if (ISALPHA(c)) { c = readsymbol(c, buf, BUFLEN); @@ -546,7 +560,7 @@ int main(int argc, char **argv) source = bci = 0; while (s = *++argv) { - if (*s == '-') { + if (s[0] == '-' && s[1] != 0) { if (s[1] == 'P') { prefix = s+2; } else { @@ -566,16 +580,26 @@ int main(int argc, char **argv) fprintf(stderr, "Too few arguments\n"); usage(); } - source_f = fopen(source, "r"); - if (!source_f) fatal("Error opening source file"); - bci_f = fopen(bci, "w"); - if (!bci_f) fatal("Error opening bci file for write"); + if (strcmp(source, "-") == 0) { + source_f = stdin; + } else { + source_f = fopen(source, "r"); + if (!source_f) fatal("Error opening source file"); + } + if (strcmp(bci, "-") == 0) { + bci_f = stdout; + } else { + bci_f = fopen(bci, "w"); + if (!bci_f) fatal("Error opening bci file for write"); + } for (i = 0; i < 256; i++) { bytecodes[i].name = "undefined"; bytecodes[i].len = -1; } mkbc(); dumpbc(); - if (fclose(source_f)) fatal("Error reading source"); - if (fclose(bci_f)) fatal("Error writing bci"); -} + if (ferror(source_f)) fatal("Error reading source"); + if (ferror(bci_f)) fatal("Error writing bci"); + if (source_f != stdin) fclose(source_f); + if (bci_f != stdout) fclose(bci_f); +} diff -r dbf2dacce14a -r ff08018c9fb6 ports/hotspot/build/linux/makefiles/zero.make --- a/ports/hotspot/build/linux/makefiles/zero.make Wed Sep 09 16:44:12 2009 +0100 +++ b/ports/hotspot/build/linux/makefiles/zero.make Sat Sep 12 12:45:13 2009 +0100 @@ -24,12 +24,28 @@ # ifeq ($(ZERO_LIBARCH),arm) + +Obj_Files += asm_helper.o Obj_Files += cppInterpreter_arm.o -CFLAGS += -DHOTSPOT_ASM -DHW_NULL_PTR_CHECK + +CFLAGS += -DHOTSPOT_ASM + %.o: %.S @echo Assembling $< $(QUIETLY) $(REMOVE_TARGET) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE) + +cppInterpreter_arm.o: offsets_arm.s + +offsets_arm.s: mkoffsets + @echo Generating assembler offsets + ./mkoffsets > $@ + +mkoffsets: asm_helper.cpp + @echo Compiling offset generator + $(QUIETLY) $(REMOVE_TARGET) + $(CC_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE) + endif # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized diff -r dbf2dacce14a -r ff08018c9fb6 ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Wed Sep 09 16:44:12 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_arm.def Sat Sep 12 12:45:13 2009 +0100 @@ -1,3 +1,13 @@ nop = 0x00, 1 +#ifndef DISABLE_HW_FP +#define HW_FP +#endif +#ifndef DISABLE_NOTICE_SAFEPOINTS +#define NOTICE_SAFEPOINTS +#endif +#ifndef DISABLE_FAST_BYTECODES +#define FAST_BYTECODES +#endif + nop = 0x00, 1 aconst_null = 0x01, 1 iconst_m1 = 0x02, 1 @@ -201,11 +211,13 @@ jsr_w = 0xc9, 0 jsr_w = 0xc9, 0 breakpoint = 0xca, 0 -#agetfield = 0xcb, 3 +#ifdef FAST_BYTECODES + + at agetfield = 0xcb, 3 bgetfield = 0xcc, 3 cgetfield = 0xcd, 3 -#dgetfield = 0xce, 3 -#fgetfield = 0xcf, 3 + at dgetfield = 0xce, 3 + at fgetfield = 0xcf, 3 igetfield = 0xd0, 3 lgetfield = 0xd1, 3 sgetfield = 0xd2, 3 @@ -213,45 +225,56 @@ aputfield = 0xd3, 3 aputfield = 0xd3, 3 bputfield = 0xd4, 3 cputfield = 0xd5, 3 -#dputfield = 0xd6, 3 -#fputfield = 0xd7, 3 + at dputfield = 0xd6, 3 + at fputfield = 0xd7, 3 iputfield = 0xd8, 3 lputfield = 0xd9, 3 -#sputfield = 0xda, 3 + at sputfield = 0xda, 3 iaccess_0 = 0xdb, 4 iaccess_1 = 0xdc, 4 iaccess_2 = 0xdd, 4 iaccess_3 = 0xde, 4 -#fast_iload = 0xdf, 2 -#fast_iload2 = 0xe0, 4 -#fast_icaload = 0xe1, 3 - -invokevfinal = 0xe2, 3 -#linearswitch = 0xe3, 0 -#binaryswitch = 0xe4, 0 - -iload_0_iconst_N = 231, 2 -iload_1_iconst_N = 232, 2 -iload_2_iconst_N = 233, 2 -iload_3_iconst_N = 234, 2 -iload_iconst_N = 235, 3 -invokeresolved = 236, 3 -iadd_istore_N = 237, 2 -isub_istore_N = 238, 2 -iand_istore_N = 239, 2 -ior_istore_N = 240, 2 -ixor_istore_N = 241, 2 -iadd_u4store = 242, 3 -isub_u4store = 243, 3 -iand_u4store = 244, 3 -ior_u4store = 245, 3 -ixor_u4store = 246, 3 -invokespecialresolved = 247, 3 -invokestaticresolved = 248, 3 - -return_register_finalizer = 229, 0 +invokeresolved = 0xdf, 3 +invokespecialresolved = 0xe0, 3 +invokestaticresolved = 0xe1, 3 +invokevfinal = 0xe2, 3 + +iload_iload = 0xe3, 4 +iload_iload_N = 0xe4, 3 + + at return_register_finalizer = 0xe5, 1 + +dmac = 0xe6, 2 + +iload_0_iconst_N = 0xe7, 2 +iload_1_iconst_N = 0xe8, 2 +iload_2_iconst_N = 0xe9, 2 +iload_3_iconst_N = 0xea, 2 +iload_iconst_N = 0xeb, 3 +iadd_istore_N = 0xec, 2 +isub_istore_N = 0xed, 2 +iand_istore_N = 0xee, 2 +ior_istore_N = 0xef, 2 +ixor_istore_N = 0xf0, 2 +iadd_u4store = 0xf1, 3 +isub_u4store = 0xf2, 3 +iand_u4store = 0xf3, 3 +ior_u4store = 0xf4, 3 +ixor_u4store = 0xf5, 3 +iload_0_iload = 0xf6, 3 +iload_1_iload = 0xf7, 3 +iload_2_iload = 0xf8, 3 +iload_3_iload = 0xf9, 3 +iload_0_iload_N = 0xfa, 2 +iload_1_iload_N = 0xfb, 2 +iload_2_iload_N = 0xfc, 2 +iload_3_iload_N = 0xfd, 2 + +#endif // FAST_BYTECODES + +return_register_finalizer = 0xe5, 1 (nop) { DISPATCH \seq_len @@ -292,7 +315,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -321,7 +344,7 @@ return_register_finalizer = 229, 0 mov tmp2, #0 DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -337,8 +360,8 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] -# r1 = [jpc, #2] +@ r2 = [jpc, #1] +@ r1 = [jpc, #2] (sipush) sipush { DISPATCH_START \seq_len mov tmp1, r1 @@ -352,7 +375,7 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (iload,fload,aload) u4load { DISPATCH_START \seq_len rsb tmp1, r2, #0 @@ -365,7 +388,7 @@ return_register_finalizer = 229, 0 DISPATCH_FINISH } -# r2 = [jpc, #1] +@ r2 = [jpc, #1] (lload,dload) u8load { DISPATCH_START \seq_len sub r3, locals, r2, lsl #2 @@ -374,7 +397,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -446,7 +469,7 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } @@ -458,17 +481,15 @@ return_register_finalizer = 229, 0 DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - PUSH2 tmp2, tmp1 + PUSH tmp2, tmp1 DISPATCH_FINISH } (iaload,faload,aaload) u4aload { - POP2 r2, r3 @ r2 = index, r3 = arrayref - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 @ r2 = index, r3 = arrayref + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry5: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT @@ -484,12 +505,10 @@ return_register_finalizer = 229, 0 } (laload,daload) u8aload { - POP2 r2, r3 - DISPATCH_START \seq_len -#ifndef HW_NULL_PTR_CHECK - cmp r3, #0 - beq null_ptr_exception_jpc_1 -#endif + POP r2, r3 + DISPATCH_START \seq_len + SW_NPC cmp r3, #0 + SW_NPC beq null_ptr_exception_jpc_1 .abortentry6: ldr lr, [r3, #8] @ lr = length DISPATCH_NEXT From gnu_andrew at member.fsf.org Sat Sep 12 04:56:54 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sat, 12 Sep 2009 12:56:54 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAAA682.8060703@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> Message-ID: <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> 2009/9/11 Kelly O'Hair : > Push has finished. > > -kto > > Joseph D. Darcy wrote: >> >> Thanks Kelly, >> >> -Joe >> >> Kelly O'Hair wrote: >>> >>> Pushing now... or should I say >>> ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg >>> ?nnnnnnnnnooooooooooowwwwwwwwwww >>> >>> It's very slow. :^( >>> >>> Hopefully in the next 30mins... >>> >>> -kto >>> >>> Joseph D. Darcy wrote: >>>> >>>> Kelly, >>>> >>>> Yes, please file a bug and push the changes; I approve these changes >>>> going back. >>>> >>>> -Joe >>>> >>>> Kelly O'Hair wrote: >>>>> >>>>> I think a bugid will be needed to push in the changesets that >>>>> change the .jcheck/conf files in jdk6, shall I file one? >>>>> One bugid should cover all of the jdk6 repositories. >>>>> >>>>> And I could push the changes in if need be, just say the word. >>>>> >>>>> -kto >>>>> >>>>> Mark Reinhold wrote: >>>>>> >>>>>> I've updated the jcheck extension to allow the unique-bugid >>>>>> restriction to be disabled, and I've disabled that check in >>>>>> the jdk6 forest. >>>>>> >>>>>> Joe: For the benefit of those using jcheck in their working >>>>>> repos I suggest you update the .jcheck/conf file in each repo >>>>>> to read: >>>>>> >>>>>> ? ?project=jdk6 >>>>>> ? ?whitespace=lax >>>>>> ? ?comments=lax >>>>>> ? ?bugids=dup >>>>>> >>>>>> As for the extension itself, I'm working to get it published >>>>>> externally, hopefully in the next week or two. >>>>>> >>>>>> - Mark >>>> >> > http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html Subject: hg: jdk6/jdk6/hotspot: 557 new changesets Woohoo! -- 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 Sat Sep 12 04:57:30 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sat, 12 Sep 2009 12:57:30 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> Message-ID: <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> 2009/9/12 Andrew John Hughes : > 2009/9/11 Kelly O'Hair : >> Push has finished. >> >> -kto >> >> Joseph D. Darcy wrote: >>> >>> Thanks Kelly, >>> >>> -Joe >>> >>> Kelly O'Hair wrote: >>>> >>>> Pushing now... or should I say >>>> ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg >>>> ?nnnnnnnnnooooooooooowwwwwwwwwww >>>> >>>> It's very slow. :^( >>>> >>>> Hopefully in the next 30mins... >>>> >>>> -kto >>>> >>>> Joseph D. Darcy wrote: >>>>> >>>>> Kelly, >>>>> >>>>> Yes, please file a bug and push the changes; I approve these changes >>>>> going back. >>>>> >>>>> -Joe >>>>> >>>>> Kelly O'Hair wrote: >>>>>> >>>>>> I think a bugid will be needed to push in the changesets that >>>>>> change the .jcheck/conf files in jdk6, shall I file one? >>>>>> One bugid should cover all of the jdk6 repositories. >>>>>> >>>>>> And I could push the changes in if need be, just say the word. >>>>>> >>>>>> -kto >>>>>> >>>>>> Mark Reinhold wrote: >>>>>>> >>>>>>> I've updated the jcheck extension to allow the unique-bugid >>>>>>> restriction to be disabled, and I've disabled that check in >>>>>>> the jdk6 forest. >>>>>>> >>>>>>> Joe: For the benefit of those using jcheck in their working >>>>>>> repos I suggest you update the .jcheck/conf file in each repo >>>>>>> to read: >>>>>>> >>>>>>> ? ?project=jdk6 >>>>>>> ? ?whitespace=lax >>>>>>> ? ?comments=lax >>>>>>> ? ?bugids=dup >>>>>>> >>>>>>> As for the extension itself, I'm working to get it published >>>>>>> externally, hopefully in the next week or two. >>>>>>> >>>>>>> - Mark >>>>> >>> >> > > http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html > > Subject: hg: jdk6/jdk6/hotspot: 557 new changesets > > Woohoo! So do we move to hs16 after the next build (17) is promoted? ;) -- 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 mvfranz at gmail.com Sat Sep 12 12:44:18 2009 From: mvfranz at gmail.com (Michael Franz) Date: Sat, 12 Sep 2009 15:44:18 -0400 Subject: Configure patch to allow g prefix for md5sum cp and sed Message-ID: Hi, Here are some issues that I have with trying to get IcedTea 1.11 working on OS X - md5sum not installed by default (it has md5 which has different commands) - cp does not supports -a or -l - sed that has trouble with some of the expressions To work around this I can install coreutils from Macports. The default port used the 'g' prefix for these commands. I would like to add/make the following changes to configure.ac . Do I need to file a bug for this? I have attached the changes for Makefile.am as it is a much larger file. I did not change all the cp and sed to the macro as not all of them cause problems. For consistency, I guess they should all be changed. -- configure.ac.orig 2009-09-12 13:15:12.000000000 -0400 +++ configure.ac 2009-09-12 13:31:44.000000000 -0400 @@ -25,7 +25,11 @@ FIND_TOOL([PATCH], [patch]) FIND_TOOL([TAR], [tar]) FIND_TOOL([CHMOD], [chmod]) -FIND_TOOL([MD5SUM], [md5sum]) +AC_CHECK_TOOLS([MD5SUM], [md5sum gmd5sum]) +if test "x$MD5SUM" = x; then + AC_MSG_ERROR([Can't find md5sum or gmd5sum]) +fi +AC_SUBST([MD5SUM]) FIND_TOOL([WGET], [wget]) FIND_TOOL([ZIP], [zip]) FIND_TOOL([UNZIP], [unzip]) @@ -46,6 +50,16 @@ AC_CHECK_WITH_HOTSPOT_BUILD AC_PATH_TOOL([LINUX32],[linux32]) AC_CHECK_GCC_VERSION +AC_CHECK_TOOLS([CP], [gcp cp]) +if test "x$CP" = x; then + AC_MSG_ERROR([Can't find gcp -a or cp -a]) +fi +AC_SUBST([CP]) +AC_CHECK_TOOLS([SED], [gsed sed]) +if test "x$SED" = x; then + AC_MSG_ERROR([Can't find gsed or sed]) +fi +AC_SUBST([SED]) AC_MSG_CHECKING([for a NetBeans installation]) AC_ARG_WITH([netbeans-home], Comments? Michael -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090912/2465312d/attachment.html -------------- next part -------------- A non-text attachment was scrubbed... Name: bsd-Makefile.am.patch Type: application/octet-stream Size: 5819 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090912/2465312d/bsd-Makefile.am.patch From martinrb at google.com Sat Sep 12 16:44:20 2009 From: martinrb at google.com (Martin Buchholz) Date: Sat, 12 Sep 2009 16:44:20 -0700 Subject: [OpenJDK 2D-Dev] Request to backport fix for 6708392 to openjdk6 In-Reply-To: <17c6771e0909110650x3db5f013sa3c33aca716e7d17@mail.gmail.com> References: <1ccfd1c10909101801j7e98f82fv1dfc6899a057d7b9@mail.gmail.com> <1252652464.17906.61.camel@springer.wildebeest.org> <17c6771e0909110650x3db5f013sa3c33aca716e7d17@mail.gmail.com> Message-ID: <1ccfd1c10909121644l2fc4f3f0m673457e162c307c3@mail.gmail.com> [Trying to correct the email addresses of original patch authors/reviewers] The consensus seems to be that the fix for 6708392: Provide internal API to create OverrideRedirect windows, XToolkit belongs in openjdk6 and that it supersedes a similar patch that is now in icedtea. I am committing it to openjdk6 now. Presumably icedtea maintainers will do likewise. Martin On Fri, Sep 11, 2009 at 06:50, Andrew John Hughes wrote: > 2009/9/11 Mark Wielaard : >> On Thu, 2009-09-10 at 18:01 -0700, Martin Buchholz wrote: >>> Hi SunToolkit.setOverrideRedirect team, >> >> Hi Martin, >> >>> Google engineers have found that >>> 6708392: Provide internal API to create OverrideRedirect windows, XToolkit >>> is a showstopper bug, >>> (for folks using NX on Windows or Mac) >>> and that the fix in openjdk7 fixes it, >>> when trivially backported to openjdk6. >>> >>> Many thanks to Brian Duff for the hard work of >>> testing and debugging. >>> >>> I'd like to commit this fix to openjdk6. >>> >>> Webrev: >>> http://cr.openjdk.java.net/~martin/webrevs/openjdk6/SunToolkit.setOverrideRedirect/ >> >> This is a rewrite of a similar fix I made: >> http://mail.openjdk.java.net/pipermail/awt-dev/2008-May/000248.html >> It fixes some issues with MetaCity and solves some TCK failures. >> >> It has been in IcedTea for a long time. >> http://icedtea.classpath.org/hg/icedtea6/file/tip/patches/icedtea-override-redirect-metacity.patch >> >> The difference with the IcedTea patch rewrite is discussed here: >> http://mail.openjdk.java.net/pipermail/awt-dev/2008-August/000309.html >> >> Cheers, >> >> Mark >> >> > > We're also still carrying the patch in IcedTea7 despite it presumably > now being made redundant by this other patch. ?I guess I missed the > discussion Mark referenced, presumably because I wasn't subscribed to > awt-dev back then. > > Martin, thanks for bringing this up and please commit the patch to jdk6. > -- > 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 Sat Sep 12 16:46:16 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Sun, 13 Sep 2009 00:46:16 +0100 Subject: [OpenJDK 2D-Dev] Request to backport fix for 6708392 to openjdk6 In-Reply-To: <1ccfd1c10909121644l2fc4f3f0m673457e162c307c3@mail.gmail.com> References: <1ccfd1c10909101801j7e98f82fv1dfc6899a057d7b9@mail.gmail.com> <1252652464.17906.61.camel@springer.wildebeest.org> <17c6771e0909110650x3db5f013sa3c33aca716e7d17@mail.gmail.com> <1ccfd1c10909121644l2fc4f3f0m673457e162c307c3@mail.gmail.com> Message-ID: <17c6771e0909121646i18411d55l38d19e58b00f004a@mail.gmail.com> 2009/9/13 Martin Buchholz : > [Trying to correct the email addresses of original patch authors/reviewers] > > The consensus seems to be that the fix for > 6708392: Provide internal API to create OverrideRedirect windows, XToolkit > belongs in openjdk6 and that it supersedes a similar patch that is now > in icedtea. > > I am committing it to openjdk6 now. > > Presumably icedtea maintainers will do likewise. > IcedTea doesn't include a copy of OpenJDK. We just no longer apply our patch when this changeset becomes available in a build drop (which should be soon if you do it now - b17). > Martin > > On Fri, Sep 11, 2009 at 06:50, Andrew John > Hughes wrote: >> 2009/9/11 Mark Wielaard : >>> On Thu, 2009-09-10 at 18:01 -0700, Martin Buchholz wrote: >>>> Hi SunToolkit.setOverrideRedirect team, >>> >>> Hi Martin, >>> >>>> Google engineers have found that >>>> 6708392: Provide internal API to create OverrideRedirect windows, XToolkit >>>> is a showstopper bug, >>>> (for folks using NX on Windows or Mac) >>>> and that the fix in openjdk7 fixes it, >>>> when trivially backported to openjdk6. >>>> >>>> Many thanks to Brian Duff for the hard work of >>>> testing and debugging. >>>> >>>> I'd like to commit this fix to openjdk6. >>>> >>>> Webrev: >>>> http://cr.openjdk.java.net/~martin/webrevs/openjdk6/SunToolkit.setOverrideRedirect/ >>> >>> This is a rewrite of a similar fix I made: >>> http://mail.openjdk.java.net/pipermail/awt-dev/2008-May/000248.html >>> It fixes some issues with MetaCity and solves some TCK failures. >>> >>> It has been in IcedTea for a long time. >>> http://icedtea.classpath.org/hg/icedtea6/file/tip/patches/icedtea-override-redirect-metacity.patch >>> >>> The difference with the IcedTea patch rewrite is discussed here: >>> http://mail.openjdk.java.net/pipermail/awt-dev/2008-August/000309.html >>> >>> Cheers, >>> >>> Mark >>> >>> >> >> We're also still carrying the patch in IcedTea7 despite it presumably >> now being made redundant by this other patch. ?I guess I missed the >> discussion Mark referenced, presumably because I wasn't subscribed to >> awt-dev back then. >> >> Martin, thanks for bringing this up and please commit the patch to jdk6. >> -- >> 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 >> > -- 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 Sun Sep 13 23:38:40 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Sun, 13 Sep 2009 23:38:40 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> Message-ID: <4AADE4F0.6040802@sun.com> Andrew John Hughes wrote: > 2009/9/11 Kelly O'Hair : > >> Push has finished. >> >> -kto >> >> Joseph D. Darcy wrote: >> >>> Thanks Kelly, >>> >>> -Joe >>> >>> Kelly O'Hair wrote: >>> >>>> Pushing now... or should I say >>>> ppppppuuuuuuusssssssshhhhhhhiiiiiinnnnnggggggg >>>> nnnnnnnnnooooooooooowwwwwwwwwww >>>> >>>> It's very slow. :^( >>>> >>>> Hopefully in the next 30mins... >>>> >>>> -kto >>>> >>>> Joseph D. Darcy wrote: >>>> >>>>> Kelly, >>>>> >>>>> Yes, please file a bug and push the changes; I approve these changes >>>>> going back. >>>>> >>>>> -Joe >>>>> >>>>> Kelly O'Hair wrote: >>>>> >>>>>> I think a bugid will be needed to push in the changesets that >>>>>> change the .jcheck/conf files in jdk6, shall I file one? >>>>>> One bugid should cover all of the jdk6 repositories. >>>>>> >>>>>> And I could push the changes in if need be, just say the word. >>>>>> >>>>>> -kto >>>>>> >>>>>> Mark Reinhold wrote: >>>>>> >>>>>>> I've updated the jcheck extension to allow the unique-bugid >>>>>>> restriction to be disabled, and I've disabled that check in >>>>>>> the jdk6 forest. >>>>>>> >>>>>>> Joe: For the benefit of those using jcheck in their working >>>>>>> repos I suggest you update the .jcheck/conf file in each repo >>>>>>> to read: >>>>>>> >>>>>>> project=jdk6 >>>>>>> whitespace=lax >>>>>>> comments=lax >>>>>>> bugids=dup >>>>>>> >>>>>>> As for the extension itself, I'm working to get it published >>>>>>> externally, hopefully in the next week or two. >>>>>>> >>>>>>> - Mark >>>>>>> > > http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html > > Subject: hg: jdk6/jdk6/hotspot: 557 new changesets > > Woohoo! > Yay! Thanks, -Joe From mvyskocil at suse.cz Mon Sep 14 05:51:37 2009 From: mvyskocil at suse.cz (Michal Vyskocil) Date: Mon, 14 Sep 2009 14:51:37 +0200 Subject: [PATCH] no-return-in-non-void Message-ID: <200909141451.43292.mvyskocil@suse.cz> Hi, our QA check found a minor error in IcedTeaPluginRequestProcessor.cc, the following patch fixes it. Index: icedtea6-1.6/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc =================================================================== --- icedtea6-1.6.orig/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc 2009-09-08 16:19:48.000000000 +0200 +++ icedtea6-1.6/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc 2009-09-14 10:07:55.835802751 +0200 @@ -683,6 +683,7 @@ result->result_ready = true; + return result; } void* Regards Michal Vyskocil -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part. Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090914/ac1c7ee3/attachment.bin From aph at icedtea.classpath.org Mon Sep 14 10:23:48 2009 From: aph at icedtea.classpath.org (aph at icedtea.classpath.org) Date: Mon, 14 Sep 2009 17:23:48 +0000 Subject: /hg/release/icedtea6-1.6: 4 new changesets Message-ID: changeset d36f851f90be in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=d36f851f90be author: aph date: Mon Sep 14 11:40:34 2009 +0100 Bump version to 1.6.1. 2009-09-14 Andrew Haley * configure.ac (AC_INIT): Bump version to 1.6.1. changeset d463834b2568 in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=d463834b2568 author: aph date: Mon Sep 14 11:42:39 2009 +0100 Added tag icedtea-1.6.1-release for changeset d36f851f90be changeset b343e04bf38f in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=b343e04bf38f author: aph date: Mon Sep 14 17:40:19 2009 +0100 NEWS: Update. 2009-09-14 Andrew Haley * NEWS: Update. changeset 7c131a5e1ccf in /hg/release/icedtea6-1.6 details: http://icedtea.classpath.org/hg/release/icedtea6-1.6?cmd=changeset;node=7c131a5e1ccf author: aph date: Mon Sep 14 17:40:46 2009 +0100 Added tag icedtea-1.6.1-release for changeset b343e04bf38f diffstat: 4 files changed, 14 insertions(+), 1 deletion(-) .hgtags | 3 +++ ChangeLog | 5 +++++ NEWS | 5 +++++ configure.ac | 2 +- diffs (43 lines): diff -r ef5ed16daa87 -r 7c131a5e1ccf .hgtags --- a/.hgtags Fri Sep 11 17:09:38 2009 +0100 +++ b/.hgtags Mon Sep 14 17:40:46 2009 +0100 @@ -25,3 +25,6 @@ 47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd 47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd icedtea-1.6-release 47fba49f74a8d772fc86f4ed67e648bc6d1a5ebd icedtea-1.6-release ddb5f1f057a62e1278a1eeee2f797f64cf6b0ee9 icedtea-1.6-release +d36f851f90be2ca85975c6824242874215f57d41 icedtea-1.6.1-release +d36f851f90be2ca85975c6824242874215f57d41 icedtea-1.6.1-release +b343e04bf38fa44f52d5327d80af60b7c0705cad icedtea-1.6.1-release diff -r ef5ed16daa87 -r 7c131a5e1ccf ChangeLog --- a/ChangeLog Fri Sep 11 17:09:38 2009 +0100 +++ b/ChangeLog Mon Sep 14 17:40:46 2009 +0100 @@ -1,3 +1,8 @@ 2009-09-11 Andrew John Hughes + + * NEWS: Update. + * configure.ac (AC_INIT): Bump version to 1.6.1. + 2009-09-11 Andrew John Hughes * Makefile.am: diff -r ef5ed16daa87 -r 7c131a5e1ccf NEWS --- a/NEWS Fri Sep 11 17:09:38 2009 +0100 +++ b/NEWS Mon Sep 14 17:40:46 2009 +0100 @@ -1,3 +1,8 @@ New in release 1.6: +New in release 1.6.1: +- Fix tarball error in 1.6 +- Improve jar performance, + http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 + New in release 1.6: - Added java method tracing using systemtap version 0.9.9+. diff -r ef5ed16daa87 -r 7c131a5e1ccf configure.ac --- a/configure.ac Fri Sep 11 17:09:38 2009 +0100 +++ b/configure.ac Mon Sep 14 17:40:46 2009 +0100 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.6], [distro-pkg-d -AC_INIT([icedtea6], [1.6], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.6.1], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From aph at redhat.com Mon Sep 14 10:28:22 2009 From: aph at redhat.com (Andrew Haley) Date: Mon, 14 Sep 2009 18:28:22 +0100 Subject: IcedTea6 1.6.1 Released In-Reply-To: <4AA7DF17.20107@redhat.com> References: <4AA7DF17.20107@redhat.com> Message-ID: <4AAE7D36.4050401@redhat.com> IcedTea6 1.6.1 is now available. It's a very minor respin that we needed because of an error in the tarball creation process. We have also taken the opportunity to import a patch that improves the performance of jar: http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/b35f1e5075a4 Source code at http://icedtea.classpath.org/download/source/icedtea6-1.6.1.tar.gz RPM (for Fedora) at http://icedtea.classpath.org/download/fedora/java-1.6.0-openjdk-1.6.0.0-29.b16.fc11.nosrc.rpm Andrew. From enevill at icedtea.classpath.org Tue Sep 15 01:39:10 2009 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Tue, 15 Sep 2009 08:39:10 +0000 Subject: /hg/icedtea6: Edward Nevill (ed@camswl.com) Message-ID: changeset f08ebc18b41a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f08ebc18b41a author: "Edward Nevill (ed at camswl.com)" date: Tue Sep 15 09:39:34 2009 +0100 Edward Nevill (ed at camswl.com) diffstat: 1 file changed, 234 insertions(+) ports/hotspot/src/cpu/zero/vm/asm_helper.cpp | 234 ++++++++++++++++++++++++++ diffs (238 lines): diff -r ff08018c9fb6 -r f08ebc18b41a ports/hotspot/src/cpu/zero/vm/asm_helper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp Tue Sep 15 09:39:34 2009 +0100 @@ -0,0 +1,234 @@ +/* + * Copyright 2009 Edward Nevill + * + * 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). + */ + +#include "incls/_precompiled.incl" + +#ifndef STATIC_OFFSETS + +extern "C" void sanity_check_backtrace(ZeroFrame *frame, int *regs); + +extern "C" void check_java_threads_backtrace(int *regs) +{ + for (JavaThread* jt = Threads::first(); jt != NULL; jt = jt->next()) { + if (jt->threadObj() == NULL || + jt->is_exiting() || + !java_lang_Thread::is_alive(jt->threadObj()) || + jt->is_hidden_from_external_view()) { + continue; + } + if (jt->is_jvmti_agent_thread()) continue; + if (jt->is_attaching()) continue; + sanity_check_backtrace(jt->top_zero_frame(), regs); + } +} + +/* Thease functions allow the ASM interpreter to call CPP virtual functions. + * Otherwise the ASM interpreter has to grup around in the VTABLE which is + * not very portable. + */ +extern "C" bool JavaThread_is_lock_owned(JavaThread *r0, address r1) +{ + return r0->is_lock_owned(r1); +} + +extern "C" HeapWord **CollectedHeap_top_addr(CollectedHeap *r0) +{ + return r0->top_addr(); +} + +extern "C" HeapWord **CollectedHeap_end_addr(CollectedHeap *r0) +{ + return r0->end_addr(); +} + +#endif // STATIC_OFFSETS + +#ifdef STATIC_OFFSETS + +class VMStructs { +public: + static void print_vm_offsets(void); +}; + +#define outfile stdout + +void print_def(const char *s, int v) +{ + fprintf(outfile, "#define %-40s 0x%02x\n", s, v); +} + +void nl(void) +{ + fputc('\n', outfile); +} + +void VMStructs::print_vm_offsets(void) +{ + print_def("THREAD_PENDING_EXC", offset_of(JavaThread, _pending_exception)); + print_def("THREAD_SUSPEND_FLAGS", offset_of(JavaThread, _suspend_flags)); + print_def("THREAD_ACTIVE_HANDLES", offset_of(JavaThread, _active_handles)); + print_def("THREAD_LAST_HANDLE_MARK", offset_of(JavaThread, _last_handle_mark)); + print_def("THREAD_TLAB_TOP", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _top)); + print_def("THREAD_TLAB_END", offset_of(JavaThread, _tlab) + offset_of(ThreadLocalAllocBuffer, _end)); + print_def("THREAD_RESOURCEAREA", offset_of(JavaThread, _resource_area)); + print_def("THREAD_HANDLE_AREA", offset_of(JavaThread, _handle_area)); + print_def("THREAD_STACK_BASE", offset_of(JavaThread, _stack_base)); + print_def("THREAD_STACK_SIZE", offset_of(JavaThread, _stack_size)); + print_def("THREAD_LAST_JAVA_SP", offset_of(JavaThread, _anchor) + offset_of(JavaFrameAnchor, _last_Java_sp)); + print_def("THREAD_JNI_ENVIRONMENT", offset_of(JavaThread, _jni_environment)); + print_def("THREAD_VM_RESULT", offset_of(JavaThread, _vm_result)); + print_def("THREAD_STATE", offset_of(JavaThread, _thread_state)); + print_def("THREAD_DO_NOT_UNLOCK", offset_of(JavaThread, _do_not_unlock_if_synchronized)); + + print_def("THREAD_JAVA_STACK_BASE", offset_of(JavaThread, _zero_stack) + ZeroStack::base_offset()); + print_def("THREAD_JAVA_SP", offset_of(JavaThread, _zero_stack) + ZeroStack::sp_offset()); + print_def("THREAD_TOP_ZERO_FRAME", offset_of(JavaThread, _top_zero_frame)); + print_def("THREAD_SPECIALRUNTIMEEXITCONDITION", offset_of(JavaThread, _special_runtime_exit_condition)); + nl(); + print_def("_thread_external_suspend", Thread::_external_suspend); + print_def("_thread_ext_suspended", Thread::_ext_suspended); + print_def("_thread_deopt_suspend", Thread::_deopt_suspend); + nl(); + print_def("METHOD_CONSTMETHOD", offset_of(methodOopDesc, _constMethod)); + print_def("METHOD_CONSTANTS", offset_of(methodOopDesc, _constants)); + print_def("METHOD_METHODDATA", offset_of(methodOopDesc, _method_data)); + print_def("METHOD_INVOKECOUNT", offset_of(methodOopDesc, _interpreter_invocation_count)); + print_def("METHOD_ACCESSFLAGS", offset_of(methodOopDesc, _access_flags)); + print_def("METHOD_VTABLEINDEX", offset_of(methodOopDesc, _vtable_index)); + print_def("METHOD_RESULTINDEX", offset_of(methodOopDesc, _result_index)); + print_def("METHOD_METHODSIZE", offset_of(methodOopDesc, _method_size)); + print_def("METHOD_MAXSTACK", offset_of(methodOopDesc, _max_stack)); + print_def("METHOD_MAXLOCALS", offset_of(methodOopDesc, _max_locals)); + print_def("METHOD_SIZEOFPARAMETERS", offset_of(methodOopDesc, _size_of_parameters)); + print_def("METHOD_INVOCATIONCOUNTER", offset_of(methodOopDesc, _invocation_counter)); + print_def("METHOD_BACKEDGECOUNTER", offset_of(methodOopDesc, _backedge_counter)); + print_def("METHOD_FROM_INTERPRETED", offset_of(methodOopDesc, _from_interpreted_entry)); + // ECN: These two appear to be just tagged onto the end of the class + print_def("METHOD_NATIVEHANDLER", sizeof(methodOopDesc)); + print_def("METHOD_SIGNATUREHANDLER", sizeof(methodOopDesc)+4); + nl(); + print_def("CONSTMETHOD_CODEOFFSET", sizeof(constMethodOopDesc)); + nl(); + print_def("JNIHANDLEBLOCK_TOP", offset_of(JNIHandleBlock, _top)); + nl(); + print_def("KLASS_PART", klassOopDesc::klass_part_offset_in_bytes()); + print_def("KLASS_ACCESSFLAGS", offset_of(Klass, _access_flags)); + print_def("INSTANCEKLASS_INITSTATE", offset_of(instanceKlass, _init_state)); + print_def("INSTANCEKLASS_VTABLE_LEN", offset_of(instanceKlass, _vtable_len)); + print_def("INSTANCEKLASS_ITABLE_LEN", offset_of(instanceKlass, _itable_len)); + print_def("INSTANCEKLASS_VTABLE_OFFSET", instanceKlass::vtable_start_offset() * sizeof(int *)); + print_def("OBJARRAYKLASS_ELEMENTKLASS", offset_of(objArrayKlass, _element_klass)); + nl(); + print_def("CONSTANTPOOL_TAGS", offset_of(constantPoolOopDesc, _tags)); + print_def("CONSTANTPOOL_CACHE", offset_of(constantPoolOopDesc, _cache)); + nl(); + print_def("SIZEOF_HANDLEMARK", sizeof(HandleMark)); +} + +int main(void) +{ + print_def("JVM_CONSTANT_Utf8", JVM_CONSTANT_Utf8); + print_def("JVM_CONSTANT_Unicode", JVM_CONSTANT_Unicode); + print_def("JVM_CONSTANT_Integer", JVM_CONSTANT_Integer); + print_def("JVM_CONSTANT_Float", JVM_CONSTANT_Float); + print_def("JVM_CONSTANT_Long", JVM_CONSTANT_Long); + print_def("JVM_CONSTANT_Double", JVM_CONSTANT_Double); + print_def("JVM_CONSTANT_Class", JVM_CONSTANT_Class); + print_def("JVM_CONSTANT_String", JVM_CONSTANT_String); + print_def("JVM_CONSTANT_Fieldref", JVM_CONSTANT_Fieldref); + print_def("JVM_CONSTANT_Methodref", JVM_CONSTANT_Methodref); + print_def("JVM_CONSTANT_InterfaceMethodref", JVM_CONSTANT_InterfaceMethodref); + print_def("JVM_CONSTANT_NameAndType", JVM_CONSTANT_NameAndType); + nl(); + print_def("JVM_CONSTANT_UnresolvedClass", JVM_CONSTANT_UnresolvedClass); + print_def("JVM_CONSTANT_ClassIndex", JVM_CONSTANT_ClassIndex); + print_def("JVM_CONSTANT_UnresolvedString", JVM_CONSTANT_UnresolvedString); + print_def("JVM_CONSTANT_StringIndex", JVM_CONSTANT_StringIndex); + print_def("JVM_CONSTANT_UnresolvedClassInError",JVM_CONSTANT_UnresolvedClassInError); + nl(); + print_def("JVM_ACC_PUBLIC", JVM_ACC_PUBLIC); + print_def("JVM_ACC_PRIVATE", JVM_ACC_PRIVATE); + print_def("JVM_ACC_PROTECTED", JVM_ACC_PROTECTED); + print_def("JVM_ACC_STATIC", JVM_ACC_STATIC); + print_def("JVM_ACC_FINAL", JVM_ACC_FINAL); + print_def("JVM_ACC_SYNCHRONIZED", JVM_ACC_SYNCHRONIZED); + print_def("JVM_ACC_SUPER", JVM_ACC_SUPER); + print_def("JVM_ACC_VOLATILE", JVM_ACC_VOLATILE); + print_def("JVM_ACC_BRIDGE", JVM_ACC_BRIDGE); + print_def("JVM_ACC_TRANSIENT", JVM_ACC_TRANSIENT); + print_def("JVM_ACC_VARARGS", JVM_ACC_VARARGS); + print_def("JVM_ACC_NATIVE", JVM_ACC_NATIVE); + print_def("JVM_ACC_INTERFACE", JVM_ACC_INTERFACE); + print_def("JVM_ACC_ABSTRACT", JVM_ACC_ABSTRACT); + print_def("JVM_ACC_STRICT", JVM_ACC_STRICT); + print_def("JVM_ACC_SYNTHETIC", JVM_ACC_SYNTHETIC); + print_def("JVM_ACC_ANNOTATION", JVM_ACC_ANNOTATION); + print_def("JVM_ACC_ENUM", JVM_ACC_ENUM); + print_def("JVM_ACC_HAS_FINALIZER", JVM_ACC_HAS_FINALIZER); + nl(); + print_def("T_BOOLEAN", T_BOOLEAN); + print_def("T_CHAR", T_CHAR); + print_def("T_FLOAT", T_FLOAT); + print_def("T_DOUBLE", T_DOUBLE); + print_def("T_BYTE", T_BYTE); + print_def("T_SHORT", T_SHORT); + print_def("T_INT", T_INT); + print_def("T_LONG", T_LONG); + print_def("T_OBJECT", T_OBJECT); + print_def("T_ARRAY", T_ARRAY); + print_def("T_VOID", T_VOID); + nl(); + print_def("_thread_uninitialized", _thread_uninitialized); + print_def("_thread_new", _thread_new); + print_def("_thread_new_trans", _thread_new_trans); + print_def("_thread_in_native", _thread_in_native); + print_def("_thread_in_native_trans", _thread_in_native_trans); + print_def("_thread_in_vm", _thread_in_vm); + print_def("_thread_in_vm_trans", _thread_in_vm_trans); + print_def("_thread_in_Java", _thread_in_Java); + print_def("_thread_in_Java_trans", _thread_in_Java_trans); + print_def("_thread_blocked", _thread_blocked); + print_def("_thread_blocked_trans", _thread_blocked_trans); + print_def("_thread_max_state", _thread_max_state); + nl(); + print_def("class_unparsable_by_gc", instanceKlass::unparsable_by_gc); + print_def("class_allocated", instanceKlass::allocated); + print_def("class_loaded", instanceKlass::loaded); + print_def("class_linked", instanceKlass::linked); + print_def("class_being_initialized", instanceKlass::being_initialized); + print_def("class_fully_initialized", instanceKlass::fully_initialized); + print_def("class_init_error", instanceKlass::initialization_error); + nl(); + print_def("flag_methodInterface", 1 << ConstantPoolCacheEntry::methodInterface); + print_def("flag_volatileField", 1 << ConstantPoolCacheEntry::volatileField); + print_def("flag_vfinalMethod", 1 << ConstantPoolCacheEntry::vfinalMethod); + print_def("flag_finalField", 1 << ConstantPoolCacheEntry::finalField); + nl(); + print_def("INVOCATIONCOUNTER_COUNTINCREMENT", InvocationCounter::count_increment); + nl(); + VMStructs::print_vm_offsets(); + nl(); + print_def("VMSYMBOLS_ArithmeticException", vmSymbols::java_lang_ArithmeticException_enum); + print_def("VMSYMBOLS_ArrayIndexOutOfBounds", vmSymbols::java_lang_ArrayIndexOutOfBoundsException_enum); + print_def("VMSYMBOLS_ArrayStoreException", vmSymbols::java_lang_ArrayStoreException_enum); + print_def("VMSYMBOLS_ClassCastException", vmSymbols::java_lang_ClassCastException_enum); + print_def("VMSYMBOLS_NullPointerException", vmSymbols::java_lang_NullPointerException_enum); + print_def("VMSYMBOLS_AbstractMethodError", vmSymbols::java_lang_AbstractMethodError_enum); + print_def("VMSYMBOLS_IncompatibleClassChangeError", vmSymbols::java_lang_IncompatibleClassChangeError_enum); + print_def("VMSYMBOLS_InternalError", vmSymbols::java_lang_InternalError_enum); + + return 0; +} + +#endif // STATIC_OFFSETS From enevill at icedtea.classpath.org Tue Sep 15 01:46:40 2009 From: enevill at icedtea.classpath.org (enevill at icedtea.classpath.org) Date: Tue, 15 Sep 2009 08:46:40 +0000 Subject: /hg/icedtea6: Edward Nevill (ed@camswl.com) Message-ID: changeset f07666c3167a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f07666c3167a author: "Edward Nevill (ed at camswl.com)" date: Tue Sep 15 09:48:53 2009 +0100 Edward Nevill (ed at camswl.com) diffstat: 2 files changed, 4 insertions(+), 17 deletions(-) ChangeLog | 4 ++++ ports/hotspot/src/cpu/zero/vm/asm_helper.cpp | 17 ----------------- diffs (38 lines): diff -r f08ebc18b41a -r f07666c3167a ChangeLog --- a/ChangeLog Tue Sep 15 09:39:34 2009 +0100 +++ b/ChangeLog Tue Sep 15 09:48:53 2009 +0100 @@ -1,3 +1,7 @@ 2009-09-11 Andrew John Hughes + + * asm_helper.cpp: Missed from previous checkin + 2009-09-11 Andrew John Hughes * Makefile.am: diff -r f08ebc18b41a -r f07666c3167a ports/hotspot/src/cpu/zero/vm/asm_helper.cpp --- a/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp Tue Sep 15 09:39:34 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/asm_helper.cpp Tue Sep 15 09:48:53 2009 +0100 @@ -15,23 +15,6 @@ #include "incls/_precompiled.incl" #ifndef STATIC_OFFSETS - -extern "C" void sanity_check_backtrace(ZeroFrame *frame, int *regs); - -extern "C" void check_java_threads_backtrace(int *regs) -{ - for (JavaThread* jt = Threads::first(); jt != NULL; jt = jt->next()) { - if (jt->threadObj() == NULL || - jt->is_exiting() || - !java_lang_Thread::is_alive(jt->threadObj()) || - jt->is_hidden_from_external_view()) { - continue; - } - if (jt->is_jvmti_agent_thread()) continue; - if (jt->is_attaching()) continue; - sanity_check_backtrace(jt->top_zero_frame(), regs); - } -} /* Thease functions allow the ASM interpreter to call CPP virtual functions. * Otherwise the ASM interpreter has to grup around in the VTABLE which is From gbenson at icedtea.classpath.org Tue Sep 15 03:08:56 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 15 Sep 2009 10:08:56 +0000 Subject: /hg/icedtea6: 2009-09-15 Gary Benson Message-ID: changeset 524b551b6a8a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=524b551b6a8a author: Gary Benson date: Tue Sep 15 06:02:32 2009 -0400 2009-09-15 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: Reinstated copyright header and #endif comment. * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: Removed reinstated comment, moved opening brace back to previous line, and reinstated #endif comment. diffstat: 3 files changed, 37 insertions(+), 5 deletions(-) ChangeLog | 9 +++++++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 6 +--- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 27 +++++++++++++++++++++- diffs (75 lines): diff -r f07666c3167a -r 524b551b6a8a ChangeLog --- a/ChangeLog Tue Sep 15 09:48:53 2009 +0100 +++ b/ChangeLog Tue Sep 15 06:02:32 2009 -0400 @@ -1,3 +1,12 @@ 2009-09-15 Edward Nevill + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: + Reinstated copyright header and #endif comment. + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: + Removed reinstated comment, moved opening brace back to + previous line, and reinstated #endif comment. + 2009-09-15 Edward Nevill * asm_helper.cpp: Missed from previous checkin diff -r f07666c3167a -r 524b551b6a8a ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Tue Sep 15 09:48:53 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Tue Sep 15 06:02:32 2009 -0400 @@ -26,9 +26,7 @@ #include "incls/_precompiled.incl" #include "incls/_bytecodes_zero.cpp.incl" -void Bytecodes::pd_initialize() -{ - // No zero specific initialization +void Bytecodes::pd_initialize() { #ifdef HOTSPOT_ASM def(_iaccess_0, "_iaccess_0", "b_jj", NULL, T_INT, 1, true, _aload_0); def(_iaccess_1, "_iaccess_1", "b_jj", NULL, T_INT, 1, true, _aload_1); @@ -72,5 +70,5 @@ void Bytecodes::pd_initialize() def(_iload_2_iload_N, "iload_2_iload_N", "b_", NULL, T_INT, 2, false, _iload_2); def(_iload_3_iload_N, "iload_3_iload_N", "b_", NULL, T_INT, 2, false, _iload_3); -#endif +#endif // HOTSPOT_ASM } diff -r f07666c3167a -r 524b551b6a8a ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Tue Sep 15 09:48:53 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Tue Sep 15 06:02:32 2009 -0400 @@ -1,3 +1,28 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + #ifdef HOTSPOT_ASM #define _iaccess_0 ((Bytecodes::Code)0xdb) #define _iaccess_1 ((Bytecodes::Code)0xdc) @@ -36,4 +61,4 @@ _iload_1_iload_N , // 251 _iload_2_iload_N , // 252 _iload_3_iload_N , // 253 -#endif +#endif // HOTSPOT_ASM From gbenson at redhat.com Tue Sep 15 03:15:14 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 15 Sep 2009 11:15:14 +0100 Subject: Zero fixes Message-ID: <20090915101514.GA3467@redhat.com> Hi all, This patch unreverts a couple of things that Ed reverted in his commits of the past few days. Cheers, Gary -- http://gbenson.net/ -------------- next part -------------- diff -r f07666c3167a ChangeLog --- a/ChangeLog Tue Sep 15 09:48:53 2009 +0100 +++ b/ChangeLog Tue Sep 15 06:00:28 2009 -0400 @@ -1,3 +1,12 @@ +2009-09-15 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: + Reinstated copyright header and #endif comment. + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: + Removed reinstated comment, moved opening brace back to + previous line, and reinstated #endif comment. + 2009-09-15 Edward Nevill * asm_helper.cpp: Missed from previous checkin diff -r f07666c3167a ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Tue Sep 15 09:48:53 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Tue Sep 15 06:00:29 2009 -0400 @@ -26,9 +26,7 @@ #include "incls/_precompiled.incl" #include "incls/_bytecodes_zero.cpp.incl" -void Bytecodes::pd_initialize() -{ - // No zero specific initialization +void Bytecodes::pd_initialize() { #ifdef HOTSPOT_ASM def(_iaccess_0, "_iaccess_0", "b_jj", NULL, T_INT, 1, true, _aload_0); def(_iaccess_1, "_iaccess_1", "b_jj", NULL, T_INT, 1, true, _aload_1); @@ -72,5 +70,5 @@ def(_iload_2_iload_N, "iload_2_iload_N", "b_", NULL, T_INT, 2, false, _iload_2); def(_iload_3_iload_N, "iload_3_iload_N", "b_", NULL, T_INT, 2, false, _iload_3); -#endif +#endif // HOTSPOT_ASM } diff -r f07666c3167a ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Tue Sep 15 09:48:53 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Tue Sep 15 06:00:29 2009 -0400 @@ -1,3 +1,28 @@ +/* + * Copyright 1997-2007 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. + * + * 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. + * + */ + #ifdef HOTSPOT_ASM #define _iaccess_0 ((Bytecodes::Code)0xdb) #define _iaccess_1 ((Bytecodes::Code)0xdc) @@ -36,4 +61,4 @@ _iload_1_iload_N , // 251 _iload_2_iload_N , // 252 _iload_3_iload_N , // 253 -#endif +#endif // HOTSPOT_ASM From gbenson at icedtea.classpath.org Tue Sep 15 05:01:21 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Tue, 15 Sep 2009 12:01:21 +0000 Subject: /hg/icedtea6: 2009-09-15 Gary Benson Message-ID: changeset 419024238732 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=419024238732 author: Gary Benson date: Tue Sep 15 07:54:59 2009 -0400 2009-09-15 Gary Benson * ports/hotspot/src/cpu/zero/vm/jni_zero.h (jlong): Altered definition on 64-bit platforms. diffstat: 2 files changed, 12 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ ports/hotspot/src/cpu/zero/vm/jni_zero.h | 8 +++++++- diffs (34 lines): diff -r 524b551b6a8a -r 419024238732 ChangeLog --- a/ChangeLog Tue Sep 15 06:02:32 2009 -0400 +++ b/ChangeLog Tue Sep 15 07:54:59 2009 -0400 @@ -1,3 +1,8 @@ 2009-09-15 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/jni_zero.h + (jlong): Altered definition on 64-bit platforms. + 2009-09-15 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: diff -r 524b551b6a8a -r 419024238732 ports/hotspot/src/cpu/zero/vm/jni_zero.h --- a/ports/hotspot/src/cpu/zero/vm/jni_zero.h Tue Sep 15 06:02:32 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/jni_zero.h Tue Sep 15 07:54:59 2009 -0400 @@ -1,5 +1,6 @@ /* * Copyright 1997-2004 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 @@ -28,5 +29,10 @@ #define JNICALL typedef int jint; +typedef signed char jbyte; + +#ifdef _LP64 +typedef long jlong; +#else typedef long long jlong; -typedef signed char jbyte; +#endif From Daniel.Daugherty at Sun.COM Tue Sep 15 08:30:38 2009 From: Daniel.Daugherty at Sun.COM (Daniel D. Daugherty) Date: Tue, 15 Sep 2009 09:30:38 -0600 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> Message-ID: <4AAFB31E.4080608@sun.com> An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090915/4fe17446/attachment.html From Kelly.Ohair at Sun.COM Tue Sep 15 09:01:46 2009 From: Kelly.Ohair at Sun.COM (Kelly O'Hair) Date: Tue, 15 Sep 2009 09:01:46 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFB31E.4080608@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> Message-ID: <4AAFBA6A.4060807@sun.com> They look fine, so you can use me as a reviewer, if needed. I always do a double check with Joe Darcy, just to make sure I don't mess up any potential openjdk6 build promotion activities and to make sure the fix is wanted in openjdk6. These changes are needed and wanted, in my opinion. -kto Daniel D. Daugherty wrote: > Andrew John Hughes wrote: >> 2009/9/12 Andrew John Hughes : >> >>> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html >>> >>> Subject: hg: jdk6/jdk6/hotspot: 557 new changesets >>> >>> Woohoo! >>> >> >> So do we move to hs16 after the next build (17) is promoted? ;) >> > > Now that OpenJDK6 is caught up to HSX-14, I have two critical > bug fixes ready: > > % hg out > comparing with ssh://hg.openjdk.java.net/jdk6/jdk6/hotspot > searching for changes > changeset: 616:2b4230d1e589 > parent: 559:26bc4770e671 > user: dcubed > date: Tue Jul 28 13:35:00 2009 -0600 > summary: 6862295: JDWP threadid changes during debugging session > (leading to ingored breakpoints) > > changeset: 617:9601152ccfc1 > user: dcubed > date: Fri Aug 28 12:25:46 2009 -0600 > summary: 6875393: 2/3 JNI itable index cache is broken > > changeset: 618:16a50381378e > tag: tip > parent: 615:ccb185a165a1 > parent: 617:9601152ccfc1 > user: dcubed > date: Tue Sep 15 09:15:51 2009 -0600 > summary: Merge > > > The first changeset is in 6u16-B01/HSX-14.2-B01 and JDK7-B71/HSX-16-B08. > The second changeset is in 6u18-B02/HSX-16-B09 and HSX-17-B02; the second > changeset hasn't made it from RT_Baseline into Main_Baseline yet. :-( > > http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/2b4230d1e589 > > http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/9601152ccfc1 > > So how do I get approval for pushing these fixes to OpenJDK6? > > Dan > > From Daniel.Daugherty at Sun.COM Tue Sep 15 09:13:47 2009 From: Daniel.Daugherty at Sun.COM (Daniel D. Daugherty) Date: Tue, 15 Sep 2009 10:13:47 -0600 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFBA6A.4060807@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <4AAFBA6A.4060807@sun.com> Message-ID: <4AAFBD3B.5010205@sun.com> Thanks Kelly! The changes were already reviewed. I'll wait to hear from Joe Darcy... Dan Kelly O'Hair wrote: > They look fine, so you can use me as a reviewer, if needed. > > I always do a double check with Joe Darcy, just to make sure > I don't mess up any potential openjdk6 build promotion activities > and to make sure the fix is wanted in openjdk6. > > These changes are needed and wanted, in my opinion. > > -kto > > > Daniel D. Daugherty wrote: >> Andrew John Hughes wrote: >>> 2009/9/12 Andrew John Hughes : >>> >>>> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html >>>> >>>> >>>> Subject: hg: jdk6/jdk6/hotspot: 557 new changesets >>>> >>>> Woohoo! >>>> >>> >>> So do we move to hs16 after the next build (17) is promoted? ;) >>> >> >> Now that OpenJDK6 is caught up to HSX-14, I have two critical >> bug fixes ready: >> >> % hg out >> comparing with ssh://hg.openjdk.java.net/jdk6/jdk6/hotspot >> searching for changes >> changeset: 616:2b4230d1e589 >> parent: 559:26bc4770e671 >> user: dcubed >> date: Tue Jul 28 13:35:00 2009 -0600 >> summary: 6862295: JDWP threadid changes during debugging session >> (leading to ingored breakpoints) >> >> changeset: 617:9601152ccfc1 >> user: dcubed >> date: Fri Aug 28 12:25:46 2009 -0600 >> summary: 6875393: 2/3 JNI itable index cache is broken >> >> changeset: 618:16a50381378e >> tag: tip >> parent: 615:ccb185a165a1 >> parent: 617:9601152ccfc1 >> user: dcubed >> date: Tue Sep 15 09:15:51 2009 -0600 >> summary: Merge >> >> >> The first changeset is in 6u16-B01/HSX-14.2-B01 and JDK7-B71/HSX-16-B08. >> The second changeset is in 6u18-B02/HSX-16-B09 and HSX-17-B02; the >> second >> changeset hasn't made it from RT_Baseline into Main_Baseline yet. :-( >> >> http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/2b4230d1e589 >> >> http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/9601152ccfc1 >> >> So how do I get approval for pushing these fixes to OpenJDK6? >> >> Dan >> >> From gnu_andrew at member.fsf.org Tue Sep 15 09:19:04 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 15 Sep 2009 17:19:04 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFB31E.4080608@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> Message-ID: <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> 2009/9/15 Daniel D. Daugherty : > Andrew John Hughes wrote: > > 2009/9/12 Andrew John Hughes : > > > http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html > > Subject: hg: jdk6/jdk6/hotspot: 557 new changesets > > Woohoo! > > > So do we move to hs16 after the next build (17) is promoted? ;) > > > Now that OpenJDK6 is caught up to HSX-14, I have two critical > bug fixes ready: > > % hg out > comparing with ssh://hg.openjdk.java.net/jdk6/jdk6/hotspot > searching for changes > changeset:?? 616:2b4230d1e589 > parent:????? 559:26bc4770e671 > user:??????? dcubed > date:??????? Tue Jul 28 13:35:00 2009 -0600 > summary:???? 6862295: JDWP threadid changes during debugging session > (leading to ingored breakpoints) > > changeset:?? 617:9601152ccfc1 > user:??????? dcubed > date:??????? Fri Aug 28 12:25:46 2009 -0600 > summary:???? 6875393: 2/3 JNI itable index cache is broken > > changeset:?? 618:16a50381378e > tag:???????? tip > parent:????? 615:ccb185a165a1 > parent:????? 617:9601152ccfc1 > user:??????? dcubed > date:??????? Tue Sep 15 09:15:51 2009 -0600 > summary:???? Merge > > > The first changeset is in 6u16-B01/HSX-14.2-B01 and JDK7-B71/HSX-16-B08. I'm confused; if this is in hs14, why do we not have it already? > The second changeset is in 6u18-B02/HSX-16-B09 and HSX-17-B02; the second > changeset hasn't made it from RT_Baseline into Main_Baseline yet. :-( > > http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/2b4230d1e589 > > http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/9601152ccfc1 > > So how do I get approval for pushing these fixes to OpenJDK6? > > Dan > > -- 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 Daniel.Daugherty at Sun.COM Tue Sep 15 09:45:51 2009 From: Daniel.Daugherty at Sun.COM (Daniel D. Daugherty) Date: Tue, 15 Sep 2009 10:45:51 -0600 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> Message-ID: <4AAFC4BF.7040801@sun.com> An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090915/6342138d/attachment.html From dbhole at icedtea.classpath.org Tue Sep 15 09:43:00 2009 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Tue, 15 Sep 2009 16:43:00 +0000 Subject: /hg/icedtea6: Updates to the new NP plugin: Message-ID: changeset 260b65087a73 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=260b65087a73 author: Deepak Bhole date: Tue Sep 15 12:47:59 2009 -0400 Updates to the new NP plugin: - Added preliminary array support (get/set from JS->Java) - Fixed some timing issues to make plugin faster - Implemented object resuse so that comparison of Java objects on JS side works * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc (newMessageOnBus): Handle certain callbacks in a more uniform manner. (postAndWaitForResponse): Lower poll time to 200 us for more responsiveness. (findClass): Accept instance ID which is used for searching classes in specific applet instance classloaders. (getArrayLength): New function. Returns length of an array on Java side. (getSlot): New function. Returns element at requested index in an array. (setSlot): New function. Sets requested index in array to supplied value. (getField): Accept object id. (getStaticField): Fix parameter ordering for consistency. (set): New function. Sets Java side fields to given value. (setStaticField): New function. Sets value of a static field in a Java object. (setField): New function. Sets value of a static field in a class. (createJavaObjectFromVariant): Handle void and null variants. Handle case where object is already created. (call): Use a string to store object id. (newObject): Same. (hasPackage): Accept instance id and pass it on. * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Relevant changes as needed by the updates to the .cc file. * plugin/icedteanp/IcedTeaNPPlugin.cc (get_scriptable_object): Pass false for the new isArray arg to get_scriptable_java_object. * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Pass 0 as the instance id to all findClass calls. * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Reuse Java object pointers. (IcedTeaScriptableJavaPackageObject::hasProperty): Pass the instance id to findClass. (get_scriptable_java_object): Update code so that Java object pointers can be reused. (IcedTeaScriptableJavaObject::setIsArray): New function. Sets if this object represents an array. (IcedTeaScriptableJavaObject::getIsArray): New function. Returns if this object represents an array. (IcedTeaScriptableJavaObject::hasMethod): Bypass "array indexes" passed to the method. (IcedTeaScriptableJavaObject::javaResultToNPVariant): Handle void and null values correctly. Handle array objects. (IcedTeaScriptableJavaObject::invoke): Set exceptions in JS engine if one occurred on Java side. (IcedTeaScriptableJavaObject::hasProperty): Handle array length and index properties. (IcedTeaScriptableJavaObject::getProperty): Same. (IcedTeaScriptableJavaObject::setProperty): Add support for setting array index values. * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Changes as necessitated by changes to the .cc file. * plugin/icedteanp/java/sun/applet/JavaConsole.java: Handle changed API in PluginAppletSecurityContext. * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java (getMatchingMethod): Handle un-castable/deferred casts. (getMatchingConstructor): Same. (getNum): Fix handling for characters. * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java (associateInstance): New function. Associated a loader with an instance. (getLoaderInfo): New function. Returns loader info in a map. (handleMessage): Look for class in instance specific loaders as well. Handle float/double precision upto 308 (E308 is max for double). * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (AppletEventListener::appletStateChanged): Fix race condition during initialization. (handleMessage): Fix race condition to handle GetJavaObject calls when panel is still being initialized. diffstat: 11 files changed, 893 insertions(+), 360 deletions(-) ChangeLog | 69 + plugin/icedteanp/IcedTeaJavaRequestProcessor.cc | 250 ++++- plugin/icedteanp/IcedTeaJavaRequestProcessor.h | 42 plugin/icedteanp/IcedTeaNPPlugin.cc | 10 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 24 plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 457 +++++++--- plugin/icedteanp/IcedTeaScriptablePluginObject.h | 20 plugin/icedteanp/java/sun/applet/JavaConsole.java | 8 plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java | 14 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 287 +++--- plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 72 + diffs (truncated from 2062 to 500 lines): diff -r 419024238732 -r 260b65087a73 ChangeLog --- a/ChangeLog Tue Sep 15 07:54:59 2009 -0400 +++ b/ChangeLog Tue Sep 15 12:47:59 2009 -0400 @@ -1,3 +1,72 @@ 2009-09-15 Gary Benson + + * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc + (newMessageOnBus): Handle certain callbacks in a more uniform manner. + (postAndWaitForResponse): Lower poll time to 200 us for more + responsiveness. + (findClass): Accept instance ID which is used for searching classes in + specific applet instance classloaders. + (getArrayLength): New function. Returns length of an array on Java side. + (getSlot): New function. Returns element at requested index in an array. + (setSlot): New function. Sets requested index in array to supplied value. + (getField): Accept object id. + (getStaticField): Fix parameter ordering for consistency. + (set): New function. Sets Java side fields to given value. + (setStaticField): New function. Sets value of a static field in a Java + object. + (setField): New function. Sets value of a static field in a class. + (createJavaObjectFromVariant): Handle void and null variants. Handle case + where object is already created. + (call): Use a string to store object id. + (newObject): Same. + (hasPackage): Accept instance id and pass it on. + * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Relevant changes as + needed by the updates to the .cc file. + * plugin/icedteanp/IcedTeaNPPlugin.cc + (get_scriptable_object): Pass false for the new isArray arg to + get_scriptable_java_object. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Pass 0 as the + instance id to all findClass calls. + * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Reuse Java object + pointers. + (IcedTeaScriptableJavaPackageObject::hasProperty): Pass the instance id to + findClass. + (get_scriptable_java_object): Update code so that Java object pointers can + be reused. + (IcedTeaScriptableJavaObject::setIsArray): New function. Sets if this object + represents an array. + (IcedTeaScriptableJavaObject::getIsArray): New function. Returns if this + object represents an array. + (IcedTeaScriptableJavaObject::hasMethod): Bypass "array indexes" passed to + the method. + (IcedTeaScriptableJavaObject::javaResultToNPVariant): Handle void and null + values correctly. Handle array objects. + (IcedTeaScriptableJavaObject::invoke): Set exceptions in JS engine if one + occurred on Java side. + (IcedTeaScriptableJavaObject::hasProperty): Handle array length and index + properties. + (IcedTeaScriptableJavaObject::getProperty): Same. + (IcedTeaScriptableJavaObject::setProperty): Add support for setting array + index values. + * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Changes as + necessitated by changes to the .cc file. + * plugin/icedteanp/java/sun/applet/JavaConsole.java: Handle changed API in + PluginAppletSecurityContext. + * plugin/icedteanp/java/sun/applet/MethodOverloadResolver.java + (getMatchingMethod): Handle un-castable/deferred casts. + (getMatchingConstructor): Same. + (getNum): Fix handling for characters. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (associateInstance): New function. Associated a loader with an instance. + (getLoaderInfo): New function. Returns loader info in a map. + (handleMessage): Look for class in instance specific loaders as well. + Handle float/double precision upto 308 (E308 is max for double). + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (AppletEventListener::appletStateChanged): Fix race condition during + initialization. + (handleMessage): Fix race condition to handle GetJavaObject calls when + panel is still being initialized. + 2009-09-15 Gary Benson * ports/hotspot/src/cpu/zero/vm/jni_zero.h diff -r 419024238732 -r 260b65087a73 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Tue Sep 15 07:54:59 2009 -0400 +++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc Tue Sep 15 12:47:59 2009 -0400 @@ -37,6 +37,7 @@ exception statement from your version. * exception statement from your version. */ #include "IcedTeaJavaRequestProcessor.h" +#include "IcedTeaScriptablePluginObject.h" /* * This class processes LiveConnect requests from JavaScript to Java. @@ -109,8 +110,6 @@ JavaRequestProcessor::newMessageOnBus(co (message_parts->at(4) == "HasField") || (message_parts->at(4) == "GetStaticFieldID") || (message_parts->at(4) == "GetFieldID") || - (message_parts->at(4) == "GetField") || - (message_parts->at(4) == "GetStaticField") || (message_parts->at(4) == "GetJavaObject") || (message_parts->at(4) == "IsInstanceOf")) { @@ -122,7 +121,10 @@ JavaRequestProcessor::newMessageOnBus(co { result_ready = true; // nothing else to do } else if ((message_parts->at(4) == "CallMethod") || - (message_parts->at(4) == "CallStaticMethod")) + (message_parts->at(4) == "CallStaticMethod") || + (message_parts->at(4) == "GetField") || + (message_parts->at(4) == "GetStaticField") || + (message_parts->at(4) == "GetObjectArrayElement")) { if (message_parts->at(5) == "literalreturn") @@ -140,7 +142,20 @@ JavaRequestProcessor::newMessageOnBus(co } result_ready = true; - } + } else if ((message_parts->at(4) == "GetArrayLength")) + { + result->return_identifier = 0; // length is not an "identifier" + result->return_string->append(message_parts->at(5)); + result_ready = true; + } else if ((message_parts->at(4) == "SetField") || + (message_parts->at(4) == "SetObjectArrayElement")) + { + + // nothing to do + + result->return_identifier = 0; + result_ready = true; + } delete message_parts; return true; @@ -238,7 +253,7 @@ JavaRequestProcessor::postAndWaitForResp if (g_main_context_pending(NULL)) g_main_context_iteration(NULL, false); else - usleep(2000); + usleep(200); } else break; @@ -361,9 +376,13 @@ JavaRequestProcessor::addReference(std:: } JavaResultData* -JavaRequestProcessor::findClass(std::string name) -{ - std::string message = std::string(); +JavaRequestProcessor::findClass(int plugin_instance_id, + std::string name) +{ + std::string message = std::string(); + std::string plugin_instance_id_str = std::string(); + + IcedTeaPluginUtilities::itoa(plugin_instance_id, &plugin_instance_id_str); this->instance = 0; // context is always 0 (needed for java-side backwards compat.) this->reference = IcedTeaPluginUtilities::getReference(); @@ -371,6 +390,8 @@ JavaRequestProcessor::findClass(std::str IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); message.append(" FindClass "); + message.append(plugin_instance_id_str); + message.append(" "); message.append(name); postAndWaitForResponse(message); @@ -410,6 +431,72 @@ JavaRequestProcessor::getClassID(std::st message.append(objectID); postAndWaitForResponse(message); + + return result; +} + +JavaResultData* +JavaRequestProcessor::getArrayLength(std::string objectID) +{ + std::string message = std::string(); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetArrayLength "); + message.append(objectID); + + postAndWaitForResponse(message); + + return result; +} + +JavaResultData* +JavaRequestProcessor::getSlot(std::string objectID, std::string index) +{ + std::string message = std::string(); + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" GetObjectArrayElement "); + message.append(objectID); + message.append(" "); + message.append(index); + + postAndWaitForResponse(message); + + return result; +} + +JavaResultData* +JavaRequestProcessor::setSlot(std::string objectID, + std::string index, + NPVariant value) +{ + std::string id = std::string(); + std::string message = std::string(); + + createJavaObjectFromVariant(value, &id); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &message); + + message.append(" SetObjectArrayElement "); + message.append(objectID); + message.append(" "); + message.append(index); + message.append(" "); + message.append(id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); return result; } @@ -471,6 +558,7 @@ JavaResultData* JavaResultData* JavaRequestProcessor::getField(std::string source, std::string classID, + std::string objectID, std::string fieldName) { JavaResultData* java_result; @@ -484,7 +572,7 @@ JavaRequestProcessor::getField(std::stri IcedTeaPluginUtilities::constructMessagePrefix(0, reference, source, &message); message.append(" GetField "); - message.append(classID); + message.append(objectID); message.append(" "); message.append(java_result->return_string->c_str()); @@ -498,7 +586,7 @@ JavaRequestProcessor::getField(std::stri } JavaResultData* -JavaRequestProcessor::getStaticField(std::string classID, std::string source, +JavaRequestProcessor::getStaticField(std::string source, std::string classID, std::string fieldName) { JavaResultData* java_result; @@ -523,6 +611,70 @@ JavaRequestProcessor::getStaticField(std delete java_request; return result; +} + + +JavaResultData* +JavaRequestProcessor::set(std::string source, + bool isStatic, + std::string classID, + std::string objectID, + std::string fieldName, + NPVariant value) +{ + JavaResultData* java_result; + JavaRequestProcessor java_request = JavaRequestProcessor(); + std::string id = std::string(); + std::string message = std::string(); + + createJavaObjectFromVariant(value, &id); + + java_result = java_request.getFieldID(classID, fieldName); + + this->instance = 0; // context is always 0 (needed for java-side backwards compat.) + this->reference = IcedTeaPluginUtilities::getReference(); + + IcedTeaPluginUtilities::constructMessagePrefix(0, reference, source, &message); + + if (isStatic) + { + message.append(" SetStaticField "); + message.append(classID); + } else + { + message.append(" SetField "); + message.append(objectID); + } + + message.append(" "); + message.append(java_result->return_string->c_str()); + message.append(" "); + message.append(id); + + postAndWaitForResponse(message); + + IcedTeaPluginUtilities::releaseReference(); + + return result; +} + +JavaResultData* +JavaRequestProcessor::setStaticField(std::string source, + std::string classID, + std::string fieldName, + NPVariant value) +{ + return set(source, true, classID, "", fieldName, value); +} + +JavaResultData* +JavaRequestProcessor::setField(std::string source, + std::string classID, + std::string objectID, + std::string fieldName, + NPVariant value) +{ + return set(source, false, classID, objectID, fieldName, value); } JavaResultData* @@ -601,8 +753,8 @@ JavaRequestProcessor::getStaticMethodID( return result; } -int -JavaRequestProcessor::createJavaObjectFromVariant(NPVariant variant) +void +JavaRequestProcessor::createJavaObjectFromVariant(NPVariant variant, std::string* id) { JavaResultData* java_result; @@ -619,10 +771,14 @@ JavaRequestProcessor::createJavaObjectFr if (NPVARIANT_IS_VOID(variant)) { PLUGIN_DEBUG_1ARG("VOID %d\n", variant); + id->append("0"); + return; // no need to go further } else if (NPVARIANT_IS_NULL(variant)) { PLUGIN_DEBUG_1ARG("NULL\n", variant); + id->append("0"); + return; // no need to go further } else if (NPVARIANT_IS_BOOLEAN(variant)) { @@ -648,7 +804,7 @@ JavaRequestProcessor::createJavaObjectFr className = "java.lang.Double"; char* valueStr = (char*) malloc(sizeof(char)*1024); - sprintf(valueStr, "%d", NPVARIANT_TO_DOUBLE(variant)); + sprintf(valueStr, "%f", NPVARIANT_TO_DOUBLE(variant)); stringArg += valueStr; free(valueStr); } @@ -660,17 +816,24 @@ JavaRequestProcessor::createJavaObjectFr #else stringArg += NPVARIANT_TO_STRING(variant).UTF8Characters; #endif - } else { + } + else if (browser_functions.getproperty()) + { + + } + else + { alreadyCreated = true; } if (!alreadyCreated) { - java_result = java_request.findClass(className.c_str()); + java_result = java_request.findClass(0, className.c_str()); // the result we want is in result_string (assuming there was no error) if (java_result->error_occurred) { printf("Unable to find classid for %s\n", className.c_str()); - return 0; + id->append("0"); + return; } jsObjectClassID.append(*(java_result->return_string)); @@ -685,7 +848,8 @@ JavaRequestProcessor::createJavaObjectFr // the result we want is in result_string (assuming there was no error) if (java_result->error_occurred) { printf("Unable to find string constructor for %s\n", className.c_str()); - return 0; + id->append("0"); + return; } jsObjectConstructorID.append(*(java_result->return_string)); @@ -697,7 +861,8 @@ JavaRequestProcessor::createJavaObjectFr if (java_result->error_occurred) { printf("Unable to create requested object\n"); - return 0; + id->append("0"); + return; } // Create the object @@ -709,21 +874,25 @@ JavaRequestProcessor::createJavaObjectFr if (java_result->error_occurred) { printf("Unable to create requested object\n"); - return 0; + id->append("0"); + return; } - return java_result->return_identifier; - + id->append(*(java_result->return_string)); + + } else { + // Else already created + + std::string classId = std::string(((IcedTeaScriptableJavaObject*) NPVARIANT_TO_OBJECT(variant))->getClassID()); + std::string instanceId = std::string(((IcedTeaScriptableJavaObject*) NPVARIANT_TO_OBJECT(variant))->getInstanceID()); + + if (instanceId.length() == 0) + id->append(classId.c_str()); + else + id->append(instanceId.c_str()); } - std::string classId = std::string(((IcedTeaScriptableJavaObject*) NPVARIANT_TO_OBJECT(variant))->getClassID()); - std::string instanceId = std::string(((IcedTeaScriptableJavaObject*) NPVARIANT_TO_OBJECT(variant))->getInstanceID()); - - if (instanceId.length() == 0) - return atoi(classId.c_str()); - else - return atoi(instanceId.c_str()); } JavaResultData* @@ -766,20 +935,19 @@ JavaRequestProcessor::call(std::string s message += " "; // First, we need to load the arguments into the java-side table + std::string id = std::string(); for (int i=0; i < numArgs; i++) { - int objectID = createJavaObjectFromVariant(args[i]); - if (objectID == 0) + id.clear(); + createJavaObjectFromVariant(args[i], &id); + if (id == "0") { result->error_occurred = true; result->error_msg->append("Unable to create arguments"); return result; } - char* id = (char*) malloc(sizeof(char)*32); - sprintf(id, "%d", objectID); message += id; message += " "; - free(id); } postAndWaitForResponse(message); @@ -825,20 +993,19 @@ JavaRequestProcessor::newObject(std::str message += " "; // First, we need to load the arguments into the java-side table + std::string id = std::string(); for (int i=0; i < argCount; i++) { - int objectID = createJavaObjectFromVariant(args[i]); - if (objectID == 0) + id.clear(); + createJavaObjectFromVariant(args[i], &id); + if (id == "0") { result->error_occurred = true; result->error_msg->append("Unable to create arguments"); return result; } - char* id = (char*) malloc(sizeof(char)*32); - sprintf(id, "%d", objectID); message += id; message += " "; From Joe.Darcy at Sun.COM Tue Sep 15 11:22:40 2009 From: Joe.Darcy at Sun.COM (Joseph D. Darcy) Date: Tue, 15 Sep 2009 11:22:40 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFBD3B.5010205@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <4AAFBA6A.4060807@sun.com> <4AAFBD3B.5010205@sun.com> Message-ID: <4AAFDB70.7020307@sun.com> Hi Dan. Please push these fixes. Thanks, -Joe Daniel D. Daugherty wrote: > Thanks Kelly! The changes were already reviewed. I'll wait to > hear from Joe Darcy... > > Dan > > > Kelly O'Hair wrote: >> They look fine, so you can use me as a reviewer, if needed. >> >> I always do a double check with Joe Darcy, just to make sure >> I don't mess up any potential openjdk6 build promotion activities >> and to make sure the fix is wanted in openjdk6. >> >> These changes are needed and wanted, in my opinion. >> >> -kto >> >> >> Daniel D. Daugherty wrote: >>> Andrew John Hughes wrote: >>>> 2009/9/12 Andrew John Hughes : >>>> >>>>> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html >>>>> >>>>> >>>>> Subject: hg: jdk6/jdk6/hotspot: 557 new changesets >>>>> >>>>> Woohoo! >>>>> >>>> >>>> So do we move to hs16 after the next build (17) is promoted? ;) >>>> >>> >>> Now that OpenJDK6 is caught up to HSX-14, I have two critical >>> bug fixes ready: >>> >>> % hg out >>> comparing with ssh://hg.openjdk.java.net/jdk6/jdk6/hotspot >>> searching for changes >>> changeset: 616:2b4230d1e589 >>> parent: 559:26bc4770e671 >>> user: dcubed >>> date: Tue Jul 28 13:35:00 2009 -0600 >>> summary: 6862295: JDWP threadid changes during debugging session >>> (leading to ingored breakpoints) >>> >>> changeset: 617:9601152ccfc1 >>> user: dcubed >>> date: Fri Aug 28 12:25:46 2009 -0600 >>> summary: 6875393: 2/3 JNI itable index cache is broken >>> >>> changeset: 618:16a50381378e >>> tag: tip >>> parent: 615:ccb185a165a1 >>> parent: 617:9601152ccfc1 >>> user: dcubed >>> date: Tue Sep 15 09:15:51 2009 -0600 >>> summary: Merge >>> >>> >>> The first changeset is in 6u16-B01/HSX-14.2-B01 and >>> JDK7-B71/HSX-16-B08. >>> The second changeset is in 6u18-B02/HSX-16-B09 and HSX-17-B02; the >>> second >>> changeset hasn't made it from RT_Baseline into Main_Baseline yet. :-( >>> >>> http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/2b4230d1e589 >>> >>> http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/9601152ccfc1 >>> >>> So how do I get approval for pushing these fixes to OpenJDK6? >>> >>> Dan >>> >>> From Daniel.Daugherty at Sun.COM Tue Sep 15 12:19:16 2009 From: Daniel.Daugherty at Sun.COM (Daniel D. Daugherty) Date: Tue, 15 Sep 2009 13:19:16 -0600 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFDB70.7020307@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <4AAFBA6A.4060807@sun.com> <4AAFBD3B.5010205@sun.com> <4AAFDB70.7020307@sun.com> Message-ID: <4AAFE8B4.80000@sun.com> Done. BTW, how do I get on the notification list for this repo? Dan Joseph D. Darcy wrote: > Hi Dan. > > Please push these fixes. > > Thanks, > > -Joe > > Daniel D. Daugherty wrote: >> Thanks Kelly! The changes were already reviewed. I'll wait to >> hear from Joe Darcy... >> >> Dan >> >> >> Kelly O'Hair wrote: >>> They look fine, so you can use me as a reviewer, if needed. >>> >>> I always do a double check with Joe Darcy, just to make sure >>> I don't mess up any potential openjdk6 build promotion activities >>> and to make sure the fix is wanted in openjdk6. >>> >>> These changes are needed and wanted, in my opinion. >>> >>> -kto >>> >>> >>> Daniel D. Daugherty wrote: >>>> Andrew John Hughes wrote: >>>>> 2009/9/12 Andrew John Hughes : >>>>> >>>>>> http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000772.html >>>>>> >>>>>> >>>>>> Subject: hg: jdk6/jdk6/hotspot: 557 new changesets >>>>>> >>>>>> Woohoo! >>>>>> >>>>> >>>>> So do we move to hs16 after the next build (17) is promoted? ;) >>>>> >>>> >>>> Now that OpenJDK6 is caught up to HSX-14, I have two critical >>>> bug fixes ready: >>>> >>>> % hg out >>>> comparing with ssh://hg.openjdk.java.net/jdk6/jdk6/hotspot >>>> searching for changes >>>> changeset: 616:2b4230d1e589 >>>> parent: 559:26bc4770e671 >>>> user: dcubed >>>> date: Tue Jul 28 13:35:00 2009 -0600 >>>> summary: 6862295: JDWP threadid changes during debugging >>>> session (leading to ingored breakpoints) >>>> >>>> changeset: 617:9601152ccfc1 >>>> user: dcubed >>>> date: Fri Aug 28 12:25:46 2009 -0600 >>>> summary: 6875393: 2/3 JNI itable index cache is broken >>>> >>>> changeset: 618:16a50381378e >>>> tag: tip >>>> parent: 615:ccb185a165a1 >>>> parent: 617:9601152ccfc1 >>>> user: dcubed >>>> date: Tue Sep 15 09:15:51 2009 -0600 >>>> summary: Merge >>>> >>>> >>>> The first changeset is in 6u16-B01/HSX-14.2-B01 and >>>> JDK7-B71/HSX-16-B08. >>>> The second changeset is in 6u18-B02/HSX-16-B09 and HSX-17-B02; the >>>> second >>>> changeset hasn't made it from RT_Baseline into Main_Baseline yet. :-( >>>> >>>> http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/2b4230d1e589 >>>> >>>> http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/9601152ccfc1 >>>> >>>> So how do I get approval for pushing these fixes to OpenJDK6? >>>> >>>> Dan >>>> >>>> > From Tim.Bell at Sun.COM Tue Sep 15 12:28:38 2009 From: Tim.Bell at Sun.COM (Tim Bell) Date: Tue, 15 Sep 2009 12:28:38 -0700 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFE8B4.80000@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8847.4060409@sun.com> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <4AAFBA6A.4060807@sun.com> <4AAFBD3B.5010205@sun.com> <4AAFDB70.7020307@sun.com> <4AAFE8B4.80000@sun.com> Message-ID: <4AAFEAE6.90200@sun.com> Hi Dan: > Done. > > BTW, how do I get on the notification list for this repo? OpenJDK6 changes go to jdk6-dev at openjdk.java.net (see below). To subscribe, visit this page: http://mail.openjdk.java.net/mailman/listinfo/jdk6-dev Tim -------- Original Message -------- Subject: hg: jdk6/jdk6/hotspot: 4 new changesets Date: Tue, 15 Sep 2009 19:12:09 +0000 From: Daniel.Daugherty at Sun.COM To: jdk6-dev at openjdk.java.net Changeset: 2b4230d1e589 Author: dcubed Date: 2009-07-28 13:35 -0600 URL: http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/2b4230d1e589 6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints) Summary: Correctly count full GC operations for framework collectors. Add ForceFullGCJVMTIEpilogues as a future work around if needed. Reviewed-by: jcoomes, alanb, ysr ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/prims/jvmtiExport.cpp ! src/share/vm/runtime/globals.hpp Changeset: 9601152ccfc1 Author: dcubed Date: 2009-08-28 12:25 -0600 URL: http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/9601152ccfc1 6875393: 2/3 JNI itable index cache is broken Summary: Add missing initialization of cache size. Reviewed-by: tbell ! src/share/vm/oops/instanceKlass.cpp Changeset: 16a50381378e Author: dcubed Date: 2009-09-15 09:15 -0600 URL: http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/16a50381378e Merge ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/prims/jvmtiExport.cpp ! src/share/vm/runtime/globals.hpp Changeset: ae86d1ece6f5 Author: dcubed Date: 2009-09-15 13:15 -0600 URL: http://hg.openjdk.java.net/jdk6/jdk6/hotspot/rev/ae86d1ece6f5 Merge From gnu_andrew at member.fsf.org Tue Sep 15 13:50:02 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 15 Sep 2009 21:50:02 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AAFC4BF.7040801@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> <4AAFC4BF.7040801@sun.com> Message-ID: <17c6771e0909151350o3d46e4c0jaa97d75e94a50a8d@mail.gmail.com> 2009/9/15 Daniel D. Daugherty : > Andrew John Hughes wrote: > > 2009/9/15 Daniel D. Daugherty : > > > The first changeset is in 6u16-B01/HSX-14.2-B01 and JDK7-B71/HSX-16-B08. > > > I'm confused; if this is in hs14, why do we not have it already? > > > The fix for 6862295 is in HSX-14.2 which is a fork created just for > 6u16. OpenJDK6 currently contains HSX-14 (not sure which build)... > Ok, I thought the whole point of http://hg.openjdk.java.net/hsx/hs14/master was so that we *didn't* have these proprietary forks. OpenJDK6 now matches the current tip of hs14/master (or did on Saturday). > You might remember my asking questions about pushing this fix back > when OpenJDK6 was based on HSX-12... and I couldn't get there from > here... :-) > I do, there wasn't too much point in doing it then and it was good to see you repost so quickly after the merge. Thanks for bringing over these patches. I just wish others were as conscientious towards OpenJDK6. > Dan > -- 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 Daniel.Daugherty at Sun.COM Tue Sep 15 14:50:14 2009 From: Daniel.Daugherty at Sun.COM (Daniel D. Daugherty) Date: Tue, 15 Sep 2009 15:50:14 -0600 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <17c6771e0909151350o3d46e4c0jaa97d75e94a50a8d@mail.gmail.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA8928.7030204@sun.com> <4AAA9126.2030308@sun.com> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> <4AAFC4BF.7040801@sun.com> <17c6771e0909151350o3d46e4c0jaa97d75e94a50a8d@mail.gmail.com> Message-ID: <4AB00C16.4050606@sun.com> An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090915/dee0afd2/attachment.html From gnu_andrew at member.fsf.org Tue Sep 15 16:09:35 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 16 Sep 2009 00:09:35 +0100 Subject: Bugids already used in this repository (Re: [FOR REVIEW] hs14 merge for OpenJDK6) In-Reply-To: <4AB00C16.4050606@sun.com> References: <20090911162252.501B95B8@eggemoggin.niobe.net> <4AAA9A63.2010200@sun.com> <4AAAA682.8060703@sun.com> <17c6771e0909120456l664ef0b8u8e25be6976b2763b@mail.gmail.com> <17c6771e0909120457u7bbfb444h39d69c57630a143e@mail.gmail.com> <4AAFB31E.4080608@sun.com> <17c6771e0909150919n257cc777jc017bdfb729fae79@mail.gmail.com> <4AAFC4BF.7040801@sun.com> <17c6771e0909151350o3d46e4c0jaa97d75e94a50a8d@mail.gmail.com> <4AB00C16.4050606@sun.com> Message-ID: <17c6771e0909151609u21ef624fha54c39df7f8d9051@mail.gmail.com> 2009/9/15 Daniel D. Daugherty : > Andrew John Hughes wrote: > > 2009/9/15 Daniel D. Daugherty : > > > Andrew John Hughes wrote: > > 2009/9/15 Daniel D. Daugherty : > > > The first changeset is in 6u16-B01/HSX-14.2-B01 and JDK7-B71/HSX-16-B08. > > > I'm confused; if this is in hs14, why do we not have it already? > > > The fix for 6862295 is in HSX-14.2 which is a fork created just for > 6u16. OpenJDK6 currently contains HSX-14 (not sure which build)... > > > > Ok, I thought the whole point of > http://hg.openjdk.java.net/hsx/hs14/master was so that we *didn't* > have these proprietary forks. > > I don't know why HSX-14.2 was created. I just know that was where > I was told to push the fix so that it could get out the door as > soon as possible. There was talk about holding up 6u15 but since > that was a security release it couldn't wait a week. So the fix > went into 6u16... > Sorry if it sounded like I was blaming you personally, because that certainly wasn't the intention. I'm just still very confused as to why we have this hs14 tree (and I assume the same applies to hs16 too) operating in a manner where externals aren't allowed to commit to it and where Sun don't always do so either. > > OpenJDK6 now matches the current tip of > hs14/master (or did on Saturday). > > > I didn't push anything to hs14/master... Maybe this is something > that Erik does... > The last commit was four months ago it seems. I assume work on a stable HotSpot has now switched to hs16. I'd like OpenJDK6 to switch to that too after b17, but Joe hasn't responded on that yet. > > You might remember my asking questions about pushing this fix back > when OpenJDK6 was based on HSX-12... and I couldn't get there from > here... :-) > > > > I do, there wasn't too much point in doing it then and it was good to > see you repost so quickly after the merge. > > I've been watching and waiting for the administrivia to > get worked out on the OpenJDK6 stuff... :-) > > > Thanks for bringing over these patches. > > Not a problem. It seemed to me that OpenJDK6 really needed breakpoints > that work :-)? And the other fix was just a 1-liner that fixed malloc > pool corruption in the regular (non-debugging, non-profiling) system > so it seemed important at the time... :-) > > > I just wish others were as conscientious towards OpenJDK6. > > > I'd say that Joe was beating on me, but I don't make it out to CA > very often anymore and I haven't seen him in CO so... :-) > Oh yeah, I thought Joe's work was implied, him being OpenJDK6 maintainer and all :) What we don't generally see is those working on something for OpenJDK7 thinking 'hey, this fixes a bug/regression that would be good to have in OpenJDK6 too'. Instead, I'd say pretty much all the backports come from either us at Red Hat or Google and that's pretty much when we spot something useful going by on the JDK7 lists. > Dan > > -- 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 icedtea.classpath.org Wed Sep 16 02:43:16 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Wed, 16 Sep 2009 09:43:16 +0000 Subject: /hg/icedtea6: 2009-09-16 Gary Benson Message-ID: changeset 79039da1a614 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=79039da1a614 author: Gary Benson date: Wed Sep 16 05:36:53 2009 -0400 2009-09-16 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: * ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp: * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: * ports/hotspot/src/cpu/zero/vm/debug_zero.cpp: * ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp: * ports/hotspot/src/cpu/zero/vm/dump_zero.cpp: * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: * ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp: * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp: * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: * ports/hotspot/src/cpu/zero/vm/register_zero.cpp: * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp: * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp: * ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp: * ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp: * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: Replaced calls to "Unimplemented()" in stubs with calls to "ShouldNotCallThis()". diffstat: 21 files changed, 186 insertions(+), 159 deletions(-) ChangeLog | 25 ++++ ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp | 26 +--- ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 9 - ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp | 57 +++++----- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 10 - ports/hotspot/src/cpu/zero/vm/debug_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp | 4 ports/hotspot/src/cpu/zero/vm/dump_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 8 - ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 10 - ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp | 6 - ports/hotspot/src/cpu/zero/vm/icache_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp | 56 ++++----- ports/hotspot/src/cpu/zero/vm/register_zero.cpp | 4 ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp | 18 +-- ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp | 14 +- ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp | 46 ++++---- ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp | 8 - ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 34 ++--- ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 2 diffs (truncated from 959 to 500 lines): diff -r 260b65087a73 -r 79039da1a614 ChangeLog --- a/ChangeLog Tue Sep 15 12:47:59 2009 -0400 +++ b/ChangeLog Wed Sep 16 05:36:53 2009 -0400 @@ -1,3 +1,28 @@ 2009-09-15 Deepak Bhole + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/debug_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/dump_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: + * ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/icache_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/register_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp: + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: + * ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp: + Replaced calls to "Unimplemented()" in stubs with calls to + "ShouldNotCallThis()". + 2009-09-15 Deepak Bhole * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -31,12 +31,12 @@ int AbstractAssembler::code_fill_byte() } void Assembler::pd_patch_instruction(address branch, address target) { - Unimplemented(); + ShouldNotCallThis(); } #ifndef PRODUCT void Assembler::pd_print_patched_instruction(address branch) { - Unimplemented(); + ShouldNotCallThis(); } #endif // PRODUCT @@ -46,7 +46,7 @@ void MacroAssembler::align(int modulus) } void MacroAssembler::bang_stack_with_offset(int offset) { - Unimplemented(); + ShouldNotCallThis(); } void MacroAssembler::advance(int bytes) { @@ -59,22 +59,14 @@ void MacroAssembler::store_oop(jobject o emit_address((address) obj); } -static void _UnimplementedStub() { - report_unimplemented(__FILE__, __LINE__); +static void should_not_call() { + report_should_not_call(__FILE__, __LINE__); } -address UnimplementedStub() { - return (address) _UnimplementedStub; +address ShouldNotCallThisStub() { + return (address) should_not_call; } -address UnimplementedEntry() { - return (address) _UnimplementedStub; +address ShouldNotCallThisEntry() { + return (address) should_not_call; } - -static void _ShouldNotReachHereStub() { - report_should_not_reach_here(__FILE__, __LINE__); -} - -address ShouldNotReachHereStub() { - return (address) _ShouldNotReachHereStub; -} diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Wed Sep 16 05:36:53 2009 -0400 @@ -32,6 +32,7 @@ class Assembler : public AbstractAssembl public: Assembler(CodeBuffer* code) : AbstractAssembler(code) {} + public: void pd_patch_instruction(address branch, address target); #ifndef PRODUCT static void pd_print_patched_instruction(address branch); @@ -42,6 +43,7 @@ class MacroAssembler : public Assembler public: MacroAssembler(CodeBuffer* code) : Assembler(code) {} + public: void align(int modulus); void bang_stack_with_offset(int offset); bool needs_explicit_null_check(intptr_t offset); @@ -53,13 +55,12 @@ class MacroAssembler : public Assembler #ifdef ASSERT inline bool AbstractAssembler::pd_check_instruction_mark() { - Unimplemented(); + ShouldNotCallThis(); } #endif -address UnimplementedStub(); -address UnimplementedEntry(); -address ShouldNotReachHereStub(); +address ShouldNotCallThisStub(); +address ShouldNotCallThisEntry(); // Nothing to do with the assembler (or lack of), // just a real convenient place to include these. diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp Wed Sep 16 05:36:53 2009 -0400 @@ -1,6 +1,6 @@ /* * Copyright 1997-2002 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 @@ -24,9 +24,9 @@ */ typedef union unaligned { - u4 u; - u2 us; - u8 ul; + u4 u; + u2 us; + u8 ul; } __attribute__((packed)) unaligned; class Bytes: AllStatic { @@ -43,51 +43,60 @@ class Bytes: AllStatic { // Efficient reading and writing of unaligned unsigned data in // platform-specific byte ordering. - static inline u2 get_native_u2(address p){ - unaligned *up = (unaligned *)p; - return up->us; + static inline u2 get_native_u2(address p){ + unaligned *up = (unaligned *) p; + return up->us; } - static inline u4 get_native_u4(address p) { - unaligned *up = (unaligned *)p; - return up->u; + static inline u4 get_native_u4(address p) { + unaligned *up = (unaligned *) p; + return up->u; } - static inline u8 get_native_u8(address p) { - unaligned *up = (unaligned *)p; - return up->ul; + static inline u8 get_native_u8(address p) { + unaligned *up = (unaligned *) p; + return up->ul; } static inline void put_native_u2(address p, u2 x) { - unaligned *up = (unaligned *)p; - up->us = x; + unaligned *up = (unaligned *) p; + up->us = x; } static inline void put_native_u4(address p, u4 x) { - unaligned *up = (unaligned *)p; - up->u = x; + unaligned *up = (unaligned *) p; + up->u = x; } static inline void put_native_u8(address p, u8 x) { - unaligned *up = (unaligned *)p; - up->ul = x; + unaligned *up = (unaligned *) p; + up->ul = x; } - // Efficient reading and writing of unaligned unsigned data in Java // byte ordering (i.e. big-endian ordering). #ifdef VM_LITTLE_ENDIAN // Byte-order reversal is needed static inline u2 get_Java_u2(address p) { - return ( u2(p[0]) << 8 ) | ( u2(p[1]) ); + return (u2(p[0]) << 8) | + (u2(p[1]) ); } static inline u4 get_Java_u4(address p) { - return ( u4(p[0]) << 24 ) | ( u4(p[1]) << 16 ) | ( u4(p[2]) << 8 ) | ( u4(p[3]) ); + return (u4(p[0]) << 24) | + (u4(p[1]) << 16) | + (u4(p[2]) << 8) | + (u4(p[3]) ); } static inline u8 get_Java_u8(address p) { u4 hi, lo; - hi = ( u4(p[0]) << 24 ) | ( u4(p[1]) << 16 ) | ( u4(p[2]) << 8 ) | ( u4(p[3]) ); - lo = ( u4(p[4]) << 24 ) | ( u4(p[5]) << 16 ) | ( u4(p[6]) << 8 ) | ( u4(p[7]) ); + hi = (u4(p[0]) << 24) | + (u4(p[1]) << 16) | + (u4(p[2]) << 8) | + (u4(p[3]) ); + lo = (u4(p[4]) << 24) | + (u4(p[5]) << 16) | + (u4(p[6]) << 8) | + (u4(p[7]) ); return u8(lo) | (u8(hi) << 32); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -901,7 +901,7 @@ void BytecodeInterpreter::layout_interpr } address CppInterpreter::return_entry(TosState state, int length) { - Unimplemented(); + ShouldNotCallThis(); } address CppInterpreter::deopt_entry(TosState state, int length) { @@ -929,25 +929,25 @@ address CppInterpreterGenerator::generat address CppInterpreterGenerator::generate_result_handler_for( BasicType type) { assembler()->advance(1); - return ShouldNotReachHereStub(); + return ShouldNotCallThisStub(); } address CppInterpreterGenerator::generate_tosca_to_stack_converter( BasicType type) { assembler()->advance(1); - return ShouldNotReachHereStub(); + return ShouldNotCallThisStub(); } address CppInterpreterGenerator::generate_stack_to_stack_converter( BasicType type) { assembler()->advance(1); - return ShouldNotReachHereStub(); + return ShouldNotCallThisStub(); } address CppInterpreterGenerator::generate_stack_to_native_abi_converter( BasicType type) { assembler()->advance(1); - return ShouldNotReachHereStub(); + return ShouldNotCallThisStub(); } #endif // CC_INTERP diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/debug_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/debug_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/debug_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -27,5 +27,5 @@ #include "incls/_debug_zero.cpp.incl" void pd_ps(frame f) { - Unimplemented(); + ShouldNotCallThis(); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp Wed Sep 16 05:36:53 2009 -0400 @@ -27,9 +27,9 @@ // with Java specific information. static int pd_instruction_alignment() { - Unimplemented(); + ShouldNotCallThis(); } static const char* pd_cpu_opts() { - Unimplemented(); + ShouldNotCallThis(); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/dump_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/dump_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/dump_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -32,5 +32,5 @@ void CompactingPermGenGen::generate_vtab char* md_end, char** mc_top, char* mc_end) { - Unimplemented(); + ShouldNotCallThis(); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -28,7 +28,7 @@ #ifdef ASSERT void RegisterMap::check_location_valid() { - Unimplemented(); + ShouldNotCallThis(); } #endif @@ -81,7 +81,7 @@ frame frame::sender(RegisterMap* map) co if (is_deoptimizer_frame()) return sender_for_deoptimizer_frame(map); - Unimplemented(); + ShouldNotReachHere(); } #ifdef CC_INTERP @@ -102,14 +102,14 @@ void frame::patch_pc(Thread* thread, add } bool frame::safe_for_sender(JavaThread *thread) { - Unimplemented(); + ShouldNotCallThis(); } void frame::pd_gc_epilog() { } bool frame::is_interpreted_frame_valid(JavaThread *thread) const { - Unimplemented(); + ShouldNotCallThis(); } BasicType frame::interpreter_frame_result(oop* oop_result, diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Wed Sep 16 05:36:53 2009 -0400 @@ -75,7 +75,7 @@ inline intptr_t* frame::sender_sp() cons } inline intptr_t* frame::link() const { - Unimplemented(); + ShouldNotCallThis(); } #ifdef CC_INTERP @@ -133,19 +133,19 @@ inline JavaCallWrapper* frame::entry_fra } inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) { - Unimplemented(); + ShouldNotCallThis(); } inline oop frame::saved_oop_result(RegisterMap* map) const { - Unimplemented(); + ShouldNotCallThis(); } inline bool frame::is_older(intptr_t* id) const { - Unimplemented(); + ShouldNotCallThis(); } inline intptr_t* frame::entry_frame_argument_at(int offset) const { - Unimplemented(); + ShouldNotCallThis(); } inline intptr_t* frame::unextended_sp() const { diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -35,15 +35,15 @@ void InlineCacheBuffer::assemble_ic_buff oop cached_oop, address entry_point) { // NB ic_stub_code_size() must return the size of the code we generate - Unimplemented(); + ShouldNotCallThis(); } address InlineCacheBuffer::ic_buffer_entry_point(address code_begin) { // NB ic_stub_code_size() must return the size of the code we generate - Unimplemented(); + ShouldNotCallThis(); } oop InlineCacheBuffer::ic_buffer_cached_oop(address code_begin) { // NB ic_stub_code_size() must return the size of the code we generate - Unimplemented(); + ShouldNotCallThis(); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/icache_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/icache_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -28,5 +28,5 @@ void ICacheStubGenerator::generate_icache_flush( ICache::flush_icache_stub_t* flush_icache_stub) { - Unimplemented(); + ShouldNotCallThis(); } diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Wed Sep 16 05:36:53 2009 -0400 @@ -40,7 +40,7 @@ address InterpreterGenerator::generate_m } address InterpreterGenerator::generate_abstract_entry() { - return UnimplementedEntry(); + return ShouldNotCallThisEntry(); } int AbstractInterpreter::size_activation(methodOop method, diff -r 260b65087a73 -r 79039da1a614 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Tue Sep 15 12:47:59 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Wed Sep 16 05:36:53 2009 -0400 @@ -41,16 +41,16 @@ class NativeInstruction VALUE_OBJ_CLASS_ class NativeInstruction VALUE_OBJ_CLASS_SPEC { public: bool is_jump() { - Unimplemented(); + ShouldNotCallThis(); } bool is_safepoint_poll() { - Unimplemented(); + ShouldNotCallThis(); } }; inline NativeInstruction* nativeInstruction_at(address address) { - Unimplemented(); + ShouldNotCallThis(); } class NativeCall : public NativeInstruction { @@ -60,82 +60,82 @@ class NativeCall : public NativeInstruct }; address instruction_address() const { - Unimplemented(); + ShouldNotCallThis(); } address next_instruction_address() const { - Unimplemented(); + ShouldNotCallThis(); } address return_address() const { - Unimplemented(); + ShouldNotCallThis(); } address destination() const { - Unimplemented(); + ShouldNotCallThis(); } void set_destination_mt_safe(address dest) { - Unimplemented(); + ShouldNotCallThis(); } void verify_alignment() { - Unimplemented(); + ShouldNotCallThis(); } void verify() { - Unimplemented(); + ShouldNotCallThis(); } static bool is_call_before(address return_address) { - Unimplemented(); + ShouldNotCallThis(); } }; inline NativeCall* nativeCall_before(address return_address) { - Unimplemented(); + ShouldNotCallThis(); } inline NativeCall* nativeCall_at(address address) { - Unimplemented(); + ShouldNotCallThis(); } From gbenson at icedtea.classpath.org Wed Sep 16 07:10:57 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Wed, 16 Sep 2009 14:10:57 +0000 Subject: /hg/icedtea6: 2009-09-16 Gary Benson Message-ID: changeset ea0d2d9445ce in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ea0d2d9445ce author: Gary Benson date: Wed Sep 16 10:04:31 2009 -0400 2009-09-16 Gary Benson * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp (frame::frame): Use CodeCache::find_blob_unsafe for compiled frames. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 2 +- diffs (24 lines): diff -r 79039da1a614 -r ea0d2d9445ce ChangeLog --- a/ChangeLog Wed Sep 16 05:36:53 2009 -0400 +++ b/ChangeLog Wed Sep 16 10:04:31 2009 -0400 @@ -1,3 +1,8 @@ 2009-09-16 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp + (frame::frame): Use CodeCache::find_blob_unsafe for compiled frames. + 2009-09-16 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp: diff -r 79039da1a614 -r ea0d2d9445ce ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Wed Sep 16 05:36:53 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Wed Sep 16 10:04:31 2009 -0400 @@ -54,7 +54,7 @@ inline frame::frame(intptr_t* sp, intptr case ZeroFrame::SHARK_FRAME: _pc = zero_sharkframe()->pc(); - _cb = CodeCache::find_blob(pc()); + _cb = CodeCache::find_blob_unsafe(pc()); break; case ZeroFrame::DEOPTIMIZER_FRAME: From jon.vanalten at redhat.com Wed Sep 16 11:47:34 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Wed, 16 Sep 2009 14:47:34 -0400 (EDT) Subject: RFC: Patch to correct pulse-java.jar build In-Reply-To: <404923936.288101253126830442.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1539920823.288151253126854330.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hi, It has been pointed out (off-list, sorry) that pulse-java.jar contains the source tree and other unnecessary intermediate files. The attached patches for correct this icedtea6 and icedtea7 respectively, producing a .jar containing the .class files which is ~70K (previous size was ~1.5M). Also, the pulse-audio sections of the makefile for both versions have been harmonized, as there were differences which made little sense. Thoughts? Comments? cheers, jon -------------- next part -------------- A non-text attachment was scrubbed... Name: pulse6.patch Type: text/x-patch Size: 7381 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090916/55a368cf/pulse6.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: pulse7.patch Type: text/x-patch Size: 5941 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090916/55a368cf/pulse7.patch From mwong at redhat.com Wed Sep 16 12:39:00 2009 From: mwong at redhat.com (Man Wong) Date: Wed, 16 Sep 2009 15:39:00 -0400 (EDT) Subject: [Patch for review]: java regression test LayoutExtraGap In-Reply-To: <1914222928.187341253129935898.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <357368276.187361253129940764.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Hi, This patch applies the layoutextragap patch that I created to icedtea. The test was rewritten because it did not make sense to what was intended. With this patch the test passes. Changelog: *patches/icedtea-jtreg-layoutextragap.patch: New patch for jtreg test LayoutExtraGap, which makes the test pass. * Makefile.am: Changed to allow the patch to apply during the make process. Any comments? Thanks. Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: layoutextragap.patch Type: text/x-patch Size: 6779 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090916/cef1bd6f/layoutextragap.patch From gnu_andrew at member.fsf.org Wed Sep 16 14:52:27 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 16 Sep 2009 22:52:27 +0100 Subject: RFC: Patch to correct pulse-java.jar build In-Reply-To: <1539920823.288151253126854330.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <404923936.288101253126830442.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <1539920823.288151253126854330.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <17c6771e0909161452h32517030i66e6da1432762ed6@mail.gmail.com> 2009/9/16 : > Hi, > > It has been pointed out (off-list, sorry) that pulse-java.jar contains the source tree and other unnecessary intermediate files. ?The attached patches for correct this icedtea6 and icedtea7 respectively, producing a .jar containing the .class files which is ~70K (previous size was ~1.5M). ?Also, the pulse-audio sections of the makefile for both versions have been harmonized, as there were differences which made little sense. > > Thoughts? ?Comments? > > cheers, > > jon The definitions: PULSE_JAVA_DIR = $(abs_top_srcdir)/pulseaudio PULSE_JAVA_NATIVE_SRCDIR = $(PULSE_JAVA_DIR)/src/native +PULSE_JAVA_BUILDDIR = $(PULSE_JAVA_DIR)/build +PULSE_JAVA_NATIVE_BUILDDIR = $(PULSE_JAVA_BUILDDIR)/native PULSE_JAVA_JAVA_SRCDIR = $(PULSE_JAVA_DIR)/src/java -PULSE_JAVA_CLASS_DIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_CLASS_DIR = $(PULSE_JAVA_BUILDDIR)/cp seem to end up writing to the source directory (PULSE_JAVA_NATIVE_BUILDDIR = $(abs_top_srcdir)/pulseaudio/build/native and PULSE_JAVA_CLASS_DIR = $(abs_top_srcdir)/pulseaudio/build/cp). That's incorrect and will break make distcheck. The build directories should be in subdirectories of $(abs_top_builddir). Making PULSE_JAVA_BUILDDIR = $(abs_top_builddir)/pulseaudio would fix that. The IcedTea7 patch also reintroduces conditionals on ICEDTEA_BOOT_DIR and the corresponding duplicating javac/jar invocations.. Please don't do this. These were removed deliberately and will also be removed from IcedTea6 once I port over $(INITIAL_BOOTSTRAP_LINK_STAMP). The new JAVAC definitions also drop IT_JAVACFLAGS, completely reverting it to the IcedTea6 version. All you need to do is make sure the classes go in a clean subdirectory, so make PULSE_JAVA_CLASS_DIR = $(abs_top_builddir)/pulseaudio/build. Then change the jar invocation to: $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) META-INF \ -C $(PULSE_JAVA_CLASS_DIR) org; If you want to give native a subdirectory too, then fine but don't write files to the srcdir and please don't add back old cruft. 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 gbenson at icedtea.classpath.org Thu Sep 17 02:26:30 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Thu, 17 Sep 2009 09:26:30 +0000 Subject: /hg/icedtea6: 2009-09-17 Gary Benson Message-ID: changeset e3b3dd42d933 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e3b3dd42d933 author: Gary Benson date: Thu Sep 17 05:20:03 2009 -0400 2009-09-17 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp: * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp: * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp: * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: * ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp: * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline .hpp: * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: Replaced tabs with spaces and removed trailing whitespace. diffstat: 15 files changed, 120 insertions(+), 102 deletions(-) ChangeLog | 18 ++ ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp | 22 +-- ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp | 66 +++++----- ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp | 40 +++--- ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 4 ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp | 6 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp | 2 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 6 ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp | 2 ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp | 28 ++-- ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp | 18 +- ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 4 diffs (truncated from 574 to 500 lines): diff -r ea0d2d9445ce -r e3b3dd42d933 ChangeLog --- a/ChangeLog Wed Sep 16 10:04:31 2009 -0400 +++ b/ChangeLog Thu Sep 17 05:20:03 2009 -0400 @@ -1,3 +1,21 @@ 2009-09-16 Gary Benson + + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp: + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: + * ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp: + * ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp: + * ports/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp: + * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: + Replaced tabs with spaces and removed trailing whitespace. + 2009-09-16 Gary Benson * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -37,10 +37,10 @@ void Bytecodes::pd_initialize() { def(_invokespecialresolved, "invokespecialresolved", "bjj", NULL, T_ILLEGAL, -1, true, _invokespecial); def(_invokestaticresolved, "invokestaticresolved", "bjj", NULL, T_ILLEGAL, 0, true, _invokestatic); - def(_dmac, "dmac", "b_", NULL, T_DOUBLE, -16, false, _dmul); + def(_dmac, "dmac", "b_", NULL, T_DOUBLE, -16, false, _dmul); - def(_iload_iload, "iload_iload", "bi_i",NULL, T_INT, 2, false, _iload); - def(_iload_iload_N, "ilaod_iload_N", "bi_", NULL, T_INT, 2, false, _iload); + def(_iload_iload, "iload_iload", "bi_i",NULL, T_INT, 2, false, _iload); + def(_iload_iload_N, "ilaod_iload_N", "bi_", NULL, T_INT, 2, false, _iload); def(_iload_0_iconst_N, "iload_0_iconst_N", "b_", NULL, T_INT, 2, false, _iload_0); def(_iload_1_iconst_N, "iload_1_iconst_N", "b_", NULL, T_INT, 2, false, _iload_1); @@ -60,15 +60,15 @@ void Bytecodes::pd_initialize() { def(_ior_u4store, "ior_u4store", "b_i", NULL, T_VOID, -2, false, _ior); def(_ixor_u4store, "ixor_u4store", "b_i", NULL, T_VOID, -2, false, _ixor); - def(_iload_0_iload, "iload_0_iload", "b_i", NULL, T_INT, 2, false, _iload_0); - def(_iload_1_iload, "iload_1_iload", "b_i", NULL, T_INT, 2, false, _iload_1); - def(_iload_2_iload, "iload_2_iload", "b_i", NULL, T_INT, 2, false, _iload_2); - def(_iload_3_iload, "iload_3_iload", "b_i", NULL, T_INT, 2, false, _iload_3); + def(_iload_0_iload, "iload_0_iload", "b_i", NULL, T_INT, 2, false, _iload_0); + def(_iload_1_iload, "iload_1_iload", "b_i", NULL, T_INT, 2, false, _iload_1); + def(_iload_2_iload, "iload_2_iload", "b_i", NULL, T_INT, 2, false, _iload_2); + def(_iload_3_iload, "iload_3_iload", "b_i", NULL, T_INT, 2, false, _iload_3); - def(_iload_0_iload_N, "iload_0_iload_N", "b_", NULL, T_INT, 2, false, _iload_0); - def(_iload_1_iload_N, "iload_1_iload_N", "b_", NULL, T_INT, 2, false, _iload_1); - def(_iload_2_iload_N, "iload_2_iload_N", "b_", NULL, T_INT, 2, false, _iload_2); - def(_iload_3_iload_N, "iload_3_iload_N", "b_", NULL, T_INT, 2, false, _iload_3); + def(_iload_0_iload_N, "iload_0_iload_N", "b_", NULL, T_INT, 2, false, _iload_0); + def(_iload_1_iload_N, "iload_1_iload_N", "b_", NULL, T_INT, 2, false, _iload_1); + def(_iload_2_iload_N, "iload_2_iload_N", "b_", NULL, T_INT, 2, false, _iload_2); + def(_iload_3_iload_N, "iload_3_iload_N", "b_", NULL, T_INT, 2, false, _iload_3); #endif // HOTSPOT_ASM } diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -24,41 +24,41 @@ */ #ifdef HOTSPOT_ASM -#define _iaccess_0 ((Bytecodes::Code)0xdb) -#define _iaccess_1 ((Bytecodes::Code)0xdc) -#define _iaccess_2 ((Bytecodes::Code)0xdd) -#define _iaccess_3 ((Bytecodes::Code)0xde) +#define _iaccess_0 ((Bytecodes::Code)0xdb) +#define _iaccess_1 ((Bytecodes::Code)0xdc) +#define _iaccess_2 ((Bytecodes::Code)0xdd) +#define _iaccess_3 ((Bytecodes::Code)0xde) -#define _invokeresolved ((Bytecodes::Code)0xdf) -#define _invokespecialresolved ((Bytecodes::Code)0xe0) -#define _invokestaticresolved ((Bytecodes::Code)0xe1) +#define _invokeresolved ((Bytecodes::Code)0xdf) +#define _invokespecialresolved ((Bytecodes::Code)0xe0) +#define _invokestaticresolved ((Bytecodes::Code)0xe1) -#define _iload_iload ((Bytecodes::Code)0xe3) -#define _iload_iload_N ((Bytecodes::Code)0xe4) +#define _iload_iload ((Bytecodes::Code)0xe3) +#define _iload_iload_N ((Bytecodes::Code)0xe4) -#define _dmac ((Bytecodes::Code)0xe6) +#define _dmac ((Bytecodes::Code)0xe6) - _iload_0_iconst_N , // 231 - _iload_1_iconst_N , // 232 - _iload_2_iconst_N , // 233 - _iload_3_iconst_N , // 234 - _iload_iconst_N , // 235 - _iadd_istore_N , // 236 - _isub_istore_N , // 237 - _iand_istore_N , // 238 - _ior_istore_N , // 239 - _ixor_istore_N , // 240 - _iadd_u4store , // 241 - _isub_u4store , // 242 - _iand_u4store , // 243 - _ior_u4store , // 244 - _ixor_u4store , // 245 - _iload_0_iload , // 246 - _iload_1_iload , // 247 - _iload_2_iload , // 248 - _iload_3_iload , // 249 - _iload_0_iload_N , // 250 - _iload_1_iload_N , // 251 - _iload_2_iload_N , // 252 - _iload_3_iload_N , // 253 + _iload_0_iconst_N , // 231 + _iload_1_iconst_N , // 232 + _iload_2_iconst_N , // 233 + _iload_3_iconst_N , // 234 + _iload_iconst_N , // 235 + _iadd_istore_N , // 236 + _isub_istore_N , // 237 + _iand_istore_N , // 238 + _ior_istore_N , // 239 + _ixor_istore_N , // 240 + _iadd_u4store , // 241 + _isub_u4store , // 242 + _iand_u4store , // 243 + _ior_u4store , // 244 + _ixor_u4store , // 245 + _iload_0_iload , // 246 + _iload_1_iload , // 247 + _iload_2_iload , // 248 + _iload_3_iload , // 249 + _iload_0_iload_N , // 250 + _iload_1_iload_N , // 251 + _iload_2_iload_N , // 252 + _iload_3_iload_N , // 253 #endif // HOTSPOT_ASM diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -105,7 +105,7 @@ void CppInterpreter::main_loop(int recur // Trim back the stack to put the parameters at the top stack->set_sp(istate->stack() + 1); - + // Make the call Interpreter::invoke_method(callee, istate->callee_entry_point(), THREAD); fixup_after_potential_safepoint(); @@ -114,7 +114,7 @@ void CppInterpreter::main_loop(int recur istate->set_stack(stack->sp() - 1); // Restore the stack - stack->set_sp(istate->stack_limit() + 1); + stack->set_sp(istate->stack_limit() + 1); // Resume the interpreter istate->set_msg(BytecodeInterpreter::method_resume); @@ -260,17 +260,17 @@ void CppInterpreter::native_entry(method arguments = (void **) stack->alloc(handler->argument_count() * sizeof(void **)); void **dst = arguments; - + void *env = thread->jni_environment(); *(dst++) = &env; - + if (method->is_static()) { istate->set_oop_temp( method->constants()->pool_holder()->klass_part()->java_mirror()); mirror = istate->oop_temp_addr(); *(dst++) = &mirror; } - + intptr_t *src = locals; for (int i = dst - arguments; i < handler->argument_count(); i++) { ffi_type *type = handler->argument_type(i); @@ -297,7 +297,7 @@ void CppInterpreter::native_entry(method } } - // Set up the Java frame anchor + // Set up the Java frame anchor thread->set_last_Java_frame(); // Change the thread state to _thread_in_native @@ -350,7 +350,7 @@ void CppInterpreter::native_entry(method // Reset handle block thread->active_handles()->clear(); - + // Unlock if necessary. It seems totally wrong that this // is skipped in the event of an exception but apparently // the template interpreter does this so we do too. @@ -424,7 +424,7 @@ void CppInterpreter::native_entry(method case T_LONG: SET_LOCALS_LONG(*(jlong *) result, 0); break; - + case T_FLOAT: SET_LOCALS_FLOAT(*(jfloat *) result, 0); break; @@ -516,8 +516,8 @@ void CppInterpreter::accessor_entry(meth case ltos: SET_LOCALS_LONG(object->long_field_acquire(entry->f2()), 0); - break; - + break; + case ftos: SET_LOCALS_FLOAT(object->float_field_acquire(entry->f2()), 0); break; @@ -554,8 +554,8 @@ void CppInterpreter::accessor_entry(meth case ltos: SET_LOCALS_LONG(object->long_field(entry->f2()), 0); - break; - + break; + case ftos: SET_LOCALS_FLOAT(object->float_field(entry->f2()), 0); break; @@ -607,7 +607,7 @@ bool CppInterpreter::stack_overflow_immi if (free_stack < StackShadowPages * os::vm_page_size()) { return true; } - + return false; } @@ -850,14 +850,14 @@ int AbstractInterpreter::layout_activati intptr_t *stack_base = monitor_base - monitor_words; intptr_t *stack = stack_base - tempcount - 1; - BytecodeInterpreter::layout_interpreterState(istate, + BytecodeInterpreter::layout_interpreterState(istate, caller, NULL, - method, - locals, - stack, - stack_base, - monitor_base, + method, + locals, + stack, + stack_base, + monitor_base, NULL, is_top_frame); } @@ -921,7 +921,7 @@ bool CppInterpreter::contains(address pc ShouldNotCallThis(); #else return false; // make frame::print_value_on work -#endif // !PRODUCT +#endif // !PRODUCT } // Result handlers and convertors diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -148,7 +148,7 @@ BasicType frame::interpreter_frame_resul value_result->d = *(jdouble *) tos_addr; break; - case T_OBJECT: + case T_OBJECT: case T_ARRAY: if (method->is_native()) { obj = get_interpreterState()->oop_temp(); @@ -395,7 +395,7 @@ void ZeroFrame::identify_vp_word(int intptr_t monitor = (intptr_t) ( (BasicObjectLock *) monitor_base - 1 - index); intptr_t offset = (intptr_t) addr - monitor; - + if (offset == BasicObjectLock::obj_offset_in_bytes()) snprintf(fieldbuf, buflen, "monitor[%d]->_obj", index); else if (offset == BasicObjectLock::lock_offset_in_bytes()) diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/frame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -68,7 +68,7 @@ bool is_deoptimizer_frame() const; public: - frame sender_for_deoptimizer_frame(RegisterMap* map) const; + frame sender_for_deoptimizer_frame(RegisterMap* map) const; public: void zero_print_on_error(int index, diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -69,7 +69,7 @@ void InterpreterRuntime::SignatureHandle case T_BYTE: ftype = &ffi_type_sint8; break; - + case T_SHORT: ftype = &ffi_type_sint16; break; @@ -85,7 +85,7 @@ void InterpreterRuntime::SignatureHandle case T_FLOAT: ftype = &ffi_type_float; break; - + case T_DOUBLE: ftype = &ffi_type_double; break; @@ -156,7 +156,7 @@ IRT_END void SignatureHandlerLibrary::pd_set_handler(address handlerAddr) { InterpreterRuntime::SignatureHandler *handler = - InterpreterRuntime::SignatureHandler::from_handlerAddr(handlerAddr); + InterpreterRuntime::SignatureHandler::from_handlerAddr(handlerAddr); handler->finalize(); } diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -37,7 +37,7 @@ class SignatureHandler { int argument_count() const { return cif()->nargs; } - + ffi_type** argument_types() const { return (ffi_type**) (cif() + 1); } diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -50,7 +50,7 @@ int AbstractInterpreter::size_activation int callee_param_count, int callee_locals, bool is_top_frame) { - return layout_activation(method, + return layout_activation(method, tempcount, popframe_extra_args, moncount, diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/nativeInst_zero.cpp Thu Sep 17 05:20:03 2009 -0400 @@ -46,5 +46,5 @@ void NativeJump::patch_verified_entry(ad (address) CppInterpreter::normal_entry); #else Unimplemented(); -#endif // CC_INTERP +#endif // CC_INTERP } diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -90,7 +90,7 @@ class ZeroStack { } static ByteSize sp_offset() { return byte_offset_of(ZeroStack, _sp); - } + } }; @@ -99,7 +99,7 @@ class SharkFrame; class SharkFrame; class DeoptimizerFrame; -// +// // | ... | // +--------------------+ ------------------ // | ... | low addresses @@ -137,7 +137,7 @@ class ZeroFrame { intptr_t value_of_word(int offset) const { return *addr_of_word(offset); } - + public: ZeroFrame *next() const { return (ZeroFrame *) value_of_word(next_frame_off); diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/stubRoutines_zero.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -31,7 +31,7 @@ static address call_stub_return_pc() { return (address) -1; } - + static bool returns_to_call_stub(address return_pc) { return return_pc == call_stub_return_pc(); } diff -r ea0d2d9445ce -r e3b3dd42d933 ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp --- a/ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp Wed Sep 16 10:04:31 2009 -0400 +++ b/ports/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp Thu Sep 17 05:20:03 2009 -0400 @@ -31,16 +31,16 @@ * __m68k_cmpxchg * * Atomically store newval in *ptr if *ptr is equal to oldval for user space. - * Returns newval on success and oldval if no exchange happened. - * This implementation is processor specific and works on + * Returns newval on success and oldval if no exchange happened. + * This implementation is processor specific and works on * 68020 68030 68040 and 68060. * * It will not work on ColdFire, 68000 and 68010 since they lack the CAS - * instruction. + * instruction. * Using a kernelhelper would be better for arch complete implementation. * */ - + static inline int __m68k_cmpxchg(int oldval, int newval, volatile int *ptr) { int ret; __asm __volatile ("cas%.l %0,%2,%1" @@ -58,11 +58,11 @@ static inline int m68k_compare_and_swap( for (;;) { int prev = *ptr; if (prev != oldval) - return prev; + return prev; if (__m68k_cmpxchg (prev, newval, ptr) == newval) - // Success. - return prev; + // Success. + return prev; // We failed even though prev == oldval. Try again. } @@ -76,7 +76,7 @@ static inline int m68k_add_and_fetch(vol int prev = *ptr; if (__m68k_cmpxchg (prev, prev + add_value, ptr) == prev + add_value) - return prev + add_value; + return prev + add_value; } } @@ -88,7 +88,7 @@ static inline int m68k_lock_test_and_set int prev = *ptr; if (__m68k_cmpxchg (prev, newval, ptr) == prev) - return prev; + return prev; } } #endif // M68K @@ -119,11 +119,11 @@ static inline int arm_compare_and_swap(v for (;;) { int prev = *ptr; if (prev != oldval) - return prev; + return prev; if (__kernel_cmpxchg (prev, newval, ptr) == 0) - // Success. - return prev; + // Success. + return prev; // We failed even though prev == oldval. Try again. } @@ -137,7 +137,7 @@ static inline int arm_add_and_fetch(vola int prev = *ptr; if (__kernel_cmpxchg (prev, prev + add_value, ptr) == 0) - return prev + add_value; + return prev + add_value; } } @@ -149,7 +149,7 @@ static inline int arm_lock_test_and_set( int prev = *ptr; if (__kernel_cmpxchg (prev, newval, ptr) == 0) - return prev; + return prev; From xerxes at zafena.se Thu Sep 17 04:51:01 2009 From: xerxes at zafena.se (=?ISO-8859-1?Q?Xerxes_R=E5nby?=) Date: Thu, 17 Sep 2009 13:51:01 +0200 Subject: FYI: Shark debug LLVM 2.6 API fix and Shark debugging tips. Message-ID: <4AB222A5.8080800@zafena.se> The attached and committed patch fixed the following Shark compile error during debug builds when using LLVM 2.6 or later. /home/xerxes/icedtea6-1.6/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp: In member function 'llvm::CallInst* SharkBuilder::CreateDump(llvm::Value*)': /home/xerxes/icedtea6-1.6/openjdk-ecj/hotspot/src/share/vm/shark/sharkBuilder.cpp:518: error: 'class llvm::StringRef' has no member named 'c_str' make[7]: *** [sharkBuilder.o] Error 1 If you want to create a Shark debug build then apply the mixtec-hacks.patch found in http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2009-April/005361.html it enables some more shark specific debug options like: -XX:+SharkTraceInstalls that will print when compiled methods are inserted into the jvm -XX:SharkPrintBitcodeOf=methodName displays the llvm ir for the method -XX:SharkPrintAsmOf=methodName displays the generated asm for the compiled method ... and makes shark generally more debugger friendly. Cheers Xerxes -------------- next part -------------- A non-text attachment was scrubbed... Name: 081f65658c7e.patch Type: text/x-patch Size: 1338 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090917/5737c6fc/081f65658c7e.patch From xranby at icedtea.classpath.org Thu Sep 17 04:15:46 2009 From: xranby at icedtea.classpath.org (xranby at icedtea.classpath.org) Date: Thu, 17 Sep 2009 11:15:46 +0000 Subject: /hg/icedtea6: 2009-09-17 Xerxes R?nby Message-ID: changeset 081f65658c7e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=081f65658c7e author: Xerxes R?nby date: Thu Sep 17 13:18:45 2009 +0200 2009-09-17 Xerxes R?nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp (SharkBuilder::CreateDump): Make Shark debug code LLVM 2.6 API compatible. diffstat: 2 files changed, 10 insertions(+) ChangeLog | 6 ++++++ ports/hotspot/src/share/vm/shark/sharkBuilder.cpp | 4 ++++ diffs (28 lines): diff -r e3b3dd42d933 -r 081f65658c7e ChangeLog --- a/ChangeLog Thu Sep 17 05:20:03 2009 -0400 +++ b/ChangeLog Thu Sep 17 13:18:45 2009 +0200 @@ -1,3 +1,9 @@ 2009-09-17 Gary Benson + + * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp + (SharkBuilder::CreateDump): + Make Shark debug code LLVM 2.6 API compatible. + 2009-09-17 Gary Benson * ports/hotspot/src/cpu/zero/vm/bytecodes_zero.cpp: diff -r e3b3dd42d933 -r 081f65658c7e ports/hotspot/src/share/vm/shark/sharkBuilder.cpp --- a/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Sep 17 05:20:03 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkBuilder.cpp Thu Sep 17 13:18:45 2009 +0200 @@ -520,7 +520,11 @@ CallInst* SharkBuilder::CreateDump(Value const char *name; if (value->hasName()) // XXX this leaks, but it's only debug code +#if SHARK_LLVM_VERSION >= 26 + name = strdup(value->getName().str().c_str()); +#else name = strdup(value->getName().c_str()); +#endif else name = "unnamed_value"; From bugzilla-daemon at icedtea.classpath.org Thu Sep 17 07:00:42 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 17 Sep 2009 14:00:42 +0000 Subject: [Bug 381] Stackoverflow error with security manager, signed jars and -Djava.security.debug set Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=381 mark at klomp.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED ------- Comment #29 from mark at klomp.org 2009-09-17 14:00 ------- In IcedTea 6 HEAD, 1.5 and 1.6 branches. -- 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 mwong at redhat.com Thu Sep 17 08:57:23 2009 From: mwong at redhat.com (Man Wong) Date: Thu, 17 Sep 2009 11:57:23 -0400 (EDT) Subject: [Patch for review]: java regression test LayoutExtraGap In-Reply-To: <357368276.187361253129940764.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <302497621.238261253203043425.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Should have also mentioned that the layoutextragap jtreg test patch was already approved upstream, if that makes a difference. Thanks, Man Lung Wong ----- Original Message ----- From: "Man Wong" To: "distro-pkg-dev" Sent: Wednesday, September 16, 2009 3:39:00 PM GMT -05:00 US/Canada Eastern Subject: [Patch for review]: java regression test LayoutExtraGap Hi, This patch applies the layoutextragap patch that I created to icedtea. The test was rewritten because it did not make sense to what was intended. With this patch the test passes. Changelog: *patches/icedtea-jtreg-layoutextragap.patch: New patch for jtreg test LayoutExtraGap, which makes the test pass. * Makefile.am: Changed to allow the patch to apply during the make process. Any comments? Thanks. Man Lung Wong From dbhole at redhat.com Thu Sep 17 12:35:52 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 17 Sep 2009 15:35:52 -0400 Subject: [Patch for review]: java regression test LayoutExtraGap In-Reply-To: <302497621.238261253203043425.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <357368276.187361253129940764.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <302497621.238261253203043425.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20090917193552.GA6763@redhat.com> * Man Wong [2009-09-17 11:57]: > Should have also mentioned that the layoutextragap jtreg test patch was already approved upstream, if that makes a difference. > Looks fine to me. Assuming you have tested it, go ahead and apply. Deepak > Thanks, > Man Lung Wong > ----- Original Message ----- > From: "Man Wong" > To: "distro-pkg-dev" > Sent: Wednesday, September 16, 2009 3:39:00 PM GMT -05:00 US/Canada Eastern > Subject: [Patch for review]: java regression test LayoutExtraGap > > Hi, > > This patch applies the layoutextragap patch that I created to icedtea. The test was rewritten because it did not make sense to what was intended. With this patch the test passes. > > Changelog: > *patches/icedtea-jtreg-layoutextragap.patch: > New patch for jtreg test LayoutExtraGap, which makes the test pass. > * Makefile.am: > Changed to allow the patch to apply during the make process. > > Any comments? Thanks. > > Man Lung Wong > > From mwong at icedtea.classpath.org Thu Sep 17 13:14:14 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Thu, 17 Sep 2009 20:14:14 +0000 Subject: /hg/icedtea6: This patch includes a rewrite of the layoutextraga... Message-ID: changeset b9a444f3081b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b9a444f3081b author: Man Lung Wong date: Thu Sep 17 16:15:06 2009 -0400 This patch includes a rewrite of the layoutextragap jtreg test, should pass after applying this patch. diffstat: 3 files changed, 146 insertions(+), 1 deletion(-) ChangeLog | 7 + Makefile.am | 3 patches/icedtea-jtreg-layoutextragap.patch | 137 ++++++++++++++++++++++++++++ diffs (168 lines): diff -r 081f65658c7e -r b9a444f3081b ChangeLog --- a/ChangeLog Thu Sep 17 13:18:45 2009 +0200 +++ b/ChangeLog Thu Sep 17 16:15:06 2009 -0400 @@ -1,3 +1,10 @@ 2009-09-17 Xerxes R??nby + + * patches/icedtea-jtreg-layoutextragap.patch: + New patch for jtreg test LayoutExtraGap, which makes the test pass. + * Makefile.am: + Changed to allow the patch to apply during the make process. + 2009-09-17 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r 081f65658c7e -r b9a444f3081b Makefile.am --- a/Makefile.am Thu Sep 17 13:18:45 2009 +0200 +++ b/Makefile.am Thu Sep 17 16:15:06 2009 -0400 @@ -649,7 +649,8 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6830335.patch \ patches/security/icedtea-6845701.patch \ patches/security/icedtea-6813167.patch \ - patches/icedtea-jar-misc.patch + patches/icedtea-jar-misc.patch \ + patches/icedtea-jtreg-layoutextragap.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 081f65658c7e -r b9a444f3081b patches/icedtea-jtreg-layoutextragap.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jtreg-layoutextragap.patch Thu Sep 17 16:15:06 2009 -0400 @@ -0,0 +1,137 @@ + +# HG changeset patch +# User dav +# Date 1246031444 -14400 +# Node ID 348fce38de3fc206074c448d6ee98b0ce7a769ae +# Parent e1cb6cb935da07b727b05a95ad857cb8449b7f91 +6848458: java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java fails +Summary: consider gap between the component edge and container borders instead of just getX() and getY() +Reviewed-by: dav +Contributed-by: mwong at redhat.com + +--- openjdk/jdk/test/java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java Sat Mar 15 13:43:05 2008 -0400 ++++ openjdk/jdk/test/java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java Fri Jun 26 19:50:44 2009 +0400 +@@ -24,7 +24,8 @@ + /* + @test + @bug 4370316 +- @summary GridLayout does not fill its Container ++ @summary GridLayout does not centre its component properly ++ (summary was GridLayout does not fill its Container) + @library ../../regtesthelpers + @build Util + @author Andrei Dmitriev : area=awt.layout +@@ -90,25 +91,97 @@ public class LayoutExtraGaps extends Fra + setVisible(true); + + Util.waitForIdle(Util.createRobot()); +- Rectangle r1 = yellowPanel.getComponent(0).getBounds(); +- Rectangle r2 = bluePanel.getComponent(0).getBounds(); +- Rectangle r3 = blackPanel.getComponent(0).getBounds(); +- Rectangle r4 = redPanel.getComponent(0).getBounds(); + +- System.out.println("firstHorizLabel bounds ="+r1); +- System.out.println("firstVertLabel bounds ="+r2); +- System.out.println("firstHorizLabel_RTL bounds ="+r3); +- System.out.println("firstVertLabel_RTL bounds ="+r4); +- if ((r1.getX() == 0 && r1.getY() == 0) || +- (r2.getX() == 0 && r2.getY() == 0) || +- (r3.getX() == 0 && r3.getY() == 0) || +- // RTL only affects horizontal positioning and components lays out from top right corner +- (r4.getX() == blackPanel.getWidth() && r4.getY() == 0)) ++ if (isComponentCentredLTR(yellowPanel) && isComponentCentredLTR(bluePanel) ++ && isComponentCentredLTR(blackPanel) && isComponentCentredRTL(redPanel)) + { ++ System.out.println("Test passed."); ++ } else { + throw new RuntimeException("Test failed. GridLayout doesn't center component."); +- } else { +- System.out.println("Test passed."); + } ++ } ++ ++ /** ++ * Checks if the components under Panel p are properly centred (i.e. ++ * opposite borders between the Panel and component are equal). Panel p ++ * must not be affect by RTL orientation (RTL only affects horizontal ++ * positioning and components lay out from top right corner). ++ * ++ * @param p the panel where the components exist and is not affected ++ * by right to left orientation ++ * @return true if components of panel p are properly centre, false ++ * otherwise ++ */ ++ public static boolean isComponentCentredLTR(Panel p) { ++ double borderLeft; ++ double borderRight; ++ double borderTop; ++ double borderBottom; ++ ++ //The first component(rectangle) in panel p. ++ Rectangle firstRec = p.getComponent(0).getBounds(); ++ ++ //The last component(rectangle) in panel p. ++ Rectangle lastRec = p.getComponent(compCount - 1).getBounds(); ++ ++ System.out.println("bounds of the first rectangle in "+ p.getName() + " = " + firstRec); ++ System.out.println("bounds of the last rectangle in "+ p.getName() + " = " + lastRec); ++ ++ borderLeft = firstRec.getX(); ++ borderRight = p.getWidth() - lastRec.getWidth() - lastRec.getX(); ++ borderTop = firstRec.getY(); ++ borderBottom = p.getHeight() - lastRec.getHeight() - lastRec.getY(); ++ ++ return areBordersEqual(borderLeft, borderRight) && ++ areBordersEqual(borderTop, borderBottom); ++ } ++ ++ /** ++ * Checks if the components under Panel p are properly centred (i.e. ++ * opposite borders between the Panel and component are equal). Panel p ++ * must be affect by RTL orientation (RTL only affects horizontal positioning ++ * and components lay out from top right corner). ++ * ++ * @param p the panel where the components exist and is affected by ++ * right to left orientation ++ * @return true if components of panel p are properly centre, false ++ * otherwise ++ */ ++ public static boolean isComponentCentredRTL(Panel p) { ++ double borderLeft; ++ double borderRight; ++ double borderTop; ++ double borderBottom; ++ ++ //The first component(rectangle) in panel p. ++ Rectangle firstRec = p.getComponent(0).getBounds(); ++ ++ //The last component(rectangle) in panel p. ++ Rectangle lastRec = p.getComponent(compCount - 1).getBounds(); ++ ++ System.out.println("bounds of the first rectangle in "+ p.getName() + " = " + firstRec); ++ System.out.println("bounds of the last rectangle in "+ p.getName() + " = " + lastRec); ++ ++ borderLeft = lastRec.getX(); ++ borderRight = p.getWidth() - firstRec.getWidth() - firstRec.getX(); ++ borderTop = lastRec.getY(); ++ borderBottom = p.getHeight() - firstRec.getHeight() - firstRec.getY(); ++ ++ return areBordersEqual(borderLeft, borderRight) && ++ areBordersEqual(borderTop, borderBottom); ++ } ++ ++ /** ++ * Given two borders border1 and border2 check if they are equal. ++ * ++ * @param border1 one of the borders being compared ++ * @param border2 the other border being compared ++ * @return true if border1 and border2 are equal to each other (i.e. ++ * their width/height difference is at most 1, assuming the ++ * smallest pixel is of size 1), false otherwise ++ */ ++ public static boolean areBordersEqual(double border1, double border2) { ++ return Math.abs(border1 - border2) <= 1; + } + + public static void main(String[] args) { + From doko at ubuntu.com Thu Sep 17 17:16:10 2009 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 18 Sep 2009 02:16:10 +0200 Subject: [patch] fix plugin with xulrunner-1.9.1 Message-ID: <4AB2D14A.1070507@ubuntu.com> patch contributed by TJ, see https://launchpad.net/bugs/359407 for the original report. ok for 6, the 1.6 branch and 7? Matthias PS: No, I don't know the real name of TJ. -------------- next part -------------- A non-text attachment was scrubbed... Name: plugin.diff Type: text/x-diff Size: 1619 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090918/abed0214/plugin.diff From mvyskocil at suse.cz Fri Sep 18 03:58:22 2009 From: mvyskocil at suse.cz (Michal Vyskocil) Date: Fri, 18 Sep 2009 12:58:22 +0200 Subject: [PATCH] drop visualvm without OpenJDK build Message-ID: <200909181258.27653.mvyskocil@suse.cz> Hi, due the constraints of our build system, which don't allow the cycle in build (there are a few exceptions, like openjdk itself, where it's allowed) I need to build visualvm later, due the netbeans dependency. The separate build is allowed by make visualvm, but the installation of it is hardcoded icedtea (icedtea-debug) targets. I moved it to extra target called drop-visualvm. Regards Michal Vyskocil -------------- next part -------------- A non-text attachment was scrubbed... Name: separate-visualvm-build-and-install.patch Type: text/x-patch Size: 4477 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090918/e5539dda/separate-visualvm-build-and-install.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part. Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090918/e5539dda/attachment.bin From dbhole at redhat.com Fri Sep 18 05:30:33 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 18 Sep 2009 08:30:33 -0400 Subject: [patch] fix plugin with xulrunner-1.9.1 In-Reply-To: <4AB2D14A.1070507@ubuntu.com> References: <4AB2D14A.1070507@ubuntu.com> Message-ID: <20090918123033.GA15794@redhat.com> * Matthias Klose [2009-09-17 20:16]: > patch contributed by TJ, see https://launchpad.net/bugs/359407 for the > original report. > > ok for 6, the 1.6 branch and 7? > > Matthias > > PS: No, I don't know the real name of TJ. Won't this break support for < 1.9.1? Also, we build with 1.9.1 for Fedora all the time: http://kojipkgs.fedoraproject.org/packages/java-1.6.0-openjdk/1.6.0.0/31.b16.fc12/data/logs/i686/root.log "DEBUG util.py:256: 0:xulrunner-devel-1.9.1.2-4.fc12.i686" And it built fine.. Deepak > diff -r b9a444f3081b ChangeLog > --- a/ChangeLog Thu Sep 17 16:15:06 2009 -0400 > +++ b/ChangeLog Fri Sep 18 02:13:00 2009 +0200 > @@ -1,3 +1,9 @@ > +2009-09-18 Matthias Klose > + > + * IcedTeaPlugin.cc (IcedTeaPluginFactory::StartAppletviewer): Fix > + IcedTeaPlugin failure to start with xulrunner 1.9.1 (Launchpad report > + #359407, contributed by "TJ"). > + > 2009-09-17 Man Lung Wong > > * patches/icedtea-jtreg-layoutextragap.patch: > diff -r b9a444f3081b IcedTeaPlugin.cc > --- a/IcedTeaPlugin.cc Thu Sep 17 16:15:06 2009 -0400 > +++ b/IcedTeaPlugin.cc Fri Sep 18 02:13:00 2009 +0200 > @@ -3862,6 +3862,8 @@ > > */ > > +#include > + > nsresult > IcedTeaPluginFactory::StartAppletviewer () > { > @@ -3883,9 +3885,15 @@ > result = file->InitWithNativePath (nsCString (appletviewer_executable)); > PLUGIN_CHECK_RETURN ("init with path", result); > > + // run-time query provided through nsIInterfaceInfoManager > + nsCOMPtr iim(do_GetService(NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID)); > + // get the run-time IID of nsIProcess (don't rely on a the build-time IID) > + nsIID *nsIProcessIID; > + iim->GetIIDForName("nsIProcess", &nsIProcessIID); > + > result = manager->CreateInstanceByContractID (NS_PROCESS_CONTRACTID, > nsnull, > - NS_GET_IID (nsIProcess), > + *nsIProcessIID, > getter_AddRefs (applet_viewer_process)); > PLUGIN_CHECK_RETURN ("create process", result); > From doko at ubuntu.com Fri Sep 18 05:35:03 2009 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 18 Sep 2009 14:35:03 +0200 Subject: [patch] fix plugin with xulrunner-1.9.1 In-Reply-To: <20090918123033.GA15794@redhat.com> References: <4AB2D14A.1070507@ubuntu.com> <20090918123033.GA15794@redhat.com> Message-ID: <4AB37E77.2060105@ubuntu.com> On 18.09.2009 14:30, Deepak Bhole wrote: > * Matthias Klose [2009-09-17 20:16]: >> patch contributed by TJ, see https://launchpad.net/bugs/359407 for the >> original report. >> >> ok for 6, the 1.6 branch and 7? >> >> Matthias >> >> PS: No, I don't know the real name of TJ. > > > Won't this break support for< 1.9.1? I see this header in 1.9.0 as well. http://packages.ubuntu.com/search?searchon=contents&keywords=nsIInterfaceInfoManager.h&mode=exactfilename&suite=karmic&arch=any > Also, we build with 1.9.1 for Fedora all the time: > http://kojipkgs.fedoraproject.org/packages/java-1.6.0-openjdk/1.6.0.0/31.b16.fc12/data/logs/i686/root.log > > "DEBUG util.py:256: 0:xulrunner-devel-1.9.1.2-4.fc12.i686" > > And it built fine.. building is ok. Matthias From dbhole at redhat.com Fri Sep 18 05:59:30 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 18 Sep 2009 08:59:30 -0400 Subject: [patch] fix plugin with xulrunner-1.9.1 In-Reply-To: <4AB2D14A.1070507@ubuntu.com> References: <4AB2D14A.1070507@ubuntu.com> Message-ID: <20090918125930.GA16582@redhat.com> * Matthias Klose [2009-09-17 20:16]: > patch contributed by TJ, see https://launchpad.net/bugs/359407 for the > original report. > > ok for 6, the 1.6 branch and 7? > > Matthias > I don't understand, why are there different run-time and build-time IID's in Ubuntu in the first place? Also, there are multiple uses of NS_GET_IID in the code, so I don't see why only this one fails. Looks like an issue with the way xulrunner is being linked, rather than a problem with the plugin... The plugin is intended to be run with a compatible version of xulrunner with which is was build.. if the IID is differing at runtime, something else is wrong. Cheers, Deepak > PS: No, I don't know the real name of TJ. > diff -r b9a444f3081b ChangeLog > --- a/ChangeLog Thu Sep 17 16:15:06 2009 -0400 > +++ b/ChangeLog Fri Sep 18 02:13:00 2009 +0200 > @@ -1,3 +1,9 @@ > +2009-09-18 Matthias Klose > + > + * IcedTeaPlugin.cc (IcedTeaPluginFactory::StartAppletviewer): Fix > + IcedTeaPlugin failure to start with xulrunner 1.9.1 (Launchpad report > + #359407, contributed by "TJ"). > + > 2009-09-17 Man Lung Wong > > * patches/icedtea-jtreg-layoutextragap.patch: > diff -r b9a444f3081b IcedTeaPlugin.cc > --- a/IcedTeaPlugin.cc Thu Sep 17 16:15:06 2009 -0400 > +++ b/IcedTeaPlugin.cc Fri Sep 18 02:13:00 2009 +0200 > @@ -3862,6 +3862,8 @@ > > */ > > +#include > + > nsresult > IcedTeaPluginFactory::StartAppletviewer () > { > @@ -3883,9 +3885,15 @@ > result = file->InitWithNativePath (nsCString (appletviewer_executable)); > PLUGIN_CHECK_RETURN ("init with path", result); > > + // run-time query provided through nsIInterfaceInfoManager > + nsCOMPtr iim(do_GetService(NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID)); > + // get the run-time IID of nsIProcess (don't rely on a the build-time IID) > + nsIID *nsIProcessIID; > + iim->GetIIDForName("nsIProcess", &nsIProcessIID); > + > result = manager->CreateInstanceByContractID (NS_PROCESS_CONTRACTID, > nsnull, > - NS_GET_IID (nsIProcess), > + *nsIProcessIID, > getter_AddRefs (applet_viewer_process)); > PLUGIN_CHECK_RETURN ("create process", result); > From dbhole at redhat.com Fri Sep 18 06:01:28 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 18 Sep 2009 09:01:28 -0400 Subject: [patch] fix plugin with xulrunner-1.9.1 In-Reply-To: <20090918125930.GA16582@redhat.com> References: <4AB2D14A.1070507@ubuntu.com> <20090918125930.GA16582@redhat.com> Message-ID: <20090918130128.GB16582@redhat.com> * Deepak Bhole [2009-09-18 08:59]: > * Matthias Klose [2009-09-17 20:16]: > > patch contributed by TJ, see https://launchpad.net/bugs/359407 for the > > original report. > > > > ok for 6, the 1.6 branch and 7? > > > > Matthias > > > Doh! Sorry, this was meant to be a response to: >On 18.09.2009 14:30, Deepak Bhole wrote: >> * Matthias Klose [2009-09-17 20:16]: >>> patch contributed by TJ, see https://launchpad.net/bugs/359407 for the >>> original report. >>> >>> ok for 6, the 1.6 branch and 7? >>> >>> Matthias >>> >>> PS: No, I don't know the real name of TJ. >> >> >> Won't this break support for< 1.9.1? > >I see this header in 1.9.0 as well. >http://packages.ubuntu.com/search?searchon=contents&keywords=nsIInterfaceInfoManager.h&mode=exactfilename&suite=karmic&arch=any > >> Also, we build with 1.9.1 for Fedora all the time: >> http://kojipkgs.fedoraproject.org/packages/java-1.6.0-openjdk/1.6.0.0/31.b16.fc12/data/logs/i686/root.log >> >> "DEBUG util.py:256: 0:xulrunner-devel-1.9.1.2-4.fc12.i686" >> >> And it built fine.. > >building is ok. > > Matthias > I don't understand, why are there different run-time and build-time > IID's in Ubuntu in the first place? Also, there are multiple uses of > NS_GET_IID in the code, so I don't see why only this one fails. Looks > like an issue with the way xulrunner is being linked, rather than a > problem with the plugin... > > The plugin is intended to be run with a compatible version of > xulrunner with which is was build.. if the IID is differing at runtime, > something else is wrong. > > Cheers, > Deepak > > > PS: No, I don't know the real name of TJ. > > > diff -r b9a444f3081b ChangeLog > > --- a/ChangeLog Thu Sep 17 16:15:06 2009 -0400 > > +++ b/ChangeLog Fri Sep 18 02:13:00 2009 +0200 > > @@ -1,3 +1,9 @@ > > +2009-09-18 Matthias Klose > > + > > + * IcedTeaPlugin.cc (IcedTeaPluginFactory::StartAppletviewer): Fix > > + IcedTeaPlugin failure to start with xulrunner 1.9.1 (Launchpad report > > + #359407, contributed by "TJ"). > > + > > 2009-09-17 Man Lung Wong > > > > * patches/icedtea-jtreg-layoutextragap.patch: > > diff -r b9a444f3081b IcedTeaPlugin.cc > > --- a/IcedTeaPlugin.cc Thu Sep 17 16:15:06 2009 -0400 > > +++ b/IcedTeaPlugin.cc Fri Sep 18 02:13:00 2009 +0200 > > @@ -3862,6 +3862,8 @@ > > > > */ > > > > +#include > > + > > nsresult > > IcedTeaPluginFactory::StartAppletviewer () > > { > > @@ -3883,9 +3885,15 @@ > > result = file->InitWithNativePath (nsCString (appletviewer_executable)); > > PLUGIN_CHECK_RETURN ("init with path", result); > > > > + // run-time query provided through nsIInterfaceInfoManager > > + nsCOMPtr iim(do_GetService(NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID)); > > + // get the run-time IID of nsIProcess (don't rely on a the build-time IID) > > + nsIID *nsIProcessIID; > > + iim->GetIIDForName("nsIProcess", &nsIProcessIID); > > + > > result = manager->CreateInstanceByContractID (NS_PROCESS_CONTRACTID, > > nsnull, > > - NS_GET_IID (nsIProcess), > > + *nsIProcessIID, > > getter_AddRefs (applet_viewer_process)); > > PLUGIN_CHECK_RETURN ("create process", result); > > > From mwong at redhat.com Fri Sep 18 06:58:01 2009 From: mwong at redhat.com (Man Wong) Date: Fri, 18 Sep 2009 09:58:01 -0400 (EDT) Subject: Patch for review: A small fix in Makefile.am In-Reply-To: <612509034.287011253282253350.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <2105546378.287031253282281922.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Hi, This patch just puts the line patches/icedtea-jtreg-layoutextragap.patch to its proper location, just so we keep the format consistent. Changelog: * Makefile.am: Move the line patches/icedtea-jtreg-layoutextragap.patch to the proper location. Any comments? Ok to push? Thanks, Man Lung Wong -------------- next part -------------- A non-text attachment was scrubbed... Name: layoutextragap.patch Type: application/octet-stream Size: 1180 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090918/f511ed63/layoutextragap.patch From dbhole at redhat.com Fri Sep 18 07:15:31 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 18 Sep 2009 10:15:31 -0400 Subject: Patch for review: A small fix in Makefile.am In-Reply-To: <2105546378.287031253282281922.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <612509034.287011253282253350.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <2105546378.287031253282281922.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20090918141531.GA18484@redhat.com> * Man Wong [2009-09-18 09:58]: > Hi, > > This patch just puts the line patches/icedtea-jtreg-layoutextragap.patch to its proper location, just so we keep the format consistent. > > Changelog: > > * Makefile.am: Move the line patches/icedtea-jtreg-layoutextragap.patch to > the proper location. > > Any comments? Ok to push? > Indentation in the newly added line is incorrect. After fixing that, okay to commit. Deepak > Thanks, > > Man Lung Wong From mwong at icedtea.classpath.org Fri Sep 18 07:31:17 2009 From: mwong at icedtea.classpath.org (mwong at icedtea.classpath.org) Date: Fri, 18 Sep 2009 14:31:17 +0000 Subject: /hg/icedtea6: Formatting fix in Makefile, moved line patches/ice... Message-ID: changeset 0a03bc471039 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0a03bc471039 author: Man Lung Wong date: Fri Sep 18 10:29:00 2009 -0400 Formatting fix in Makefile, moved line patches/icedtea-jtreg- layoutextragap.patch to proper location. diffstat: 2 files changed, 6 insertions(+), 2 deletions(-) ChangeLog | 4 ++++ Makefile.am | 4 ++-- diffs (32 lines): diff -r b9a444f3081b -r 0a03bc471039 ChangeLog --- a/ChangeLog Thu Sep 17 16:15:06 2009 -0400 +++ b/ChangeLog Fri Sep 18 10:29:00 2009 -0400 @@ -1,3 +1,7 @@ 2009-09-17 Man Lung Wong + * Makefile.am: Move the line patches/icedtea-jtreg-layoutextragap.patch to + the proper location. + 2009-09-17 Man Lung Wong * patches/icedtea-jtreg-layoutextragap.patch: diff -r b9a444f3081b -r 0a03bc471039 Makefile.am --- a/Makefile.am Thu Sep 17 16:15:06 2009 -0400 +++ b/Makefile.am Fri Sep 18 10:29:00 2009 -0400 @@ -649,8 +649,7 @@ ICEDTEA_PATCHES = \ patches/security/icedtea-6830335.patch \ patches/security/icedtea-6845701.patch \ patches/security/icedtea-6813167.patch \ - patches/icedtea-jar-misc.patch \ - patches/icedtea-jtreg-layoutextragap.patch + patches/icedtea-jar-misc.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -723,6 +722,7 @@ ICEDTEA_PATCHES += \ patches/icedtea-jtreg-printjob-multiple-end.patch \ patches/icedtea-jtreg-printjob-edgetest-manual.patch \ patches/icedtea-jtreg-jrunscript.patch \ + patches/icedtea-jtreg-layoutextragap.patch \ patches/icedtea-network-unreachable.patch \ patches/icedtea-dnd-filelists.patch \ patches/icedtea-java2d-mitre-join.patch \ From bugzilla-daemon at icedtea.classpath.org Fri Sep 18 09:06:25 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 18 Sep 2009 16:06:25 +0000 Subject: [Bug 344] cacao build broken in IcedTea7 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=344 stefan at complang.tuwien.ac.at changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|WORKSFORME | ------- Comment #3 from stefan at complang.tuwien.ac.at 2009-09-18 16:06 ------- I have exactly the same problem. I'm currently building icedtea-1.11, not the current head, because it's giving me additional, unrelated headaches. -- 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 Sep 18 09:27:09 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 18 Sep 2009 16:27:09 +0000 Subject: [Bug 344] cacao build broken in IcedTea7 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=344 ------- Comment #4 from stefan at complang.tuwien.ac.at 2009-09-18 16:27 ------- Created an attachment (id=263) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=263&action=view) Fixes the build for me The attached patch fixes this problem. I don't know if it breaks the build for other people, though... Today, icedtea is giving me the impression that I've got a very unusual setup here, but that's not the case. The only thing "special" about it may be that it's a clean Fedora install with absolutely no Java-related tweaking going on, and without funky configure-switches. I'm only using "--enable-cacao --with-parallel-jobs=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 michi at complang.tuwien.ac.at Sat Sep 19 15:30:52 2009 From: michi at complang.tuwien.ac.at (Michael Starzinger) Date: Sun, 20 Sep 2009 00:30:52 +0200 Subject: [cacao] mmap first page In-Reply-To: References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> Message-ID: Hello! With the latest changeset [1] I finally disabled the mmap of the first page in our trap handling code by default. Note that this also obsoletes IcedTea's 'cacao-no-mmap-first-page' patch. On 19.05.2009, at 10:51, Michael Starzinger wrote: > 1) If removing the mapping increases the number of systems that CACAO > runs on out of the box, we should do it. The problem is, I cannot > remember which (how many) systems there are which need this explicit > mapping. Can anyone comment on this? This is still true. I strongly suspect that this changeset breaks Cacao for Solaris but I cannot verify that. It would be great if someone could confirm/deny my suspicions. Here is how to fix it correctly. For those arch/OS combinations which need the mmap, set the global opt_AlwaysMmapFirstPage flag to true in the appropriate md_init() function. To find out if you need the mmap, just run extest.java or any other Java application which throws implicit null pointer exceptions. > 3) I still want to have the code available for testing purposes. So I > don't want to remove it completely. My suggestion would be something > like -XX:+MmapFirstPage (better name required) which allows to easily > test this for debug-enabled builds. The switch is called -XX:+AlwaysMmapFirstPage (the name just doesn't get better) and can be used for debugging purposes. PS: Sorry for the (extremely long) delay. I totally forgot about the issue until it hit me yesterday on one of our machines after a system update. References: [1] http://mips.complang.tuwien.ac.at/hg/cacao/rev/52906d568dba -michi From stefan at complang.tuwien.ac.at Sun Sep 20 03:00:48 2009 From: stefan at complang.tuwien.ac.at (Stefan Ring) Date: Sun, 20 Sep 2009 12:00:48 +0200 Subject: [cacao] mmap first page In-Reply-To: References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> Message-ID: <53e878390909200300w6b75caa5s4ace2ee2aded48c2@mail.gmail.com> > With the latest changeset [1] I finally disabled the mmap of the first > page in our trap handling code by default. Note that this also > obsoletes IcedTea's 'cacao-no-mmap-first-page' patch. Funny, I worked on the same thing yesterday in the evening... > This is still true. I strongly suspect that this changeset breaks > Cacao for Solaris but I cannot verify that. It would be great if I can check that on OpenSolaris (i386/x86_64), if this helps. From stefan at complang.tuwien.ac.at Sun Sep 20 23:11:48 2009 From: stefan at complang.tuwien.ac.at (Stefan Ring) Date: Mon, 21 Sep 2009 08:11:48 +0200 Subject: [cacao] mmap first page In-Reply-To: References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> Message-ID: <53e878390909202311r123d0c82jd46d71e5d51482e5@mail.gmail.com> > With the latest changeset [1] I finally disabled the mmap of the first > page in our trap handling code by default. Note that this also > obsoletes IcedTea's 'cacao-no-mmap-first-page' patch. IcedTea uses the 0.99.4 release tarball, so the patch will still need to stay there for quite a while. I've been thinking about making IcedTea pull directly from Mercurial; after all, it does exactly that for all the OpenJDK stuff it pulls. From doko at ubuntu.com Sun Sep 20 23:24:27 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 21 Sep 2009 08:24:27 +0200 Subject: [cacao] mmap first page In-Reply-To: <53e878390909202311r123d0c82jd46d71e5d51482e5@mail.gmail.com> References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> <53e878390909202311r123d0c82jd46d71e5d51482e5@mail.gmail.com> Message-ID: <4AB71C1B.9030302@ubuntu.com> On 21.09.2009 08:11, Stefan Ring wrote: >> With the latest changeset [1] I finally disabled the mmap of the first >> page in our trap handling code by default. Note that this also >> obsoletes IcedTea's 'cacao-no-mmap-first-page' patch. > > IcedTea uses the 0.99.4 release tarball, so the patch will still need > to stay there for quite a while. I've been thinking about making > IcedTea pull directly from Mercurial; after all, it does exactly that > for all the OpenJDK stuff it pulls. the access to repositories is not used by distributuin builds, so you cannot rely on it. maybe the best thing is to prepare a new cacao release (hint, hint) and then require that for the IcedTea build. Matthias From michi at complang.tuwien.ac.at Mon Sep 21 03:42:08 2009 From: michi at complang.tuwien.ac.at (Michael Starzinger) Date: Mon, 21 Sep 2009 12:42:08 +0200 Subject: [cacao] mmap first page In-Reply-To: <53e878390909200300w6b75caa5s4ace2ee2aded48c2@mail.gmail.com> References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> <53e878390909200300w6b75caa5s4ace2ee2aded48c2@mail.gmail.com> Message-ID: <9AEF7092-5F60-4235-A5FA-F61BFE1BF45E@complang.tuwien.ac.at> Hello! On 20.09.2009, at 12:00, Stefan Ring wrote: >> This is still true. I strongly suspect that this changeset breaks >> Cacao for Solaris but I cannot verify that. It would be great if > > I can check that on OpenSolaris (i386/x86_64), if this helps. Yes, that would be great. Please let me/us know of the results. -michi From gnu_andrew at member.fsf.org Mon Sep 21 04:56:05 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 21 Sep 2009 12:56:05 +0100 Subject: PING 3: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS Message-ID: <17c6771e0909210456n58bf417crc83da9da7c7250fe@mail.gmail.com> 2009/9/10 Andrew John Hughes : > 2009/9/8 Andrew John Hughes : >> 2009/9/3 Andrew John Hughes : >>> IcedTea6, as currently built, does not support elliptic curve >>> cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). >>> ?For this to be enabled, the provider must be added to >>> jre/lib/security/java.security and configured to point to the system >>> NSS. >>> >>> With the proprietary JDK, this is not something that can be done 'out >>> of the box', but we can do this with IcedTea by detecting NSS using >>> configure. ?The attached patch does just that. ?It also fixes an issue >>> (6763530) that prevents newer versions of NSS from working. ?When >>> applied, NSS can be enabled just by passing --enable-nss to configure. >>> >>> The following then works: >>> >>> $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC >>> -keysize 256 -keystore ectest.jks >>> Enter keystore password: >>> Re-enter new password: >>> etc. >>> >>> The configure check doesn't verify that NSS was built with EC support. >>> ?I couldn't find an easy way of doing this. ?It is enabled during the >>> build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). ?From >>> mozilla/security/coreconf/config.mk: >>> >>> ifdef NSS_ENABLE_ECC >>> DEFINES += -DNSS_ENABLE_ECC >>> endif >>> >>> Thus the define is not available in the installed headers, so the only >>> way to do a check would seem to be to write code to generate an EC key >>> with NSS and check for failure. ?The same check would later be >>> invalidated if the system NSS changes after OpenJDK is built, and so >>> OpenJDK would need to be rebuilt. >>> >>> If someone wants to write such a test, feel free but AFAICS it >>> wouldn't gain anything. ?OpenJDK will still build (linking is done at >>> runtime) and if NSS doesn't have EC support, then OpenJDK won't which >>> is no different from the current status quo. >>> >>> Does this look ok for commit? >>> >>> ChangeLog: >>> >>> ? ? ? ?* HACKING: Updated. >>> ? ? ? ?* Makefile.am: >>> ? ? ? ?Add two new patches. ?Copy nss.cfg to jre/lib/security if >>> ? ? ? ?NSS is enabled. >>> ? ? ? ?* configure.ac:Check for NSS and set NSS_LIBDIR >>> ? ? ? ?and ENABLE_NSS if found. >>> ? ? ? ?* nss.cfg.in: Template for the nss configuration file. >>> ? ? ? ?* patches/icedtea-nss-6763530.patch: >>> ? ? ? ?Fix for Sun bug 6763530 which is triggered by newer >>> ? ? ? ?versions of NSS. >>> ? ? ? ?* patches/icedtea-nss-config.patch: Patch java.security >>> ? ? ? ?with the PCKS11 provider configuration. >>> >>> -- >>> 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 >>> >> >> Ping? >> >> I know it was a long weekend for some, but the Sun engineers have even >> responded to a patch I posted to hotspot-dev in the same time frame as >> this one... >> -- >> 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 >> > > > Ping! Ping! Ping! > -- > 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 > Ping? -- 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 Mon Sep 21 08:20:20 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 21 Sep 2009 16:20:20 +0100 Subject: [PATCH] drop visualvm without OpenJDK build In-Reply-To: <200909181258.27653.mvyskocil@suse.cz> References: <200909181258.27653.mvyskocil@suse.cz> Message-ID: <17c6771e0909210820o2e610d6q7d83b019b03d16c7@mail.gmail.com> 2009/9/18 Michal Vyskocil : > Hi, > > due the constraints of our build system, which don't allow the cycle in build > (there are a few exceptions, like openjdk itself, where it's allowed) I need > to build visualvm later, due the netbeans dependency. > > The separate build is allowed by make visualvm, but the installation of it is > hardcoded icedtea (icedtea-debug) targets. I moved it to extra target called > drop-visualvm. > > Regards > Michal Vyskocil > Thanks for your contribution. The idea here seems good in general. IMO things like VisualVM, SystemTap support, etc. should be depended on by the 'all' target rather than having this convoluted IcedTea target (which is then duplicated in icedtea-ecj). I'm planning to refactor our whole Makefile structure as a whole, so I'll factor this in rather than applying the patch as is. I'll be doing this on my personal branch: http://icedtea.classpath.org/people/andrew/icedtea then porting the results, once stable over to IcedTea6 and 7. 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 stefan at complang.tuwien.ac.at Mon Sep 21 10:28:37 2009 From: stefan at complang.tuwien.ac.at (Stefan Ring) Date: Mon, 21 Sep 2009 19:28:37 +0200 Subject: [cacao] mmap first page In-Reply-To: <9AEF7092-5F60-4235-A5FA-F61BFE1BF45E@complang.tuwien.ac.at> References: <53e878390905160952r7b014ceay98ded15982bb8784@mail.gmail.com> <53e878390909200300w6b75caa5s4ace2ee2aded48c2@mail.gmail.com> <9AEF7092-5F60-4235-A5FA-F61BFE1BF45E@complang.tuwien.ac.at> Message-ID: <53e878390909211028led634c8y323bea3ad490d548@mail.gmail.com> >>> This is still true. I strongly suspect that this changeset breaks >>> Cacao for Solaris but I cannot verify that. It would be great if >> >> I can check that on OpenSolaris (i386/x86_64), if this helps. > > Yes, that would be great. Please let me/us know of the results. Works fine out-of-the-box. From bugzilla-daemon at icedtea.classpath.org Tue Sep 22 10:59:07 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 22 Sep 2009 17:59:07 +0000 Subject: [Bug 377] TimeZone.getOffset() fails for some TZ Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=377 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- URL|http://bugs.sun.com/bugdatab| |ase/view_bug.do?bug_id=68512| |14 | ------- Comment #15 from gnu_andrew at member.fsf.org 2009-09-22 17:59 ------- Patch in OpenJDK6: http://mail.openjdk.java.net/pipermail/jdk6-dev/2009-September/000739.html -- 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 jon.vanalten at redhat.com Tue Sep 22 14:04:34 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Tue, 22 Sep 2009 17:04:34 -0400 (EDT) Subject: RFC: Patch to correct pulse-java.jar build In-Reply-To: <719748833.670021253653335745.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <840067891.670081253653474626.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Thanks for the comments. ----- "Andrew John Hughes" wrote: > > The definitions: > [snip] > > seem to end up writing to the source directory > (PULSE_JAVA_NATIVE_BUILDDIR = > $(abs_top_srcdir)/pulseaudio/build/native and PULSE_JAVA_CLASS_DIR = > $(abs_top_srcdir)/pulseaudio/build/cp). That's incorrect and will > break make distcheck. The build directories should be in > subdirectories of $(abs_top_builddir). Making PULSE_JAVA_BUILDDIR = > $(abs_top_builddir)/pulseaudio would fix that. > Whoops, thanks for pointing that out. (fixed in both patches.) > The IcedTea7 patch also reintroduces conditionals on ICEDTEA_BOOT_DIR > and the corresponding duplicating javac/jar invocations.. Please > don't do this. These were removed deliberately and will also be > removed from IcedTea6 once I port over > $(INITIAL_BOOTSTRAP_LINK_STAMP). The new JAVAC definitions also drop > IT_JAVACFLAGS, completely reverting it to the IcedTea6 version. > Oh. Hadn't realized this. Far be it from me to undo others' work! Thank goodness for reviews. :-D (reverted relevant portions of icedtea7 patch) The patch for icedtea6 also includes a couple of small edits to the EXTRA_DIST definitions that were breaking distcheck. Does this look better Andrew? Actually, distcheck is still broken in icedtea6 afaics even with these fixes, but I haven't figured out how to fix. To be specific, when it does 'rm -rf lib' a bunch of files in lib/rt/net/sourceforge/jnlp/resources/ resist removal with Permission denied errors. This rm call is within the target distcheck: && $(MAKE) $(AM_MAKEFLAGS) distcleancheck: distclean: distclean-am: distclean-local (ie it's in the distclean-local target, but that is the target chain leading to it.) The resources directory for whatever reason (this is what I haven't figured out) has 555 permissions, although its parents all seem to have 775. I've reproduced this twice on my F11 system. Does anyone have any ideas why this might be? cheers, jon -------------- next part -------------- A non-text attachment was scrubbed... Name: pulse6.patch Type: text/x-patch Size: 8106 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090922/ac36038e/pulse6.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: pulse7.patch Type: text/x-patch Size: 5353 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090922/ac36038e/pulse7.patch From gnu_andrew at member.fsf.org Tue Sep 22 14:54:18 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Tue, 22 Sep 2009 22:54:18 +0100 Subject: RFC: Patch to correct pulse-java.jar build In-Reply-To: <840067891.670081253653474626.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <719748833.670021253653335745.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <840067891.670081253653474626.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <17c6771e0909221454y18a7bd78p5ba45dc668d6e080@mail.gmail.com> 2009/9/22 : > Thanks for the comments. > > ----- "Andrew John Hughes" wrote: > >> >> The definitions: >> > [snip] >> >> seem to end up writing to the source directory >> (PULSE_JAVA_NATIVE_BUILDDIR = >> $(abs_top_srcdir)/pulseaudio/build/native and PULSE_JAVA_CLASS_DIR = >> $(abs_top_srcdir)/pulseaudio/build/cp). ?That's incorrect and will >> break make distcheck. ?The build directories should be in >> subdirectories of $(abs_top_builddir). ?Making PULSE_JAVA_BUILDDIR = >> $(abs_top_builddir)/pulseaudio would fix that. >> > > Whoops, thanks for pointing that out. > (fixed in both patches.) > >> The IcedTea7 patch also reintroduces conditionals on ICEDTEA_BOOT_DIR >> and the corresponding duplicating javac/jar invocations.. ?Please >> don't do this. ?These were removed deliberately and will also be >> removed from IcedTea6 once I port over >> $(INITIAL_BOOTSTRAP_LINK_STAMP). ?The new JAVAC definitions also drop >> IT_JAVACFLAGS, completely reverting it to the IcedTea6 version. >> > > Oh. ?Hadn't realized this. ?Far be it from me to undo others' work! ?Thank goodness for reviews. ?:-D > (reverted relevant portions of icedtea7 patch) > Yeah, that's why we have them ;) Looks good to me now, assuming it builds ok. > The patch for icedtea6 also includes a couple of small edits to the EXTRA_DIST definitions that were breaking distcheck. ?Does this look better Andrew? > Looks good; IcedTea7 has the same thing. > Actually, distcheck is still broken in icedtea6 afaics even with these fixes, It's never worked AFAIK, so don't worry too much about getting it fixed with just one patch. but I haven't figured out how to fix. ?To be specific, when it does 'rm -rf lib' a bunch of files in lib/rt/net/sourceforge/jnlp/resources/ resist removal with Permission denied errors. ?This rm call is within the target > > ?distcheck: && $(MAKE) $(AM_MAKEFLAGS) distcleancheck: distclean: distclean-am: distclean-local > > (ie it's in the distclean-local target, but that is the target chain leading to it.) ?The resources directory for whatever reason (this is what I haven't figured out) has 555 permissions, although its parents all seem to have 775. ?I've reproduced this twice on my F11 system. ?Does anyone have any ideas why this might be? > This: cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ lib/rt/net/sourceforge/jnlp/ is your culprit under rt-class-files.stamp. You need something like this: find lib/rt/net/sourceforge/jnlp -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ make distcheck makes the source files read only specifically so writes to the source directory can be detected. So if you're copying stuff from there, you need to give the copies writable permissions. Unfortunately there doesn't seem to be a switch to cp that stops it copying the permissions (I've tried --no-preserve=mode and --no-preserve=all to no success). > cheers, > > jon 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 vanaltj at icedtea.classpath.org Wed Sep 23 07:53:00 2009 From: vanaltj at icedtea.classpath.org (vanaltj at icedtea.classpath.org) Date: Wed, 23 Sep 2009 14:53:00 +0000 Subject: /hg/icedtea: Remove unnecessary files from pulse-java.jar build. Message-ID: changeset c3b3af26b93f in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=c3b3af26b93f author: Jon VanAlten date: Wed Sep 23 10:44:18 2009 -0400 Remove unnecessary files from pulse-java.jar build. 2009-09-23 Jon VanAlten * Makefile.am: Build PulseAudio class files into distinct subdirectory. diffstat: 1 file changed, 15 insertions(+), 17 deletions(-) Makefile.am | 32 +++++++++++++++----------------- diffs (77 lines): diff -r 755ac518cabd -r c3b3af26b93f Makefile.am --- a/Makefile.am Fri Sep 11 15:32:10 2009 +0100 +++ b/Makefile.am Wed Sep 23 10:44:18 2009 -0400 @@ -49,13 +49,14 @@ if ENABLE_PULSE_JAVA # include the makefile in pulseaudio subdir PULSE_JAVA_DIR = $(abs_top_srcdir)/pulseaudio PULSE_JAVA_NATIVE_SRCDIR = $(PULSE_JAVA_DIR)/src/native -PULSE_JAVA_NATIVE_BUILDDIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_BUILDDIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_NATIVE_BUILDDIR = $(PULSE_JAVA_BUILDDIR)/native PULSE_JAVA_JAVA_SRCDIR = $(PULSE_JAVA_DIR)/src/java -PULSE_JAVA_CLASS_DIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_CLASS_DIR = $(PULSE_JAVA_BUILDDIR)/classes else PULSE_JAVA_DIR = PULSE_JAVA_NATIVE_SRCDIR = -PULSE_JAVA_NATIVE_BUILDDIR = +PULSE_JAVA_NATIVE_BUILDDIR = PULSE_JAVA_JAVA_SRCDIR = PULSE_JAVA_CLASS_DIR = endif @@ -3280,15 +3281,13 @@ endif stamps/pulse-java.stamp: stamps/pulse-java-jar.stamp stamps/pulse-java-headers.stamp if ENABLE_PULSE_JAVA - $(CC) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/jni-common.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(builddir)/pulseaudio $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_EventLoop.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(builddir)/pulseaudio $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Operation.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(builddir)/pulseaudio $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Stream.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(builddir)/pulseaudio $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(builddir)/pulseaudio $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c - $(CC) $(LDFLAGS) -shared org_*pulseaudio*.o jni-common.o $(LIBPULSE_LIBS) -o libpulse-java.so - mv org_classpath_icedtea_pulseaudio_*.o $(PULSE_JAVA_CLASS_DIR) - mv jni-common.o $(PULSE_JAVA_CLASS_DIR) + mkdir -p $(PULSE_JAVA_NATIVE_BUILDDIR) + $(CC) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/jni-common.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/jni-common.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_EventLoop.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_EventLoop.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Operation.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_Operation.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Stream.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_Stream.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.o + $(CC) $(LDFLAGS) -shared $(PULSE_JAVA_NATIVE_BUILDDIR)/org_*pulseaudio*.o $(PULSE_JAVA_NATIVE_BUILDDIR)/jni-common.o $(LIBPULSE_LIBS) -o libpulse-java.so endif mkdir -p stamps touch stamps/pulse-java.stamp @@ -3296,7 +3295,7 @@ stamps/pulse-java-jar.stamp: stamps/puls stamps/pulse-java-jar.stamp: stamps/pulse-java-class.stamp if ENABLE_PULSE_JAVA mkdir -p $(PULSE_JAVA_CLASS_DIR); - $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) .; + $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) . endif mkdir -p stamps touch stamps/pulse-java-jar.stamp @@ -3307,7 +3306,7 @@ if ENABLE_PULSE_JAVA (cd $(PULSE_JAVA_JAVA_SRCDIR); \ $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d $(PULSE_JAVA_CLASS_DIR)\ -bootclasspath '$(ICEDTEA_BOOT_DIR)/jre/lib/rt.jar' \ - org/classpath/icedtea/pulseaudio/*.java\ + org/classpath/icedtea/pulseaudio/*.java\ ) cp -r $(PULSE_JAVA_JAVA_SRCDIR)/META-INF $(PULSE_JAVA_CLASS_DIR) chmod -R ug+w $(PULSE_JAVA_CLASS_DIR)/META-INF @@ -3339,12 +3338,11 @@ endif clean-pulse-java: if ENABLE_PULSE_JAVA - [ -z "$(PULSE_JAVA_CLASS_DIR)" ] || find $(PULSE_JAVA_CLASS_DIR) -name '*.class' | xargs -r rm -f - [ -z "$(PULSE_JAVA_NATIVE_BUILDDIR)" ] || rm -f $(PULSE_JAVA_NATIVE_BUILDDIR)/org_*.h $(PULSE_JAVA_NATIVE_BUILDDIR)/*.o + [ -z "$(PULSE_JAVA_NATIVE_BUILDDIR)" ] || rm -rf $(PULSE_JAVA_NATIVE_BUILDDIR) + [ -z "$(PULSE_JAVA_CLASS_DIR)" ] || rm -rf $(PULSE_JAVA_CLASS_DIR) rm -f stamps/pulse-java*.stamp rm -f pulse-java.jar rm -f libpulse-java.so - rm -rf $(PULSE_JAVA_CLASS_DIR)/META-INF endif # end of pulse-java From vanaltj at icedtea.classpath.org Wed Sep 23 10:32:36 2009 From: vanaltj at icedtea.classpath.org (vanaltj at icedtea.classpath.org) Date: Wed, 23 Sep 2009 17:32:36 +0000 Subject: /hg/icedtea: Replace semicolon accidentally deleted in previous ... Message-ID: changeset 203eeb090de7 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=203eeb090de7 author: Jon VanAlten date: Wed Sep 23 13:32:00 2009 -0400 Replace semicolon accidentally deleted in previous commit. 2009-09-23 Jon VanAlten * Makefile.am: Insert missing semicolon. diffstat: 1 file changed, 1 insertion(+), 1 deletion(-) Makefile.am | 2 +- diffs (12 lines): diff -r c3b3af26b93f -r 203eeb090de7 Makefile.am --- a/Makefile.am Wed Sep 23 10:44:18 2009 -0400 +++ b/Makefile.am Wed Sep 23 13:32:00 2009 -0400 @@ -3295,7 +3295,7 @@ stamps/pulse-java-jar.stamp: stamps/puls stamps/pulse-java-jar.stamp: stamps/pulse-java-class.stamp if ENABLE_PULSE_JAVA mkdir -p $(PULSE_JAVA_CLASS_DIR); - $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) . + $(ICEDTEA_BOOT_DIR)/bin/jar cf pulse-java.jar -C $(PULSE_JAVA_CLASS_DIR) .; endif mkdir -p stamps touch stamps/pulse-java-jar.stamp From vanaltj at icedtea.classpath.org Wed Sep 23 13:27:35 2009 From: vanaltj at icedtea.classpath.org (vanaltj at icedtea.classpath.org) Date: Wed, 23 Sep 2009 20:27:35 +0000 Subject: /hg/icedtea: Include ChangeLog entry Message-ID: changeset 0b502a4ae3ff in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=0b502a4ae3ff author: Jon VanAlten date: Wed Sep 23 16:24:04 2009 -0400 Include ChangeLog entry 2009-09-23 Jon VanAlten * Changelog: Updated. diffstat: 1 file changed, 5 insertions(+) ChangeLog | 5 +++++ diffs (12 lines): diff -r 203eeb090de7 -r 0b502a4ae3ff ChangeLog --- a/ChangeLog Wed Sep 23 13:32:00 2009 -0400 +++ b/ChangeLog Wed Sep 23 16:24:04 2009 -0400 @@ -1,3 +1,8 @@ 2009-09-04 Andrew John Hughes + + * Makefile.am: + Build PulseAudio class files into distinct subdirectory. + 2009-09-04 Andrew John Hughes * HACKING: Updated. From vanaltj at icedtea.classpath.org Thu Sep 24 10:51:26 2009 From: vanaltj at icedtea.classpath.org (vanaltj at icedtea.classpath.org) Date: Thu, 24 Sep 2009 17:51:26 +0000 Subject: /hg/icedtea6: Remove unnecessary files from pulse-java.jar build. Message-ID: changeset b9c4bedba90e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b9c4bedba90e author: Jon VanAlten date: Thu Sep 24 13:52:11 2009 -0400 Remove unnecessary files from pulse-java.jar build. 2009-09-24 Jon VanAlten * Makefile.am: Build PulseAudio class files into distinct subdirectory. diffstat: 2 files changed, 29 insertions(+), 22 deletions(-) ChangeLog | 4 ++++ Makefile.am | 47 +++++++++++++++++++++++++---------------------- diffs (101 lines): diff -r 0a03bc471039 -r b9c4bedba90e ChangeLog --- a/ChangeLog Fri Sep 18 10:29:00 2009 -0400 +++ b/ChangeLog Thu Sep 24 13:52:11 2009 -0400 @@ -1,3 +1,7 @@ 2009-09-18 Man Lung Wong + * Makefile.am: + Build PulseAudio class files into distinct subdirectory. + 2009-09-18 Man Lung Wong * Makefile.am: Move the line patches/icedtea-jtreg-layoutextragap.patch to the proper location. diff -r 0a03bc471039 -r b9c4bedba90e Makefile.am --- a/Makefile.am Fri Sep 18 10:29:00 2009 -0400 +++ b/Makefile.am Thu Sep 24 13:52:11 2009 -0400 @@ -45,11 +45,15 @@ if ENABLE_PULSE_JAVA # include the makefile in pulseaudio subdir PULSE_JAVA_DIR = $(abs_top_srcdir)/pulseaudio PULSE_JAVA_NATIVE_SRCDIR = $(PULSE_JAVA_DIR)/src/native +PULSE_JAVA_BUILDDIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_NATIVE_BUILDDIR = $(PULSE_JAVA_BUILDDIR)/native PULSE_JAVA_JAVA_SRCDIR = $(PULSE_JAVA_DIR)/src/java -PULSE_JAVA_CLASS_DIR = $(abs_top_builddir)/pulseaudio +PULSE_JAVA_CLASS_DIR = $(PULSE_JAVA_BUILDDIR)/classes else PULSE_JAVA_DIR = PULSE_JAVA_NATIVE_SRCDIR = +PULSE_JAVA_BUILDDIR = +PULSE_JAVA_NATIVE_BUILDDIR = PULSE_JAVA_JAVA_SRCDIR = PULSE_JAVA_CLASS_DIR = endif @@ -1748,15 +1752,13 @@ endif stamps/pulse-java.stamp: stamps/pulse-java-jar.stamp stamps/pulse-java-headers.stamp if ENABLE_PULSE_JAVA - $(CC) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/jni-common.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_EventLoop.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Operation.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Stream.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c - $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c - $(CC) $(LDFLAGS) -shared org_*pulseaudio*.o jni-common.o $(LIBPULSE_LIBS) -o libpulse-java.so - mv org_classpath_icedtea_pulseaudio_*.o $(PULSE_JAVA_CLASS_DIR) - mv jni-common.o $(PULSE_JAVA_CLASS_DIR) + mkdir -p $(PULSE_JAVA_NATIVE_BUILDDIR) + $(CC) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include $(PULSE_JAVA_NATIVE_SRCDIR)/jni-common.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/jni-common.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_EventLoop.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_EventLoop.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Operation.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_Operation.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_Stream.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_Stream.o + $(CC) $(LIBPULSE_CFLAGS) $(CFLAGS) -fPIC -c -I$(ICEDTEA_BOOT_DIR)/include/linux -I$(ICEDTEA_BOOT_DIR)/include -I$(PULSE_JAVA_NATIVE_BUILDDIR) $(PULSE_JAVA_NATIVE_SRCDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c -o $(PULSE_JAVA_NATIVE_BUILDDIR)/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.o + $(CC) $(LDFLAGS) -shared $(PULSE_JAVA_NATIVE_BUILDDIR)/org_*pulseaudio*.o $(PULSE_JAVA_NATIVE_BUILDDIR)/jni-common.o $(LIBPULSE_LIBS) -o libpulse-java.so endif mkdir -p stamps touch stamps/pulse-java.stamp @@ -1794,6 +1796,7 @@ if ENABLE_PULSE_JAVA ) \ fi cp -r $(PULSE_JAVA_JAVA_SRCDIR)/META-INF $(PULSE_JAVA_CLASS_DIR) + chmod -R ug+w $(PULSE_JAVA_CLASS_DIR)/META-INF endif mkdir -p stamps touch stamps/pulse-java-class.stamp @@ -1803,17 +1806,17 @@ if ENABLE_PULSE_JAVA if ENABLE_PULSE_JAVA if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ - $(JAVAH) -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.EventLoop ; \ - $(JAVAH) -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Stream ; \ - $(JAVAH) -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Operation; \ - $(JAVAH) -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioSourcePort ; \ - $(JAVAH) -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioTargetPort ; \ + $(JAVAH) -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.EventLoop ; \ + $(JAVAH) -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Stream ; \ + $(JAVAH) -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Operation; \ + $(JAVAH) -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioSourcePort ; \ + $(JAVAH) -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioTargetPort ; \ else \ - $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.EventLoop ; \ - $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Stream ; \ - $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Operation; \ - $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioSourcePort ; \ - $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_SRCDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioTargetPort ; \ + $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.EventLoop ; \ + $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Stream ; \ + $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.Operation; \ + $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioSourcePort ; \ + $(ICEDTEA_BOOT_DIR)/bin/javah -d $(PULSE_JAVA_NATIVE_BUILDDIR) -classpath $(PULSE_JAVA_CLASS_DIR) org.classpath.icedtea.pulseaudio.PulseAudioTargetPort ; \ fi endif mkdir -p stamps @@ -1822,8 +1825,8 @@ endif clean-pulse-java: if ENABLE_PULSE_JAVA - [ -z "$(PULSE_JAVA_CLASS_DIR)" ] || find $(PULSE_JAVA_CLASS_DIR) -name '*.class' | xargs -r rm -f - [ -z "$(PULSE_JAVA_NATIVE_SRCDIR)" ] || rm -f $(PULSE_JAVA_NATIVE_SRCDIR)/org_*.h $(PULSE_JAVA_NATIVE_SRCDIR)/*.o + [ -z "$(PULSE_JAVA_NATIVE_BUILDDIR)" ] || rm -rf $(PULSE_JAVA_NATIVE_BUILDDIR) + [ -z "$(PULSE_JAVA_CLASS_DIR)" ] || rm -rf $(PULSE_JAVA_CLASS_DIR) rm -f stamps/pulse-java*.stamp rm -f pulse-java.jar rm -f libpulse-java.so From gbenson at icedtea.classpath.org Fri Sep 25 02:42:37 2009 From: gbenson at icedtea.classpath.org (gbenson at icedtea.classpath.org) Date: Fri, 25 Sep 2009 09:42:37 +0000 Subject: /hg/icedtea6: 2009-09-25 Gary Benson Message-ID: changeset 2a3725ce72d4 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2a3725ce72d4 author: Gary Benson date: Fri Sep 25 05:35:49 2009 -0400 2009-09-25 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Moved ffi.h to... * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: ...here. * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp: Replaced with... * ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp: New file. * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp: Removed reference to ZeroStackPrinter. * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: Replaced references to deoptimizer frame with fake stub frame. * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp: Likewise. diffstat: 13 files changed, 111 insertions(+), 103 deletions(-) ChangeLog | 27 ++++++ ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp | 55 -------------- ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp | 53 +++++++++++++ ports/hotspot/src/cpu/zero/vm/frame_zero.cpp | 38 +++------ ports/hotspot/src/cpu/zero/vm/frame_zero.hpp | 4 - ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 4 - ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp | 2 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp | 1 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp | 14 +-- ports/hotspot/src/share/vm/shark/sharkRuntime.cpp | 12 +-- diffs (427 lines): diff -r b9c4bedba90e -r 2a3725ce72d4 ChangeLog --- a/ChangeLog Thu Sep 24 13:52:11 2009 -0400 +++ b/ChangeLog Fri Sep 25 05:35:49 2009 -0400 @@ -1,10 +1,33 @@ 2009-09-24 Jon VanAlten + + * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Moved ffi.h to... + * ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp: ...here. + + * ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp: + Replaced with... + * ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp: New file. + + * ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp: + Removed reference to ZeroStackPrinter. + * ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Likewise. + + * ports/hotspot/src/cpu/zero/vm/frame_zero.hpp: + Replaced references to deoptimizer frame with fake stub frame. + * ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/frame_zero.cpp: Likewise. + * ports/hotspot/src/cpu/zero/vm/stack_zero.hpp: Likewise. + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp: Likewise. + 2009-09-24 Jon VanAlten + * Makefile.am: Build PulseAudio class files into distinct subdirectory. 2009-09-18 Man Lung Wong - * Makefile.am: Move the line patches/icedtea-jtreg-layoutextragap.patch to - the proper location. + + * Makefile.am: Move the line + patches/icedtea-jtreg-layoutextragap.patch to the proper location. 2009-09-17 Man Lung Wong diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -64,6 +64,5 @@ address ShouldNotCallThisEntry(); // Nothing to do with the assembler (or lack of), // just a real convenient place to include these. -#include #include #include diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/deoptimizerFrame_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008 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. - * - */ - -// | ... | -// +--------------------+ ------------------ -// | frame_type | low addresses -// | next_frame | high addresses -// +--------------------+ ------------------ -// | ... | - -class DeoptimizerFrame : public ZeroFrame { - friend class ZeroStackPrinter; - - private: - DeoptimizerFrame() : ZeroFrame() { - ShouldNotCallThis(); - } - - protected: - enum Layout { - header_words = jf_header_words - }; - - public: - static DeoptimizerFrame *build(ZeroStack* stack); - - public: - void identify_word(int frame_index, - int offset, - char* fieldbuf, - char* valuebuf, - int buflen) const; -}; diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -35,8 +35,6 @@ // | ... | class EntryFrame : public ZeroFrame { - friend class ZeroStackPrinter; - private: EntryFrame() : ZeroFrame() { ShouldNotCallThis(); diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -0,0 +1,53 @@ +/* + * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2008 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. + * + */ + +// | ... | +// +--------------------+ ------------------ +// | frame_type | low addresses +// | next_frame | high addresses +// +--------------------+ ------------------ +// | ... | + +class FakeStubFrame : public ZeroFrame { + private: + FakeStubFrame() : ZeroFrame() { + ShouldNotCallThis(); + } + + protected: + enum Layout { + header_words = jf_header_words + }; + + public: + static FakeStubFrame *build(ZeroStack* stack); + + public: + void identify_word(int frame_index, + int offset, + char* fieldbuf, + char* valuebuf, + int buflen) const {} +}; diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.cpp Fri Sep 25 05:35:49 2009 -0400 @@ -36,8 +36,8 @@ bool frame::is_interpreted_frame() const return zeroframe()->is_interpreter_frame(); } -bool frame::is_deoptimizer_frame() const { - return zeroframe()->is_deoptimizer_frame(); +bool frame::is_fake_stub_frame() const { + return zeroframe()->is_fake_stub_frame(); } frame frame::sender_for_entry_frame(RegisterMap *map) const { @@ -58,7 +58,7 @@ frame frame::sender_for_compiled_frame(R return frame(sender_sp(), sp() + 1); } -frame frame::sender_for_deoptimizer_frame(RegisterMap *map) const { +frame frame::sender_for_fake_stub_frame(RegisterMap *map) const { return frame(sender_sp(), sp() + 1); } @@ -73,13 +73,11 @@ frame frame::sender(RegisterMap* map) co if (is_interpreted_frame()) return sender_for_interpreter_frame(map); - assert(_cb == CodeCache::find_blob(pc()),"Must be the same"); - if (_cb != NULL) { + if (is_compiled_frame()) return sender_for_compiled_frame(map); - } - - if (is_deoptimizer_frame()) - return sender_for_deoptimizer_frame(map); + + if (is_fake_stub_frame()) + return sender_for_fake_stub_frame(map); ShouldNotReachHere(); } @@ -224,8 +222,8 @@ void ZeroFrame::identify_word(int fram strncpy(valuebuf, "INTERPRETER_FRAME", buflen); else if (is_shark_frame()) strncpy(valuebuf, "SHARK_FRAME", buflen); - else if (is_deoptimizer_frame()) - strncpy(valuebuf, "DEOPTIMIZER_FRAME", buflen); + else if (is_fake_stub_frame()) + strncpy(valuebuf, "FAKE_STUB_FRAME", buflen); break; default: @@ -241,8 +239,8 @@ void ZeroFrame::identify_word(int fram as_shark_frame()->identify_word( frame_index, offset, fieldbuf, valuebuf, buflen); } - else if (is_deoptimizer_frame()) { - as_deoptimizer_frame()->identify_word( + else if (is_fake_stub_frame()) { + as_fake_stub_frame()->identify_word( frame_index, offset, fieldbuf, valuebuf, buflen); } } @@ -281,7 +279,8 @@ void InterpreterFrame::identify_word(int } else if (is_valid && !strcmp(field, "_bcp") && istate->bcp()) { snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", - istate->bcp(), istate->method()->bci_from(istate->bcp())); + (intptr_t) istate->bcp(), + istate->method()->bci_from(istate->bcp())); } snprintf(fieldbuf, buflen, "%sistate->%s", field[strlen(field) - 1] == ')' ? "(": "", field); @@ -351,7 +350,8 @@ void SharkFrame::identify_word(int fra nmethod *code = method()->code(); if (code && code->pc_desc_at(pc())) { SimpleScopeDesc ssd(code, pc()); - snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", pc(), ssd.bci()); + snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)", + (intptr_t) pc(), ssd.bci()); } } return; @@ -412,11 +412,3 @@ void ZeroFrame::identify_vp_word(int return; } } - -void DeoptimizerFrame::identify_word(int frame_index, - int offset, - char* fieldbuf, - char* valuebuf, - int buflen) const { - // Deoptimizer frames have no extra words to identify -} diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/frame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -65,10 +65,10 @@ } public: - bool is_deoptimizer_frame() const; + bool is_fake_stub_frame() const; public: - frame sender_for_deoptimizer_frame(RegisterMap* map) const; + frame sender_for_fake_stub_frame(RegisterMap* map) const; public: void zero_print_on_error(int index, diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp --- a/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -26,7 +26,7 @@ #include #include #include -#include +#include // Constructors @@ -57,7 +57,7 @@ inline frame::frame(intptr_t* sp, intptr _cb = CodeCache::find_blob_unsafe(pc()); break; - case ZeroFrame::DEOPTIMIZER_FRAME: + case ZeroFrame::FAKE_STUB_FRAME: _pc = NULL; _cb = NULL; break; diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/globalDefinitions_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -23,4 +23,4 @@ * */ -// This file is intentionally empty +#include diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -39,7 +39,6 @@ // | ... | class InterpreterFrame : public ZeroFrame { - friend class ZeroStackPrinter; friend class AbstractInterpreter; private: diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -41,7 +41,6 @@ // | ... | class SharkFrame : public ZeroFrame { - friend class ZeroStackPrinter; friend class SharkFunction; private: diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/cpu/zero/vm/stack_zero.hpp --- a/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/cpu/zero/vm/stack_zero.hpp Fri Sep 25 05:35:49 2009 -0400 @@ -97,7 +97,7 @@ class EntryFrame; class EntryFrame; class InterpreterFrame; class SharkFrame; -class DeoptimizerFrame; +class FakeStubFrame; // // | ... | @@ -127,7 +127,7 @@ class ZeroFrame { ENTRY_FRAME = 0xCAFEBABE, INTERPRETER_FRAME, SHARK_FRAME, - DEOPTIMIZER_FRAME + FAKE_STUB_FRAME }; protected: @@ -158,8 +158,8 @@ class ZeroFrame { bool is_shark_frame() const { return type() == SHARK_FRAME; } - bool is_deoptimizer_frame() const { - return type() == DEOPTIMIZER_FRAME; + bool is_fake_stub_frame() const { + return type() == FAKE_STUB_FRAME; } public: @@ -175,9 +175,9 @@ class ZeroFrame { assert(is_shark_frame(), "should be"); return (SharkFrame *) this; } - DeoptimizerFrame *as_deoptimizer_frame() const { - assert(is_deoptimizer_frame(), "should be"); - return (DeoptimizerFrame *) this; + FakeStubFrame *as_fake_stub_frame() const { + assert(is_fake_stub_frame(), "should be"); + return (FakeStubFrame *) this; } public: diff -r b9c4bedba90e -r 2a3725ce72d4 ports/hotspot/src/share/vm/shark/sharkRuntime.cpp --- a/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Thu Sep 24 13:52:11 2009 -0400 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Fri Sep 25 05:35:49 2009 -0400 @@ -203,7 +203,7 @@ void SharkRuntime::uncommon_trap(JavaThr // being deopted one frame down on the stack. Create a dummy frame // to mirror this. ZeroStack *stack = thread->zero_stack(); - thread->push_zero_frame(DeoptimizerFrame::build(stack)); + thread->push_zero_frame(FakeStubFrame::build(stack)); // Initiate the trap thread->set_last_Java_frame(); @@ -223,7 +223,7 @@ void SharkRuntime::uncommon_trap(JavaThr } // Push another dummy frame - thread->push_zero_frame(DeoptimizerFrame::build(stack)); + thread->push_zero_frame(FakeStubFrame::build(stack)); // Fill in the skeleton frames thread->set_last_Java_frame(); @@ -241,7 +241,7 @@ void SharkRuntime::uncommon_trap(JavaThr #endif // CC_INTERP } -DeoptimizerFrame* DeoptimizerFrame::build(ZeroStack* stack) +FakeStubFrame* FakeStubFrame::build(ZeroStack* stack) { if (header_words > stack->available_words()) { Unimplemented(); @@ -251,8 +251,8 @@ DeoptimizerFrame* DeoptimizerFrame::buil intptr_t *fp = stack->sp(); assert(fp - stack->sp() == next_frame_off, "should be"); - stack->push(DEOPTIMIZER_FRAME); + stack->push(FAKE_STUB_FRAME); assert(fp - stack->sp() == frame_type_off, "should be"); - return (DeoptimizerFrame *) fp; -} + return (FakeStubFrame *) fp; +} From doko at ubuntu.com Mon Sep 28 05:40:04 2009 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 28 Sep 2009 14:40:04 +0200 Subject: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS In-Reply-To: <17c6771e0909031250o7e0b4e99k3d46ddaa93f28316@mail.gmail.com> References: <17c6771e0909031250o7e0b4e99k3d46ddaa93f28316@mail.gmail.com> Message-ID: <4AC0AEA4.8020405@ubuntu.com> On 03.09.2009 21:50, Andrew John Hughes wrote: > IcedTea6, as currently built, does not support elliptic curve > cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). > For this to be enabled, the provider must be added to > jre/lib/security/java.security and configured to point to the system > NSS. > > With the proprietary JDK, this is not something that can be done 'out > of the box', but we can do this with IcedTea by detecting NSS using > configure. The attached patch does just that. It also fixes an issue > (6763530) that prevents newer versions of NSS from working. When > applied, NSS can be enabled just by passing --enable-nss to configure. > > The following then works: > > $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC > -keysize 256 -keystore ectest.jks > Enter keystore password: > Re-enter new password: > etc. > > The configure check doesn't verify that NSS was built with EC support. > I couldn't find an easy way of doing this. It is enabled during the > build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). From > mozilla/security/coreconf/config.mk: > > ifdef NSS_ENABLE_ECC > DEFINES += -DNSS_ENABLE_ECC > endif > > Thus the define is not available in the installed headers, so the only > way to do a check would seem to be to write code to generate an EC key > with NSS and check for failure. The same check would later be > invalidated if the system NSS changes after OpenJDK is built, and so > OpenJDK would need to be rebuilt. > > If someone wants to write such a test, feel free but AFAICS it > wouldn't gain anything. OpenJDK will still build (linking is done at > runtime) and if NSS doesn't have EC support, then OpenJDK won't which > is no different from the current status quo. > > Does this look ok for commit? > > ChangeLog: > > * HACKING: Updated. > * Makefile.am: > Add two new patches. Copy nss.cfg to jre/lib/security if > NSS is enabled. > * configure.ac:Check for NSS and set NSS_LIBDIR > and ENABLE_NSS if found. > * nss.cfg.in: Template for the nss configuration file. > * patches/icedtea-nss-6763530.patch: > Fix for Sun bug 6763530 which is triggered by newer > versions of NSS. > * patches/icedtea-nss-config.patch: Patch java.security > with the PCKS11 provider configuration. > tested the patch on the 1.6 branch, and checked that the certificate from the bug report can be imported in a keystore. Could you mention the bug number in the changelog as well? Matthias From gnu_andrew at member.fsf.org Mon Sep 28 10:51:27 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 28 Sep 2009 18:51:27 +0100 Subject: [PATCH FOR REVIEW]: Support PKCS11 cryptography via NSS In-Reply-To: <4AC0AEA4.8020405@ubuntu.com> References: <17c6771e0909031250o7e0b4e99k3d46ddaa93f28316@mail.gmail.com> <4AC0AEA4.8020405@ubuntu.com> Message-ID: <17c6771e0909281051w58cdf52bgdd12d8a7a6e8a17d@mail.gmail.com> 2009/9/28 Matthias Klose : > On 03.09.2009 21:50, Andrew John Hughes wrote: >> >> IcedTea6, as currently built, does not support elliptic curve >> cryptography (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356). >> ?For this to be enabled, the provider must be added to >> jre/lib/security/java.security and configured to point to the system >> NSS. >> >> With the proprietary JDK, this is not something that can be done 'out >> of the box', but we can do this with IcedTea by detecting NSS using >> configure. ?The attached patch does just that. ?It also fixes an issue >> (6763530) that prevents newer versions of NSS from working. ?When >> applied, NSS can be enabled just by passing --enable-nss to configure. >> >> The following then works: >> >> $ /home/andrew/build/icedtea6/bin/keytool -v -genkeypair -keyalg EC >> -keysize 256 -keystore ectest.jks >> Enter keystore password: >> Re-enter new password: >> etc. >> >> The configure check doesn't verify that NSS was built with EC support. >> ?I couldn't find an easy way of doing this. ?It is enabled during the >> build by defining NSS_ENABLE_ECC (-DNSS_ENABLE_ESS). ?From >> mozilla/security/coreconf/config.mk: >> >> ifdef NSS_ENABLE_ECC >> DEFINES += -DNSS_ENABLE_ECC >> endif >> >> Thus the define is not available in the installed headers, so the only >> way to do a check would seem to be to write code to generate an EC key >> with NSS and check for failure. ?The same check would later be >> invalidated if the system NSS changes after OpenJDK is built, and so >> OpenJDK would need to be rebuilt. >> >> If someone wants to write such a test, feel free but AFAICS it >> wouldn't gain anything. ?OpenJDK will still build (linking is done at >> runtime) and if NSS doesn't have EC support, then OpenJDK won't which >> is no different from the current status quo. >> >> Does this look ok for commit? >> >> ChangeLog: >> >> ? ? ? ? * HACKING: Updated. >> ? ? ? ? * Makefile.am: >> ? ? ? ? Add two new patches. ?Copy nss.cfg to jre/lib/security if >> ? ? ? ? NSS is enabled. >> ? ? ? ? * configure.ac:Check for NSS and set NSS_LIBDIR >> ? ? ? ? and ENABLE_NSS if found. >> ? ? ? ? * nss.cfg.in: Template for the nss configuration file. >> ? ? ? ? * patches/icedtea-nss-6763530.patch: >> ? ? ? ? Fix for Sun bug 6763530 which is triggered by newer >> ? ? ? ? versions of NSS. >> ? ? ? ? * patches/icedtea-nss-config.patch: Patch java.security >> ? ? ? ? with the PCKS11 provider configuration. >> > > tested the patch on the 1.6 branch, and checked that the certificate from > the bug report can be imported in a keystore. Could you mention the bug > number in the changelog as well? > Yes, no problem. Thanks for the review. > ?Matthias > > 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 andrew at icedtea.classpath.org Mon Sep 28 10:59:45 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Mon, 28 Sep 2009 17:59:45 +0000 Subject: /hg/icedtea6: Support the NSS-based crypto provider when --enabl... Message-ID: changeset b387a64caa08 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=b387a64caa08 author: Andrew John Hughes date: Mon Sep 28 19:02:32 2009 +0100 Support the NSS-based crypto provider when --enable-nss is passed. Reviewed-by: doko 2009-09-03 Andrew John Hughes PR icedtea/356 * HACKING: Updated. * Makefile.am: Add two new patches. Copy nss.cfg to jre/lib/security if NSS is enabled. * configure.ac:Check for NSS and set NSS_LIBDIR and ENABLE_NSS if found. * nss.cfg.in: Template for the nss configuration file. * patches/icedtea-nss-6763530.patch: Fix for Sun bug 6763530 which is triggered by newer versions of NSS. * patches/icedtea-nss-config.patch: Patch java.security with the PCKS11 provider configuration. diffstat: 7 files changed, 121 insertions(+), 2 deletions(-) ChangeLog | 17 ++++++++++- HACKING | 4 ++ Makefile.am | 13 ++++++++ configure.ac | 20 +++++++++++++ nss.cfg.in | 4 ++ patches/icedtea-nss-6763530.patch | 55 +++++++++++++++++++++++++++++++++++++ patches/icedtea-nss-config.patch | 10 ++++++ diffs (200 lines): diff -r 2a3725ce72d4 -r b387a64caa08 ChangeLog --- a/ChangeLog Fri Sep 25 05:35:49 2009 -0400 +++ b/ChangeLog Mon Sep 28 19:02:32 2009 +0100 @@ -1,3 +1,19 @@ 2009-09-25 Gary Benson + + PR icedtea/356 + * HACKING: Updated. + * Makefile.am: + Add two new patches. Copy nss.cfg to jre/lib/security if + NSS is enabled. + * configure.ac:Check for NSS and set NSS_LIBDIR + and ENABLE_NSS if found. + * nss.cfg.in: Template for the nss configuration file. + * patches/icedtea-nss-6763530.patch: + Fix for Sun bug 6763530 which is triggered by newer + versions of NSS. + * patches/icedtea-nss-config.patch: Patch java.security + with the PCKS11 provider configuration. + 2009-09-25 Gary Benson * ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp: Moved ffi.h to... @@ -701,7 +717,6 @@ 2009-08-25 Deepak Bhole >>>>>> other 2009-08-21 Xerxes R??nby * ports/hotspot/src/share/vm/shark/sharkBuilder.cpp diff -r 2a3725ce72d4 -r b387a64caa08 HACKING --- a/HACKING Fri Sep 25 05:35:49 2009 -0400 +++ b/HACKING Mon Sep 28 19:02:32 2009 +0100 @@ -124,7 +124,9 @@ The following patches are only applied t in Asia/Amman TimeZone. SimpleTimeZone checks too strict. * icedtea-dnd-filelists.patch: Fix drag and drop behaviour when dragging a file list between JVMs (S5079469). Backported from OpenJDK. * icedtea-signed-types-hot6.patch: Make use of unsigned/signed types explicit. -* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext +* openjdk/6648816.patch: Backport of regression (NPE) fix in AccessControlContext (PR364/S6648816) +* icedtea-nss-config.patch: Add the NSS PKCS11 security provider. (PR356) +* icedtea-nss-6763530.patch: Fix PKCS11 provider when used with newer version of NSS (>=3.12.3) (PR356, S6763530). The following patches are only applied to OpenJDK in IcedTea: diff -r 2a3725ce72d4 -r b387a64caa08 Makefile.am --- a/Makefile.am Fri Sep 25 05:35:49 2009 -0400 +++ b/Makefile.am Mon Sep 28 19:02:32 2009 +0100 @@ -711,6 +711,11 @@ ICEDTEA_PATCHES += patches/icedtea-syste ICEDTEA_PATCHES += patches/icedtea-systemtap.patch endif +if ENABLE_NSS +ICEDTEA_PATCHES += patches/icedtea-nss-config.patch \ + patches/icedtea-nss-6763530.patch +endif + ICEDTEA_PATCHES += \ patches/icedtea-demo-swingapplet.patch \ patches/icedtea-awt-window-size.patch \ @@ -1241,6 +1246,10 @@ if ENABLE_SYSTEMTAP $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; +endif @echo "IcedTea is served:" $(BUILD_OUTPUT_DIR) mkdir -p stamps touch stamps/icedtea.stamp @@ -1325,6 +1334,10 @@ if ENABLE_SYSTEMTAP cp $(abs_top_builddir)/tapset/hotspot.stp \ $(BUILD_OUTPUT_DIR)/j2sdk-image/tapset/hotspot.stp; \ fi +endif +if ENABLE_NSS + cp $(abs_top_builddir)/nss.cfg \ + $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/security; endif @echo "IcedTea (debug build) is served:" \ $(BUILD_OUTPUT_DIR)-debug diff -r 2a3725ce72d4 -r b387a64caa08 configure.ac --- a/configure.ac Fri Sep 25 05:35:49 2009 -0400 +++ b/configure.ac Mon Sep 28 19:02:32 2009 +0100 @@ -156,6 +156,14 @@ AC_ARG_ENABLE([systemtap], [ENABLE_SYSTEMTAP="${enableval}"], [ENABLE_SYSTEMTAP='no']) AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$ENABLE_SYSTEMTAP = xyes]) AC_MSG_RESULT(${ENABLE_SYSTEMTAP}) + +AC_MSG_CHECKING([whether to include the NSS-based security provider]) +AC_ARG_ENABLE([nss], + [AS_HELP_STRING([--enable-nss], + [Enable inclusion of NSS security provider])], + [ENABLE_NSS="${enableval}"], [ENABLE_NSS='no']) +AM_CONDITIONAL([ENABLE_NSS], [test x$ENABLE_NSS = xyes]) +AC_MSG_RESULT(${ENABLE_NSS}) AC_MSG_CHECKING(how many parallel build jobs to execute) AC_ARG_WITH([parallel-jobs], @@ -486,6 +494,18 @@ return EXIT_SUCCESS; AC_SUBST(MOZILLA_VERSION_COLLAPSED, $xulrunner_cv_collapsed_version) fi +if test "x${ENABLE_NSS}" = "xyes" +then + PKG_CHECK_MODULES(NSS, nss, [NSS_FOUND=yes], [NSS_FOUND=no]) + if test "x${NSS_FOUND}" = xno + then + AC_MSG_ERROR([Could not find NSS. Either install it or configure using --disable-nss.]) + fi + NSS_LIBDIR=`$PKG_CONFIG --variable=libdir nss` + AC_SUBST(NSS_LIBDIR) + AC_CONFIG_FILES([nss.cfg]) +fi + AC_MSG_CHECKING(for --with-additional-vms) AC_ARG_WITH(additional-vms, AC_HELP_STRING([--with-additional-vms=vm-list], [build additional virtual machines. Valid value is a comma separated string with the backend names `cacao', `zero' and `shark'.]), diff -r 2a3725ce72d4 -r b387a64caa08 nss.cfg.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nss.cfg.in Mon Sep 28 19:02:32 2009 +0100 @@ -0,0 +1,4 @@ +name = NSS +nssLibraryDirectory = @NSS_LIBDIR@ +nssDbMode = noDb +attributes = compatibility diff -r 2a3725ce72d4 -r b387a64caa08 patches/icedtea-nss-6763530.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-6763530.patch Mon Sep 28 19:02:32 2009 +0100 @@ -0,0 +1,55 @@ +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java Thu Sep 03 18:47:40 2009 +0100 +@@ -40,6 +40,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * EC KeyFactory implemenation. + * +@@ -201,7 +203,14 @@ + + private PublicKey generatePublic(ECPoint point, ECParameterSpec params) throws PKCS11Exception { + byte[] encodedParams = ECParameters.encodeParameters(params); +- byte[] encodedPoint = ECParameters.encodePoint(point, params.getCurve()); ++ DerValue pkECPoint = new DerValue(DerValue.tag_OctetString, ++ ECParameters.encodePoint(point, params.getCurve())); ++ byte[] encodedPoint = null; ++ try { ++ encodedPoint = pkECPoint.toByteArray(); ++ } catch (IOException e) { ++ throw new IllegalArgumentException("Could not DER encode point", e); ++ } + CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] { + new CK_ATTRIBUTE(CKA_CLASS, CKO_PUBLIC_KEY), + new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_EC), +diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11Key.java +--- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Mon Aug 31 12:55:15 2009 +0900 ++++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java Thu Sep 03 18:47:40 2009 +0100 +@@ -44,6 +44,8 @@ + import sun.security.pkcs11.wrapper.*; + import static sun.security.pkcs11.wrapper.PKCS11Constants.*; + ++import sun.security.util.DerValue; ++ + /** + * Key implementation classes. + * +@@ -1014,10 +1016,13 @@ + }; + fetchAttributes(attributes); + try { ++ DerValue wECPoint = new DerValue(attributes[0].getByteArray()); ++ if (wECPoint.getTag() != DerValue.tag_OctetString) ++ throw new IOException("Unexpected tag: " + wECPoint.getTag()); + params = P11ECKeyFactory.decodeParameters + (attributes[1].getByteArray()); + w = P11ECKeyFactory.decodePoint +- (attributes[0].getByteArray(), params.getCurve()); ++ (wECPoint.getDataBytes(), params.getCurve()); + } catch (Exception e) { + throw new RuntimeException("Could not parse key values", e); + } diff -r 2a3725ce72d4 -r b387a64caa08 patches/icedtea-nss-config.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-nss-config.patch Mon Sep 28 19:02:32 2009 +0100 @@ -0,0 +1,10 @@ +--- openjdk.orig/jdk/src/share/lib/security/java.security 2009-08-25 11:43:59.000000000 +0100 ++++ openjdk/jdk/src/share/lib/security/java.security 2009-08-27 14:23:54.000000000 +0100 +@@ -51,6 +51,7 @@ + security.provider.6=com.sun.security.sasl.Provider + security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI + security.provider.8=sun.security.smartcardio.SunPCSC ++security.provider.9=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg + + # + # Select the source of seed data for SecureRandom. By default an From bugzilla-daemon at icedtea.classpath.org Mon Sep 28 11:50:59 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 28 Sep 2009 18:50:59 +0000 Subject: [Bug 356] keytool doesn't handle SHA384withECDSA signatures Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=356 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED ------- Comment #18 from gnu_andrew at member.fsf.org 2009-09-28 18:50 ------- Fixed in IcedTea6 HEAD: http://icedtea.classpath.org/hg/icedtea6/rev/b387a64caa08 As noted earlier, for ECC support NSS must be built with ECC support. -- 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 Sep 28 11:57:21 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 28 Sep 2009 18:57:21 +0000 Subject: [Bug 375] IcedTea fails to build using ecj-3.5 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=375 ------- Comment #2 from doko at ubuntu.com 2009-09-28 18:57 ------- one fix is in icedtea, another one in the eclipse 3.5.1 release, I would like to wait until the ecj.jar on gcc.gnu.org:/pub/java is updated. -- 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 Mon Sep 28 14:16:25 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Mon, 28 Sep 2009 22:16:25 +0100 Subject: Zero and IcedTea7 Message-ID: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> I'm just about to push a changeset which updates IcedTea7 to the latest build (b72) and Gary's new revision of the Zero patch. Fans of Nimbus will also be glad to know that this is the build that drops the JIBX requirement (though through some autotools hackery we've been able to get round that in IcedTea7 anyway). I had to do some hacking on Zero to get it to work with the latest HotSpot (hs17b01) including a fix to http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/8b46c4d82093 which has now been committed to hotspot-gc and turning off compressed oops for Zero (it's now on by default, as is escape analysis). On finally getting a successful build, I ran the JTreg tests for HotSpot. This gave eight failures and two errors. A normal build only results in two failures. The Zero-specific failures are: Unexpected exit from test [exit code: 134] compiler/6711117/Test.java : Assertion in 64bit server vm (flat != TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr") compiler/6826736/Test.java : CMS: core dump with -XX:+UseCompressedOops compiler/6849574/Test.java : VM crash using NonBlockingHashMap (high_scale_lib) compiler/6851282/Test.java : JIT miscompilation results in null entry in array when using CompressedOops Unexpected exit from test [exit code: 1] compiler/6795161/Test.java : Escape analysis leads to data corruption compiler/6865031/Test.java : Application gives bad result (throws bad exception) with compressed oops and the two errors are: Can't load test: java.lang.ClassNotFoundException: bigobj gc/6845368/bigobj.java : ensure gc updates references > 64K bytes from the start of the obj Program `/mnt/builder/zero7/openjdk/build/linux-amd64/j2sdk-image/bin/java' interrupted! (timed out?) compiler/6866651/Test.java : delay dead node elimination in set_req_X to prevent killing the current node when it is in use 6711117, 6826736, 6851282 are all crashes due to compressed oops being turned on explicitly. 6849574 is an assertion failure: # Internal Error (referenceProcessor.cpp:1366), pid=27689, tid=47413998344464 # Error: guarantee(sentinel_ref() != __null && sentinel_ref()->is_oop(),"Lost _sentinelRef") 6795161 fails due to Unrecognized VM option '+DoEscapeAnalysis' 6865031 fails due to Unrecognized VM option '-LoopUnswitching' The two errors are due to a missing class and a timeout. I have yet to try Shark with the new build drop. 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 gbenson at redhat.com Tue Sep 29 02:45:42 2009 From: gbenson at redhat.com (Gary Benson) Date: Tue, 29 Sep 2009 10:45:42 +0100 Subject: Zero and IcedTea7 In-Reply-To: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> References: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> Message-ID: <20090929094542.GA3319@redhat.com> Andrew John Hughes wrote: > I had to do some hacking on Zero to get it to work with the latest > HotSpot (hs17b01) including a fix to > http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/8b46c4d82093 which > has now been committed to hotspot-gc and turning off compressed oops > for Zero (it's now on by default, as is escape analysis). The code to turn off compressed oops should be in the very latest webrev (http://cr.openjdk.java.net/~gbenson/zero-10/). Did you have to do more to disable it? > The Zero-specific failures are: > > Unexpected exit from test [exit code: 134] > compiler/6711117/Test.java : Assertion in 64bit server vm (flat != > TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr") > compiler/6826736/Test.java : CMS: core dump with -XX:+UseCompressedOops > compiler/6849574/Test.java : VM crash using NonBlockingHashMap (high_scale_lib) > compiler/6851282/Test.java : JIT miscompilation results in null entry > in array when using CompressedOops > Unexpected exit from test [exit code: 1] > compiler/6795161/Test.java : Escape analysis leads to data corruption > compiler/6865031/Test.java : Application gives bad result (throws bad > exception) with compressed oops I guess we should force escape analysis off too. The tests mentioning compressed oops must be turning it on with -XX:+UseCompressedOops. The turning off code in zero-10 only affects the default I think; should we change it to force it off? > I have yet to try Shark with the new build drop. There are a couple of changes that will need migrating from icedtea6, notably that one of the classes has had its name changed. Cheers, Gary -- http://gbenson.net/ From aph at redhat.com Wed Sep 30 00:59:35 2009 From: aph at redhat.com (Andrew Haley) Date: Wed, 30 Sep 2009 08:59:35 +0100 Subject: Zero and IcedTea7 In-Reply-To: <20090929094542.GA3319@redhat.com> References: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> <20090929094542.GA3319@redhat.com> Message-ID: <4AC30FE7.9070806@redhat.com> Gary Benson wrote: > Andrew John Hughes wrote: >> I had to do some hacking on Zero to get it to work with the latest >> HotSpot (hs17b01) including a fix to >> http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/8b46c4d82093 which >> has now been committed to hotspot-gc and turning off compressed oops >> for Zero (it's now on by default, as is escape analysis). > > The code to turn off compressed oops should be in the very latest > webrev (http://cr.openjdk.java.net/~gbenson/zero-10/). Did you have > to do more to disable it? > >> The Zero-specific failures are: >> >> Unexpected exit from test [exit code: 134] >> compiler/6711117/Test.java : Assertion in 64bit server vm (flat != >> TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr") >> compiler/6826736/Test.java : CMS: core dump with -XX:+UseCompressedOops >> compiler/6849574/Test.java : VM crash using NonBlockingHashMap (high_scale_lib) >> compiler/6851282/Test.java : JIT miscompilation results in null entry >> in array when using CompressedOops >> Unexpected exit from test [exit code: 1] >> compiler/6795161/Test.java : Escape analysis leads to data corruption >> compiler/6865031/Test.java : Application gives bad result (throws bad >> exception) with compressed oops > > I guess we should force escape analysis off too. The tests mentioning > compressed oops must be turning it on with -XX:+UseCompressedOops. > The turning off code in zero-10 only affects the default I think; > should we change it to force it off? I guess we'll need to fix these bugs in Zero. Do you suppose this needs to be done before we push Zero upstream to Sun? Andrew. From gbenson at redhat.com Wed Sep 30 01:07:59 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 30 Sep 2009 09:07:59 +0100 Subject: Zero and IcedTea7 In-Reply-To: <4AC30FE7.9070806@redhat.com> References: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> <20090929094542.GA3319@redhat.com> <4AC30FE7.9070806@redhat.com> Message-ID: <20090930080759.GB4283@redhat.com> Andrew Haley wrote: > Gary Benson wrote: > > Andrew John Hughes wrote: > > > I had to do some hacking on Zero to get it to work with the latest > > > HotSpot (hs17b01) including a fix to > > > http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/8b46c4d82093 which > > > has now been committed to hotspot-gc and turning off compressed oops > > > for Zero (it's now on by default, as is escape analysis). > > > > The code to turn off compressed oops should be in the very latest > > webrev (http://cr.openjdk.java.net/~gbenson/zero-10/). Did you > > have to do more to disable it? > > > > > The Zero-specific failures are: > > > > > > Unexpected exit from test [exit code: 134] > > > compiler/6711117/Test.java : Assertion in 64bit server vm (flat != > > > TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr") > > > compiler/6826736/Test.java : CMS: core dump with -XX:+UseCompressedOops > > > compiler/6849574/Test.java : VM crash using NonBlockingHashMap (high_scale_lib) > > > compiler/6851282/Test.java : JIT miscompilation results in null entry > > > in array when using CompressedOops > > > Unexpected exit from test [exit code: 1] > > > compiler/6795161/Test.java : Escape analysis leads to data corruption > > > compiler/6865031/Test.java : Application gives bad result (throws bad > > > exception) with compressed oops > > > > I guess we should force escape analysis off too. The tests > > mentioning compressed oops must be turning it on with > > -XX:+UseCompressedOops. The turning off code in zero-10 only > > affects the default I think; should we change it to force it off? > > I guess we'll need to fix these bugs in Zero. Do you suppose this > needs to be done before we push Zero upstream to Sun? I doubt it. A couple of test failures is a very minor thing compared with the size of the rest of Zero. Cheers, Gary -- http://gbenson.net/ From bugzilla-daemon at icedtea.classpath.org Wed Sep 30 01:34:25 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 08:34:25 +0000 Subject: [Bug 385] New: Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 Summary: Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Product: IcedTea Version: unspecified Platform: PC URL: http://www.runescape.com/game.ws?j=1 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea AssignedTo: unassigned at icedtea.classpath.org ReportedBy: mvyskocil at suse.cz moved from https://bugzilla.novell.com/show_bug.cgi?id=542457 --------------------------------------------------------------------- Description From Joop Boonen 2009-09-26 12:31:47 MDT (-) My Son is using http://www.runescape.com after an update of openjdk to: java-1_6_0-openjdk-1.6_b16-0.1.3 java-1_6_0-openjdk-plugin-1.6_b16-0.1.3 http://www.runescape.com/game.ws?j=1 doesn't run any more it stops at "Loaded client variable data" This problem also occurs op openSuSE 11.2 milestone 7 Reproducible: Always Steps to Reproduce: 1. Go to http://www.runescape.com/game.ws?j=1 2. 3. --------------------------------------------------------------------- -- 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 Wed Sep 30 01:35:09 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 08:35:09 +0000 Subject: [Bug 385] Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 ------- Comment #1 from mvyskocil at suse.cz 2009-09-30 08:35 ------- The log from ICEDTEA_DEBUG=true firefox *** NSPlugin Viewer *** ERROR: /usr/lib/browser-plugins/nphelix.so: cannot open shared object file: No such file or directory *** nss-shared-helper: Shared database disabled (set NSS_USE_SHARED_DB to enable). sh: pactl: command not found sh: pactl: command not found sh: pactl: command not found sh: pactl: command not found sh: pactl: command not found sh: pactl: command not found GCJ PLUGIN: thread 0x7ffc287e3710: NP_Initialize GCJ PLUGIN: thread 0x7ffc287e3710: plugin_test_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: plugin_test_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: NP_Initialize: using /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/lib/amd64/../../bin/java GCJ PLUGIN: thread 0x7ffc287e3710: NP_Initialize return GCJ PLUGIN: thread 0x7ffc287e3710: Subscribing 0x7ffc0bbfcbd0 to bus 0x7ffc0c5449d0 GCJ PLUGIN: thread 0x7ffc287e3710: Subscribing 0x7ffc0bafe658 to bus 0x7ffc0c544030 GCJ PLUGIN: thread 0x7ffc0d0ff910: Queue processor initialized. Queue = 0x7ffc0d294de0 GCJ PLUGIN: thread 0x7ffc0add6910: Queue processor initialized. Queue = 0x7ffc0d294de0 GCJ PLUGIN: thread 0x7ffc0a5d5910: Queue processor initialized. Queue = 0x7ffc0d294de0 GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New Looking for 0x7ffc0ea98fd0 0x7ffc0d2a20e0 0x7ffc19ddcdf4 (document) GCJ PLUGIN: thread 0x7ffc287e3710: Got variant 0x7fffca551300 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_data_new GCJ PLUGIN: thread 0x7ffc287e3710: plugin_data_new return GCJ PLUGIN: thread 0x7ffc287e3710: Checking JVM status... GCJ PLUGIN: thread 0x7ffc287e3710: No JVM is running. Attempting to start one... GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New: creating input fifo: /home/mvyskocil/.icedteaplugin/icedteanp-appletviewer-to-plugin GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New: created input fifo: /home/mvyskocil/.icedteaplugin/icedteanp-appletviewer-to-plugin GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New: creating output fifo: /home/mvyskocil/.icedteaplugin/icedteanp-plugin-to-appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New: created output fifo: /home/mvyskocil/.icedteaplugin/icedteanp-plugin-to-appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: plugin_start_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: Initialized VM with pid=8060 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_start_appletviewer return java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6) (suse-24.1-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) Listening for transport dt_socket at address: 8787 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_get_documentbase GCJ PLUGIN: thread 0x7ffc287e3710: plugin_get_documentbase return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_create_applet_tag GCJ PLUGIN: thread 0x7ffc287e3710: plugin_create_applet_tag return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: instance 1 tag http://world141.runescape.com/m0 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: Mapping id instance_counter and instance 0x1GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_New return GCJ PLUGIN: thread 0x7ffc287e3710: NP_GetValue GCJ PLUGIN: thread 0x7ffc287e3710: NP_GetValue: returning plugin description. GCJ PLUGIN: thread 0x7ffc287e3710: NP_GetValue return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue: returning TRUE for NeedsXEmbed. GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow: setting window. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: instance 1 handle 88091776 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: instance 1 width 1280 height 730 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue Calling plugin_get_documentbase GCJ PLUGIN: thread 0x7ffc287e3710: plugin_get_documentbase GCJ PLUGIN: thread 0x7ffc287e3710: plugin_get_documentbase return GCJ PLUGIN: thread 0x7ffc287e3710: Subscribing 0x7fffca551690 to bus 0x7ffc0c5449d0 GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c544030... GCJ PLUGIN: thread 0x7ffc287e3710: Message instance 1 reference 1 GetJavaObject received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bafe658 of instance 1 reference 1 GetJavaObject GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: instance 1 reference 1 GetJavaObject GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c544030 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 reference -1 fatalError Initialization failed GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c5449d0... GCJ PLUGIN: thread 0x7ffc287e3710: Message instance 1 reference -1 fatalError Initialization failed received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bbfcbd0 of instance 1 reference -1 fatalError Initialization failed GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor processing instance 1 reference -1 fatalError Initialization failed GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor::newMessageOnBus: { instance, 1, reference, -1, fatalError, Initialization, failed } GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7fffca551690 of instance 1 reference -1 fatalError Initialization failed GCJ PLUGIN: thread 0x7ffc287e3710: JavaRequest::newMessageOnBus: { instance, 1, reference, -1, fatalError, Initialization, failed } GCJ PLUGIN: thread 0x7ffc287e3710: Warning: No consumer found for message instance 1 reference -1 fatalError Initialization failed GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c5449d0 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 status starting applet... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback: setting status starting applet... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginProxyInfo http://world141.runescape.com//loader1764106967.jar GCJ PLUGIN: thread 0x7ffc287e3710: http://world141.runescape.com//loader1764106967.jar does not need a proxy GCJ PLUGIN: thread 0x7ffc287e3710: Proxy info: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar GCJ PLUGIN: thread 0x7ffc287e3710: Cookie info: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar settings=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA; __utma=263125903.676379831.1254232797.1254298664.1254299703.3; __utmz=263125903.1254299703.3.3.utmcsr=runescape.com|utmccn=(referral)|utmcmd=referral|utmcct=/game.ws; __utmb=263125903.1.10.1254299703; __utmc=263125903 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar settings=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA; __utma=263125903.676379831.1254232797.1254298664.1254299703.3; __utmz=263125903.1254299703.3.3.utmcsr=runescape.com|utmccn=(referral)|utmcmd=referral|utmcct=/game.ws; __utmb=263125903.1.10.1254299703; __utmc=263125903 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginProxyInfo http://world141.runescape.com//loader1764106967.jar GCJ PLUGIN: thread 0x7ffc287e3710: http://world141.runescape.com//loader1764106967.jar does not need a proxy GCJ PLUGIN: thread 0x7ffc287e3710: Proxy info: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar GCJ PLUGIN: thread 0x7ffc287e3710: Cookie info: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar settings=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA; __utma=263125903.676379831.1254232797.1254298664.1254299703.3; __utmz=263125903.1254299703.3.3.utmcsr=runescape.com|utmccn=(referral)|utmcmd=referral|utmcct=/game.ws; __utmb=263125903.1.10.1254299703; __utmc=263125903 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginCookieInfo http://world141.runescape.com/loader1764106967.jar settings=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA; __utma=263125903.676379831.1254232797.1254298664.1254299703.3; __utmz=263125903.1254299703.3.3.utmcsr=runescape.com|utmccn=(referral)|utmcmd=referral|utmcct=/game.ws; __utmb=263125903.1.10.1254299703; __utmc=263125903 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 status Applet loaded. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback: setting status Applet loaded. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 status Applet initialized. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback: setting status Applet initialized. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 status Applet started. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback: setting status Applet started. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 initialized GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c5449d0... GCJ PLUGIN: thread 0x7ffc287e3710: Message instance 1 initialized received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bbfcbd0 of instance 1 initialized GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor processing instance 1 initialized GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor::newMessageOnBus: { instance, 1, initialized } GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7fffca551690 of instance 1 initialized GCJ PLUGIN: thread 0x7ffc287e3710: JavaRequest::newMessageOnBus: { instance, 1, initialized } GCJ PLUGIN: thread 0x7ffc287e3710: Warning: No consumer found for message instance 1 initialized GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c5449d0 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginProxyInfo http://world141.runescape.com:43594/ GCJ PLUGIN: thread 0x7ffc287e3710: http://world141.runescape.com:43594/ does not need a proxy GCJ PLUGIN: thread 0x7ffc287e3710: Proxy info: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: plugin PluginProxyInfo http://world141.runescape.com:43594/ GCJ PLUGIN: thread 0x7ffc287e3710: http://world141.runescape.com:43594/ does not need a proxy GCJ PLUGIN: thread 0x7ffc287e3710: Proxy info: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: plugin PluginProxyInfo GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 1 GetWindow GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c5449d0... GCJ PLUGIN: thread 0x7ffc287e3710: Message instance 1 GetWindow received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bbfcbd0 of instance 1 GetWindow GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor processing instance 1 GetWindow GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor::newMessageOnBus: { instance, 1, GetWindow } GCJ PLUGIN: thread 0x7ffc287e3710: ID=1, Instance=0x7ffc0ea98fd0, WindowPTR = 0x7ffc0d2a20e0 GCJ PLUGIN: thread 0x7ffc287e3710: Converting pointer 0x7ffc0d2a20e0 to 140720529350880 GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c544030... GCJ PLUGIN: thread 0x7ffc287e3710: Message context 0 reference -1 JavaScriptGetWindow 140720529350880 received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bafe658 of context 0 reference -1 JavaScriptGetWindow 140720529350880 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: context 0 reference -1 JavaScriptGetWindow 140720529350880 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c544030 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: Storing instance 0x7ffc0ea98fd0 with key 0x7ffc0d2a20e0 GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c5449d0 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin read: instance 0 Call 140720529350880 51 52 GCJ PLUGIN: thread 0x7ffc287e3710: Trying to lock 0x7ffc0c5449d0... GCJ PLUGIN: thread 0x7ffc287e3710: Message instance 0 Call 140720529350880 51 52 received on bus. Notifying subscribers. GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7ffc0bbfcbd0 of instance 0 Call 140720529350880 51 52 GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor processing instance 0 Call 140720529350880 51 52 GCJ PLUGIN: thread 0x7ffc287e3710: PluginRequestProcessor::newMessageOnBus: { instance, 0, Call, 140720529350880, 51, 52 } GCJ PLUGIN: thread 0x7ffc287e3710: Notifying subscriber 0x7fffca551690 of instance 0 Call 140720529350880 51 52 GCJ PLUGIN: thread 0x7ffc287e3710: JavaRequest::newMessageOnBus: { instance, 0, Call, 140720529350880, 51, 52 } GCJ PLUGIN: thread 0x7ffc287e3710: Warning: No consumer found for message instance 0 Call 140720529350880 51 52 GCJ PLUGIN: thread 0x7ffc287e3710: 0x7ffc0c5449d0 unlocked... GCJ PLUGIN: thread 0x7ffc287e3710: plugin_in_pipe_callback return GCJ PLUGIN: thread 0x7ffc287e3710: Error: Timed out when waiting for response to instance 1 reference 1 GetJavaObject GCJ PLUGIN: thread 0x7ffc287e3710: Un-subscribing 0x7fffca551690 from bus 0x7ffc0c5449d0 Error: Unable to fetch applet instance id from Java side. GCJ PLUGIN: thread 0x7ffc287e3710: JavaRequestProcessor::~JavaRequestProcessor GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue IcedTeaNPPlugin.cc:635: thread 0x7ffc2753db40: Error: Unknown plugin value requested. GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_GetValue return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow: window already exists. GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow: window width changed. GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow: window height changed. GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer GCJ PLUGIN: thread 0x7ffc287e3710: PIPE: plugin wrote: instance 1 width 1280 height 730 GCJ PLUGIN: thread 0x7ffc287e3710: plugin_send_message_to_appletviewer return GCJ PLUGIN: thread 0x7ffc287e3710: GCJ_SetWindow return -- 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 Wed Sep 30 01:36:48 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 08:36:48 +0000 Subject: [Bug 385] Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 ------- Comment #2 from mvyskocil at suse.cz 2009-09-30 08:36 ------- Created an attachment (id=264) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=264&action=view) ~/.icedteaplugin/java.stderr ~/.icedteaplugin/java.stdout is empty -- 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 Wed Sep 30 02:26:12 2009 From: gnu_andrew at member.fsf.org (Andrew John Hughes) Date: Wed, 30 Sep 2009 10:26:12 +0100 Subject: Zero and IcedTea7 In-Reply-To: <20090929094542.GA3319@redhat.com> References: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> <20090929094542.GA3319@redhat.com> Message-ID: <17c6771e0909300226o507af68qb48ac7b9b1b4e2ec@mail.gmail.com> 2009/9/29 Gary Benson : > Andrew John Hughes wrote: >> I had to do some hacking on Zero to get it to work with the latest >> HotSpot (hs17b01) including a fix to >> http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/8b46c4d82093 which >> has now been committed to hotspot-gc and turning off compressed oops >> for Zero (it's now on by default, as is escape analysis). > > The code to turn off compressed oops should be in the very latest > webrev (http://cr.openjdk.java.net/~gbenson/zero-10/). ?Did you have > to do more to disable it? > It is disabled by default, as Zero won't build without this. As you mention below, these tests turn it on explicitly and fail. >> The Zero-specific failures are: >> >> Unexpected exit from test [exit code: 134] >> compiler/6711117/Test.java : Assertion in 64bit server vm (flat != >> TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr") >> compiler/6826736/Test.java : CMS: core dump with -XX:+UseCompressedOops >> compiler/6849574/Test.java : VM crash using NonBlockingHashMap (high_scale_lib) >> compiler/6851282/Test.java : JIT miscompilation results in null entry >> in array when using CompressedOops >> Unexpected exit from test [exit code: 1] >> compiler/6795161/Test.java : Escape analysis leads to data corruption >> compiler/6865031/Test.java : Application gives bad result (throws bad >> exception) with compressed oops > > I guess we should force escape analysis off too. ?The tests mentioning > compressed oops must be turning it on with -XX:+UseCompressedOops. > The turning off code in zero-10 only affects the default I think; > should we change it to force it off? > The escape analysis problem seems to be one of not recognising the option. The same with LoopSwitching. All three look like features we need to decide either to support or force off for Zero. I'm more worried by the two errors and the assertion failure which don't seem to be related to any of these new features. I've uploaded the results to http://fuseyism.com/hotspot17-zero/ if you want to take a look. >> I have yet to try Shark with the new build drop. > > There are a couple of changes that will need migrating from icedtea6, > notably that one of the classes has had its name changed. > Ok, which class? > Cheers, > Gary > > -- > http://gbenson.net/ > 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 gbenson at redhat.com Wed Sep 30 02:32:38 2009 From: gbenson at redhat.com (Gary Benson) Date: Wed, 30 Sep 2009 10:32:38 +0100 Subject: Zero and IcedTea7 In-Reply-To: <17c6771e0909300226o507af68qb48ac7b9b1b4e2ec@mail.gmail.com> References: <17c6771e0909281416r636b0f53veee04e0ce455fb40@mail.gmail.com> <20090929094542.GA3319@redhat.com> <17c6771e0909300226o507af68qb48ac7b9b1b4e2ec@mail.gmail.com> Message-ID: <20090930093238.GC4283@redhat.com> Andrew John Hughes wrote: > 2009/9/29 Gary Benson : > > Andrew John Hughes wrote: > > > I have yet to try Shark with the new build drop. > > > > There are a couple of changes that will need migrating from > > icedtea6, notably that one of the classes has had its name > > changed. > > Ok, which class? DeoptimizerFrame became FakeStubFrame. If you copy all the Shark files from IcedTea 6 to 7 then it should Just Work. Cheers, Gary -- http://gbenson.net/ From andrew at icedtea.classpath.org Wed Sep 30 03:50:40 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 30 Sep 2009 10:50:40 +0000 Subject: /hg/icedtea: 2 new changesets Message-ID: changeset e8514149a3c8 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=e8514149a3c8 author: Andrew John Hughes date: Wed Sep 30 11:49:23 2009 +0100 Bump to b72 and new Zero update, don't copy OpenJDK source files during build. 2009-09-30 Andrew John Hughes * patches/icedtea-pregenerated-nimbus.patch: No longer needed. * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: Removed, in upstream forest. * Makefile.am: Bump to b72, remove JIBX Nimbus requirement and don't copy OpenJDK source code. * acinclude.m4: (FIND_BCEL_JAR): Removed. (FIND_XPP3_JAR): Removed. (FIND_JIBX_DIR): Removed. (AC_CHECK_ENABLE_NIMBUS): Removed. (AC_CHECK_ENABLE_NIMBUS_GENERATION): Removed. * configure.ac: Drop Nimbus/JIBX tests. * patches/ecj/icedtea-hotspot-default.patch: Don't run test_gamma on zero. * patches/hotspot/default/icedtea-shark-build.patch, * patches/hotspot/default/icedtea-shark.patch, * patches/icedtea-libraries.patch, * patches/icedtea-linker-libs-order.patch, * patches/icedtea-shark-build.patch: Updated due to b72 and Zero update. changeset d0aceefec3f3 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=d0aceefec3f3 author: Andrew John Hughes date: Wed Sep 30 11:53:51 2009 +0100 Update NEWS. 2009-09-30 Andrew John Hughes * NEWS: Updated. diffstat: 13 files changed, 261 insertions(+), 549 deletions(-) ChangeLog | 29 ++++ Makefile.am | 141 ++++++-------------- NEWS | 7 + acinclude.m4 | 142 --------------------- configure.ac | 12 - patches/ecj/icedtea-hotspot-default.patch | 17 +- patches/hotspot/default/icedtea-shark-build.patch | 128 +++++++++--------- patches/hotspot/default/icedtea-shark.patch | 69 ++++------ patches/icedtea-libraries.patch | 128 ++++++++---------- patches/icedtea-linker-libs-order.patch | 14 +- patches/icedtea-pregenerated-nimbus.patch | 26 --- patches/icedtea-shark-build.patch | 20 +- ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp | 77 ----------- diffs (truncated from 1515 to 500 lines): diff -r 0b502a4ae3ff -r d0aceefec3f3 ChangeLog --- a/ChangeLog Wed Sep 23 16:24:04 2009 -0400 +++ b/ChangeLog Wed Sep 30 11:53:51 2009 +0100 @@ -1,3 +1,32 @@ 2009-09-23 Jon VanAlten + + * NEWS: + Updated. + +2009-09-30 Andrew John Hughes + + * patches/icedtea-pregenerated-nimbus.patch: + No longer needed. + * ports/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp: + Removed, in upstream forest. + * Makefile.am: Bump to b72, remove JIBX Nimbus requirement + and don't copy OpenJDK source code. + * acinclude.m4: + (FIND_BCEL_JAR): Removed. + (FIND_XPP3_JAR): Removed. + (FIND_JIBX_DIR): Removed. + (AC_CHECK_ENABLE_NIMBUS): Removed. + (AC_CHECK_ENABLE_NIMBUS_GENERATION): Removed. + * configure.ac: Drop Nimbus/JIBX tests. + * patches/ecj/icedtea-hotspot-default.patch: + Don't run test_gamma on zero. + * patches/hotspot/default/icedtea-shark-build.patch, + * patches/hotspot/default/icedtea-shark.patch, + * patches/icedtea-libraries.patch, + * patches/icedtea-linker-libs-order.patch, + * patches/icedtea-shark-build.patch: + Updated due to b72 and Zero update. + 2009-09-23 Jon VanAlten * Makefile.am: diff -r 0b502a4ae3ff -r d0aceefec3f3 Makefile.am --- a/Makefile.am Wed Sep 23 16:24:04 2009 -0400 +++ b/Makefile.am Wed Sep 30 11:53:51 2009 +0100 @@ -1,20 +1,20 @@ OPENJDK_VERSION = b71 -OPENJDK_VERSION = b71 - -OPENJDK_CHANGESET = 47425552fc70 -CORBA_CHANGESET = 109171aadcfa -JAXP_CHANGESET = 6d4f2360ffe6 -JAXWS_CHANGESET = 75cfe6f615df -JDK_CHANGESET = 2a1a7fb44226 -LANGTOOLS_CHANGESET = 70cd643d6217 -HOTSPOT_CHANGESET = 73abf11e8e61 - -OPENJDK_MD5SUM = d0753b769317c497ae14d9ab089504f7 -CORBA_MD5SUM = 5cb4f5afbef00fd662c554b9dd7312a7 -JAXP_MD5SUM = 0203983e81a05e548f7fc7bed557bf2c -JAXWS_MD5SUM = 07015564ab925a96cebf363814707d64 -JDK_MD5SUM = 9297009647ee6d3711fb59c3d3914404 -LANGTOOLS_MD5SUM = 70c0690c8ee523beb2a19dd1b7d2a9f9 -HOTSPOT_MD5SUM = 27eabf6067ac04edf002fad94671bbe1 +OPENJDK_VERSION = b72 + +CORBA_CHANGESET = 5fdcfb25dbb4 +HOTSPOT_CHANGESET = c8155bc21432 +JAXP_CHANGESET = fe2e7f835dd2 +JAXWS_CHANGESET = 501b8988da30 +JDK_CHANGESET = c2cd86f82ed7 +LANGTOOLS_CHANGESET = 5a36337cc053 +OPENJDK_CHANGESET = 717f2b969919 + +CORBA_MD5SUM = 5a9fef662129c05b2dd05c79a2685178 +HOTSPOT_MD5SUM = e5b21a7e5cc5cae315cd9aa158ee9858 +JAXP_MD5SUM = f4bd08cf016fefe31c4269b9d90edec0 +JAXWS_MD5SUM = 8d0729f5c4ddec47393e636e7d6a4914 +JDK_MD5SUM = 622268153bc097a5b91d76305eb0502d +LANGTOOLS_MD5SUM = eadbaead19df2fbe039fd12593e97197 +OPENJDK_MD5SUM = b5d1f6fad70a2b6af7b011169fbd6da3 CACAO_VERSION = 0.99.4 CACAO_MD5SUM = 63220327925ace13756ae334c55a3baa @@ -61,19 +61,15 @@ PULSE_JAVA_CLASS_DIR = PULSE_JAVA_CLASS_DIR = endif -if ENABLE_NIMBUS_GENERATION -JIBX_DEPS_DIR=$(abs_top_builddir)/jibx -endif - -SHARE = openjdk/jdk/src/share/classes -SOLARIS = openjdk/jdk/src/solaris/classes +JDK_SHARE = openjdk/jdk/src/share/classes +JDK_SOLARIS = openjdk/jdk/src/solaris/classes LANGTOOLS = openjdk/langtools/src/share/classes JAXP = openjdk/jaxp/src/share/classes CORBA = openjdk/corba/src/share/classes JAXWS = openjdk/jaxws/src/share/classes OPENJDK_SOURCEPATH_DIRS = \ - $(SHARE):$(SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) + $(JDK_SHARE):$(JDK_SOLARIS):$(LANGTOOLS):$(JAXP):$(CORBA):$(JAXWS) SOURCEPATH_DIRS = $(abs_top_builddir)/generated:$(OPENJDK_SOURCEPATH_DIRS) @@ -1555,11 +1551,9 @@ ICEDTEA_ENV = \ ENDORSED="-Djava.endorsed.dirs=$(ICEDTEA_ENDORSED_DIR)" \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ - CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -1579,7 +1573,6 @@ ICEDTEA_ENV = \ ANT_RESPECT_JAVA_HOME="TRUE" \ RHINO_JAR="$(RHINO_JAR)" \ DISTRIBUTION_ID="$(DIST_ID)" \ - ALT_JIBX_LIBS_PATH="$(JIBX_DEPS_DIR)" \ ALT_NETX_DIST="$(abs_top_builddir)/netx.build" \ ALT_LIVECONNECT_DIST="$(abs_top_builddir)" \ DEBUG_CLASSFILES="true" \ @@ -1589,11 +1582,6 @@ if WITH_CACAO if WITH_CACAO ICEDTEA_ENV += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" -endif - -if !ENABLE_NIMBUS_GENERATION -ICEDTEA_ENV += \ - DISABLE_NIMBUS="true" endif if DISABLE_OPTIMIZATIONS @@ -1643,11 +1631,9 @@ ICEDTEA_ENV_ECJ = \ CLASSPATH="" \ LD_LIBRARY_PATH="" \ GENSRCDIR="$(abs_top_builddir)/generated" \ - CORE_BUILD="$(ICEDTEA_CORE_BUILD)" \ ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \ ICEDTEA_SHARK_BUILD="$(ICEDTEA_SHARK_BUILD)" \ ZERO_LIBARCH="$(ZERO_LIBARCH)" \ - ZERO_BITSPERWORD="$(ZERO_BITSPERWORD)" \ ZERO_ENDIANNESS="$(ZERO_ENDIANNESS)" \ ZERO_ARCHDEF="$(ZERO_ARCHDEF)" \ ZERO_ARCHFLAG="$(ZERO_ARCHFLAG)" \ @@ -2126,12 +2112,6 @@ endif if ENABLE_SYSTEMTAP ICEDTEA_PATCHES += patches/icedtea-systemtap.patch -endif - -if ENABLE_NIMBUS -if !ENABLE_NIMBUS_GENERATION -ICEDTEA_PATCHES += patches/icedtea-pregenerated-nimbus.patch -endif endif if ENABLE_PLUGIN @@ -2471,7 +2451,7 @@ ICEDTEA_ECJ_PATCHES = patches/ecj/icedte ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea.patch \ patches/ecj/icedtea-hotspot-$(HSBUILD).patch \ patches/ecj/icedtea-jopt.patch \ - patches/ecj/icedtea-dyn.patch + patches/ecj/icedtea-dyn.patch if CP39408_JAVAH ICEDTEA_ECJ_PATCHES += patches/ecj/icedtea-pr39408.patch @@ -2689,8 +2669,8 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) $(JNLP_ABOUT_TARGET) \ - stamps/jibx.stamp stamps/cacao.stamp stamps/netx-dist.stamp \ - stamps/liveconnect.stamp stamps/pulse-java.stamp stamps/visualvm.stamp + stamps/cacao.stamp stamps/netx-dist.stamp stamps/liveconnect.stamp \ + stamps/pulse-java.stamp stamps/visualvm.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk/ \ @@ -2779,8 +2759,8 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) $(ICEDTEANPPLUGIN_TARGET) $(JNLP_ABOUT_TARGET) \ - stamps/jibx.stamp stamps/cacao.stamp stamps/netx-dist.stamp \ - stamps/liveconnect.stamp stamps/pulse-java.stamp stamps/visualvm.stamp + stamps/cacao.stamp stamps/netx-dist.stamp stamps/liveconnect.stamp \ + stamps/pulse-java.stamp stamps/visualvm.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ -C openjdk/ \ @@ -2957,38 +2937,18 @@ clean-tools-jar: clean-hotspot-tools rm -f stamps/hotspot-tools.stamp rm -f bootstrap/jdk1.7.0/lib/tools.jar -# Sources copied from OpenJDK. -ICEDTEA_COPY_DIRS = \ - com/sun/jdi \ - com/sun/jdi/connect \ - com/sun/jdi/connect/spi \ - com/sun/jdi/event \ - com/sun/jdi/request \ - com/sun/tools/jdi \ - com/sun/net/httpserver \ - java/io \ - java/util \ - java/rmi \ - sun/awt/ \ - javax/net/ssl \ - javax/script - -stamps/copy-source-files.stamp: stamps/overlay.stamp - for copy_dir in $(ICEDTEA_COPY_DIRS) ; \ - do \ - mkdir -p rt/$$copy_dir ; \ - cp -pPRf openjdk/jdk/src/share/classes/$$copy_dir/*.java \ - rt/$$copy_dir ; \ - done - mkdir -p stamps - touch stamps/copy-source-files.stamp - -clean-copy: - rm -f stamps/copy-source-files.stamp - for copy_dir in $(ICEDTEA_COPY_DIRS) ; \ - do \ - rm -rf rt/$$copy_dir ; \ - done +# Sources used from OpenJDK. +ICEDTEA_BOOTSTRAP_DIRS = \ + $(JDK_SHARE)/com/sun/jdi \ + $(JDK_SHARE)/com/sun/tools/jdi \ + $(JDK_SHARE)/com/sun/net/httpserver \ + $(JDK_SHARE)/java/io \ + $(JDK_SHARE)/java/util \ + $(JDK_SHARE)/java/rmi \ + $(JDK_SHARE)/sun/awt/ \ + $(JDK_SHARE)/javax/net/ssl \ + $(JDK_SHARE)/javax/script \ + $(JAXWS)/javax/xml/bind # tools.jar class files. stamps/hotspot-tools-copy-source-files.stamp: stamps/overlay.stamp @@ -3059,9 +3019,13 @@ bootstrap/jdk1.7.0/lib/tools.jar: stamps fi # rt-closed.jar class files. -rt-source-files.txt: stamps/extract.stamp stamps/copy-source-files.stamp +rt-source-files.txt: stamps/extract.stamp stamps/overlay.stamp find $(abs_top_builddir)/rt -name '*.java' \ | sort -u > $@ + for dir in $(ICEDTEA_BOOTSTRAP_DIRS) ; \ + do \ + find $(abs_top_builddir)/$$dir -name '*.java' >> $@; \ + done stamps/rt-class-files.stamp: rt-source-files.txt stamps/hotspot-tools.stamp mkdir -p lib/rt @@ -3156,23 +3120,6 @@ stamps/liveconnect.stamp: stamps/hotspot fi mkdir -p stamps touch stamps/liveconnect.stamp - -stamps/jibx.stamp: -if ENABLE_NIMBUS -if ENABLE_NIMBUS_GENERATION - mkdir $(JIBX_DEPS_DIR) - ln -s $(BCEL_JAR) $(JIBX_DEPS_DIR) - ln -s $(XPP3_JAR) $(JIBX_DEPS_DIR) - ln -s $(JIBX_DIR)/jibx-bind.jar $(JIBX_DEPS_DIR) - ln -s $(JIBX_DIR)/jibx-run.jar $(JIBX_DEPS_DIR) -else - mkdir -p $(BUILD_OUTPUT_DIR)/gensrc/javax/swing/plaf - cp -a $(abs_top_builddir)/generated/javax/swing/plaf/nimbus \ - $(BUILD_OUTPUT_DIR)/gensrc/javax/swing/plaf -endif -endif - mkdir -p stamps - touch $@ stamps/cacao.stamp: stamps/extract.stamp stamps/rt-class-files.stamp if BUILD_CACAO @@ -3646,8 +3593,6 @@ visualvm: stamps/visualvm.stamp nbplatform: stamps/nbplatform.stamp -copy-source-files: stamps/copy-source-files.stamp - download: stamps/download.stamp extract: stamps/extract.stamp @@ -3664,8 +3609,6 @@ icedtea-debug: stamps/icedtea-debug.stam icedtea-ecj: stamps/icedtea-ecj.stamp -jibx: stamps/jibx.stamp - native-ecj: stamps/native-ecj.stamp patch-ecj: stamps/patch-ecj.stamp diff -r 0b502a4ae3ff -r d0aceefec3f3 NEWS --- a/NEWS Wed Sep 23 16:24:04 2009 -0400 +++ b/NEWS Wed Sep 30 11:53:51 2009 +0100 @@ -1,3 +1,10 @@ New in release 1.11 (2009-08-06) +New in release 1.12 (2009-XX-XX) + +- Updated Zero with Gary's latest revisions +- JIBX is no longer required to build Nimbus. +- The NSS crypto. provider may be turned on with --enable-nss if + the NSS libraries and headers are available via pkg-config. + New in release 1.11 (2009-08-06) - Updated to OpenJDK7 b66 (Milestone 4), including diff -r 0b502a4ae3ff -r d0aceefec3f3 acinclude.m4 --- a/acinclude.m4 Wed Sep 23 16:24:04 2009 -0400 +++ b/acinclude.m4 Wed Sep 30 11:53:51 2009 +0100 @@ -1239,131 +1239,6 @@ AC_PROVIDE([$0])dnl AC_PROVIDE([$0])dnl ]) -AC_DEFUN([FIND_BCEL_JAR], -[ - AC_MSG_CHECKING([for bytecode engineering library (BCEL)]) - AC_ARG_WITH([bcel], - [AS_HELP_STRING(--with-bcel,specify location of the bcel jar)], - [ - case "${withval}" in - yes) - BCEL_JAR=yes - ;; - no) - BCEL_JAR=no - ;; - *) - BCEL_JAR="${withval}" - ;; - esac - ], - [ - BCEL_JAR=yes - ]) - if test x"${BCEL_JAR}" = "xyes"; then - if test -e "/usr/share/bcel/lib/bcel.jar"; then - BCEL_JAR="/usr/share/bcel/lib/bcel.jar" - elif test -e "/usr/share/java/bcel.jar"; then - BCEL_JAR="/usr/share/java/bcel.jar" - fi - fi - if ! test -f "${BCEL_JAR}"; then - AC_MSG_RESULT([not found]) - AC_MSG_ERROR("A BCEL jar ${BCEL_JAR} was not found.") - fi - AC_MSG_RESULT(${BCEL_JAR}) - AC_SUBST(BCEL_JAR) -]) - -AC_DEFUN([FIND_XPP3_JAR], -[ - AC_MSG_CHECKING([for XML Pull Parser 3 (XPP3)]) - AC_ARG_WITH([xpp3], - [AS_HELP_STRING(--with-xpp3,specify location of the xpp3 jar)], - [ - case "${withval}" in - yes) - XPP3_JAR=yes - ;; - no) - XPP3_JAR=no - ;; - *) - XPP3_JAR="${withval}" - ;; - esac - ], - [ - XPP3_JAR=yes - ]) - if test x"${XPP3_JAR}" = "xyes"; then - if test -e "/usr/share/xpp3/lib/xpp3.jar"; then - XPP3_JAR="/usr/share/xpp3/lib/xpp3.jar" - elif test -e "/usr/share/java/xpp3.jar"; then - XPP3_JAR="/usr/share/java/xpp3.jar" - fi - fi - if ! test -f "${XPP3_JAR}"; then - AC_MSG_RESULT([not found]) - AC_MSG_ERROR("A XPP3 jar ${XPP3_JAR} was not found.") - fi - AC_MSG_RESULT(${XPP3_JAR}) - AC_SUBST(XPP3_JAR) -]) - -AC_DEFUN([FIND_JIBX_DIR], -[ - AC_MSG_CHECKING([for JIBX]) - AC_ARG_WITH([jibx], - [AS_HELP_STRING(--with-jibx,specify location of the jibx jars)], - [ - case "${withval}" in - yes) - JIBX_DIR=yes - ;; - no) - JIBX_DIR=no - ;; - *) - JIBX_DIR="${withval}" - ;; - esac - ], - [ - JIBX_DIR=yes - ]) - if test x"${JIBX_DIR}" = "xyes"; then - if test -e "/usr/share/jibx/lib/jibx-run.jar"; then - JIBX_DIR=/usr/share/jibx/lib - elif test -e "/usr/share/java/jibx-run.jar"; then - JIBX_DIR=/usr/share/java - fi - fi - if ! test -d "${JIBX_DIR}"; then - AC_MSG_RESULT([not found]) - AC_MSG_ERROR("A JIBX jar directory ${JIBX_JAR} was not found.") - fi - AC_MSG_RESULT(${JIBX_DIR}) - AC_SUBST(JIBX_DIR) -]) - -AC_DEFUN([AC_CHECK_ENABLE_NIMBUS], -[ - AC_MSG_CHECKING(whether to build the Nimbus L'n'F) - AC_ARG_ENABLE([nimbus], - [AS_HELP_STRING(--enable-nimbus,build the Nimbus L'n'F [[default=yes]])], - [ - ENABLE_NIMBUS="${enableval}" - ], - [ - ENABLE_NIMBUS=yes - ]) - - AC_MSG_RESULT(${ENABLE_NIMBUS}) - AM_CONDITIONAL(ENABLE_NIMBUS, test x"${ENABLE_NIMBUS}" = "xyes") - AC_SUBST(ENABLE_NIMBUS) -]) - AC_DEFUN([IT_XULRUNNER_VERSION], [ AC_LANG_PUSH([C++]) @@ -1413,23 +1288,6 @@ AC_LANG_POP([C++]) AC_LANG_POP([C++]) AC_SUBST(MOZILLA_VERSION_COLLAPSED, $xulrunner_cv_collapsed_version) -]) - -AC_DEFUN([AC_CHECK_ENABLE_NIMBUS_GENERATION], -[ - AC_MSG_CHECKING(whether to generate the Nimbus source files using JIBX) - AC_ARG_ENABLE([nimbus-generation], - [AS_HELP_STRING(--enable-nimbus-generation,generate the Nimbus source with JIBX [[default=no]])], - [ - ENABLE_NIMBUS_GENERATION="${enableval}" - ], - [ - ENABLE_NIMBUS_GENERATION=no - ]) - - AC_MSG_RESULT(${ENABLE_NIMBUS_GENERATION}) - AM_CONDITIONAL(ENABLE_NIMBUS_GENERATION, test x"${ENABLE_NIMBUS_GENERATION}" = "xyes") - AC_SUBST(ENABLE_NIMBUS_GENERATION) ]) AC_DEFUN([IT_CHECK_ADDITIONAL_VMS], diff -r 0b502a4ae3ff -r d0aceefec3f3 configure.ac --- a/configure.ac Wed Sep 23 16:24:04 2009 -0400 +++ b/configure.ac Wed Sep 30 11:53:51 2009 +0100 @@ -229,8 +229,6 @@ AC_CHECK_ENABLE_CACAO AC_CHECK_ENABLE_CACAO AC_CHECK_WITH_CACAO_HOME AC_CHECK_WITH_CACAO_SRC_ZIP -AC_CHECK_ENABLE_NIMBUS -AC_CHECK_ENABLE_NIMBUS_GENERATION DISABLE_OPTIMIZATIONS SET_SHARK_BUILD ENABLE_ZERO_BUILD @@ -259,16 +257,6 @@ if test "x${enable_visualvm}" = "xyes" if test "x${enable_visualvm}" = "xyes" then FIND_NETBEANS -fi - -if test "x${ENABLE_NIMBUS}" = "xyes" -then - if test "x${ENABLE_NIMBUS_GENERATION}" = "xyes" - then - FIND_BCEL_JAR - FIND_XPP3_JAR - FIND_JIBX_DIR - fi fi dnl pkgconfig cannot be used to find these headers and libraries. diff -r 0b502a4ae3ff -r d0aceefec3f3 patches/ecj/icedtea-hotspot-default.patch --- a/patches/ecj/icedtea-hotspot-default.patch Wed Sep 23 16:24:04 2009 -0400 From andrew at icedtea.classpath.org Wed Sep 30 04:59:32 2009 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 30 Sep 2009 11:59:32 +0000 Subject: /hg/icedtea: Remove generated Nimbus files; no longer needed. Message-ID: changeset 5195537c2fa0 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=5195537c2fa0 author: Andrew John Hughes date: Wed Sep 30 13:02:58 2009 +0100 Remove generated Nimbus files; no longer needed. 2009-09-30 Andrew John Hughes * generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java, * generated/javax/swing/plaf/nimbus/ButtonPainter.java, * generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java, * generated/javax/swing/plaf/nimbus/CheckBoxPainter.java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditabl eState.java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter .java, * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.j ava, * generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java, * generated/javax/swing/plaf/nimbus/ComboBoxPainter.java, * generated/javax/swing/plaf/nimbus/DesktopIconPainter.java, * generated/javax/swing/plaf/nimbus/DesktopPanePainter.java, * generated/javax/swing/plaf/nimbus/EditorPanePainter.java, * generated/javax/swing/plaf/nimbus/FileChooserPainter.java, * generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneCloseButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneIconifyButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneMaximizeButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneMenuButtonPainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan ePainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePan eWindowFocusedState.java, * generated/javax/swing/plaf/nimbus/InternalFramePainter.java, * generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.ja va, * generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java, * generated/javax/swing/plaf/nimbus/MenuBarPainter.java, * generated/javax/swing/plaf/nimbus/MenuItemPainter.java, * generated/javax/swing/plaf/nimbus/MenuPainter.java, * generated/javax/swing/plaf/nimbus/NimbusDefaults.java, * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOpt ionPaneLabelPainter.java, * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPai nter.java, * generated/javax/swing/plaf/nimbus/OptionPanePainter.java, * generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java, * generated/javax/swing/plaf/nimbus/PopupMenuPainter.java, * generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java, * generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java, * generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java , * generated/javax/swing/plaf/nimbus/ProgressBarPainter.java, * generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java, * generated/javax/swing/plaf/nimbus/RadioButtonPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarPainter.java, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.ja va, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.jav a, * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.jav a, * generated/javax/swing/plaf/nimbus/ScrollPanePainter.java, * generated/javax/swing/plaf/nimbus/SeparatorPainter.java, * generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java, * generated/javax/swing/plaf/nimbus/SliderPainter.java, * generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.j ava, * generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java, * generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.j ava, * generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFi eldPainter.java, * generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.ja va, * generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainte r.java, * generated/javax/swing/plaf/nimbus/SplitPanePainter.java, * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.j ava, * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalS tate.java, * generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java, * generated/javax/swing/plaf/nimbus/TabbedPanePainter.java, * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter .java, * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.jav a, * generated/javax/swing/plaf/nimbus/TableEditorPainter.java, * generated/javax/swing/plaf/nimbus/TableHeaderPainter.java, * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPain ter.java, * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSort edState.java, * generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java, * generated/javax/swing/plaf/nimbus/TextAreaPainter.java, * generated/javax/swing/plaf/nimbus/TextFieldPainter.java, * generated/javax/swing/plaf/nimbus/TextPanePainter.java, * generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarEastState.java, * generated/javax/swing/plaf/nimbus/ToolBarNorthState.java, * generated/javax/swing/plaf/nimbus/ToolBarPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarSouthState.java, * generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java, * generated/javax/swing/plaf/nimbus/ToolBarWestState.java, * generated/javax/swing/plaf/nimbus/ToolTipPainter.java, * generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java, * generated/javax/swing/plaf/nimbus/TreePainter.java, * generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java: Removed. diffstat: 87 files changed, 90 insertions(+), 25230 deletions(-) ChangeLog | 90 generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java | 118 generated/javax/swing/plaf/nimbus/ButtonPainter.java | 652 -- generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java | 162 generated/javax/swing/plaf/nimbus/CheckBoxPainter.java | 635 -- generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java | 42 generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java | 476 -- generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java | 254 - generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java | 41 generated/javax/swing/plaf/nimbus/ComboBoxPainter.java | 733 --- generated/javax/swing/plaf/nimbus/DesktopIconPainter.java | 159 generated/javax/swing/plaf/nimbus/DesktopPanePainter.java | 350 - generated/javax/swing/plaf/nimbus/EditorPanePainter.java | 124 generated/javax/swing/plaf/nimbus/FileChooserPainter.java | 2248 ---------- generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java | 381 - generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java | 463 -- generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java | 51 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java | 606 -- generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java | 51 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java | 1045 ---- generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java | 51 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java | 51 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java | 517 -- generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java | 51 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java | 88 generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java | 41 generated/javax/swing/plaf/nimbus/InternalFramePainter.java | 402 - generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java | 41 generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java | 107 generated/javax/swing/plaf/nimbus/MenuBarPainter.java | 152 generated/javax/swing/plaf/nimbus/MenuItemPainter.java | 107 generated/javax/swing/plaf/nimbus/MenuPainter.java | 157 generated/javax/swing/plaf/nimbus/NimbusDefaults.java | 1788 ------- generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java | 105 generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java | 88 generated/javax/swing/plaf/nimbus/OptionPanePainter.java | 583 -- generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java | 381 - generated/javax/swing/plaf/nimbus/PopupMenuPainter.java | 163 generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java | 105 generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java | 42 generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java | 42 generated/javax/swing/plaf/nimbus/ProgressBarPainter.java | 612 -- generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java | 171 generated/javax/swing/plaf/nimbus/RadioButtonPainter.java | 704 --- generated/javax/swing/plaf/nimbus/ScrollBarPainter.java | 87 generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java | 380 - generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java | 379 - generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java | 275 - generated/javax/swing/plaf/nimbus/ScrollPanePainter.java | 178 generated/javax/swing/plaf/nimbus/SeparatorPainter.java | 105 generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java | 40 generated/javax/swing/plaf/nimbus/SliderPainter.java | 87 generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java | 40 generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java | 654 -- generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java | 40 generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java | 229 - generated/javax/swing/plaf/nimbus/SpinnerPainter.java | 88 generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java | 320 - generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java | 582 -- generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java | 504 -- generated/javax/swing/plaf/nimbus/SplitPanePainter.java | 88 generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java | 289 - generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java | 41 generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java | 41 generated/javax/swing/plaf/nimbus/TabbedPanePainter.java | 92 generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java | 220 generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java | 677 --- generated/javax/swing/plaf/nimbus/TableEditorPainter.java | 134 generated/javax/swing/plaf/nimbus/TableHeaderPainter.java | 140 generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java | 380 - generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java | 42 generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java | 41 generated/javax/swing/plaf/nimbus/TextAreaPainter.java | 411 - generated/javax/swing/plaf/nimbus/TextFieldPainter.java | 381 - generated/javax/swing/plaf/nimbus/TextPanePainter.java | 124 generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java | 705 --- generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java | 288 - generated/javax/swing/plaf/nimbus/ToolBarEastState.java | 43 generated/javax/swing/plaf/nimbus/ToolBarNorthState.java | 43 generated/javax/swing/plaf/nimbus/ToolBarPainter.java | 211 generated/javax/swing/plaf/nimbus/ToolBarSouthState.java | 43 generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java | 535 -- generated/javax/swing/plaf/nimbus/ToolBarWestState.java | 43 generated/javax/swing/plaf/nimbus/ToolTipPainter.java | 150 generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java | 143 generated/javax/swing/plaf/nimbus/TreePainter.java | 652 -- generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java | 145 diffs (truncated from 25671 to 500 lines): diff -r d0aceefec3f3 -r 5195537c2fa0 ChangeLog --- a/ChangeLog Wed Sep 30 11:53:51 2009 +0100 +++ b/ChangeLog Wed Sep 30 13:02:58 2009 +0100 @@ -1,3 +1,93 @@ 2009-09-30 Andrew John Hughes + + * generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ButtonPainter.java, + * generated/javax/swing/plaf/nimbus/CheckBoxMenuItemPainter.java, + * generated/javax/swing/plaf/nimbus/CheckBoxPainter.java, + * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonEditableState.java, + * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxArrowButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ComboBoxComboBoxTextFieldPainter.java, + * generated/javax/swing/plaf/nimbus/ComboBoxEditableState.java, + * generated/javax/swing/plaf/nimbus/ComboBoxPainter.java, + * generated/javax/swing/plaf/nimbus/DesktopIconPainter.java, + * generated/javax/swing/plaf/nimbus/DesktopPanePainter.java, + * generated/javax/swing/plaf/nimbus/EditorPanePainter.java, + * generated/javax/swing/plaf/nimbus/FileChooserPainter.java, + * generated/javax/swing/plaf/nimbus/FormattedTextFieldPainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonPainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneCloseButtonWindowNotFocusedState.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonPainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneIconifyButtonWindowNotFocusedState.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonPainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowMaximizedState.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonPainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMenuButtonWindowNotFocusedState.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePanePainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneWindowFocusedState.java, + * generated/javax/swing/plaf/nimbus/InternalFramePainter.java, + * generated/javax/swing/plaf/nimbus/InternalFrameWindowFocusedState.java, + * generated/javax/swing/plaf/nimbus/MenuBarMenuPainter.java, + * generated/javax/swing/plaf/nimbus/MenuBarPainter.java, + * generated/javax/swing/plaf/nimbus/MenuItemPainter.java, + * generated/javax/swing/plaf/nimbus/MenuPainter.java, + * generated/javax/swing/plaf/nimbus/NimbusDefaults.java, + * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaOptionPaneLabelPainter.java, + * generated/javax/swing/plaf/nimbus/OptionPaneOptionPaneMessageAreaPainter.java, + * generated/javax/swing/plaf/nimbus/OptionPanePainter.java, + * generated/javax/swing/plaf/nimbus/PasswordFieldPainter.java, + * generated/javax/swing/plaf/nimbus/PopupMenuPainter.java, + * generated/javax/swing/plaf/nimbus/PopupMenuSeparatorPainter.java, + * generated/javax/swing/plaf/nimbus/ProgressBarFinishedState.java, + * generated/javax/swing/plaf/nimbus/ProgressBarIndeterminateState.java, + * generated/javax/swing/plaf/nimbus/ProgressBarPainter.java, + * generated/javax/swing/plaf/nimbus/RadioButtonMenuItemPainter.java, + * generated/javax/swing/plaf/nimbus/RadioButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ScrollBarPainter.java, + * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarThumbPainter.java, + * generated/javax/swing/plaf/nimbus/ScrollBarScrollBarTrackPainter.java, + * generated/javax/swing/plaf/nimbus/ScrollPanePainter.java, + * generated/javax/swing/plaf/nimbus/SeparatorPainter.java, + * generated/javax/swing/plaf/nimbus/SliderArrowShapeState.java, + * generated/javax/swing/plaf/nimbus/SliderPainter.java, + * generated/javax/swing/plaf/nimbus/SliderSliderThumbArrowShapeState.java, + * generated/javax/swing/plaf/nimbus/SliderSliderThumbPainter.java, + * generated/javax/swing/plaf/nimbus/SliderSliderTrackArrowShapeState.java, + * generated/javax/swing/plaf/nimbus/SliderSliderTrackPainter.java, + * generated/javax/swing/plaf/nimbus/SpinnerPainter.java, + * generated/javax/swing/plaf/nimbus/SpinnerPanelSpinnerFormattedTextFieldPainter.java, + * generated/javax/swing/plaf/nimbus/SpinnerSpinnerNextButtonPainter.java, + * generated/javax/swing/plaf/nimbus/SpinnerSpinnerPreviousButtonPainter.java, + * generated/javax/swing/plaf/nimbus/SplitPanePainter.java, + * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerPainter.java, + * generated/javax/swing/plaf/nimbus/SplitPaneSplitPaneDividerVerticalState.java, + * generated/javax/swing/plaf/nimbus/SplitPaneVerticalState.java, + * generated/javax/swing/plaf/nimbus/TabbedPanePainter.java, + * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabAreaPainter.java, + * generated/javax/swing/plaf/nimbus/TabbedPaneTabbedPaneTabPainter.java, + * generated/javax/swing/plaf/nimbus/TableEditorPainter.java, + * generated/javax/swing/plaf/nimbus/TableHeaderPainter.java, + * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererPainter.java, + * generated/javax/swing/plaf/nimbus/TableHeaderTableHeaderRendererSortedState.java, + * generated/javax/swing/plaf/nimbus/TextAreaNotInScrollPaneState.java, + * generated/javax/swing/plaf/nimbus/TextAreaPainter.java, + * generated/javax/swing/plaf/nimbus/TextFieldPainter.java, + * generated/javax/swing/plaf/nimbus/TextPanePainter.java, + * generated/javax/swing/plaf/nimbus/ToggleButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ToolBarButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ToolBarEastState.java, + * generated/javax/swing/plaf/nimbus/ToolBarNorthState.java, + * generated/javax/swing/plaf/nimbus/ToolBarPainter.java, + * generated/javax/swing/plaf/nimbus/ToolBarSouthState.java, + * generated/javax/swing/plaf/nimbus/ToolBarToggleButtonPainter.java, + * generated/javax/swing/plaf/nimbus/ToolBarWestState.java, + * generated/javax/swing/plaf/nimbus/ToolTipPainter.java, + * generated/javax/swing/plaf/nimbus/TreeCellEditorPainter.java, + * generated/javax/swing/plaf/nimbus/TreePainter.java, + * generated/javax/swing/plaf/nimbus/TreeTreeCellPainter.java: + Removed. + 2009-09-30 Andrew John Hughes * NEWS: diff -r d0aceefec3f3 -r 5195537c2fa0 generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java --- a/generated/javax/swing/plaf/nimbus/ArrowButtonPainter.java Wed Sep 30 11:53:51 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* - * Copyright 2005-2006 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 javax.swing.plaf.nimbus; - -import java.awt.*; -import java.awt.geom.*; -import java.awt.image.*; -import javax.swing.*; -import javax.swing.Painter; - - -public final class ArrowButtonPainter extends AbstractRegionPainter { - //package private integers representing the available states that - //this painter will paint. These are used when creating a new instance - //of ArrowButtonPainter to determine which region/state is being painted - //by that instance. - static final int BACKGROUND_ENABLED = 1; - static final int FOREGROUND_DISABLED = 2; - static final int FOREGROUND_ENABLED = 3; - - - private int state; //refers to one of the static final ints above - private PaintContext ctx; - - //the following 4 variables are reused during the painting code of the layers - private Path2D path = new Path2D.Float(); - private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0); - private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0); - private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0); - - //All Colors used for painting are stored here. Ideally, only those colors being used - //by a particular instance of ArrowButtonPainter would be created. For the moment at least, - //however, all are created for each instance. - private Color color1 = decodeColor("nimbusBase", 0.027408898f, -0.57391655f, 0.1490196f, 0); - private Color color2 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.37254906f, 0); - - - //Array of current component colors, updated in each paint call - private Object[] componentColors; - - public ArrowButtonPainter(PaintContext ctx, int state) { - super(); - this.state = state; - this.ctx = ctx; - } - - @Override - protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) { - //populate componentColors array with colors calculated in getExtendedCacheKeys call - componentColors = extendedCacheKeys; - //generate this entire method. Each state/bg/fg/border combo that has - //been painted gets its own KEY and paint method. - switch(state) { - case FOREGROUND_DISABLED: paintForegroundDisabled(g); break; - case FOREGROUND_ENABLED: paintForegroundEnabled(g); break; - - } - } - - - - @Override - protected final PaintContext getPaintContext() { - return ctx; - } - - private void paintForegroundDisabled(Graphics2D g) { - path = decodePath1(); - g.setPaint(color1); - g.fill(path); - - } - - private void paintForegroundEnabled(Graphics2D g) { - path = decodePath1(); - g.setPaint(color2); - g.fill(path); - - } - - - - private Path2D decodePath1() { - path.reset(); - path.moveTo(decodeX(1.8f), decodeY(1.2f)); - path.lineTo(decodeX(1.2f), decodeY(1.5f)); - path.lineTo(decodeX(1.8f), decodeY(1.8f)); - path.lineTo(decodeX(1.8f), decodeY(1.2f)); - path.closePath(); - return path; - } - - - - -} diff -r d0aceefec3f3 -r 5195537c2fa0 generated/javax/swing/plaf/nimbus/ButtonPainter.java --- a/generated/javax/swing/plaf/nimbus/ButtonPainter.java Wed Sep 30 11:53:51 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,652 +0,0 @@ -/* - * Copyright 2005-2006 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 javax.swing.plaf.nimbus; - -import java.awt.*; -import java.awt.geom.*; -import java.awt.image.*; -import javax.swing.*; -import javax.swing.Painter; - - -public final class ButtonPainter extends AbstractRegionPainter { - //package private integers representing the available states that - //this painter will paint. These are used when creating a new instance - //of ButtonPainter to determine which region/state is being painted - //by that instance. - static final int BACKGROUND_DEFAULT = 1; - static final int BACKGROUND_DEFAULT_FOCUSED = 2; - static final int BACKGROUND_MOUSEOVER_DEFAULT = 3; - static final int BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED = 4; - static final int BACKGROUND_PRESSED_DEFAULT = 5; - static final int BACKGROUND_PRESSED_DEFAULT_FOCUSED = 6; - static final int BACKGROUND_DISABLED = 7; - static final int BACKGROUND_ENABLED = 8; - static final int BACKGROUND_FOCUSED = 9; - static final int BACKGROUND_MOUSEOVER = 10; - static final int BACKGROUND_MOUSEOVER_FOCUSED = 11; - static final int BACKGROUND_PRESSED = 12; - static final int BACKGROUND_PRESSED_FOCUSED = 13; - - - private int state; //refers to one of the static final ints above - private PaintContext ctx; - - //the following 4 variables are reused during the painting code of the layers - private Path2D path = new Path2D.Float(); - private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0); - private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0); - private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0); - - //All Colors used for painting are stored here. Ideally, only those colors being used - //by a particular instance of ButtonPainter would be created. For the moment at least, - //however, all are created for each instance. - private Color color1 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -190); - private Color color2 = decodeColor("nimbusBase", 5.1498413E-4f, -0.34585923f, -0.007843137f, 0); - private Color color3 = decodeColor("nimbusBase", 5.1498413E-4f, -0.095173776f, -0.25882354f, 0); - private Color color4 = decodeColor("nimbusBase", 0.004681647f, -0.6197143f, 0.43137252f, 0); - private Color color5 = decodeColor("nimbusBase", 0.004681647f, -0.5766426f, 0.38039213f, 0); - private Color color6 = decodeColor("nimbusBase", 5.1498413E-4f, -0.43866998f, 0.24705881f, 0); - private Color color7 = decodeColor("nimbusBase", 5.1498413E-4f, -0.46404046f, 0.36470586f, 0); - private Color color8 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47761154f, 0.44313723f, 0); - private Color color9 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0); - private Color color10 = decodeColor("nimbusBase", 0.0013483167f, -0.1769987f, -0.12156865f, 0); - private Color color11 = decodeColor("nimbusBase", 0.059279382f, 0.3642857f, -0.43529415f, 0); - private Color color12 = decodeColor("nimbusBase", 0.004681647f, -0.6198413f, 0.43921566f, 0); - private Color color13 = decodeColor("nimbusBase", -0.0017285943f, -0.5822163f, 0.40392154f, 0); - private Color color14 = decodeColor("nimbusBase", 5.1498413E-4f, -0.4555341f, 0.3215686f, 0); - private Color color15 = decodeColor("nimbusBase", 5.1498413E-4f, -0.47698414f, 0.43921566f, 0); - private Color color16 = decodeColor("nimbusBase", -0.06415892f, -0.5455182f, 0.45098037f, 0); - private Color color17 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, -95); - private Color color18 = decodeColor("nimbusBase", -0.57865167f, -0.6357143f, -0.54901963f, 0); - private Color color19 = decodeColor("nimbusBase", -3.528595E-5f, 0.018606722f, -0.23137257f, 0); - private Color color20 = decodeColor("nimbusBase", -4.2033195E-4f, -0.38050595f, 0.20392156f, 0); - private Color color21 = decodeColor("nimbusBase", 0.001903832f, -0.29863563f, 0.1490196f, 0); - private Color color22 = decodeColor("nimbusBase", 0.0f, 0.0f, 0.0f, 0); - private Color color23 = decodeColor("nimbusBase", 0.0018727183f, -0.14126986f, 0.15686274f, 0); - private Color color24 = decodeColor("nimbusBase", 8.9377165E-4f, -0.20852983f, 0.2588235f, 0); - private Color color25 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.06885965f, -0.36862746f, -232); - private Color color26 = decodeColor("nimbusBlueGrey", 0.0f, -0.06766917f, 0.07843137f, 0); - private Color color27 = decodeColor("nimbusBlueGrey", 0.0f, -0.06484103f, 0.027450979f, 0); - private Color color28 = decodeColor("nimbusBlueGrey", 0.0f, -0.08477524f, 0.16862744f, 0); - private Color color29 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.080091536f, 0.15686274f, 0); - private Color color30 = decodeColor("nimbusBlueGrey", 0.0f, -0.07016757f, 0.12941176f, 0); - private Color color31 = decodeColor("nimbusBlueGrey", 0.0f, -0.07052632f, 0.1372549f, 0); - private Color color32 = decodeColor("nimbusBlueGrey", 0.0f, -0.070878744f, 0.14509803f, 0); - private Color color33 = decodeColor("nimbusBlueGrey", -0.055555522f, -0.05356429f, -0.12549019f, 0); - private Color color34 = decodeColor("nimbusBlueGrey", 0.0f, -0.0147816315f, -0.3764706f, 0); - private Color color35 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10655806f, 0.24313724f, 0); - private Color color36 = decodeColor("nimbusBlueGrey", 0.0f, -0.09823123f, 0.2117647f, 0); - private Color color37 = decodeColor("nimbusBlueGrey", 0.0f, -0.0749532f, 0.24705881f, 0); - private Color color38 = decodeColor("nimbusBlueGrey", 0.0f, -0.110526316f, 0.25490195f, 0); - private Color color39 = decodeColor("nimbusBlueGrey", 0.0f, -0.020974077f, -0.21960783f, 0); - private Color color40 = decodeColor("nimbusBlueGrey", 0.0f, 0.11169591f, -0.53333336f, 0); - private Color color41 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10658931f, 0.25098038f, 0); - private Color color42 = decodeColor("nimbusBlueGrey", 0.0f, -0.098526314f, 0.2352941f, 0); - private Color color43 = decodeColor("nimbusBlueGrey", 0.0f, -0.07333623f, 0.20392156f, 0); - private Color color44 = new Color(245, 250, 255, 160); - private Color color45 = decodeColor("nimbusBlueGrey", 0.055555582f, 0.8894737f, -0.7176471f, 0); - private Color color46 = decodeColor("nimbusBlueGrey", 0.0f, 5.847961E-4f, -0.32156864f, 0); - private Color color47 = decodeColor("nimbusBlueGrey", -0.00505054f, -0.05960039f, 0.10196078f, 0); - private Color color48 = decodeColor("nimbusBlueGrey", -0.008547008f, -0.04772438f, 0.06666666f, 0); - private Color color49 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0018306673f, -0.02352941f, 0); - private Color color50 = decodeColor("nimbusBlueGrey", -0.0027777553f, -0.0212406f, 0.13333333f, 0); - private Color color51 = decodeColor("nimbusBlueGrey", 0.0055555105f, -0.030845039f, 0.23921567f, 0); - - - //Array of current component colors, updated in each paint call - private Object[] componentColors; - - public ButtonPainter(PaintContext ctx, int state) { - super(); - this.state = state; - this.ctx = ctx; - } - - @Override - protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) { - //populate componentColors array with colors calculated in getExtendedCacheKeys call - componentColors = extendedCacheKeys; - //generate this entire method. Each state/bg/fg/border combo that has - //been painted gets its own KEY and paint method. - switch(state) { - case BACKGROUND_DEFAULT: paintBackgroundDefault(g); break; - case BACKGROUND_DEFAULT_FOCUSED: paintBackgroundDefaultAndFocused(g); break; - case BACKGROUND_MOUSEOVER_DEFAULT: paintBackgroundMouseOverAndDefault(g); break; - case BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED: paintBackgroundMouseOverAndDefaultAndFocused(g); break; - case BACKGROUND_PRESSED_DEFAULT: paintBackgroundPressedAndDefault(g); break; - case BACKGROUND_PRESSED_DEFAULT_FOCUSED: paintBackgroundPressedAndDefaultAndFocused(g); break; - case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break; - case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break; - case BACKGROUND_FOCUSED: paintBackgroundFocused(g); break; - case BACKGROUND_MOUSEOVER: paintBackgroundMouseOver(g); break; - case BACKGROUND_MOUSEOVER_FOCUSED: paintBackgroundMouseOverAndFocused(g); break; - case BACKGROUND_PRESSED: paintBackgroundPressed(g); break; - case BACKGROUND_PRESSED_FOCUSED: paintBackgroundPressedAndFocused(g); break; - - } - } - - protected Object[] getExtendedCacheKeys(JComponent c) { - Object[] extendedCacheKeys = null; - switch(state) { - case BACKGROUND_DEFAULT: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color4, -0.6197143f, 0.43137252f, 0), - getComponentColor(c, "background", color5, -0.5766426f, 0.38039213f, 0), - getComponentColor(c, "background", color6, -0.43866998f, 0.24705881f, 0), - getComponentColor(c, "background", color7, -0.46404046f, 0.36470586f, 0), - getComponentColor(c, "background", color8, -0.47761154f, 0.44313723f, 0)}; - break; - case BACKGROUND_DEFAULT_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color4, -0.6197143f, 0.43137252f, 0), - getComponentColor(c, "background", color5, -0.5766426f, 0.38039213f, 0), - getComponentColor(c, "background", color6, -0.43866998f, 0.24705881f, 0), - getComponentColor(c, "background", color7, -0.46404046f, 0.36470586f, 0), - getComponentColor(c, "background", color8, -0.47761154f, 0.44313723f, 0)}; - break; - case BACKGROUND_MOUSEOVER_DEFAULT: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color12, -0.6198413f, 0.43921566f, 0), - getComponentColor(c, "background", color13, -0.5822163f, 0.40392154f, 0), - getComponentColor(c, "background", color14, -0.4555341f, 0.3215686f, 0), - getComponentColor(c, "background", color15, -0.47698414f, 0.43921566f, 0), - getComponentColor(c, "background", color16, -0.5455182f, 0.45098037f, 0)}; - break; - case BACKGROUND_MOUSEOVER_DEFAULT_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color12, -0.6198413f, 0.43921566f, 0), - getComponentColor(c, "background", color13, -0.5822163f, 0.40392154f, 0), - getComponentColor(c, "background", color14, -0.4555341f, 0.3215686f, 0), - getComponentColor(c, "background", color15, -0.47698414f, 0.43921566f, 0), - getComponentColor(c, "background", color16, -0.5455182f, 0.45098037f, 0)}; - break; - case BACKGROUND_PRESSED_DEFAULT: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color20, -0.38050595f, 0.20392156f, 0), - getComponentColor(c, "background", color21, -0.29863563f, 0.1490196f, 0), - getComponentColor(c, "background", color22, 0.0f, 0.0f, 0), - getComponentColor(c, "background", color23, -0.14126986f, 0.15686274f, 0), - getComponentColor(c, "background", color24, -0.20852983f, 0.2588235f, 0)}; - break; - case BACKGROUND_PRESSED_DEFAULT_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color20, -0.38050595f, 0.20392156f, 0), - getComponentColor(c, "background", color21, -0.29863563f, 0.1490196f, 0), - getComponentColor(c, "background", color22, 0.0f, 0.0f, 0), - getComponentColor(c, "background", color23, -0.14126986f, 0.15686274f, 0), - getComponentColor(c, "background", color24, -0.20852983f, 0.2588235f, 0)}; - break; - case BACKGROUND_ENABLED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color35, -0.10655806f, 0.24313724f, 0), - getComponentColor(c, "background", color36, -0.09823123f, 0.2117647f, 0), - getComponentColor(c, "background", color30, -0.07016757f, 0.12941176f, 0), - getComponentColor(c, "background", color37, -0.0749532f, 0.24705881f, 0), - getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)}; - break; - case BACKGROUND_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color35, -0.10655806f, 0.24313724f, 0), - getComponentColor(c, "background", color36, -0.09823123f, 0.2117647f, 0), - getComponentColor(c, "background", color30, -0.07016757f, 0.12941176f, 0), - getComponentColor(c, "background", color37, -0.0749532f, 0.24705881f, 0), - getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)}; - break; - case BACKGROUND_MOUSEOVER: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color41, -0.10658931f, 0.25098038f, 0), - getComponentColor(c, "background", color42, -0.098526314f, 0.2352941f, 0), - getComponentColor(c, "background", color43, -0.07333623f, 0.20392156f, 0), - getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)}; - break; - case BACKGROUND_MOUSEOVER_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color41, -0.10658931f, 0.25098038f, 0), - getComponentColor(c, "background", color42, -0.098526314f, 0.2352941f, 0), - getComponentColor(c, "background", color43, -0.07333623f, 0.20392156f, 0), - getComponentColor(c, "background", color38, -0.110526316f, 0.25490195f, 0)}; - break; - case BACKGROUND_PRESSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color47, -0.05960039f, 0.10196078f, 0), - getComponentColor(c, "background", color48, -0.04772438f, 0.06666666f, 0), - getComponentColor(c, "background", color49, -0.0018306673f, -0.02352941f, 0), - getComponentColor(c, "background", color50, -0.0212406f, 0.13333333f, 0), - getComponentColor(c, "background", color51, -0.030845039f, 0.23921567f, 0)}; - break; - case BACKGROUND_PRESSED_FOCUSED: - extendedCacheKeys = new Object[] { - getComponentColor(c, "background", color47, -0.05960039f, 0.10196078f, 0), - getComponentColor(c, "background", color48, -0.04772438f, 0.06666666f, 0), - getComponentColor(c, "background", color49, -0.0018306673f, -0.02352941f, 0), - getComponentColor(c, "background", color50, -0.0212406f, 0.13333333f, 0), - getComponentColor(c, "background", color51, -0.030845039f, 0.23921567f, 0)}; - break; - } - return extendedCacheKeys; - } - - @Override - protected final PaintContext getPaintContext() { - return ctx; - } - - private void paintBackgroundDefault(Graphics2D g) { - roundRect = decodeRoundRect1(); - g.setPaint(color1); - g.fill(roundRect); - roundRect = decodeRoundRect2(); - g.setPaint(decodeGradient1(roundRect)); - g.fill(roundRect); - roundRect = decodeRoundRect3(); - g.setPaint(decodeGradient2(roundRect)); - g.fill(roundRect); - - } - - private void paintBackgroundDefaultAndFocused(Graphics2D g) { - roundRect = decodeRoundRect4(); - g.setPaint(color9); - g.fill(roundRect); - roundRect = decodeRoundRect2(); - g.setPaint(decodeGradient1(roundRect)); - g.fill(roundRect); From bugzilla-daemon at icedtea.classpath.org Wed Sep 30 06:30:08 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 13:30:08 +0000 Subject: [Bug 290] plugin crash on amd64 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=290 ------- Comment #4 from doko at ubuntu.com 2009-09-30 13:30 ------- this doesn't crash anymore with 1.6.1, but keeps a running java process at 100% after the connection times out during the 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 Wed Sep 30 06:55:28 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 13:55:28 +0000 Subject: [Bug 385] Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 ------- Comment #3 from mwong at redhat.com 2009-09-30 13:55 ------- I just did an updade on java-1.6.0-openjdk and with java -version I got as output: java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6) (fedora-29.b16.fc11-i386) OpenJDK Server VM (build 14.0-b16, mixed mode) The game loaded properly for me (got to the login screen). Which os did this occur on for you? Thanks. Man Lung Wong -- 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 Wed Sep 30 07:08:38 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 14:08:38 +0000 Subject: [Bug 385] Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 ------- Comment #4 from mvyskocil at suse.cz 2009-09-30 14:08 ------- (In reply to comment #3) > I just did an updade on java-1.6.0-openjdk and with java -version I got as > output: > > java version "1.6.0_0" > OpenJDK Runtime Environment (IcedTea6 1.6) (fedora-29.b16.fc11-i386) > OpenJDK Server VM (build 14.0-b16, mixed mode) > > The game loaded properly for me (got to the login screen). Which os did this > occur on for you? Thanks. It is openSUSE 11.2 - openjdk b16 with icedtea6-1.6 and --enable-npplugin in configure. $ java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6) (suse-24.1-x86_64) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) -- 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 Wed Sep 30 09:20:57 2009 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 30 Sep 2009 16:20:57 +0000 Subject: [Bug 385] Regression in NPPlugin from icedtea6-1.6 - Runescape doesn't run Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=385 ------- Comment #5 from dbhole at redhat.com 2009-09-30 16:20 ------- NP Plugin should not be shipped with anything right now, as it is not complete. It doesn't have proper array support, and no memory management (and therefore lots of leaks). Additionally, it hasn't been profiled for efficiency either, so there might be speed issues. -- 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 Wed Sep 30 09:33:12 2009 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 30 Sep 2009 12:33:12 -0400 Subject: RFC: Patch to update help message for --enable-npplugin Message-ID: <20090930163312.GB21529@redhat.com> Some distros seem to be shipping the npplugin despite its incompleteness. Attached patch updates the help string to state that the plugin is experimental. ChangeLog: 2009-09-30 Deepak Bhole * configure.ac: Change help message for --enable-npplugin to state that the plugin is experimental. Deepak -------------- next part -------------- A non-text attachment was scrubbed... Name: np-help-msg-update.patch Type: text/x-patch Size: 826 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20090930/7abd7bf2/np-help-msg-update.patch From jon.vanalten at redhat.com Wed Sep 30 10:41:37 2009 From: jon.vanalten at redhat.com (jon.vanalten at redhat.com) Date: Wed, 30 Sep 2009 13:41:37 -0400 (EDT) Subject: RFC: Patch to update help message for --enable-npplugin In-Reply-To: <1680703577.1246681254331893676.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <54677665.1247561254332497696.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> This looks like a good idea to me, makes the intent of the configure flag more clear. Were you planning on contributing this to both 6 & 7? (I think you should.) jon ----- "Deepak Bhole" wrote: > Some distros seem to be shipping the npplugin despite its > incompleteness. Attached patch updates the help string to state that > the > plugin is experimental. > > ChangeLog: > 2009-09-30 Deepak Bhole > > * configure.ac: Change help message for --enable-npplugin to state > that > the plugin is experimental. > > Deepak