From 99efc13e49c3c42efc1912714dcd17b3cdd0fd10 Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Thu, 21 Jan 2010 22:05:31 -0800 Subject: [PATCH 01/64] 6916787: Ukrainian currency name needs to be fixed Reviewed-by: yhuang, peytoia --- .../classes/sun/util/resources/CurrencyNames_uk_UA.properties | 2 +- jdk/test/sun/text/resources/LocaleData | 4 ++-- jdk/test/sun/text/resources/LocaleDataTest.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/sun/util/resources/CurrencyNames_uk_UA.properties b/jdk/src/share/classes/sun/util/resources/CurrencyNames_uk_UA.properties index f83822dd221..372b5cfb318 100644 --- a/jdk/src/share/classes/sun/util/resources/CurrencyNames_uk_UA.properties +++ b/jdk/src/share/classes/sun/util/resources/CurrencyNames_uk_UA.properties @@ -35,4 +35,4 @@ # This notice and attribution to Taligent may not be removed. # Taligent is a registered trademark of Taligent, Inc. -UAH=\u0433\u0440\u043b. +UAH=\u0433\u0440\u043d. diff --git a/jdk/test/sun/text/resources/LocaleData b/jdk/test/sun/text/resources/LocaleData index e662c356117..5fba9272410 100644 --- a/jdk/test/sun/text/resources/LocaleData +++ b/jdk/test/sun/text/resources/LocaleData @@ -673,8 +673,8 @@ FormatData/es_VE/NumberElements/0=, FormatData/es_VE/NumberElements/1=. FormatData/es_VE/NumberElements/2=; -# bug #4099810, 4290801, 6868106 -CurrencyNames/uk_UA/UAH=\u0433\u0440\u043b. +# bug #4099810, 4290801, 6868106, 6916787 +CurrencyNames/uk_UA/UAH=\u0433\u0440\u043d. FormatData/uk_UA/NumberPatterns/0=#,##0.###;-#,##0.### # FormatData/uk_UA/NumberPatterns/1=#,##0.## '\u0433\u0440\u0432.';-#,##0.## '\u0433\u0440\u0432.' # Changed; see bug 4122840 FormatData/uk_UA/NumberPatterns/2=#,##0% diff --git a/jdk/test/sun/text/resources/LocaleDataTest.java b/jdk/test/sun/text/resources/LocaleDataTest.java index 308c3d6b64f..f04d29435cb 100644 --- a/jdk/test/sun/text/resources/LocaleDataTest.java +++ b/jdk/test/sun/text/resources/LocaleDataTest.java @@ -32,7 +32,7 @@ * 6414459 6455680 6498742 6558863 6488119 6547501 6497154 6558856 6481177 * 6379214 6485516 6486607 4225362 4494727 6533691 6531591 6531593 6570259 * 6509039 6609737 6610748 6645271 6507067 6873931 6450945 6645268 6646611 - * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 + * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 * @summary Verify locale data * */ From 30885d636b6b1ca3f1448699b12584fce398d9af Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Wed, 27 Jan 2010 23:19:28 -0800 Subject: [PATCH 02/64] 6919624: minimalDaysInFirstWeek ressource for hungarian is wrong Reviewed-by: yhuang, peytoia --- .../classes/sun/util/resources/CalendarData_hu.properties | 2 +- jdk/test/sun/text/resources/LocaleData | 3 +++ jdk/test/sun/text/resources/LocaleDataTest.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/jdk/src/share/classes/sun/util/resources/CalendarData_hu.properties b/jdk/src/share/classes/sun/util/resources/CalendarData_hu.properties index 2f1b22e844b..6ff507325e5 100644 --- a/jdk/src/share/classes/sun/util/resources/CalendarData_hu.properties +++ b/jdk/src/share/classes/sun/util/resources/CalendarData_hu.properties @@ -37,4 +37,4 @@ firstDayOfWeek=2 -minimalDaysInFirstWeek=1 +minimalDaysInFirstWeek=4 diff --git a/jdk/test/sun/text/resources/LocaleData b/jdk/test/sun/text/resources/LocaleData index 5fba9272410..bf609d108b7 100644 --- a/jdk/test/sun/text/resources/LocaleData +++ b/jdk/test/sun/text/resources/LocaleData @@ -6098,3 +6098,6 @@ LocaleNames/nl/YE=Jemen LocaleNames/nl/YT=Mayotte LocaleNames/nl/ZA=Zuid-Afrika LocaleNames/nl/ZM=Zambia + +# bug 6919624 +CalendarData/hu/minimalDaysInFirstWeek=4 diff --git a/jdk/test/sun/text/resources/LocaleDataTest.java b/jdk/test/sun/text/resources/LocaleDataTest.java index f04d29435cb..a1d88d1b5fb 100644 --- a/jdk/test/sun/text/resources/LocaleDataTest.java +++ b/jdk/test/sun/text/resources/LocaleDataTest.java @@ -33,6 +33,7 @@ * 6379214 6485516 6486607 4225362 4494727 6533691 6531591 6531593 6570259 * 6509039 6609737 6610748 6645271 6507067 6873931 6450945 6645268 6646611 * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 + * 6919624 * @summary Verify locale data * */ From 97617dd2f3d3225a54892af33237a7495a063989 Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Thu, 11 Feb 2010 20:59:09 -0800 Subject: [PATCH 03/64] 6776102: sun/util/resources/TimeZone/Bug6317929.java test failed against 6u12b01 and passed against 6u11b03 Reviewed-by: yhuang, peytoia --- jdk/test/sun/util/resources/TimeZone/Bug6317929.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/test/sun/util/resources/TimeZone/Bug6317929.java b/jdk/test/sun/util/resources/TimeZone/Bug6317929.java index b4d88d1828b..feb46d72d96 100644 --- a/jdk/test/sun/util/resources/TimeZone/Bug6317929.java +++ b/jdk/test/sun/util/resources/TimeZone/Bug6317929.java @@ -180,11 +180,11 @@ public class Bug6317929 { "(\ub274 \uc0ac\uc6b0\uc2a4 \uc6e8\uc77c\uc988)\""); tzLocale = locales2Test[7]; if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals - ("Eastern Standard Time (Nya Sydwales)")) + ("Eastern, normaltid (Nya Sydwales)")) throw new RuntimeException("\n" + tzLocale + ": LONG, " + "non-daylight saving name for " + "Australia/Currie should be " + - "\"Eastern Standard Time " + + "\"Eastern, normaltid " + "(Nya Sydwales)\""); tzLocale = locales2Test[8]; if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals From a0d85f3139ef2497330ee09c26ed9793e7014d0a Mon Sep 17 00:00:00 2001 From: Valerie Peng Date: Wed, 7 Apr 2010 17:20:11 -0700 Subject: [PATCH 04/64] 6918573: sun.security.pkcs11.P11RSACipher.finalize() is a scalability blocker Removed the finalize() methods and use PhantomReference in Session to do auto clean up. Reviewed-by: wetmore --- .../sun/security/pkcs11/P11Cipher.java | 15 +--- .../sun/security/pkcs11/P11Digest.java | 14 +--- .../classes/sun/security/pkcs11/P11Key.java | 23 +++--- .../classes/sun/security/pkcs11/P11Mac.java | 14 +--- .../sun/security/pkcs11/P11RSACipher.java | 14 +--- .../sun/security/pkcs11/P11Signature.java | 13 ---- .../classes/sun/security/pkcs11/Session.java | 78 ++++++++++++++++++- .../sun/security/pkcs11/SessionManager.java | 66 +++++++--------- 8 files changed, 122 insertions(+), 115 deletions(-) diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java b/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java index f5da56bec64..ab3eb96dfb8 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Cipher.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -192,7 +192,6 @@ final class P11Cipher extends CipherSpi { // should not happen throw new ProviderException(nspe); } - session = token.getOpSession(); } protected void engineSetMode(String mode) throws NoSuchAlgorithmException { @@ -847,18 +846,6 @@ final class P11Cipher extends CipherSpi { return n; } - @Override - protected void finalize() throws Throwable { - try { - if ((session != null) && token.isValid()) { - cancelOperation(); - session = token.releaseSession(session); - } - } finally { - super.finalize(); - } - } - private final void bufferInputBytes(byte[] in, int inOfs, int len) { System.arraycopy(in, inOfs, padBuffer, padBufferLen, len); padBufferLen += len; diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11Digest.java b/jdk/src/share/classes/sun/security/pkcs11/P11Digest.java index e9e6964fd47..fb4629c852d 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11Digest.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Digest.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -308,16 +308,4 @@ final class P11Digest extends MessageDigestSpi { throw new ProviderException("update() failed", e); } } - - protected void finalize() throws Throwable { - try { - if ((session != null) && token.isValid()) { - cancelOperation(); - session = token.releaseSession(session); - } - } finally { - super.finalize(); - } - } - } diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11Key.java b/jdk/src/share/classes/sun/security/pkcs11/P11Key.java index b3704299713..1b26f1e3e70 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11Key.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Key.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -85,7 +85,7 @@ abstract class P11Key implements Key { // flags indicating whether the key is a token object, sensitive, extractable final boolean tokenObject, sensitive, extractable; - // weak reference notification clean up for session keys + // phantom reference notification clean up for session keys private final SessionKeyRef sessionKeyRef; P11Key(String type, Session session, long keyID, String algorithm, @@ -1051,7 +1051,12 @@ abstract class P11Key implements Key { } } -final class SessionKeyRef extends WeakReference +/* + * NOTE: Must use PhantomReference here and not WeakReference + * otherwise the key maybe cleared before other objects which + * still use these keys during finalization such as SSLSocket. + */ +final class SessionKeyRef extends PhantomReference implements Comparable { private static ReferenceQueue refQueue = new ReferenceQueue(); @@ -1062,14 +1067,11 @@ final class SessionKeyRef extends WeakReference return refQueue; } - static final private int MAX_ITERATIONS = 2; - private static void drainRefQueueBounded() { - int iterations = 0; - while (iterations < MAX_ITERATIONS) { + while (true) { SessionKeyRef next = (SessionKeyRef) refQueue.poll(); - if (next != null) next.dispose(); - ++iterations; + if (next == null) break; + next.dispose(); } } @@ -1087,7 +1089,7 @@ final class SessionKeyRef extends WeakReference drainRefQueueBounded(); } - void dispose() { + private void dispose() { refList.remove(this); if (session.token.isValid()) { Session newSession = null; @@ -1097,6 +1099,7 @@ final class SessionKeyRef extends WeakReference } catch (PKCS11Exception e) { // ignore } finally { + this.clear(); session.token.releaseSession(newSession); session.removeObject(); } diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java b/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java index ae37d696d93..deeb1631606 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Mac.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -263,16 +263,4 @@ final class P11Mac extends MacSpi { throw new ProviderException("update() failed", e); } } - - protected void finalize() throws Throwable { - try { - if ((session != null) && token.isValid()) { - cancelOperation(); - session = token.releaseSession(session); - } - } finally { - super.finalize(); - } - } - } diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java b/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java index c3709ad5b13..f7b7aaf4b92 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -485,18 +485,6 @@ final class P11RSACipher extends CipherSpi { int n = P11KeyFactory.convertKey(token, key, algorithm).keyLength(); return n; } - - protected void finalize() throws Throwable { - try { - if ((session != null) && token.isValid()) { - cancelOperation(); - session = token.releaseSession(session); - } - } finally { - super.finalize(); - } - } - } final class ConstructKeys { diff --git a/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java b/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java index b7c7f5f0e7c..c16c2459300 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java +++ b/jdk/src/share/classes/sun/security/pkcs11/P11Signature.java @@ -226,7 +226,6 @@ final class P11Signature extends SignatureSpi { this.buffer = buffer; this.digestOID = digestOID; this.md = md; - session = token.getOpSession(); } private void ensureInitialized() { @@ -732,16 +731,4 @@ final class P11Signature extends SignatureSpi { throws InvalidParameterException { throw new UnsupportedOperationException("getParameter() not supported"); } - - protected void finalize() throws Throwable { - try { - if ((session != null) && token.isValid()) { - cancelOperation(); - session = token.releaseSession(session); - } - } finally { - super.finalize(); - } - } - } diff --git a/jdk/src/share/classes/sun/security/pkcs11/Session.java b/jdk/src/share/classes/sun/security/pkcs11/Session.java index 64e216bf38d..c5dd04455aa 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/Session.java +++ b/jdk/src/share/classes/sun/security/pkcs11/Session.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -25,6 +25,7 @@ package sun.security.pkcs11; +import java.lang.ref.*; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -59,11 +60,14 @@ final class Session implements Comparable { // this could lead to idle sessions being closed early, but that is harmless private long lastAccess; + private final SessionRef sessionRef; + Session(Token token, long id) { this.token = token; this.id = id; createdObjects = new AtomicInteger(); id(); + sessionRef = new SessionRef(this, id, token); } public int compareTo(Session other) { @@ -108,4 +112,76 @@ final class Session implements Comparable { return createdObjects.get() != 0; } + void close() { + if (hasObjects()) { + throw new ProviderException( + "Internal error: close session with active objects"); + } + sessionRef.dispose(); + } +} + +/* + * NOTE: Use PhantomReference here and not WeakReference + * otherwise the sessions maybe closed before other objects + * which are still being finalized. + */ +final class SessionRef extends PhantomReference + implements Comparable { + + private static ReferenceQueue refQueue = + new ReferenceQueue(); + + private static Set refList = + Collections.synchronizedSortedSet(new TreeSet()); + + static ReferenceQueue referenceQueue() { + return refQueue; + } + + static int totalCount() { + return refList.size(); + } + + private static void drainRefQueueBounded() { + while (true) { + SessionRef next = (SessionRef) refQueue.poll(); + if (next == null) break; + next.dispose(); + } + } + + // handle to the native session + private long id; + private Token token; + + SessionRef(Session session, long id, Token token) { + super(session, refQueue); + this.id = id; + this.token = token; + refList.add(this); + // TBD: run at some interval and not every time? + drainRefQueueBounded(); + } + + void dispose() { + refList.remove(this); + try { + token.p11.C_CloseSession(id); + } catch (PKCS11Exception e1) { + // ignore + } catch (ProviderException e2) { + // ignore + } finally { + this.clear(); + } + } + + public int compareTo(SessionRef other) { + if (this.id == other.id) { + return 0; + } else { + return (this.id < other.id) ? -1 : 1; + } + } } diff --git a/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java b/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java index caf18ffc076..aed0264dd2d 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java +++ b/jdk/src/share/classes/sun/security/pkcs11/SessionManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -51,10 +51,12 @@ import static sun.security.pkcs11.wrapper.PKCS11Constants.*; * number of such sessions low. Note that we occasionally want to explicitly * close a session, see P11Signature. * - * NOTE that all sessions obtained from this class MUST be returned using - * either releaseSession() or closeSession() using a finally block or a - * finalizer where appropriate. Otherwise, they will be "lost", i.e. there - * will be a resource leak eventually leading to exhaustion. + * NOTE that sessions obtained from this class SHOULD be returned using + * either releaseSession() or closeSession() using a finally block when + * not needed anymore. Otherwise, they will be left for cleanup via the + * PhantomReference mechanism when GC kicks in, but it's best not to rely + * on that since GC may not run timely enough since the native PKCS11 library + * is also consuming memory. * * Note that sessions are automatically closed when they are not used for a * period of time, see Session. @@ -74,9 +76,6 @@ final class SessionManager { // maximum number of sessions to open with this token private final int maxSessions; - // total number of active sessions - private int activeSessions; - // pool of available object sessions private final Pool objSessions; @@ -116,6 +115,11 @@ final class SessionManager { return (maxSessions <= DEFAULT_MAX_SESSIONS); } + // returns the total number of active sessions + int totalSessionCount() { + return SessionRef.totalCount(); + } + synchronized Session getObjSession() throws PKCS11Exception { Session session = objSessions.poll(); if (session != null) { @@ -136,7 +140,8 @@ final class SessionManager { } // create a new session rather than re-using an obj session // that avoids potential expensive cancels() for Signatures & RSACipher - if (activeSessions < maxSessions) { + if (maxSessions == Integer.MAX_VALUE || + totalSessionCount() < maxSessions) { session = openSession(); return ensureValid(session); } @@ -159,14 +164,10 @@ final class SessionManager { if (debug != null) { String location = new Exception().getStackTrace()[2].toString(); System.out.println("Killing session (" + location + ") active: " - + activeSessions); - } - try { - closeSession(session); - return null; - } catch (PKCS11Exception e) { - throw new ProviderException(e); + + totalSessionCount()); } + closeSession(session); + return null; } synchronized Session releaseSession(Session session) { @@ -187,7 +188,8 @@ final class SessionManager { return; } if (debug != null) { - System.out.println("Demoting session, active: " + activeSessions); + System.out.println("Demoting session, active: " + + totalSessionCount()); } boolean present = objSessions.remove(session); if (present == false) { @@ -199,16 +201,17 @@ final class SessionManager { } private Session openSession() throws PKCS11Exception { - if (activeSessions >= maxSessions) { + if ((maxSessions != Integer.MAX_VALUE) && + (totalSessionCount() >= maxSessions)) { throw new ProviderException("No more sessions available"); } long id = token.p11.C_OpenSession (token.provider.slotID, openSessionFlags, null, null); Session session = new Session(token, id); - activeSessions++; if (debug != null) { - if (activeSessions > maxActiveSessions) { - maxActiveSessions = activeSessions; + int currTotal = totalSessionCount(); + if (currTotal > maxActiveSessions) { + maxActiveSessions = currTotal; if (maxActiveSessions % 10 == 0) { System.out.println("Open sessions: " + maxActiveSessions); } @@ -217,13 +220,8 @@ final class SessionManager { return session; } - private void closeSession(Session session) throws PKCS11Exception { - if (session.hasObjects()) { - throw new ProviderException - ("Internal error: close session with active objects"); - } - token.p11.C_CloseSession(session.id()); - activeSessions--; + private void closeSession(Session session) { + session.close(); } private static final class Pool { @@ -267,28 +265,20 @@ final class SessionManager { } Collections.sort(pool); int i = 0; - PKCS11Exception exc = null; while (i < n - 1) { // always keep at least 1 session open oldestSession = pool.get(i); if (oldestSession.isLive(time)) { break; } i++; - try { - mgr.closeSession(oldestSession); - } catch (PKCS11Exception e) { - exc = e; - } + mgr.closeSession(oldestSession); } if (debug != null) { System.out.println("Closing " + i + " idle sessions, active: " - + mgr.activeSessions); + + mgr.totalSessionCount()); } List subList = pool.subList(0, i); subList.clear(); - if (exc != null) { - throw new ProviderException(exc); - } } } From 5794ed41e6cce580d62c64f8db4a68a3b4b70221 Mon Sep 17 00:00:00 2001 From: Sean Mullan Date: Fri, 9 Apr 2010 07:21:46 -0700 Subject: [PATCH 05/64] 6909281: 6u19 b99(pit):Error loading first applet in browser session( both FF && IE, windows ): NPE is thrown Fix for 6633872 causes NPE due to uninitialised ProtectionDomain class Reviewed-by: andrew --- jdk/src/share/classes/sun/misc/SharedSecrets.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jdk/src/share/classes/sun/misc/SharedSecrets.java b/jdk/src/share/classes/sun/misc/SharedSecrets.java index 7ebbe46e712..c9f50728860 100644 --- a/jdk/src/share/classes/sun/misc/SharedSecrets.java +++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2010 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 @@ -29,6 +29,7 @@ import java.util.jar.JarFile; import java.io.Console; import java.io.File; import java.io.FileDescriptor; +import java.security.ProtectionDomain; /** A repository of "shared secrets", which are a mechanism for calling implementation-private methods in another package without @@ -121,6 +122,8 @@ public class SharedSecrets { public static JavaSecurityProtectionDomainAccess getJavaSecurityProtectionDomainAccess() { + if (javaSecurityProtectionDomainAccess == null) + unsafe.ensureClassInitialized(ProtectionDomain.class); return javaSecurityProtectionDomainAccess; } } From 36657229559f0cdb3c4a4d430587163999a6f2b1 Mon Sep 17 00:00:00 2001 From: Jonathan Gibbons Date: Fri, 9 Apr 2010 15:39:39 -0700 Subject: [PATCH 06/64] 6942649: add hidden option to identify location and version of javac classes Reviewed-by: darcy --- .../com/sun/tools/javac/main/Main.java | 43 ++++++++++++++ langtools/test/tools/javac/T6942649.java | 59 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 langtools/test/tools/javac/T6942649.java diff --git a/langtools/src/share/classes/com/sun/tools/javac/main/Main.java b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java index 57b0219e7c3..562db51be0c 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/main/Main.java +++ b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java @@ -28,6 +28,9 @@ package com.sun.tools.javac.main; import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.net.URL; +import java.security.DigestInputStream; +import java.security.MessageDigest; import java.util.MissingResourceException; import com.sun.tools.javac.code.Source; @@ -281,6 +284,15 @@ public class Main { if (target.hasInvokedynamic()) { options.put("invokedynamic", "invokedynamic"); } + + // handle this here so it works even if no other options given + String showClass = options.get("showClass"); + if (showClass != null) { + if (showClass.equals("showClass")) // no value given for option + showClass = "com.sun.tools.javac.Main"; + showClass(showClass); + } + return filenames.toList(); } // where @@ -488,6 +500,37 @@ public class Main { ex.getCause().printStackTrace(); } + /** Display the location and checksum of a class. */ + void showClass(String className) { + out.println("javac: show class: " + className); + URL url = getClass().getResource('/' + className.replace('.', '/') + ".class"); + if (url == null) + out.println(" class not found"); + else { + out.println(" " + url); + try { + final String algorithm = "MD5"; + byte[] digest; + MessageDigest md = MessageDigest.getInstance(algorithm); + DigestInputStream in = new DigestInputStream(url.openStream(), md); + try { + byte[] buf = new byte[8192]; + int n; + do { n = in.read(buf); } while (n > 0); + digest = md.digest(); + } finally { + in.close(); + } + StringBuilder sb = new StringBuilder(); + for (byte b: digest) + sb.append(String.format("%02x", b)); + out.println(" " + algorithm + " checksum: " + sb); + } catch (Exception e) { + out.println(" cannot compute digest: " + e); + } + } + } + private JavaFileManager fileManager; /* ************************************************************************ diff --git a/langtools/test/tools/javac/T6942649.java b/langtools/test/tools/javac/T6942649.java new file mode 100644 index 00000000000..941ad90d050 --- /dev/null +++ b/langtools/test/tools/javac/T6942649.java @@ -0,0 +1,59 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + + +/* + * @test + * @bug 6942649 + * @summary add hidden option to identify location and version of javac classes + */ + +import java.io.*; + +public class T6942649 { + public static void main(String... args) throws Exception { + new T6942649().run(); + } + + void run() throws Exception { + test("-XDshowClass", "com.sun.tools.javac.Main"); + test("-XDshowClass=com.sun.tools.javac.util.Log", "com.sun.tools.javac.util.Log"); + } + + void test(String opt, String clazz) throws Exception { + System.err.println("test " + opt); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + int rc = com.sun.tools.javac.Main.compile(new String[] { opt }, pw); + pw.close(); + String out = sw.toString(); + System.err.println("javac rc=" + rc + "\n" + out); + if (!out.contains(clazz)) + throw new Exception("class name not found in output"); + int lastDot = clazz.lastIndexOf("."); + if (!out.contains(clazz.substring(lastDot + 1) + ".class")) + throw new Exception("location of class not found in output"); + if (!out.contains("MD5 checksum: ")) + throw new Exception("checksum not found in output"); + } +} From 52e1e32cdbbf14560c22925795da642d950273ae Mon Sep 17 00:00:00 2001 From: Xue-Lei Andrew Fan Date: Sat, 10 Apr 2010 09:13:12 +0800 Subject: [PATCH 07/64] 6941936: Broken pipe error of test case DNSIdentities.java Reviewed-by: chegar --- .../HttpsURLConnection/DNSIdentities.java | 33 +++++++--- .../https/HttpsURLConnection/HttpsPost.java | 63 ++++++++++++------- .../IPAddressDNSIdentities.java | 23 +++++-- .../IPAddressIPIdentities.java | 25 ++++++-- .../HttpsURLConnection/IPIdentities.java | 25 ++++++-- .../https/HttpsURLConnection/Identities.java | 25 ++++++-- .../https/HttpsURLConnection/Redirect.java | 60 +++++++++++------- 7 files changed, 177 insertions(+), 77 deletions(-) diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java index d8cdb2ea2c9..eddbd29e190 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java @@ -623,6 +623,11 @@ public class DNSIdentities { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -670,11 +675,14 @@ public class DNSIdentities { out.print("Testing\r\n"); out.flush(); } finally { - // close the socket - Thread.sleep(2000); - System.out.println("Server closing socket"); - sslSocket.close(); - serverReady = false; + // close the socket + while (!closeReady) { + Thread.sleep(50); + } + + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; } } @@ -704,12 +712,17 @@ public class DNSIdentities { URL url = new URL("https://localhost:" + serverPort+"/"); System.out.println("url is "+url.toString()); - http = (HttpsURLConnection)url.openConnection(); + try { + http = (HttpsURLConnection)url.openConnection(); - int respCode = http.getResponseCode(); - System.out.println("respCode = "+respCode); - - http.disconnect(); + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + } finally { + if (http != null) { + http.disconnect(); + } + closeReady = true; + } } /* diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java index 33ebfda5805..0e55c60eeab 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/HttpsPost.java @@ -60,6 +60,11 @@ public class HttpsPost { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -98,25 +103,34 @@ public class HttpsPost { serverReady = true; SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); - InputStream sslIS = sslSocket.getInputStream(); - OutputStream sslOS = sslSocket.getOutputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(sslIS)); - PrintStream ps = new PrintStream(sslOS); - // process HTTP POST request from client - System.out.println("status line: "+br.readLine()); - String msg = null; - while ((msg = br.readLine()) != null && msg.length() > 0); + try { + InputStream sslIS = sslSocket.getInputStream(); + OutputStream sslOS = sslSocket.getOutputStream(); + BufferedReader br = + new BufferedReader(new InputStreamReader(sslIS)); + PrintStream ps = new PrintStream(sslOS); - msg = br.readLine(); - if (msg.equals(postMsg)) { - ps.println("HTTP/1.1 200 OK\n\n"); - } else { - ps.println("HTTP/1.1 500 Not OK\n\n"); + // process HTTP POST request from client + System.out.println("status line: "+br.readLine()); + String msg = null; + while ((msg = br.readLine()) != null && msg.length() > 0); + + msg = br.readLine(); + if (msg.equals(postMsg)) { + ps.println("HTTP/1.1 200 OK\n\n"); + } else { + ps.println("HTTP/1.1 500 Not OK\n\n"); + } + ps.flush(); + + // close the socket + while (!closeReady) { + Thread.sleep(50); + } + } finally { + sslSocket.close(); + sslServerSocket.close(); } - ps.flush(); - Thread.sleep(2000); - sslSocket.close(); - sslServerSocket.close(); } /* @@ -144,12 +158,17 @@ public class HttpsPost { http.setRequestMethod("POST"); PrintStream ps = new PrintStream(http.getOutputStream()); - ps.println(postMsg); - ps.flush(); - if (http.getResponseCode() != 200) { - throw new RuntimeException("test Failed"); + try { + ps.println(postMsg); + ps.flush(); + if (http.getResponseCode() != 200) { + throw new RuntimeException("test Failed"); + } + } finally { + ps.close(); + http.disconnect(); + closeReady = true; } - ps.close(); } static class NameVerifier implements HostnameVerifier { diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java index c4d48cc1080..4cc3a0f0554 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java @@ -623,6 +623,11 @@ public class IPAddressDNSIdentities { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -670,11 +675,14 @@ public class IPAddressDNSIdentities { out.print("Testing\r\n"); out.flush(); } finally { - // close the socket - Thread.sleep(2000); - System.out.println("Server closing socket"); - sslSocket.close(); - serverReady = false; + // close the socket + while (!closeReady) { + Thread.sleep(50); + } + + System.out.println("Server closing socket"); + sslSocket.close(); + serverReady = false; } } @@ -716,7 +724,10 @@ public class IPAddressDNSIdentities { // no subject alternative names matching IP address 127.0.0.1 found // that's the expected exception, ignore it. } finally { - http.disconnect(); + if (http != null) { + http.disconnect(); + } + closeReady = true; } } diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java index 4bafaf24b51..d30efd81ebf 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java @@ -624,6 +624,11 @@ public class IPAddressIPIdentities { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -672,7 +677,10 @@ public class IPAddressIPIdentities { out.flush(); } finally { // close the socket - Thread.sleep(2000); + while (!closeReady) { + Thread.sleep(50); + } + System.out.println("Server closing socket"); sslSocket.close(); serverReady = false; @@ -705,12 +713,17 @@ public class IPAddressIPIdentities { URL url = new URL("https://127.0.0.1:" + serverPort+"/"); System.out.println("url is "+url.toString()); - http = (HttpsURLConnection)url.openConnection(); + try { + http = (HttpsURLConnection)url.openConnection(); - int respCode = http.getResponseCode(); - System.out.println("respCode = "+respCode); - - http.disconnect(); + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + } finally { + if (http != null) { + http.disconnect(); + } + closeReady = true; + } } /* diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java index 7e1d48fdfb1..10dc8d8301a 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java @@ -624,6 +624,11 @@ public class IPIdentities { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -672,7 +677,10 @@ public class IPIdentities { out.flush(); } finally { // close the socket - Thread.sleep(2000); + while (!closeReady) { + Thread.sleep(50); + } + System.out.println("Server closing socket"); sslSocket.close(); serverReady = false; @@ -705,12 +713,17 @@ public class IPIdentities { URL url = new URL("https://localhost:" + serverPort+"/"); System.out.println("url is "+url.toString()); - http = (HttpsURLConnection)url.openConnection(); + try { + http = (HttpsURLConnection)url.openConnection(); - int respCode = http.getResponseCode(); - System.out.println("respCode = "+respCode); - - http.disconnect(); + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + } finally { + if (http != null) { + http.disconnect(); + } + closeReady = true; + } } /* diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java index 0bde45f909d..79224b0ac70 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java @@ -623,6 +623,11 @@ public class Identities { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -671,7 +676,10 @@ public class Identities { out.flush(); } finally { // close the socket - Thread.sleep(2000); + while (!closeReady) { + Thread.sleep(50); + } + System.out.println("Server closing socket"); sslSocket.close(); serverReady = false; @@ -704,12 +712,17 @@ public class Identities { URL url = new URL("https://localhost:" + serverPort+"/"); System.out.println("url is "+url.toString()); - http = (HttpsURLConnection)url.openConnection(); + try { + http = (HttpsURLConnection)url.openConnection(); - int respCode = http.getResponseCode(); - System.out.println("respCode = "+respCode); - - http.disconnect(); + int respCode = http.getResponseCode(); + System.out.println("respCode = "+respCode); + } finally { + if (http != null) { + http.disconnect(); + } + closeReady = true; + } } /* diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java index 838647ab76a..9321820f755 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Redirect.java @@ -60,6 +60,11 @@ public class Redirect { */ volatile static boolean serverReady = false; + /* + * Is the connection ready to close? + */ + volatile static boolean closeReady = false; + /* * Turn on SSL debugging? */ @@ -98,24 +103,33 @@ public class Redirect { serverReady = true; SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); - InputStream sslIS = sslSocket.getInputStream(); - OutputStream sslOS = sslSocket.getOutputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(sslIS)); - PrintStream ps = new PrintStream(sslOS); - // process HTTP POST request from client - System.out.println("status line: "+br.readLine()); + try { + InputStream sslIS = sslSocket.getInputStream(); + OutputStream sslOS = sslSocket.getOutputStream(); + BufferedReader br = + new BufferedReader(new InputStreamReader(sslIS)); + PrintStream ps = new PrintStream(sslOS); - ps.println("HTTP/1.1 307 Redirect"); - ps.println("Location: https://localhost:"+serverPort+"/index.html\n\n"); - ps.flush(); - sslSocket = (SSLSocket) sslServerSocket.accept(); - sslOS = sslSocket.getOutputStream(); - ps = new PrintStream(sslOS); - ps.println("HTTP/1.1 200 Redirect succeeded\n\n"); - ps.flush(); - Thread.sleep(2000); - sslSocket.close(); - sslServerSocket.close(); + // process HTTP POST request from client + System.out.println("status line: "+br.readLine()); + + ps.println("HTTP/1.1 307 Redirect"); + ps.println("Location: https://localhost:" + serverPort + + "/index.html\n\n"); + ps.flush(); + sslSocket = (SSLSocket) sslServerSocket.accept(); + sslOS = sslSocket.getOutputStream(); + ps = new PrintStream(sslOS); + ps.println("HTTP/1.1 200 Redirect succeeded\n\n"); + ps.flush(); + } finally { + // close the socket + while (!closeReady) { + Thread.sleep(50); + } + sslSocket.close(); + sslServerSocket.close(); + } } /* @@ -139,10 +153,14 @@ public class Redirect { HttpsURLConnection.setDefaultHostnameVerifier( new NameVerifier()); HttpsURLConnection http = (HttpsURLConnection)url.openConnection(); - - System.out.println("response header: "+http.getHeaderField(0)); - if (http.getResponseCode() != 200) { - throw new RuntimeException("test Failed"); + try { + System.out.println("response header: "+http.getHeaderField(0)); + if (http.getResponseCode() != 200) { + throw new RuntimeException("test Failed"); + } + } finally { + http.disconnect(); + closeReady = true; } } From 144741e52c758e063a65c2888541a7ddc9ebb069 Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Sun, 11 Apr 2010 23:21:23 -0700 Subject: [PATCH 08/64] 6875904: Java 7 message synchronization 1 Reviewed-by: ogino, faryad --- jdk/make/sun/launcher/Makefile | 2 +- .../rowset/RowSetResourceBundle_de.properties | 35 ++++++----- .../rowset/RowSetResourceBundle_es.properties | 39 +++++++----- .../rowset/RowSetResourceBundle_fr.properties | 59 +++++++++-------- .../rowset/RowSetResourceBundle_it.properties | 37 ++++++----- .../rowset/RowSetResourceBundle_ja.properties | 35 ++++++----- .../rowset/RowSetResourceBundle_ko.properties | 41 ++++++------ .../rowset/RowSetResourceBundle_sv.properties | 33 +++++----- .../RowSetResourceBundle_zh_CN.properties | 38 +++++------ .../RowSetResourceBundle_zh_TW.properties | 38 +++++------ .../plaf/basic/resources/basic_de.properties | 33 +++++----- .../plaf/basic/resources/basic_es.properties | 35 +++++------ .../plaf/basic/resources/basic_fr.properties | 29 +++++---- .../plaf/basic/resources/basic_it.properties | 39 ++++++------ .../plaf/basic/resources/basic_ja.properties | 41 ++++++------ .../plaf/basic/resources/basic_ko.properties | 41 ++++++------ .../plaf/basic/resources/basic_sv.properties | 41 ++++++------ .../basic/resources/basic_zh_CN.properties | 37 ++++++----- .../basic/resources/basic_zh_TW.properties | 37 ++++++----- .../launcher/resources/launcher_de.properties | 47 ++++++++++++++ .../launcher/resources/launcher_es.properties | 47 ++++++++++++++ .../launcher/resources/launcher_fr.properties | 47 ++++++++++++++ .../launcher/resources/launcher_it.properties | 47 ++++++++++++++ .../launcher/resources/launcher_ja.properties | 47 ++++++++++++++ .../launcher/resources/launcher_ko.properties | 47 ++++++++++++++ .../launcher/resources/launcher_sv.properties | 47 ++++++++++++++ .../resources/launcher_zh_CN.properties | 47 ++++++++++++++ .../resources/launcher_zh_TW.properties | 47 ++++++++++++++ .../management/resources/agent_de.properties | 7 +++ .../management/resources/agent_es.properties | 7 +++ .../management/resources/agent_fr.properties | 7 +++ .../management/resources/agent_it.properties | 7 +++ .../management/resources/agent_ja.properties | 9 ++- .../management/resources/agent_ko.properties | 7 +++ .../management/resources/agent_sv.properties | 7 +++ .../resources/agent_zh_CN.properties | 9 ++- .../resources/agent_zh_TW.properties | 7 +++ .../security/tools/JarSignerResources_ja.java | 53 ++++++++++++---- .../tools/JarSignerResources_zh_CN.java | 63 ++++++++++++++----- .../sun/security/util/AuthResources_de.java | 44 ++++++------- .../sun/security/util/AuthResources_es.java | 44 ++++++------- .../sun/security/util/AuthResources_fr.java | 44 ++++++------- .../sun/security/util/AuthResources_it.java | 45 +++++++------ .../sun/security/util/AuthResources_ja.java | 8 +-- .../sun/security/util/AuthResources_ko.java | 6 +- .../sun/security/util/AuthResources_sv.java | 47 +++++++------- .../security/util/AuthResources_zh_CN.java | 6 +- .../security/util/AuthResources_zh_TW.java | 6 +- .../resources/JConsoleResources_ja.java | 37 ++++++----- .../resources/JConsoleResources_zh_CN.java | 45 +++++++------ 50 files changed, 1102 insertions(+), 526 deletions(-) create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_de.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_es.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_it.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties create mode 100644 jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties diff --git a/jdk/make/sun/launcher/Makefile b/jdk/make/sun/launcher/Makefile index 32b2ec7aa1b..2cc011aff04 100644 --- a/jdk/make/sun/launcher/Makefile +++ b/jdk/make/sun/launcher/Makefile @@ -38,7 +38,7 @@ AUTO_FILES_JAVA_DIRS = sun/launcher # Resources # LOCALE_SET_DEFINITION = jre -NEW_RESOURCE_BUNDLES_COMPILED_PROPERTIES = $(PKGDIR)/resources/launcher.properties +RESOURCE_BUNDLES_COMPILED_PROPERTIES = $(PKGDIR)/resources/launcher.properties # # Rules diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties index d464b48d1c0..94c22ba0c17 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} fehlgeschlagen cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} fehlgeschlagen cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} fehlgeschlagen cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} fehlgeschlagen -cachedrowsetimpl.dtypemismt = Keine Datentyp\u00fcbereinstimmung +cachedrowsetimpl.dtypemismt = Keine Datentyp\u00fcbereinstimmung cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich cachedrowsetimpl.posupdate = Positionierte Aktualisierungen werden nicht unterst\u00fctzt @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument f\u00fcr unsetMatchColum cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als Null oder kleiner als Abrufgr\u00f6\u00dfe cachedrowsetimpl.startpos = Startposition darf keinen Negativwert aufweisen -cachedrowsetimpl.nextpage = Daten m\u00fcssen vor dem Abrufen ausgef\u00fcllt werden +cachedrowsetimpl.nextpage = Daten m\u00fcssen vor dem Abrufen ausgef\u00fcllt werden cachedrowsetimpl.pagesize = Seitengr\u00f6\u00dfe darf nicht kleiner als Null sein cachedrowsetimpl.pagesize1 = Seitengr\u00f6\u00dfe darf nicht gr\u00f6\u00dfer als maxRows sein cachedrowsetimpl.fwdonly = ResultSet kann nur vorw\u00e4rts gerichtet sein cachedrowsetimpl.type = Typ : {0} +cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt +cachedrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt # WebRowSetImpl exceptions webrowsetimpl.nullhash = Instanz WebRowSetImpl konnte nicht instanziiert werden. Hash-Tabelle mit Nullwert f\u00fcr Konstruktor angegeben @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = Ung\u00fcltiger Schreiber webrowsetimpl.invalidrd = Ung\u00fcltiger Leser #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: Ung\u00fcltiger Cursorvorgang +filteredrowsetimpl.relative = relative: Ung\u00fcltiger Cursorvorgang filteredrowsetimpl.absolute = absolute: Ung\u00fcltiger Cursorvorgang filteredrowsetimpl.notallowed = Kein zul\u00e4ssiger Wert im Filter @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = Kein definierter Verkn\u00fcpfungstyp joinrowsetimpl.notsupported = Verkn\u00fcpfungstyp wird nicht unterst\u00fctzt joinrowsetimpl.initerror = Initialisierungsfehler bei JoinRowSet joinrowsetimpl.genericerr = Generischer Anfangsfehler bei joinrowset +joinrowsetimpl.emptyrowset = Leeres Rowset kann nicht zu JoinRowSet hinzugef\u00fcgt werden #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = Ung\u00fcltiger Status @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = Spalten ohne definierten Wert entsprechen nicht Spal jdbcrowsetimpl.usecolname = Spaltenname als Argument f\u00fcr unsetMatchColumn verwenden jdbcrowsetimpl.usecolid = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden jdbcrowsetimpl.resnotupd = ResultSet kann nicht aktualisiert werden +jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt +jdbcrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt #CachedRowSetReader exceptions crsreader.connect = (JNDI) Verbindung nicht m\u00f6glich crsreader.paramtype = Parametertyp konnte nicht abgeleitet werden +crsreader.connecterr = Interner Fehler im RowSetReader: keine Verbindung oder kein Befehl +crsreader.datedetected = Datum gefunden +crsreader.caldetected = Kalender gefunden #CachedRowSetWriter exceptions crswriter.connect = Verbindung konnte nicht hergestellt werden crswriter.tname = writeData kann Tabellennamen nicht feststellen crswriter.params1 = Wert f\u00fcr params1: {0} crswriter.params2 = Wert f\u00fcr params2: {0} +crswriter.conflictsno = Konflikte w\u00e4hrend der Synchronisation #InsertRow exceptions insertrow.novalue = Es wurde kein Wert eingef\u00fcgt #SyncResolverImpl exceptions -syncrsimpl.indexval = Indexwert liegt au\u00dferhalb des Bereichs +syncrsimpl.indexval = Indexwert liegt au\u00dferhalb des Bereichs syncrsimpl.noconflict = Kein Konflikt bei dieser Spalte syncrsimpl.syncnotpos = Keine Synchronisation m\u00f6glich syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Datenbank oder in cachedrowset @@ -132,31 +141,27 @@ syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Date wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00fcltige Cursorposition wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** Parsing-Fehler -wrsxmlreader.line = , Zeile -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = Schreiben des Werts fehlgeschlagen wsrxmlwriter.notproper = Kein zul\u00e4ssiger Typ -#XmlReaderContentHandle exceptions -xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0} -xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0} +xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0} xmlrch.errinsert = Fehler beim Einf\u00fcgen der Werte: {0} xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0} xmlrch.errdel = Fehler beim L\u00f6schen der Zeile: {0} xmlrch.errinsert = Fehler beim Erstellen der Einf\u00fcgezeile: {0} xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00fcge- oder L\u00f6schzeile: {0} xmlrch.errupdate = Fehler beim Erstellen der Aktualisierungszeile: {0} -xmlrch errupdrow = Fehler beim Aktualisieren der Zeile: {0} +xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile : {0} xmlrch.chars = Zeichen: xmlrch.badvalue = Fehlerhafter Wert; Eigenschaft darf nicht Null sein. xmlrch.badvalue1 = Fehlerhafter Wert; Metadaten d\u00fcrfen nicht Null sein. -xmlrch.warning = ** Warnung -xmlrch.line = , Zeile -xmlrch.uri = , uri +xmlrch.warning = ** Warnung #RIOptimisticProvider Exceptions riop.locking = Sperren der Klassifizierung wird nicht unterst\u00fctzt diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties index ef464cb0d24..02b52ecb028 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -32,7 +32,7 @@ cachedrowsetimpl.accfailed = Fallo de acceptChanges cachedrowsetimpl.invalidcp = Posici\u00f3n de cursor no v\u00e1lida cachedrowsetimpl.illegalop = Operaci\u00f3n no permitida en fila no insertada cachedrowsetimpl.clonefail = Fallo en la clonaci\u00f3n: {0} -cachedrowsetimpl.invalidcol = \u00cdndice de columna no v\u00e1lido +cachedrowsetimpl.invalidcol = \u00cdndice de columnas no v\u00e1lido cachedrowsetimpl.invalcolnm = Nombre de columna no v\u00e1lido cachedrowsetimpl.boolfail = Fallo de getBoolen en valor ( {0} ) de columna {1} cachedrowsetimpl.bytefail = Fallo de getByte en valor ( {0} ) de columna {1} @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = Fallo de getInt en valor ( {0} ) de columna {1} cachedrowsetimpl.longfail = Fallo de getLong en valor ( {0} ) de columna {1} cachedrowsetimpl.floatfail = Fallo de getFloat en valor ( {0} ) de columna {1} cachedrowsetimpl.doublefail = Fallo de getDouble en valor ( {0} ) de columna {1} -cachedrowsetimpl.dtypemismt = Discordancia entre tipos de datos +cachedrowsetimpl.dtypemismt = Discordancia entre tipos de datos cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1} no es posible convertir cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1} no es posible convertir cachedrowsetimpl.posupdate = Actualizaciones posicionadas incompatibles @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = Usar nombre de columna como argumento en unsetMat cachedrowsetimpl.unsetmatch2 = Usar ID de columna como argumento en unsetMatchColumn cachedrowsetimpl.numrows = El n\u00famero de filas es menor que cero o menor que el tama\u00f1o obtenido cachedrowsetimpl.startpos = La posici\u00f3n de inicio no puede ser negativa -cachedrowsetimpl.nextpage = Rellenar datos antes de realizar llamada +cachedrowsetimpl.nextpage = Rellenar datos antes de realizar llamada cachedrowsetimpl.pagesize = El tama\u00f1o de p\u00e1gina no puede ser menor que cero cachedrowsetimpl.pagesize1 = El tama\u00f1o de p\u00e1gina no puede ser mayor que maxRows cachedrowsetimpl.fwdonly = ResultSet s\u00f3lo se reenv\u00eda cachedrowsetimpl.type = El tipo es: {0} +cachedrowsetimpl.opnotysupp = Operaci\u00f3n a\u00fan no admitida +cachedrowsetimpl.featnotsupp = Funci\u00f3n no admitida # WebRowSetImpl exceptions webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Hashtable nula proporcionada al constructor @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = Escritor no v\u00e1lido webrowsetimpl.invalidrd = Lector no v\u00e1lido #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: Operaci\u00f3n de cursor no v\u00e1lida +filteredrowsetimpl.relative = relative: Operaci\u00f3n de cursor no v\u00e1lida filteredrowsetimpl.absolute = absolute: Operaci\u00f3n de cursor no v\u00e1lida filteredrowsetimpl.notallowed = El filtro no admite este valor @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = No es un tipo de uni\u00f3n definido joinrowsetimpl.notsupported = Este tipo de uni\u00f3n no es compatible joinrowsetimpl.initerror = Error de inicio de JoinRowSet joinrowsetimpl.genericerr = Error de Genric joinrowset intial +joinrowsetimpl.emptyrowset = No se puede a\u00f1adir un rowset vac\u00edo a este JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = Estado no v\u00e1lido @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no so jdbcrowsetimpl.usecolname = Usar nombre de columna como argumento en unsetMatchColumn jdbcrowsetimpl.usecolid = Usar ID de columna como argumento en unsetMatchColumn jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar +jdbcrowsetimpl.opnotysupp = Operaci\u00f3n a\u00fan no admitida +jdbcrowsetimpl.featnotsupp = Funci\u00f3n no admitida #CachedRowSetReader exceptions crsreader.connect = (JNDI) No se puede conectar crsreader.paramtype = No se puede deducir tipo de par\u00e1metro +crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00f3n ni comando +crsreader.datedetected = Fecha detectada +crsreader.caldetected = Calendario detectado #CachedRowSetWriter exceptions crswriter.connect = No se puede obtener una conexi\u00f3n crswriter.tname = writeData no puede determinar el nombre de tabla crswriter.params1 = Valor de params1: {0} crswriter.params2 = Valor de params2: {0} +crswriter.conflictsno = conflictos en la sincronizaci\u00f3n #InsertRow exceptions insertrow.novalue = No se ha insertado ning\u00fan valor #SyncResolverImpl exceptions -syncrsimpl.indexval = El valor de \u00edndice est\u00e1 fuera del intervalo +syncrsimpl.indexval = El valor de \u00edndice est\u00e1 fuera del intervalo syncrsimpl.noconflict = Esta columna no est\u00e1 en conflicto syncrsimpl.syncnotpos = No se puede sincronizar syncrsimpl.valtores = El valor que se debe definir puede estar en la base de datos o en cachedrowset @@ -132,31 +141,27 @@ syncrsimpl.valtores = El valor que se debe definir puede estar en la base de dat wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00f3n de cursor no v\u00e1lida wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** Error de an\u00e1lisis -wrsxmlreader.line = , l\u00ednea -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = No se pudo escribir valor wsrxmlwriter.notproper = Tipo incorrecto -#XmlReaderContentHandle exceptions -xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0} -xmlrch.errmetadata = Error al configurar metadatos: {0} -xmlrch.errinsert = Error al insertar valores: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0} +xmlrch.errmetadata = Error al configurar metadatos: {0} +xmlrch.errinsert = Error al insertar los valores: {0} xmlrch.errconstr = Error al construir fila: {0} xmlrch.errdel = Error al borrar fila: {0} xmlrch.errinsert = Error al construir insertar fila: {0} xmlrch.errinsdel = Error al construir insertar o suprimir fila: {0} xmlrch.errupdate = Error al construir actualizar fila: {0} -xmlrch errupdrow = Error al actualizar fila: {0} +xmlrch.errupdrow = Error al actualizar la fila: {0} xmlrch.chars = caracteres: xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos -xmlrch.warning = ** Advertencia -xmlrch.line = , l\u00ednea -xmlrch.uri = , uri +xmlrch.warning = ** Advertencia #RIOptimisticProvider Exceptions riop.locking = No se permite bloquear la clasificaci\u00f3n diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties index 316bc8505ae..04b7ce2510a 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -31,7 +31,7 @@ cachedrowsetimpl.invalidop = Op\u00e9ration non valide lors de l'insertion de li cachedrowsetimpl.accfailed = \u00c9chec de acceptChanges cachedrowsetimpl.invalidcp = Position du curseur non valide cachedrowsetimpl.illegalop = Op\u00e9ration non autoris\u00e9e sur ligne non ins\u00e9r\u00e9e -cachedrowsetimpl.clonefail = \u00c9chec du clonage : +cachedrowsetimpl.clonefail = \u00c9chec du clonage : {0} cachedrowsetimpl.invalidcol = Index de colonne non valide cachedrowsetimpl.invalcolnm = Nom de colonne non valide cachedrowsetimpl.boolfail = \u00c9chec de getBoolen pour la valeur ({0}) de la colonne {1} @@ -41,11 +41,11 @@ cachedrowsetimpl.intfail = \u00c9chec de getInt pour la valeur ({0}) de la colon cachedrowsetimpl.longfail = \u00c9chec de getLong pour la valeur ({0}) de la colonne {1} cachedrowsetimpl.floatfail = \u00c9chec de getFloat pour la valeur ({0}) de la colonne {1} cachedrowsetimpl.doublefail = \u00c9chec de getDouble pour la valeur ({0}) de la colonne {1} -cachedrowsetimpl.dtypemismt = Le type de donn\u00e9es ne correspond pas +cachedrowsetimpl.dtypemismt = Le type de donn\u00e9es ne correspond pas cachedrowsetimpl.datefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible cachedrowsetimpl.timefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible cachedrowsetimpl.posupdate = Mises \u00e0 jour choisies non prises en charge -cachedrowsetimpl.unableins = Instanciation impossible : +cachedrowsetimpl.unableins = Instanciation impossible : {0} cachedrowsetimpl.beforefirst = beforeFirst : op\u00e9ration de curseur non valide cachedrowsetimpl.first = First : op\u00e9ration de curseur non valide cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY @@ -75,7 +75,9 @@ cachedrowsetimpl.nextpage = Entrez les donn\u00e9es avant l'appel cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00eatre n\u00e9gative cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00eatre sup\u00e9rieure \u00e0 maxRows cachedrowsetimpl.fwdonly = ResultSet est en avant seulement -cachedrowsetimpl.type = Le type est : +cachedrowsetimpl.type = Le type est : {0} +cachedrowsetimpl.opnotysupp = Op\u00e9ration encore non prise en charge +cachedrowsetimpl.featnotsupp = Fonction non prise en charge # WebRowSetImpl exceptions webrowsetimpl.nullhash = Impossible de cr\u00e9er une instance de WebRowSetImpl. Table de hachage null fournie au constructeur @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = G\u00e9n\u00e9rateur non valide webrowsetimpl.invalidrd = Lecteur non valide #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative : op\u00e9ration de curseur non valide +filteredrowsetimpl.relative = relative : op\u00e9ration de curseur non valide filteredrowsetimpl.absolute = absolute : op\u00e9ration de curseur non valide filteredrowsetimpl.notallowed = Cette valeur n'est pas autoris\u00e9e via le filtre @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00e9fini joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet joinrowsetimpl.genericerr = Erreur initiale g\u00e9n\u00e9rique de JoinRowSet +joinrowsetimpl.emptyrowset = Impossible d'ajouter un ensemble de lignes vide \u00e0 ce JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = \u00c9tat non valide @@ -108,55 +111,57 @@ jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00e9finies ne sont pas les m\u00 jdbcrowsetimpl.usecolname = Utilisez le nom de la colonne en argument de unsetMatchColumn jdbcrowsetimpl.usecolid = Utilisez l'ID de la colonne en argument de unsetMatchColumn jdbcrowsetimpl.resnotupd = La mise \u00e0 jour de ResultSet est interdite +jdbcrowsetimpl.opnotysupp = Op\u00e9ration encore non prise en charge +jdbcrowsetimpl.featnotsupp = Fonction non prise en charge #CachedRowSetReader exceptions crsreader.connect = Impossible de connecter (JNDI) crsreader.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre +crsreader.connecterr = Erreur interne dans RowSetReader\u00a0: aucune connexion ou commande +crsreader.datedetected = Date d\u00e9tect\u00e9e +crsreader.caldetected = Calendrier d\u00e9tect\u00e9 #CachedRowSetWriter exceptions crswriter.connect = Impossible d'obtenir la connexion crswriter.tname = writeData ne peut pas d\u00e9terminer le nom du tableau -crswriter.params1 = Valeur de params1 : -crswriter.params2 = Valeur de params2 : +crswriter.params1 = Valeur de params1 : {0} +crswriter.params2 = Valeur de params2 : {0} +crswriter.conflictsno = Conflits au cours de la synchronisation #InsertRow exceptions insertrow.novalue = Aucune valeur n'a \u00e9t\u00e9 ins\u00e9r\u00e9e #SyncResolverImpl exceptions -syncrsimpl.indexval = Valeur d'index hors plage +syncrsimpl.indexval = Valeur d'index hors plage syncrsimpl.noconflict = Cette colonne n'est pas en conflit syncrsimpl.syncnotpos = La synchronisation est impossible syncrsimpl.valtores = La valeur \u00e0 r\u00e9soudre peut \u00eatre soit dans la base de donn\u00e9es soit dans CachedrowSet #WebRowSetXmlReader exception wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide -wrsxmlreader.readxml = readXML : +wrsxmlreader.readxml = readXML : {0} wrsxmlreader.parseerr = ** Erreur d'analyse -wrsxmlreader.line = , ligne -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions -wrsxmlwriter.ioex = IOException : -wrsxmlwriter.sqlex = SQLException : +wrsxmlwriter.ioex = IOException : {0} +wrsxmlwriter.sqlex = SQLException : {0} wrsxmlwriter.failedwrite = \u00c9chec d'\u00e9criture de la valeur wsrxmlwriter.notproper = N'est pas un type correct -#XmlReaderContentHandle exceptions -xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : -xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : -xmlrch.errinsert = Erreur lors de l'insertion des valeurs : -xmlrch.errconstr = Erreur lors de la construction de la ligne : -xmlrch.errdel = Erreur lors de la suppression de la ligne : -xmlrch.errinsert = Erreur lors de la construction de la ligne \u00e0 ins\u00e9rer : -xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : -xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : -xmlrch errupdrow = Erreur lors de la mise \u00e0 jour de la ligne : +#XmlReaderContentHandler exceptions +xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : {0} +xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : {0} +xmlrch.errinsert = Erreur lors de l''insertion des valeurs : {0} +xmlrch.errconstr = Erreur lors de la construction de la ligne : {0} +xmlrch.errdel = Erreur lors de la suppression de la ligne : {0} +xmlrch.errinsert = Erreur lors de la construction de la ligne \u00e0 ins\u00e9rer : {0} +xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0} +xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : {0} +xmlrch.errupdrow = Erreur lors de la mise \u00e0 jour de la ligne\u00a0: {0} xmlrch.chars = caract\u00e8res : xmlrch.badvalue = Valeur incorrecte ; null impossible pour cette propri\u00e9t\u00e9 xmlrch.badvalue1 = Valeur incorrecte ; null impossible pour ces m\u00e9tadonn\u00e9es -xmlrch.warning = ** Avertissement -xmlrch.line = , ligne -xmlrch.uri = , uri +xmlrch.warning = ** Avertissement #RIOptimisticProvider Exceptions riop.locking = Le verrouillage de la classification n'est pas pris en charge diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties index 0f0ee8ab620..619c0cc34f6 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = getInt non riuscito per il valore ( {0} ) nella colon cachedrowsetimpl.longfail = getLong non riuscito per il valore ( {0} ) nella colonna {1} cachedrowsetimpl.floatfail = getFloat non riuscito per il valore ( {0} ) nella colonna {1} cachedrowsetimpl.doublefail = getDouble non riuscito per il valore ( {0} ) nella colonna {1} -cachedrowsetimpl.dtypemismt = Mancata corrispondenza dei tipi di dati +cachedrowsetimpl.dtypemismt = Mancata corrispondenza dei tipi di dati cachedrowsetimpl.datefail = getDate non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile. cachedrowsetimpl.timefail = getTime non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile. cachedrowsetimpl.posupdate = Aggiornamenti posizionati non supportati @@ -76,6 +76,8 @@ cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00f2 essere infer cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00f2 essere superiore a maxRows cachedrowsetimpl.fwdonly = ResultSet \u00e8 a solo inoltro cachedrowsetimpl.type = Il tipo \u00e8: {0} +cachedrowsetimpl.opnotysupp = Operazione non ancora supportata +cachedrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata # WebRowSetImpl exceptions webrowsetimpl.nullhash = Impossibile istanziare l'istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = Autore non valido webrowsetimpl.invalidrd = Lettore non valido #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: operazione cursore non valida +filteredrowsetimpl.relative = relative: operazione cursore non valida filteredrowsetimpl.absolute = absolute: operazione cursore non valida filteredrowsetimpl.notallowed = Questo valore non \u00e8 consentito nel filtro @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = Non \u00e8 un tipo di unione definito joinrowsetimpl.notsupported = Questo tipo di unione non \u00e8 supportato joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico +joinrowsetimpl.emptyrowset = Impossibile aggiungere un rowset al JoinRowSet corrente #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = Stato non valido @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne imp jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn jdbcrowsetimpl.resnotupd = ResultSet non \u00e8 aggiornabile +jdbcrowsetimpl.opnotysupp = Operazione non ancora supportata +jdbcrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata #CachedRowSetReader exceptions crsreader.connect = (JNDI) Impossibile stabilire una connessione crsreader.paramtype = Impossibile dedurre il tipo di parametro +crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando disponibile +crsreader.datedetected = Data rilevata +crsreader.caldetected = Calendario rilevato #CachedRowSetWriter exceptions crswriter.connect = Impossibile stabilire una connessione crswriter.tname = writeData non riesce a determinare il nome di tabella crswriter.params1 = Valore dei parametri 1: {0} crswriter.params2 = Valore dei parametri 2: {0} +crswriter.conflictsno = conflitti durante la sincronizzazione #InsertRow exceptions insertrow.novalue = Non \u00e8 stato inserito alcun valore #SyncResolverImpl exceptions -syncrsimpl.indexval = Il valore di indice non rientra nell'intervallo +syncrsimpl.indexval = Il valore di indice non rientra nell'intervallo syncrsimpl.noconflict = Questa colonna non \u00e8 in conflitto syncrsimpl.syncnotpos = Impossibile eseguire la sincronizzazione syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in cachedrowset @@ -132,31 +141,27 @@ syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in c wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** Errore di analisi -wrsxmlreader.line = , linea -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = Impossibile scrivere il valore wsrxmlwriter.notproper = Non un tipo corretto -#XmlReaderContentHandle exceptions -xmlrch.errmap = Errore durante l'impostazione della mappa: {0} -xmlrch.errmetadata = Errore durante l'impostazione dei metadati: {0} -xmlrch.errinsert = Errore durante l'inserimento dei valori: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = Errore durante l''impostazione della mappa: {0} +xmlrch.errmetadata = Errore durante l'impostazione dei metadati: {0} +xmlrch.errinsert = Errore durante l''inserimento dei valori: {0} xmlrch.errconstr = Errore durante la costruzione della riga: {0} -xmlrch.errdel = Errore durante l'eliminazione della riga: {0} +xmlrch.errdel = Errore durante l''eliminazione della riga: {0} xmlrch.errinsert = Errore durante la costruzione della riga di inserimento: {0} xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0} xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0} -xmlrch errupdrow = Errore durante l'aggiornamento della riga: {0} +xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0} xmlrch.chars = caratteri: xmlrch.badvalue = valore non valido; propriet\u00e0 non annullabile xmlrch.badvalue1 = valore non valido; metadati non annullabili -xmlrch.warning = ** Avviso -xmlrch.line = , linea -xmlrch.uri = , uri +xmlrch.warning = ** Avviso #RIOptimisticProvider Exceptions riop.locking = La classificazione di blocco non \u00e8 supportata diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties index 5e40077edba..26a2e59863e 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getInt \u304c\ cachedrowsetimpl.longfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getLong \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 cachedrowsetimpl.floatfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getFloat \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 cachedrowsetimpl.doublefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDouble \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -cachedrowsetimpl.dtypemismt = \u30c7\u30fc\u30bf\u578b\u306e\u30df\u30b9\u30de\u30c3\u30c1 +cachedrowsetimpl.dtypemismt = \u30c7\u30fc\u30bf\u578b\u306e\u30df\u30b9\u30de\u30c3\u30c1 cachedrowsetimpl.datefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDate \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002 cachedrowsetimpl.timefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getTime \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002 cachedrowsetimpl.posupdate = \u4f4d\u7f6e\u6c7a\u3081\u3055\u308c\u305f\u66f4\u65b0\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002 @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u cachedrowsetimpl.unsetmatch2 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 cachedrowsetimpl.numrows = \u884c\u6570\u304c\u30bc\u30ed\u307e\u305f\u306f\u30d5\u30a7\u30c3\u30c1\u30b5\u30a4\u30ba\u3088\u308a\u5c0f\u3055\u3044\u3067\u3059\u3002 cachedrowsetimpl.startpos = \u958b\u59cb\u4f4d\u7f6e\u306f\u8ca0\u3067\u306f\u306a\u308a\u307e\u305b\u3093\u3002 -cachedrowsetimpl.nextpage = \u547c\u3073\u51fa\u3057\u524d\u306b\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +cachedrowsetimpl.nextpage = \u547c\u3073\u51fa\u3057\u524d\u306b\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 cachedrowsetimpl.pagesize = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f\u30bc\u30ed\u3088\u308a\u5c0f\u3055\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002 cachedrowsetimpl.pagesize1 = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f maxRows \u3088\u308a\u5927\u304d\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002 cachedrowsetimpl.fwdonly = ResultSet \u306f\u9806\u65b9\u5411\u306e\u307f\u3067\u3059\u3002 cachedrowsetimpl.type = \u578b : {0} +cachedrowsetimpl.opnotysupp = \u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +cachedrowsetimpl.featnotsupp = \u3053\u306e\u6a5f\u80fd\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 # WebRowSetImpl exceptions webrowsetimpl.nullhash = WebRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002 @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = \u7121\u52b9\u306a\u30e9\u30a4\u30bf\u30fc webrowsetimpl.invalidrd = \u7121\u52b9\u306a\u30ea\u30fc\u30c0\u30fc #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c +filteredrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c filteredrowsetimpl.absolute = absolute : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c filteredrowsetimpl.notallowed = \u3053\u306e\u5024\u306f\u30d5\u30a3\u30eb\u30bf\u3067\u8a31\u5bb9\u3055\u308c\u307e\u305b\u3093\u3002 @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = \u5b9a\u7fa9\u3055\u308c\u305f\u7d50\u5408\u306e\u57 joinrowsetimpl.notsupported = \u3053\u306e\u578b\u306e\u7d50\u5408\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 joinrowsetimpl.initerror = JoinRowSet \u521d\u671f\u5316\u30a8\u30e9\u30fc joinrowsetimpl.genericerr = \u6c4e\u7528 joinrowset \u306e\u521d\u671f\u30a8\u30e9\u30fc +joinrowsetimpl.emptyrowset = \u3053\u306e JoinRowSet \u306b\u306f\u7a7a\u306e\u884c\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002 #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = \u7121\u52b9\u306a\u72b6\u614b @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u30 jdbcrowsetimpl.usecolname = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 jdbcrowsetimpl.usecolid = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 jdbcrowsetimpl.resnotupd = ResultSet \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002 +jdbcrowsetimpl.opnotysupp = \u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +jdbcrowsetimpl.featnotsupp = \u3053\u306e\u6a5f\u80fd\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 #CachedRowSetReader exceptions crsreader.connect = (JNDI) \u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002 crsreader.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 +crsreader.connecterr = RowSetReader \u306e\u5185\u90e8\u30a8\u30e9\u30fc: \u5207\u65ad\u3055\u308c\u3066\u3044\u308b\u304b\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +crsreader.datedetected = \u65e5\u4ed8\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 +crsreader.caldetected = \u30ab\u30ec\u30f3\u30c0\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 #CachedRowSetWriter exceptions crswriter.connect = \u63a5\u7d9a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 crswriter.tname = writeData \u304c\u8868\u540d\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 crswriter.params1 = params1 \u306e\u5024 : {0} crswriter.params2 = params2 \u306e\u5024 : {0} +crswriter.conflictsno = \u540c\u671f\u4e2d\u306b\u885d\u7a81\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 #InsertRow exceptions insertrow.novalue = \u5024\u306f\u633f\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7bc4\u56f2\u5916\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5024 +syncrsimpl.indexval = \u7bc4\u56f2\u5916\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5024 syncrsimpl.noconflict = \u3053\u306e\u5217\u306f\u7af6\u5408\u3057\u3066\u3044\u307e\u305b\u3093\u3002 syncrsimpl.syncnotpos = \u540c\u671f\u3067\u304d\u307e\u305b\u3093\u3002 syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b cachedrowset \u306b\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 @@ -132,31 +141,27 @@ syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30 wrsxmlreader.invalidcp = RowSet \u306e\u6700\u5f8c\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e wrsxmlreader.readxml = readXML : {0} wrsxmlreader.parseerr = ** \u69cb\u6587\u89e3\u6790\u30a8\u30e9\u30fc -wrsxmlreader.line = , \u884c -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException : {0} -wrsxmlwriter.sqlex = SQLException : {0} +wrsxmlwriter.sqlex = SQLException : {0} wrsxmlwriter.failedwrite = \u5024\u306e\u66f8\u304d\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 wsrxmlwriter.notproper = \u9069\u5207\u306a\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -#XmlReaderContentHandle exceptions -xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} -xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} +xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} xmlrch.errinsert = \u5024\u306e\u633f\u5165\u30a8\u30e9\u30fc : {0} xmlrch.errconstr = \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errdel = \u884c\u306e\u524a\u9664\u30a8\u30e9\u30fc : {0} xmlrch.errinsert = \u633f\u5165\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errinsdel = insdel \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errupdate = \u66f4\u65b0\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} -xmlrch errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc : {0} +xmlrch.errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc: {0} xmlrch.chars = \u6587\u5b57 : -xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3 +xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc xmlrch.badvalue1 = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf -xmlrch.warning = ** \u8b66\u544a -xmlrch.line = , \u884c -xmlrch.uri = , uri +xmlrch.warning = ** \u8b66\u544a #RIOptimisticProvider Exceptions riop.locking = \u30ed\u30c3\u30af\u306e\u5206\u985e\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties index d1d27f06360..d01f56eb5d5 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getInt\uac00 cachedrowsetimpl.longfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.floatfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getFloat\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.doublefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDouble\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.dtypemismt = \ub370\uc774\ud130 \uc720\ud615\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +cachedrowsetimpl.dtypemismt = \ub370\uc774\ud130 \uc720\ud615\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.datefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDate\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.timefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.posupdate = \uc704\uce58 \uc9c0\uc815 \uc5c5\ub370\uc774\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 cachedrowsetimpl.unsetmatch2 = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. cachedrowsetimpl.numrows = \ud589 \uac1c\uc218\uac00 0\ubcf4\ub2e4 \uc791\uac70\ub098 \ubc18\uc785 \ud06c\uae30\ubcf4\ub2e4 \uc791\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.startpos = \uc2dc\uc791 \uc704\uce58\ub294 \uc74c\uc218\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -cachedrowsetimpl.nextpage = \ud638\ucd9c\ud558\uae30 \uc804\uc5d0 \ub370\uc774\ud130\ub97c \ucc44\uc6b0\uc2ed\uc2dc\uc624. +cachedrowsetimpl.nextpage = \ud638\ucd9c\ud558\uae30 \uc804\uc5d0 \ub370\uc774\ud130\ub97c \ucc44\uc6b0\uc2ed\uc2dc\uc624. cachedrowsetimpl.pagesize = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 0\ubcf4\ub2e4 \uc791\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.pagesize1 = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 maxRows\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.fwdonly = ResultSet\ub294 \uc804\ub2ec \uc804\uc6a9\uc785\ub2c8\ub2e4. cachedrowsetimpl.type = \uc720\ud615: {0} +cachedrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +cachedrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. # WebRowSetImpl exceptions webrowsetimpl.nullhash = WebRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = \uc798\ubabb\ub41c \uae30\ub85d\uae30\uc785\ub2c8\ub2e webrowsetimpl.invalidrd = \uc798\ubabb\ub41c \ud310\ub3c5\uae30\uc785\ub2c8\ub2e4. #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. +filteredrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. filteredrowsetimpl.absolute = \uc808\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. filteredrowsetimpl.notallowed = \uc774 \uac12\uc740 \ud544\ud130\ub97c \ud1b5\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = \uc815\uc758\ub41c \uacb0\ud569 \uc720\ud615\uc774 \ joinrowsetimpl.notsupported = \uc774 \uacb0\ud569 \uc720\ud615\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. joinrowsetimpl.initerror = JoinRowSet \ucd08\uae30\ud654 \uc624\ub958 joinrowsetimpl.genericerr = \uc77c\ubc18 joinrowset \ucd08\uae30 \uc624\ub958 +joinrowsetimpl.emptyrowset = \uc774 JoinRowSet\uc5d0 \ube48 rowset\uc744 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = \uc798\ubabb\ub41c \uc0c1\ud0dc\uc785\ub2c8\ub2e4. @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\ jdbcrowsetimpl.usecolname = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. jdbcrowsetimpl.usecolid = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. jdbcrowsetimpl.resnotupd = ResultSet\uc740 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +jdbcrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +jdbcrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. #CachedRowSetReader exceptions crsreader.connect = (JNDI) \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crsreader.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +crsreader.connecterr = RowSetReader \ub0b4\ubd80 \uc624\ub958: \uc5f0\uacb0 \ub610\ub294 \uba85\ub839\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +crsreader.datedetected = \ub0a0\uc9dc\uac00 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +crsreader.caldetected = \ub2ec\ub825\uc774 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. #CachedRowSetWriter exceptions crswriter.connect = \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crswriter.tname = writeData\uc5d0\uc11c \ud14c\uc774\ube14 \uc774\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. -crswriter.params1 = params1\uc758 \uac12: {0} -crswriter.params2 = params2\uc758 \uac12: {0} +crswriter.params1 = params1\uc758 \uac12: {0} +crswriter.params2 = params2\uc758 \uac12: {0} +crswriter.conflictsno = \ub3d9\uae30\ud654\ud558\ub294 \ub3d9\uc548 \ucda9\ub3cc\ud569\ub2c8\ub2e4. #InsertRow exceptions insertrow.novalue = \uac12\uc774 \uc0bd\uc785\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. #SyncResolverImpl exceptions -syncrsimpl.indexval = \uc0c9\uc778 \uac12\uc774 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4. +syncrsimpl.indexval = \uc0c9\uc778 \uac12\uc774 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4. syncrsimpl.noconflict = \uc774 \uc5f4\uc740 \ucda9\ub3cc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. syncrsimpl.syncnotpos = \ub3d9\uae30\ud654\ub97c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub098 cachedrowset\uc5d0 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. @@ -132,31 +141,27 @@ syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\u wrsxmlreader.invalidcp = RowSet\uc758 \ub05d\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 -wrsxmlreader.line = , \uc904 -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = \uac12\uc744 \uc4f0\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. wsrxmlwriter.notproper = \uc62c\ubc14\ub978 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. -#XmlReaderContentHandle exceptions -xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch.errinsert = \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} +xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} +xmlrch.errinsert = \ub2e4\uc74c \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0} xmlrch.errconstr = \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errdel = \ud589\uc744 \uc81c\uac70\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errinsert = insert \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errinsdel = insdel \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errupdate = update \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} -xmlrch errupdrow = \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} +xmlrch.errupdrow = \ud589 \uc5c5\ub370\uc774\ud2b8 \uc624\ub958: {0} xmlrch.chars = \ubb38\uc790: xmlrch.badvalue = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \ub4f1\ub85d \uc815\ubcf4 xmlrch.badvalue1 = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \uba54\ud0c0\ub370\uc774\ud130 -xmlrch.warning = ** \uacbd\uace0 -xmlrch.line = , \uc904 -xmlrch.uri = , uri +xmlrch.warning = ** \uacbd\uace0 #RIOptimisticProvider Exceptions riop.locking = \ub4f1\uae09 \uc7a0\uae08\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties index a2e68620caf..addc4aa77d3 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = getInt misslyckades f\u00f6r v\u00e4rdet ({0}) i kolu cachedrowsetimpl.longfail = getLong misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} cachedrowsetimpl.floatfail = getFloat misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} cachedrowsetimpl.doublefail = getDouble misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1} -cachedrowsetimpl.dtypemismt = Inkompatibel datatyp +cachedrowsetimpl.dtypemismt = Inkompatibel datatyp cachedrowsetimpl.datefail = getDate misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig cachedrowsetimpl.timefail = getTime misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig cachedrowsetimpl.posupdate = Det finns inte st\u00f6d f\u00f6r positionerad uppdatering @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = Anv\u00e4nd kolumnnamn som argument f\u00f6r unse cachedrowsetimpl.unsetmatch2 = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn cachedrowsetimpl.numrows = Antalet rader understiger noll eller \u00e4r mindre \u00e4n h\u00e4mtningsstorleken cachedrowsetimpl.startpos = Startpositionen f\u00e5r inte vara negativ -cachedrowsetimpl.nextpage = Fyll i data innan anrop +cachedrowsetimpl.nextpage = Fyll i data innan anrop cachedrowsetimpl.pagesize = Sidstorleken f\u00e5r inte understiga noll cachedrowsetimpl.pagesize1 = Sidstorleken f\u00e5r inte \u00f6verstiga maxRows cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00e5 fram\u00e5t cachedrowsetimpl.type = Typ: {0} +cachedrowsetimpl.opnotysupp = Det finns \u00e4nnu inte st\u00f6d f\u00f6r \u00e5tg\u00e4rden +cachedrowsetimpl.featnotsupp = Funktionen st\u00f6ds inte # WebRowSetImpl exceptions webrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen WebRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r. @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = Detta \u00e4r inte n\u00e5gon definierad kopplingsty joinrowsetimpl.notsupported = Det finns inget st\u00f6d f\u00f6r denna kopplingstyp joinrowsetimpl.initerror = Initieringsfel f\u00f6r JoinRowSet joinrowsetimpl.genericerr = Allm\u00e4nt initieringsfel f\u00f6r JoinRowSet +joinrowsetimpl.emptyrowset = Det g\u00e5r inte att l\u00e4gga till tom rowset i denna JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = Ogiltig status @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte sam jdbcrowsetimpl.usecolname = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn jdbcrowsetimpl.usecolid = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn jdbcrowsetimpl.resnotupd = ResultSet \u00e4r inte uppdateringsbart +jdbcrowsetimpl.opnotysupp = Det finns \u00e4nnu inte st\u00f6d f\u00f6r \u00e5tg\u00e4rden +jdbcrowsetimpl.featnotsupp = Funktionen st\u00f6ds inte #CachedRowSetReader exceptions crsreader.connect = (JNDI) kan inte anslutas crsreader.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen +crsreader.connecterr = Internfel i RowSetReader: ingen anslutning eller inget kommando +crsreader.datedetected = Ett datum uppt\u00e4cktes +crsreader.caldetected = En kalender uppt\u00e4cktes #CachedRowSetWriter exceptions crswriter.connect = Det g\u00e5r inte att uppr\u00e4tta n\u00e5gon anslutning crswriter.tname = writeData kan inte fastst\u00e4lla tabellnamnet crswriter.params1 = Parameterv\u00e4rde1: {0} crswriter.params2 = Parameterv\u00e4rde2: {0} +crswriter.conflictsno = konflikter uppstod vid synkronisering #InsertRow exceptions insertrow.novalue = Inget v\u00e4rde har infogats #SyncResolverImpl exceptions -syncrsimpl.indexval = Indexv\u00e4rdet ligger utanf\u00f6r intervallet +syncrsimpl.indexval = Indexv\u00e4rdet ligger utanf\u00f6r intervallet syncrsimpl.noconflict = Denna kolumn st\u00e5r inte i konflikt syncrsimpl.syncnotpos = Synkronisering \u00e4r inte m\u00f6jlig syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i databasen eller i cachedrowset @@ -132,31 +141,27 @@ syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i datab wrsxmlreader.invalidcp = Slutet p\u00e5 RowSet har n\u00e5tts. Mark\u00f6rpositionen \u00e4r ogiltig. wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** Tolkningsfel -wrsxmlreader.line = , rad -wrsxmlreader.uri = , URI #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = Det gick inte att skriva v\u00e4rdet wsrxmlwriter.notproper = Ingen riktig typ -#XmlReaderContentHandle exceptions -xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0} -xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0} +xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0} xmlrch.errinsert = Ett fel uppstod n\u00e4r f\u00f6ljande v\u00e4rden skulle infogas: {0} xmlrch.errconstr = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle skapas: {0} xmlrch.errdel = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle raderas: {0} xmlrch.errinsert = Ett fel uppstod n\u00e4r f\u00f6ljande infogningsrad skulle skapas: {0} xmlrch.errinsdel = Ett fel uppstod n\u00e4r raden insdel skulle skapas: {0} xmlrch.errupdate = Ett fel uppstod n\u00e4r f\u00f6ljande uppdateringsrad skulle skapas: {0} -xmlrch errupdrow = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle uppdateras: {0} +xmlrch.errupdrow = Det gick inte att uppdatera raden: {0} xmlrch.chars = tecken: xmlrch.badvalue = Felaktigt v\u00e4rde; egenskapen kan inte ha ett tomt v\u00e4rde xmlrch.badvalue1 = Felaktigt v\u00e4rde; metadatan kan inte ha ett tomt v\u00e4rde -xmlrch.warning = ** Varning! -xmlrch.line = , rad -xmlrch.uri = , URI +xmlrch.warning = ** Varning! #RIOptimisticProvider Exceptions riop.locking = Det finns inte st\u00f6d f\u00f6r denna l\u00e5sningsklassifikation diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties index 01258eaf627..efd8c981932 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884 cachedrowsetimpl.longfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getLong \u5931\u8d25 cachedrowsetimpl.floatfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getFloat \u5931\u8d25 cachedrowsetimpl.doublefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDouble \u5931\u8d25 -cachedrowsetimpl.dtypemismt = \u6570\u636e\u7c7b\u578b\u4e0d\u5339\u914d +cachedrowsetimpl.dtypemismt = \u6570\u636e\u7c7b\u578b\u4e0d\u5339\u914d cachedrowsetimpl.datefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDate \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362 cachedrowsetimpl.timefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getTime \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362 cachedrowsetimpl.posupdate = \u4e0d\u652f\u6301\u5b9a\u4f4d\u66f4\u65b0 @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchCo cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 cachedrowsetimpl.numrows = \u884c\u6570\u5c0f\u4e8e\u96f6\u6216\u5c0f\u4e8e\u8981\u63d0\u53d6\u7684\u884c\u6570 cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u4e3a\u8d1f\u6570 -cachedrowsetimpl.nextpage = \u5728\u8c03\u7528\u4e4b\u524d\u5148\u586b\u5145\u6570\u636e +cachedrowsetimpl.nextpage = \u5728\u8c03\u7528\u4e4b\u524d\u5148\u586b\u5145\u6570\u636e cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u4e8e\u96f6 cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u4e8e maxRows cachedrowsetimpl.fwdonly = ResultSet \u7684\u7c7b\u578b\u4e3a\u4ec5\u5411\u524d\u7c7b\u578b cachedrowsetimpl.type = \u7c7b\u578b\u4e3a: {0} +cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u64cd\u4f5c +cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u6301\u529f\u80fd # WebRowSetImpl exceptions webrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 WebRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = \u7f16\u5199\u5668\u65e0\u6548 webrowsetimpl.invalidrd = \u8bfb\u53d6\u5668\u65e0\u6548 #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 +filteredrowsetimpl.relative = relative: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 filteredrowsetimpl.absolute = absolute: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 filteredrowsetimpl.notallowed = \u4e0d\u5141\u8bb8\u6b64\u503c\u901a\u8fc7\u8fc7\u6ee4\u5668 @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = \u8fd9\u4e0d\u662f\u5b9a\u4e49\u7684\u8fde\u63a5\u7c joinrowsetimpl.notsupported = \u4e0d\u652f\u6301\u6b64\u8fde\u63a5\u7c7b\u578b joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u9519\u8bef joinrowsetimpl.genericerr = \u4e00\u822c JoinRowSet \u521d\u59cb\u5316\u9519\u8bef +joinrowsetimpl.emptyrowset = \u65e0\u6cd5\u5c06\u7a7a\u7684 rowset \u6dfb\u52a0\u5230\u6b64 JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = \u72b6\u6001\u65e0\u6548 @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u76 jdbcrowsetimpl.usecolname = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 jdbcrowsetimpl.usecolid = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 +jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u64cd\u4f5c +jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u6301\u529f\u80fd #CachedRowSetReader exceptions crsreader.connect = (JNDI) \u65e0\u6cd5\u8fde\u63a5 crsreader.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b +crsreader.connecterr = RowSetReader \u53d1\u751f\u5185\u90e8\u9519\u8bef\uff1a\u6ca1\u6709\u8fde\u63a5\u6216\u547d\u4ee4 +crsreader.datedetected = \u68c0\u6d4b\u5230\u65e5\u671f +crsreader.caldetected = \u68c0\u6d4b\u5230\u65e5\u5386 #CachedRowSetWriter exceptions crswriter.connect = \u65e0\u6cd5\u8fdb\u884c\u8fde\u63a5 crswriter.tname = writeData \u65e0\u6cd5\u786e\u5b9a\u8868\u540d crswriter.params1 = params1 \u7684\u503c: {0} crswriter.params2 = params2 \u7684\u503c: {0} +crswriter.conflictsno = \u540c\u6b65\u65f6\u53d1\u751f\u51b2\u7a81 #InsertRow exceptions insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u4efb\u4f55\u503c #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u8303\u56f4 +syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u8303\u56f4 syncrsimpl.noconflict = \u6b64\u5217\u4e0d\u51b2\u7a81 syncrsimpl.syncnotpos = \u4e0d\u80fd\u540c\u6b65 syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u636e\u5e93\u4e2d\uff0c\u4e5f\u53ef\u4ee5\u5728 CachedRowSet \u4e2d @@ -132,37 +141,30 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u63 wrsxmlreader.invalidcp = \u5df2\u5230\u8fbe RowSet \u7684\u7ed3\u5c3e\u3002\u5149\u6807\u4f4d\u7f6e\u65e0\u6548 wrsxmlreader.readxml = readXML: {0} wrsxmlreader.parseerr = ** \u8bed\u6cd5\u89e3\u6790\u9519\u8bef -wrsxmlreader.line = \uff0c\u884c -wrsxmlreader.uri = \uff0curi #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException: {0} -wrsxmlwriter.sqlex = SQLException: {0} +wrsxmlwriter.sqlex = SQLException: {0} wrsxmlwriter.failedwrite = \u65e0\u6cd5\u5199\u5165\u503c wsrxmlwriter.notproper = \u7c7b\u578b\u4e0d\u6b63\u786e -#XmlReaderContentHandle exceptions -xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0} -xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0} +#XmlReaderContentHandler exceptions +xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0} +xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0} xmlrch.errinsert = \u63d2\u5165\u503c\u65f6\u51fa\u9519: {0} xmlrch.errconstr = \u6784\u9020\u884c\u65f6\u51fa\u9519: {0} xmlrch.errdel = \u5220\u9664\u884c\u65f6\u51fa\u9519: {0} xmlrch.errinsert = \u6784\u9020\u63d2\u5165\u884c\u65f6\u51fa\u9519: {0} xmlrch.errinsdel = \u6784\u9020 insdel \u884c\u65f6\u51fa\u9519: {0} xmlrch.errupdate = \u6784\u9020\u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0} -xmlrch errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0} +xmlrch.errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519\uff1a{0} xmlrch.chars = \u5b57\u7b26: xmlrch.badvalue = \u503c\u9519\u8bef\uff1b\u5c5e\u6027\u4e0d\u53ef\u4e3a Null xmlrch.badvalue1 = \u503c\u9519\u8bef\uff1b\u5143\u6570\u636e\u4e0d\u53ef\u4e3a Null -xmlrch.warning = ** \u8b66\u544a -xmlrch.line = \uff0c\u884c -xmlrch.uri = \uff0curi +xmlrch.warning = ** \u8b66\u544a #RIOptimisticProvider Exceptions riop.locking = \u4e0d\u652f\u6301\u9501\u5b9a\u5206\u7c7b #RIXMLProvider exceptions rixml.unsupp = \u4e0d\u652f\u6301 RIXMLProvider - - - diff --git a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties index dcb342f4257..0355fefac89 100644 --- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties @@ -1,5 +1,5 @@ # -# Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -41,7 +41,7 @@ cachedrowsetimpl.intfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u8 cachedrowsetimpl.longfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getLong \u5931\u6557 cachedrowsetimpl.floatfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getFloat \u5931\u6557 cachedrowsetimpl.doublefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDouble \u5931\u6557 -cachedrowsetimpl.dtypemismt = \u8cc7\u6599\u985e\u578b\u4e0d\u5339\u914d +cachedrowsetimpl.dtypemismt = \u8cc7\u6599\u985e\u578b\u4e0d\u5339\u914d cachedrowsetimpl.datefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDate \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db cachedrowsetimpl.timefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getTime \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db cachedrowsetimpl.posupdate = \u4e0d\u652f\u63f4\u5b9a\u4f4d\u7684\u66f4\u65b0 @@ -71,11 +71,13 @@ cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchCo cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 cachedrowsetimpl.numrows = \u5217\u6578\u5c0f\u65bc\u96f6\u6216\u5c0f\u65bc\u64f7\u53d6\u5927\u5c0f cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u70ba\u8ca0 -cachedrowsetimpl.nextpage = \u5728\u547c\u53eb\u4e4b\u524d\u690d\u5165\u8cc7\u6599 +cachedrowsetimpl.nextpage = \u5728\u547c\u53eb\u4e4b\u524d\u690d\u5165\u8cc7\u6599 cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u65bc\u96f6 cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u65bc maxRows cachedrowsetimpl.fwdonly = ResultSet \u53ea\u80fd\u5411\u524d\u9032\u884c cachedrowsetimpl.type = \u985e\u578b\u662f\uff1a{0} +cachedrowsetimpl.opnotysupp = \u5c1a\u672a\u652f\u63f4\u6b64\u4f5c\u696d +cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u6b64\u529f\u80fd # WebRowSetImpl exceptions webrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d WebRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a @@ -83,7 +85,7 @@ webrowsetimpl.invalidwr = \u5beb\u5165\u5668\u7121\u6548 webrowsetimpl.invalidrd = \u8b80\u53d6\u5668\u7121\u6548 #FilteredRowSetImpl exceptions -filteredrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 +filteredrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 filteredrowsetimpl.absolute = absolute\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 filteredrowsetimpl.notallowed = \u4e0d\u5141\u8a31\u6b64\u503c\u901a\u904e\u904e\u6ffe\u5668 @@ -95,6 +97,7 @@ joinrowsetimpl.notdefined = \u9019\u4e0d\u662f\u9023\u7d50\u7684\u5df2\u5b9a\u7f joinrowsetimpl.notsupported = \u4e0d\u652f\u63f4\u6b64\u985e\u9023\u7d50 joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u932f\u8aa4 joinrowsetimpl.genericerr = \u5e38\u898f\u7684 joinrowset \u521d\u59cb\u5316\u932f\u8aa4 +joinrowsetimpl.emptyrowset = \u4e0d\u53ef\u5c07\u7a7a\u767d\u7684 rowset \u589e\u52a0\u81f3\u6b64 JoinRowSet #JdbcRowSetImpl exceptions jdbcrowsetimpl.invalstate = \u72c0\u614b\u7121\u6548 @@ -108,22 +111,28 @@ jdbcrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u76 jdbcrowsetimpl.usecolname = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 jdbcrowsetimpl.usecolid = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 +jdbcrowsetimpl.opnotysupp = \u5c1a\u672a\u652f\u63f4\u6b64\u4f5c\u696d +jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u6b64\u529f\u80fd #CachedRowSetReader exceptions crsreader.connect = (JNDI) \u7121\u6cd5\u9023\u7dda crsreader.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b +crsreader.connecterr = RowSetReader \u767c\u751f\u5167\u90e8\u932f\u8aa4\uff1a\u6c92\u6709\u9023\u7dda\u6216\u6307\u4ee4 +crsreader.datedetected = \u5075\u6e2c\u5230\u65e5\u671f +crsreader.caldetected = \u5075\u6e2c\u5230\u884c\u4e8b\u66c6 #CachedRowSetWriter exceptions crswriter.connect = \u7121\u6cd5\u5efa\u7acb\u9023\u7dda crswriter.tname = writeData \u4e0d\u80fd\u6c7a\u5b9a\u8868\u540d\u7a31 -crswriter.params1 = params1 \u7684\u503c\uff1a{0} -crswriter.params2 = params2 \u7684\u503c\uff1a{0} +crswriter.params1 = params1 \u7684\u503c\uff1a{0} +crswriter.params2 = params2 \u7684\u503c\uff1a{0} +crswriter.conflictsno = \u540c\u6b65\u5316\u6642\u767c\u751f\u885d\u7a81 #InsertRow exceptions insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u503c #SyncResolverImpl exceptions -syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u7bc4\u570d +syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u7bc4\u570d syncrsimpl.noconflict = \u6b64\u6b04\u4e0d\u885d\u7a81 syncrsimpl.syncnotpos = \u4e0d\u53ef\u80fd\u540c\u6b65\u5316 syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u6599\u5eab\u6216 cachedrowset \u4e2d @@ -132,8 +141,6 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u65 wrsxmlreader.invalidcp = \u5df2\u5230\u9054 RowSet \u672b\u5c3e\u3002\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 wrsxmlreader.readxml = readXML\uff1a{0} wrsxmlreader.parseerr = ** \u5256\u6790\u932f\u8aa4 -wrsxmlreader.line = , \u884c -wrsxmlreader.uri = , uri #WebRowSetXmlWriter exceptions wrsxmlwriter.ioex = IOException\uff1a{0} @@ -141,28 +148,23 @@ wrsxmlwriter.sqlex = SQLException\uff1a{0} wrsxmlwriter.failedwrite = \u5beb\u5165\u503c\u5931\u6557 wsrxmlwriter.notproper = \u4e0d\u662f\u6b63\u78ba\u985e\u578b -#XmlReaderContentHandle exceptions +#XmlReaderContentHandler exceptions xmlrch.errmap = \u8a2d\u5b9a\u5c0d\u6620\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errmetadata = \u8a2d\u5b9a\u5143\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch.errinsert = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} +xmlrch.errinsert = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4: {0} xmlrch.errconstr = \u5efa\u69cb\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errdel = \u522a\u9664\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errinsert = \u5efa\u69cb\u63d2\u5165\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errinsdel = \u5efa\u69cb insdel \u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errupdate = \u5efa\u69cb\u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} -xmlrch errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} +xmlrch.errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4: {0} xmlrch.chars = \u5b57\u5143\uff1a xmlrch.badvalue = \u932f\u8aa4\u7684\u503c\uff1b\u7279\u6027\u4e0d\u80fd\u70ba\u7a7a xmlrch.badvalue1 = \u932f\u8aa4\u7684\u503c\uff1b\u5143\u8cc7\u6599\u4e0d\u80fd\u70ba\u7a7a -xmlrch.warning = ** \u8b66\u544a -xmlrch.line = , \u884c -xmlrch.uri = , uri +xmlrch.warning = ** \u8b66\u544a #RIOptimisticProvider Exceptions riop.locking = \u4e0d\u652f\u63f4\u9396\u5b9a\u5206\u985e #RIXMLProvider exceptions rixml.unsupp = RIXMLProvider \u4e0d\u652f\u63f4 - - - diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties index b3455977738..bab2c4296a6 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=Allgemeine Datei FileChooser.directoryDescriptionText=Verzeichnis FileChooser.newFolderErrorText=Fehler beim Erstellen eines neuen Ordners FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=Ordner kann nicht erstellt werden +FileChooser.newFolderParentDoesntExistText=Der Ordner kann nicht erstellt werden.\n\nDas System kann den angegebenen Pfad nicht finden. +FileChooser.renameErrorTitleText=Fehler beim Umbenennen der Datei oder des Ordners +FileChooser.renameErrorText={0} kann nicht umbenannt werden +FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit diesem Namen vorhanden. Geben Sie einen anderen Dateinamen an. FileChooser.acceptAllFileFilterText=Alle Dateien FileChooser.cancelButtonText=Abbrechen FileChooser.cancelButtonMnemonic=65 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=Aktuell: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=Farbton +ColorChooser.hsvSaturationText=S\u00e4ttigung +ColorChooser.hsvValueText=Wert +ColorChooser.hsvTransparencyText=Transparenz ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=Farbton +ColorChooser.hslSaturationText=S\u00e4ttigung +ColorChooser.hslLightnessText=Helligkeit +ColorChooser.hslTransparencyText=Transparenz ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rot @@ -127,14 +126,14 @@ ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=Blau ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbHexCodeText=Farbcode ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 ColorChooser.cmykCyanText=Cyan ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black +ColorChooser.cmykYellowText=Gelb +ColorChooser.cmykBlackText=Schwarz ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties index 75877dd6560..abc99fadb07 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=Archivo gen\u00e9rico FileChooser.directoryDescriptionText=Directorio FileChooser.newFolderErrorText=Error al crear una nueva carpeta FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=No se ha podido crear la carpeta +FileChooser.newFolderParentDoesntExistText=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta especificada. +FileChooser.renameErrorTitleText=Error al cambiar de nombre el archivo o la carpeta +FileChooser.renameErrorText=No se puede cambiar de nombre {0} +FileChooser.renameErrorFileExistsText=No se puede cambiar de nombre {0}: Ya existe un archivo con el nombre que ha especificado. Especifique otro nombre de archivo. FileChooser.acceptAllFileFilterText=Todos los archivos FileChooser.cancelButtonText=Cancelar FileChooser.cancelButtonMnemonic=67 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=Reciente: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=Matriz +ColorChooser.hsvSaturationText=Saturaci\u00f3n +ColorChooser.hsvValueText=Valor +ColorChooser.hsvTransparencyText=Transparencia ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=Matriz +ColorChooser.hslSaturationText=Saturaci\u00f3n +ColorChooser.hslLightnessText=Brillo +ColorChooser.hslTransparencyText=Transparencia ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rojo @@ -127,14 +126,14 @@ ColorChooser.rgbGreenMnemonic=86 ColorChooser.rgbBlueText=Azul ColorChooser.rgbBlueMnemonic=76 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbHexCodeText=C\u00f3digo de color ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan +ColorChooser.cmykCyanText=Cian ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black +ColorChooser.cmykYellowText=Amarillo +ColorChooser.cmykBlackText=Negro ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties index 333a1a82fa1..e2085390876 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=Fichier g\u00e9n\u00e9rique FileChooser.directoryDescriptionText=R\u00e9pertoire FileChooser.newFolderErrorText=Erreur lors de la cr\u00e9ation du nouveau dossier FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00e9er le dossier +FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00e9er le dossier.\n\nLe syst\u00e8me ne trouve pas le chemin sp\u00e9cifi\u00e9. +FileChooser.renameErrorTitleText=Erreur lors de la modification du nom du fichier ou du dossier +FileChooser.renameErrorText=Impossible de renommer {0} +FileChooser.renameErrorFileExistsText=Impossible de renommer {0}\u00a0: un fichier portant ce nom existe d\u00e9j\u00e0. Choisissez un nom diff\u00e9rent. FileChooser.acceptAllFileFilterText=Tous les fichiers FileChooser.cancelButtonText=Annuler FileChooser.cancelButtonMnemonic=65 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=Dernier : # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue +ColorChooser.hsvHueText=Teinte ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvValueText=Valeur +ColorChooser.hsvTransparencyText=Transparence ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue +ColorChooser.hslHueText=Teinte ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslLightnessText=Clart\u00e9 +ColorChooser.hslTransparencyText=Transparence ColorChooser.rgbNameText=RVB ColorChooser.rgbMnemonic=86 ColorChooser.rgbRedText=Rouge @@ -127,14 +126,14 @@ ColorChooser.rgbGreenMnemonic=84 ColorChooser.rgbBlueText=Bleu ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbHexCodeText=Code couleur ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 ColorChooser.cmykCyanText=Cyan ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black +ColorChooser.cmykYellowText=Jaune +ColorChooser.cmykBlackText=Noir ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties index 7bc69dbcf5e..92b4e643974 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=File generico FileChooser.directoryDescriptionText=Directory FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=Impossibile creare la cartella +FileChooser.newFolderParentDoesntExistText=Impossibile creare la cartella.\n\nPercorso specificato non trovato nel sistema. +FileChooser.renameErrorTitleText=Errore di ridenominazione del file o della cartella +FileChooser.renameErrorText=Impossibile rinominare {0} +FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00e0 un file con il nome specificato. Specificare un nome file alternativo. FileChooser.acceptAllFileFilterText=Tutti i file FileChooser.cancelButtonText=Annulla FileChooser.cancelButtonMnemonic=65 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=Recenti: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=Tonalit\u00e0 +ColorChooser.hsvSaturationText=Saturazione +ColorChooser.hsvValueText=Valore +ColorChooser.hsvTransparencyText=Trasparenza ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=Tonalit\u00e0 +ColorChooser.hslSaturationText=Saturazione +ColorChooser.hslLightnessText=Luminosit\u00e0 +ColorChooser.hslTransparencyText=Trasparenza ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=Rosso @@ -126,16 +125,16 @@ ColorChooser.rgbGreenText=Verde ColorChooser.rgbGreenMnemonic=69 ColorChooser.rgbBlueText=Blu ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbAlphaText=Alfa +ColorChooser.rgbHexCodeText=Codice colore ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan +ColorChooser.cmykCyanText=Ciano ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black -ColorChooser.cmykAlphaText=Alpha +ColorChooser.cmykYellowText=Giallo +ColorChooser.cmykBlackText=Nero +ColorChooser.cmykAlphaText=Alfa ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties index 5603e9aa1bc..521800da170 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=\u6c4e\u7528\u30d5\u30a1\u30a4\u30eb FileChooser.directoryDescriptionText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea FileChooser.newFolderErrorText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u306b\u5931\u6557 FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 +FileChooser.newFolderParentDoesntExistText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\n\n\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +FileChooser.renameErrorTitleText=\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u306e\u540d\u524d\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +FileChooser.renameErrorText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002 +FileChooser.renameErrorFileExistsText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093: \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb FileChooser.cancelButtonText=\u53d6\u6d88\u3057 FileChooser.cancelButtonMnemonic=67 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=\u6700\u65b0: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=\u8272\u5408\u3044 +ColorChooser.hsvSaturationText=\u5f69\u5ea6 +ColorChooser.hsvValueText=\u5024 +ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=\u8272\u5408\u3044 +ColorChooser.hslSaturationText=\u5f69\u5ea6 +ColorChooser.hslLightnessText=\u660e\u5ea6 +ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=\u8d64(D) @@ -126,16 +125,16 @@ ColorChooser.rgbGreenText=\u7dd1(N) ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=\u9752(B) ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbAlphaText=\u30a2\u30eb\u30d5\u30a1 +ColorChooser.rgbHexCodeText=\u8272\u30b3\u30fc\u30c9 ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan -ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black -ColorChooser.cmykAlphaText=Alpha +ColorChooser.cmykCyanText=\u30b7\u30a2\u30f3 +ColorChooser.cmykMagentaText=\u30de\u30bc\u30f3\u30c0 +ColorChooser.cmykYellowText=\u9ec4 +ColorChooser.cmykBlackText=\u9ed2 +ColorChooser.cmykAlphaText=\u30a2\u30eb\u30d5\u30a1 ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties index f3866d01f31..1ceea1a1576 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=\uc77c\ubc18 \ud30c\uc77c FileChooser.directoryDescriptionText=\ub514\ub809\ud1a0\ub9ac FileChooser.newFolderErrorText=\uc0c8 \ud3f4\ub354 \uc791\uc131 \uc624\ub958 FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +FileChooser.newFolderParentDoesntExistText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\n\uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc9c0\uc815\ud55c \uacbd\ub85c\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +FileChooser.renameErrorTitleText=\ud30c\uc77c \ub610\ub294 \ud3f4\ub354 \uc774\ub984 \ubc14\uafb8\uae30 \uc624\ub958 +FileChooser.renameErrorText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +FileChooser.renameErrorFileExistsText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ud55c \uc774\ub984\uc758 \ud30c\uc77c\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ud30c\uc77c \uc774\ub984\uc744 \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624. FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c FileChooser.cancelButtonText=\ucde8\uc18c FileChooser.cancelButtonMnemonic=67 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=\ucd5c\uadfc \ubaa9\ub85d: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=\uc0c9\uc0c1 +ColorChooser.hsvSaturationText=\ucc44\ub3c4 +ColorChooser.hsvValueText=\uac12 +ColorChooser.hsvTransparencyText=\ud22c\uba85\ub3c4 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=\uc0c9\uc0c1 +ColorChooser.hslSaturationText=\ucc44\ub3c4 +ColorChooser.hslLightnessText=\ubc1d\uae30 +ColorChooser.hslTransparencyText=\ud22c\uba85\ub3c4 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=\ube68\uac04\uc0c9(D) @@ -126,16 +125,16 @@ ColorChooser.rgbGreenText=\ub179\uc0c9(N) ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=\ud30c\ub780\uc0c9(B) ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbAlphaText=\uc54c\ud30c +ColorChooser.rgbHexCodeText=\uceec\ub7ec \ucf54\ub4dc ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan -ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black -ColorChooser.cmykAlphaText=Alpha +ColorChooser.cmykCyanText=\uccad\ub85d\uc0c9 +ColorChooser.cmykMagentaText=\uc790\ud64d\uc0c9 +ColorChooser.cmykYellowText=\ub178\ub780\uc0c9 +ColorChooser.cmykBlackText=\ud751\uc0c9 +ColorChooser.cmykAlphaText=\uc54c\ud30c ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties index 17ef3b2be26..01e9b9bc5f8 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=Generisk fil FileChooser.directoryDescriptionText=Katalog FileChooser.newFolderErrorText=Fel d\u00e5 ny mapp skapades FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=Det gick inte att skapa mappen +FileChooser.newFolderParentDoesntExistText=Det gick inte att skapa mappen.\n\nSystemet hittade inte den angivna s\u00f6kv\u00e4gen. +FileChooser.renameErrorTitleText=Det gick inte att byta namn p\u00e5 filen eller mappen +FileChooser.renameErrorText=Det gick inte byta namn p\u00e5 {0} +FileChooser.renameErrorFileExistsText=Det gick inte byta namn p\u00e5 {0}: Det finns redan en fil med det namnet. Ge den ett annat namn. FileChooser.acceptAllFileFilterText=Alla filer FileChooser.cancelButtonText=Avbryt FileChooser.cancelButtonMnemonic=65 @@ -106,18 +105,18 @@ ColorChooser.swatchesRecentText=Tidigare: # constant, and an index into the text to render the mnemonic as. The # mnemonic is xxxMnemonic and the index of the character to underline is # xxxDisplayedMnemonicIndex. -ColorChooser.hsvNameText=HSV +ColorChooser.hsvNameText=NMI ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=Nyans +ColorChooser.hsvSaturationText=M\u00e4ttnad +ColorChooser.hsvValueText=V\u00e4rde +ColorChooser.hsvTransparencyText=Genomskinlighet ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=Nyans +ColorChooser.hslSaturationText=M\u00e4ttnad +ColorChooser.hslLightnessText=Ljusstyrka +ColorChooser.hslTransparencyText=Genomskinlighet ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=R\u00f6d @@ -126,16 +125,16 @@ ColorChooser.rgbGreenText=Gr\u00f6n ColorChooser.rgbGreenMnemonic=71 ColorChooser.rgbBlueText=Bl\u00e5 ColorChooser.rgbBlueMnemonic=66 -ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbAlphaText=Alfa +ColorChooser.rgbHexCodeText=F\u00e4rgkod ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan +ColorChooser.cmykCyanText=Cyanbl\u00e5 ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black -ColorChooser.cmykAlphaText=Alpha +ColorChooser.cmykYellowText=Gul +ColorChooser.cmykBlackText=Svart +ColorChooser.cmykAlphaText=Alfa ############ OPTION PANE STRINGS ############# # Mnemonic keys correspond to KeyEvent.VK_XXX constant diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties index b030c20a944..ccd16042b19 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=\u666e\u901a\u7684\u6587\u4ef6 FileChooser.directoryDescriptionText=\u76ee\u5f55 FileChooser.newFolderErrorText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939\u65f6\u53d1\u751f\u9519\u8bef FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939 +FileChooser.newFolderParentDoesntExistText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939\u3002\n\n\u7cfb\u7edf\u65e0\u6cd5\u627e\u5230\u6307\u5b9a\u7684\u8def\u5f84\u3002 +FileChooser.renameErrorTitleText=\u91cd\u547d\u540d\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u65f6\u51fa\u9519 +FileChooser.renameErrorText=\u65e0\u6cd5\u91cd\u547d\u540d {0} +FileChooser.renameErrorFileExistsText=\u65e0\u6cd5\u91cd\u547d\u540d {0}\uff1a\u5df2\u5b58\u5728\u5177\u6709\u6307\u5b9a\u540d\u79f0\u7684\u6587\u4ef6\u3002\u8bf7\u6307\u5b9a\u53e6\u4e00\u6587\u4ef6\u540d\u3002 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6 FileChooser.cancelButtonText=\u53d6\u6d88 FileChooser.cancelButtonMnemonic=67 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=\u6700\u8fd1: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=\u8272\u8c03 +ColorChooser.hsvSaturationText=\u9971\u548c +ColorChooser.hsvValueText=\u503c +ColorChooser.hsvTransparencyText=\u900f\u660e ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=\u8272\u8c03 +ColorChooser.hslSaturationText=\u9971\u548c +ColorChooser.hslLightnessText=\u4eae\u5ea6 +ColorChooser.hslTransparencyText=\u900f\u660e ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=\u7ea2 @@ -127,14 +126,14 @@ ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=\u84dd ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbHexCodeText=\u989c\u8272\u4ee3\u7801 ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan -ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black +ColorChooser.cmykCyanText=\u9752\u8272 +ColorChooser.cmykMagentaText=\u54c1\u7ea2\u8272 +ColorChooser.cmykYellowText=\u9ec4\u8272 +ColorChooser.cmykBlackText=\u9ed1\u8272 ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# diff --git a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties index 47f99f0dcc9..38188218ee3 100644 --- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties +++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties @@ -49,12 +49,11 @@ FileChooser.fileDescriptionText=\u4e00\u822c\u6a94\u6848 FileChooser.directoryDescriptionText=\u76ee\u9304 FileChooser.newFolderErrorText=\u5efa\u7acb\u65b0\u6a94\u6848\u593e\u6642\u767c\u751f\u932f\u8aa4 FileChooser.newFolderErrorSeparator= : -FileChooser.newFolderParentDoesntExistTitleText=Unable to create folder -FileChooser.newFolderParentDoesntExistText=Unable to create the folder.\n\nThe system cannot find the path specified. -FileChooser.renameErrorTitleText=Error Renaming File or Folder -FileChooser.renameErrorText=Cannot rename {0} -FileChooser.renameErrorFileExistsText=Cannot rename {0}: A file with the name you specified already exists. \ - Specify a different file name. +FileChooser.newFolderParentDoesntExistTitleText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e +FileChooser.newFolderParentDoesntExistText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e\u3002\n\n\u7cfb\u7d71\u627e\u4e0d\u5230\u6240\u6307\u5b9a\u7684\u8def\u5f91\u3002 +FileChooser.renameErrorTitleText=\u91cd\u65b0\u547d\u540d\u6a94\u6848\u6216\u8cc7\u6599\u593e\u6642\u767c\u751f\u932f\u8aa4 +FileChooser.renameErrorText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0} +FileChooser.renameErrorFileExistsText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0}\uff1a\u60a8\u6307\u5b9a\u4e4b\u540d\u7a31\u7684\u6a94\u6848\u5df2\u5b58\u5728\u3002\u6307\u5b9a\u4e0d\u540c\u7684\u6a94\u6848\u540d\u7a31\u3002 FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848 FileChooser.cancelButtonText=\u53d6\u6d88 FileChooser.cancelButtonMnemonic=67 @@ -108,16 +107,16 @@ ColorChooser.swatchesRecentText=\u6700\u65b0\u9078\u64c7: # xxxDisplayedMnemonicIndex. ColorChooser.hsvNameText=HSV ColorChooser.hsvMnemonic=72 -ColorChooser.hsvHueText=Hue -ColorChooser.hsvSaturationText=Saturation -ColorChooser.hsvValueText=Value -ColorChooser.hsvTransparencyText=Transparency +ColorChooser.hsvHueText=\u8272\u8abf +ColorChooser.hsvSaturationText=\u98fd\u548c\u5ea6 +ColorChooser.hsvValueText=\u503c +ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6 ColorChooser.hslNameText=HSL ColorChooser.hslMnemonic=76 -ColorChooser.hslHueText=Hue -ColorChooser.hslSaturationText=Saturation -ColorChooser.hslLightnessText=Lightness -ColorChooser.hslTransparencyText=Transparency +ColorChooser.hslHueText=\u8272\u8abf +ColorChooser.hslSaturationText=\u98fd\u548c\u5ea6 +ColorChooser.hslLightnessText=\u4eae\u5ea6 +ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6 ColorChooser.rgbNameText=RGB ColorChooser.rgbMnemonic=71 ColorChooser.rgbRedText=\u7d05\u8272(D) @@ -127,14 +126,14 @@ ColorChooser.rgbGreenMnemonic=78 ColorChooser.rgbBlueText=\u85cd\u8272(B) ColorChooser.rgbBlueMnemonic=66 ColorChooser.rgbAlphaText=Alpha -ColorChooser.rgbHexCodeText=Color Code +ColorChooser.rgbHexCodeText=\u8272\u78bc ColorChooser.rgbHexCodeMnemonic=67 ColorChooser.cmykNameText=CMYK ColorChooser.cmykMnemonic=77 -ColorChooser.cmykCyanText=Cyan -ColorChooser.cmykMagentaText=Magenta -ColorChooser.cmykYellowText=Yellow -ColorChooser.cmykBlackText=Black +ColorChooser.cmykCyanText=\u85cd\u7da0\u8272 +ColorChooser.cmykMagentaText=\u7d2b\u7d05\u8272 +ColorChooser.cmykYellowText=\u9ec3\u8272 +ColorChooser.cmykBlackText=\u9ed1\u8272 ColorChooser.cmykAlphaText=Alpha ############ OPTION PANE STRINGS ############# diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_de.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_de.properties new file mode 100644 index 00000000000..3c37a2fd612 --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_de.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = Verwendung: {0} [-options] class [args...]\n\ (um eine Klasse auszuf\u00fchren)\n oder {0} [-options] -jar jarfile [args...]\n\ (um eine Jar-Datei auszuf\u00fchren)\nwobei zu den Optionen folgende geh\u00f6ren:\n + +java.launcher.opt.datamodel =\ -d{0}\t zur Verwendung eines {0}-Bit-Datenmodells, falls verf\u00fcgbar\n +java.launcher.opt.vmselect =\ {0}\t zur Auswahl von "{1}" VM\n +java.launcher.opt.hotspot =\ {0}\t ist ein Synonym f\u00fcr "{1}" VM [deprecated]\n + +java.launcher.ergo.message1 =\ Standard-VM ist {0}, +java.launcher.ergo.message2 =\ da Sie auf einem Server-Class-Computer ausf\u00fchren.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp \n\ -classpath \n\ A {0} getrennte Liste von Verzeichnissen, JAR-Archiven,\n\ und ZIP-Archiven f\u00fcr die Suche nach Klassendateien .\n\ -D=\n\ Systemeigenschaft festlegen\n\ -verbose[:class|gc|jni]\n\ ausf\u00fchrliche Ausgabe aktivieren\n\ -version Produktversion drucken und beenden\n\ -version:\n\ angegebene Version zum Ausf\u00fchren erforderlich \n\ -showversion Produktversion drucken und fortfahren\n\ -jre-restrict-search | -jre-no-restrict-search\n\ private JREs der Benutzer in Versionssuche ein-/ausschlie\u00dfen\n\ -? -help diese Hilfemeldung drucken\n\ -X Hilfe zu nicht standardm\u00e4\u00dfigen Optionen drucken\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ Assertions mit spezifizierter Granularit\u00e4t aktivieren\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ Assertions mit spezifizierter Granularit\u00e4t deaktivieren\n\ -esa | --enablesystemassertions\n\ System-Assertions aktivieren\n\ -dsa | --disablesystemassertions\n\ System-Assertions deaktivieren\n\ -agentlib:[=]\n\ systemeigene Agent-Bibliothek laden , z.B. -agentlib:hprof\n\ siehe auch, -agentlib:jdwp=help und -agentlib:hprof=help\n\ -agentpath:[=]\n\ systemeigene Agent-Bibliothek \u00fcber vollst\u00e4ndigen Pfadnamen laden\n\ -javaagent:[=]\n\ Java Programmierungs-Sprachagenten laden, siehe java.lang.instrument\n\ -splash:\n\ Eingangsbildschirm mit spezifiziertem Bild anzeigen\nWeitere Informationen finden Sie unter http://java.sun.com/javase/reference. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed gemischte Ausf\u00fchrung des Modus (Standard)\n\ -Xint nur interpretierte Ausf\u00fchrung des Modus\n\ -Xbootclasspath:\n\ Suchpfad f\u00fcr Bootstrap-Klassen und Ressourcen einrichten\n\ -Xbootclasspath/a:\n\ an das Ende des Bootstrap-Klassenpfads anh\u00e4ngen\n\ -Xbootclasspath/p:\n\ an den Beginn des Bootstrap-Klassenpfads anh\u00e4ngen\n\ -Xnoclassgc Klassen-Speicherbereinigung deaktivieren\n\ -Xincgc inkrementelle Speicherbereinigung aktivieren\n\ -Xloggc: GC-Status f\u00fcr eine Datei mit Zeitstempeln einrichten\n\ -Xbatch Hintergrund-Kompilation deaktivieren\n\ -Xms anf\u00e4ngliche Java Heap-Gr\u00f6\u00dfe einstellen\n\ -Xmx maximale Java Heap-Gr\u00f6\u00dfe einstellen\n\ -Xss Gr\u00f6\u00dfe des Java Thread-Stack einstellen\n\ -Xprof CPU-Profildaten ausgeben\n\ -Xfuture genaueste Pr\u00fcfungen aktivieren und zuk\u00fcnftige Standards absehen\n\ -Xrs Verwendung von OS-Signalen durch Java/VM reduzieren (siehe Dokumentation)\n\ -Xcheck:jni zus\u00e4tzliche Pr\u00fcfungen f\u00fcr JNI- Funktionen ausf\u00fchren\n\ -Xshare:off Nicht versuchen, freigegebene Klassendaten zu verwenden\n\ -Xshare:auto Freigegebene Klassendaten verwenden, wenn m\u00f6glich (Standard)\n\ -Xshare:on Nutzung freigegebener Daten ist erforderlich, ansonsten schl\u00e4gt der Vorgang fehl.\n\nDie -X-Optionen sind kein Standard und k\u00f6nnen \u00c4nderungen unterliegen.\n + +java.launcher.cls.error1=Fehler: Hauptklasse {0} wurde nicht gefunden +java.launcher.cls.error2=Fehler: Hauptmethode in Klasse {1} ist nicht {0}. Definieren Sie die folgende Hauptmethode:\n\ public static void main(String[] args) +java.launcher.cls.error3=Fehler: Hauptmethode muss einen Wert des Typs void in Klasse {0} anzeigen.\nDefinieren Sie die folgende Hauptmethode:\n\ public static void main(String[] args) +java.launcher.cls.error4=Fehler: Hauptmethode in Klasse {0} nicht gefunden. Definieren Sie die folgende Hauptmethode:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_es.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_es.properties new file mode 100644 index 00000000000..074c09fd4bc --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_es.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = Uso: {0} [-options] class [args...]\n\ (para ejecutar una clase)\n o {0} [-options] -jar jarfile [args...]\n\ (para ejecutar un archivo jar)\nlas opciones pueden ser:\n + +java.launcher.opt.datamodel =\ -d{0}\t usar un modelo de datos de {0}-bits si est\u00e1 disponible\n +java.launcher.opt.vmselect =\ {0}\t para seleccionar "{1}" VM\n +java.launcher.opt.hotspot =\ {0}\t es un sin\u00f3nimo para la m\u00e1quina virtual "{1}" [deprecated]\n + +java.launcher.ergo.message1 =\ La m\u00e1quina virtual predeterminada es {0} +java.launcher.ergo.message2 =\ porque est\u00e1 trabajando en una m\u00e1quina de clase servidor.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp \n\ -classpath \n\ Una {0} lista de directorios, archivos JAR,\n\ y archivos ZIP en los que buscar los archivos de clase.\n\ -D=\n\ establecer una propiedad de sistema\n\ -verbose[:class|gc|jni]\n\ permitir la salida detallada\n\ -version imprimir versi\u00f3n del producto y salir\n\ -version:\n\ solicitar la versi\u00f3n especificada para ejecutar\n\ -showversion imprimir versi\u00f3n del producto y continuar\n\ -jre-restrict-search | -jre-no-restrict-search\n\ incluir/excluir JRE privados del usuario en la b\u00fasqueda de la versi\u00f3n\n\ -? -help imprimir este mensaje de ayuda\n\ -X imprimir ayuda en las opciones no est\u00e1ndar\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ permitir afirmaciones con granularidad especificada\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ desactivar afirmaciones con granularidad especificada\n\ -esa | -enablesystemassertions\n\ permitir afirmaciones del sistema\n\ -dsa | -disablesystemassertions\n\ desactivar afirmaciones del sistema\n\ -agentlib:[=]\n\ cargar biblioteca de agente nativo, por ejemplo -agentlib:hprof\n\ consulte tambi\u00e9n, -agentlib:jdwp=help y -agentlib:hprof=help\n\ -agentpath:[=]\n\ cargar biblioteca de agente nativo por ruta completa\n\ -javaagent:[=]\n\ cargar agente del lenguaje de programaci\u00f3n Java, consulte java.lang.instrument\n\ -splash:\n\ mostrar pantalla de bienvenida con imagen especificada\nConsulte http://java.sun.com/javase/reference para m\u00e1s informaci\u00f3n. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed modo mixto de ejecuci\u00f3n (predeterminado)\n\ -Xint s\u00f3lo modo de ejecuci\u00f3n interpretado\n\ -Xbootclasspath:\n\ definir ruta de b\u00fasqueda para clases y recursos de la rutina de carga\n\ -Xbootclasspath/a:\n\ a\u00f1adir al final de la ruta de clase de la rutina de carga\n\ -Xbootclasspath/p:\n\ a\u00f1adir al principio de la ruta de clase de la rutina de carga\n\ -Xnoclassgc desactivar recolecci\u00f3n de residuos de clase\n\ -Xincgc permitir recolecci\u00f3n de residuos incremental\n\ -Xloggc: registrar estado de GC en un archivo con marcas de tiempo\n\ -Xbatch desactivar recopilaci\u00f3n de fondos\n\ -Xms definir tama\u00f1o del mont\u00f3n de Java inicial\n\ -Xmx definir tama\u00f1o m\u00e1ximo del mont\u00f3n de Java\n\ -Xss definir tama\u00f1o de la pila del subproceso de java\n\ -Xprof salida de datos del perfil de la cpu\n\ -Xfuture permitir comprobaciones m\u00e1s estrictas para los procesos predeterminados futuros\n\ -Xrs reducir el uso de se\u00f1ales del SO por parte de Java o la m\u00e1quina virtual (consulte la documentaci\u00f3n)\n\ -Xcheck:jni realizar comprobaciones adicionales para las funciones de JNI\n\ -Xshare:off no intentar utilizar datos de clase compartidos\n\ -Xshare:auto utilizar datos de clase compartidos siempre que sea posible (predeterminado)\n\ -Xshare:on solicitar el uso obligatorio de datos de clase compartidos.\n\nLas opciones "-X" no son est\u00e1ndar y pueden sufrir modificaciones sin previo aviso.\n + +java.launcher.cls.error1=Error: no se pudo encontrar la clase principal {0} +java.launcher.cls.error2=Error: el m\u00e9todo principal no es {0} en la clase {1}, defina el m\u00e9todo principal como:\n\ public static void main(String[] args) +java.launcher.cls.error3=Error: el m\u00e9todo principal debe volver a ser un valor de tipo vac\u00edo en la clase {0}, defina \nel m\u00e9todo principal como:\n\ public static void main(String[] args) +java.launcher.cls.error4=Error: m\u00e9todo principal no encontrado en la clase {0}, defina el m\u00e9todo principal como:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties new file mode 100644 index 00000000000..ea927d9a814 --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_fr.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = Utilisation\u00a0: {0} [-options] class [args...]\n\ (pour ex\u00e9cuter une classe)\n ou {0} [-options] -jar jarfile [args...]\n\ (pour ex\u00e9cuter un fichier jar)\no\u00f9 les options sont\u00a0:\n + +java.launcher.opt.datamodel =\ -d{0}\t utiliser un mod\u00e8le de donn\u00e9es {0}\u00a0bits, le cas \u00e9ch\u00e9ant\n +java.launcher.opt.vmselect =\ {0}\t s\u00e9lectionner la machine virtuelle "{1}"\n +java.launcher.opt.hotspot =\ {0}\t est un synonyme de la machine virtuelle "{1}" [\u00e0 \u00e9viter]\n + +java.launcher.ergo.message1 =\ La machine virtuelle par d\u00e9faut est {0} +java.launcher.ergo.message2 =\ car vous utilisez une machine de type serveur.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp \n\ -classpath \n\ Une liste s\u00e9par\u00e9e {0} de r\u00e9pertoires, archives JAR\n\ et archives ZIP dans laquelle rechercher des fichiers de classe.\n\ -D=\n\ d\u00e9finir une propri\u00e9t\u00e9 syst\u00e8me\n\ -verbose[:class|gc|jni]\n\ activer une sortie d\u00e9taill\u00e9ee\n\ -version imprimer la version du produit et quitter\n\ -version:\n\ utiliser la version sp\u00e9cifi\u00e9e pour l''ex\u00e9cution\n\ -showversion imprimer la version du produit et continuer\n\ -jre-restrict-search | -jre-no-restrict-search\n\ inclure/exclure les JRE priv\u00e9s d''utilisateur dans la recherche de version\n\ -? -help imprimer ce message d''aide\n\ -X imprimer l''aide relative aux options non standard\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ activer les assertions avec la granularit\u00e9 sp\u00e9cifi\u00e9e\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ d\u00e9sactiver les assertions avec la granularit\u00e9 sp\u00e9cifi\u00e9e\n\ -esa | -enablesystemassertions\n\ activer les assertions syst\u00e8me\n\ -dsa | -disablesystemassertions\n\ d\u00e9sactiver les assertions syst\u00e8me\n\ -agentlib:[=]\n\ charger la biblioth\u00e8que d''agents natifs, par exemple -agentlib:hprof\n\ voir \u00e9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n\ -agentpath:[=]\n\ charger la biblioth\u00e8que d''agents natifs en indiquant le chemin complet\n\ -javaagent:[=]\n\ charger l''agent de langage de programmation Java, voir java.lang.instrument\n\ -splash:\n\ afficher l''\u00e9cran de bienvenue avec l''image sp\u00e9cifi\u00e9e\nPour plus de d\u00e9tails, reportez-vous \u00e0 la page http://java.sun.com/javase/reference. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed ex\u00e9cution du mode compil\u00e9 (par d\u00e9faut)\n\ -Xint ex\u00e9cution du mode interpr\u00e9t\u00e9 uniquement\n\ -Xbootclasspath:\n\ d\u00e9finir le chemin de recherche pour les classes et ressources bootstrap\n\ -Xbootclasspath/a:\n\ ajouter \u00e0 la fin du chemin de la classe bootstrap\n\ -Xbootclasspath/p:\n\ ajouter au d\u00e9but du chemin de la classe bootstrap\n\ -Xnoclassgc d\u00e9sactiver la collection d''informations parasites sur la classe\n\ -Xincgc activer la collection incr\u00e9mentielle d''informations parasites\n\ -Xloggc: enregistrer le statut GC dans un fichier horodat\u00e9\n\ -Xbatch d\u00e9sactiver la compilation d''arri\u00e8re-plans\n\ -Xms d\u00e9finir la taille initiale des tas Java\n\ -Xmx d\u00e9finir la taille maximale des tas Java\n\ -Xss d\u00e9finir la taille des piles de fil Java\n\ -Xprof \u00e9mettre des donn\u00e9es de profilage d''UC\n\ -Xfuture activer des contr\u00f4les plus stricts, en anticipant les erreurs futures\n\ -Xrs r\u00e9duire l''utilisation des signaux d''OS par Java/la machine virtuelle (reportez-vous \u00e0 la documentation)\n\ -Xcheck:jni effectuer des contr\u00f4les suppl\u00e9mentaires pour les fonctions JNI\n\ -Xshare:off ne pas tenter d''utiliser les donn\u00e9es de classe partag\u00e9es\n\ -Xshare:auto utiliser les donn\u00e9es de classe partag\u00e9es si possible (par d\u00e9faut)\n\ -Xshare:on forcer l''utilisation de donn\u00e9es de classe partag\u00e9es, sinon \u00e9chec.\n\nLes options\u00a0X ne sont pas standard et sont sujettes \u00e0 modification sans pr\u00e9avis.\n + +java.launcher.cls.error1=Erreur\u00a0: Impossible de trouver la classe {0} principale +java.launcher.cls.error2=Erreur\u00a0: La m\u00e9thode principale n''est pas {0} dans la classe {1}. Veuillez d\u00e9finir la m\u00e9thode principale comme\u00a0:\n\ public static void main(String[] args) +java.launcher.cls.error3=Erreur\u00a0: La m\u00e9thode principale doit renvoyer une valeur de type null dans la classe \{0\. Veuillez \nd\u00e9finir la m\u00e9thode principale comme\u00a0:\n\ public static void main(String[] args) +java.launcher.cls.error4=Erreur\u00a0: M\u00e9thode principale introuvable dans la classe {0}. Veuillez d\u00e9finir la m\u00e9thode principale comme\u00a0:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_it.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_it.properties new file mode 100644 index 00000000000..94043d0ebbc --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_it.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = Utilizzo: {0} [-opzioni] class [argom...]\n\ (per eseguire una classe)\n o {0} [-opzioni] -jar jarfile [argom...]\n\ (per eseguire un file jar)\ndove le opzioni includono:\n + +java.launcher.opt.datamodel =\ -d{0}\t utilizzo di un modello di dati a {0} bit, se disponibile\n +java.launcher.opt.vmselect =\ {0}\t per selezionare la macchina virtuale "{1}"\n +java.launcher.opt.hotspot =\ {0}\t \u00e8 sinonimo della macchina virtuale "{1}" [obsoleta]\n + +java.launcher.ergo.message1 =\ La macchina virtuale predefinita \u00e8 {0} +java.launcher.ergo.message2 =\ perch\u00e9 l'esecuzione avviene su una macchina di classe server.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp \n\ -classpath \n\ Elenco separato da {0} di directory, archivi JAR\n\ e archivi ZIP in cui cercare i file di classe.\n\ -D=\n\ imposta una propriet\u00e0 di sistema\n\ -verbose[:class|gc|jni]\n\ attiva l''output dettagliato\n\ -version stampa la versione del prodotto ed esce\n\ -version:\n\ richiede la versione specificata per l''esecuzione\n\ -showversion stampa la versione del prodotto e procede\n\ -jre-restrict-search | -jre-no-restrict-search\n\ consente di includere/escludere JRE privati dell''utente nella ricerca della versione\n\ -? -help stampa il presente messaggio della Guida\n\ -X stampa la Guida delle opzioni non standard\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ attiva le asserzioni con la granularit\u00e0 specificata\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ disattiva le asserzioni con la granularit\u00e0 specificata\n\ -esa | -enablesystemassertions\n\ attiva le asserzioni di sistema\n\ -dsa | -disablesystemassertions\n\ disattiva le asserzioni di sistema\n\ -agentlib:[=]\n\ carica la libreria agente nativa , ad es. -agentlib:hprof\n\ vedere anche, -agentlib:jdwp=help e -agentlib:hprof=help\n\ -agentpath:[=]\n\ carica la libreria agente nativa in base al percorso completo\n\ -javaagent:[=]\n\ carica l''agente del linguaggio di programmazione Java, vedere java.lang.instrument\n\ -splash:\n\ mostra la schermata iniziale con l''immagine specificata\nPer ulteriori informazioni, visitare http://java.sun.com/javase/reference. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed esecuzione in modalit\u00e0 mista (predefinita)\n\ -Xint solo esecuzione in modalit\u00e0 interpretata\n\ -Xbootclasspath:\n\ imposta il percorso di ricerca per classi e risorse di bootstrap\n\ -Xbootclasspath/a:\n\ accoda alla fine del percorso della classe di bootstrap\n\ -Xbootclasspath/p:\n\ antepone al percorso della classe di bootsrap\n\ -Xnoclassgc disattiva Garbage Collection per la classe\n\ -Xincgc attiva Garbage Collection incrementale\n\ -Xloggc: registra lo stato GC in un file con timestamp\n\ -Xbatch disattiva la compilazione in background\n\ -Xms imposta la dimensione heap Java iniziale\n\ -Xmx imposta la dimensione heap Java massima\n\ -Xss imposta la dimensione dello stack del thread Java\n\ -Xprof dati di profilo della CPU di output\n\ -Xfuture attiva verifiche pi\u00f9 dettagliate, anticipa le impostazioni predefinite future\n\ -Xrs riduce l''uso di segnali OS da parte di Java o della macchina virtuale (vedere la documentazione)\n\ -Xcheck:jni esegue verifiche aggiuntive per le funzioni JNI\n\ -Xshare:off esclude l''utilizzo di dati classe condivisi\n\ -Xshare:auto imposta l''utilizzo di dati classe condivisi ogni volta che \u00e8 possibile (impostazione predefinita)\n\ -Xshare:on richiede l''utilizzo di dati classe condivisi, in caso contrario origina un errore.\n\nLe opzioni -X sono non standard e soggette a modifiche senza preavviso.\n + +java.launcher.cls.error1=Errore: Classe principale {0} non trovata. +java.launcher.cls.error2=Errore: Il metodo principale non \u00e8 {0} nella classe {1}. Definire il nuovo metodo come:\n\ public static void main(String[] args) +java.launcher.cls.error3=Errore: Il metodo principale deve restituire un valore di tipo void nella classe {0}. \nDefinire il nuovo metodo come:\n\ public static void main(String[] args) +java.launcher.cls.error4=Errore: Metodo principale non trovato nella classe {0}. Definire il metodo principale come:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties new file mode 100644 index 00000000000..4d6676adbcb --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_ja.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = \u4f7f\u7528\u6cd5: {0} [-options] class [args...]\n\ (\u30af\u30e9\u30b9\u3092\u5b9f\u884c\u3059\u308b)\n \u307e\u305f\u306f {0} [-options] -jar jarfile [args...]\n\ (jar \u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\u3059\u308b)\n\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059:\n + +java.launcher.opt.datamodel =\ -d{0}\t {0}-bit \u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u4f7f\u7528 (\u53ef\u80fd\u306a\u5834\u5408)\n +java.launcher.opt.vmselect =\ {0}\t "{1}" VM \u3092\u9078\u629e\n +java.launcher.opt.hotspot =\ {0}\t "{1}" VM \u306e\u540c\u7fa9\u8a9e\u3067\u3059 [\u975e\u63a8\u5968]\n + +java.launcher.ergo.message1 =\ \u30c7\u30d5\u30a9\u30eb\u30c8 VM \u306f {0} \u3067\u3059 +java.launcher.ergo.message2 =\ \u7406\u7531\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u30af\u30e9\u30b9\u306e\u30de\u30b7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304a\u3088\u3073 ZIP/JAR \u30d5\u30a1\u30a4\u30eb\u306e\u30af\u30e9\u30b9\u691c\u7d22\u30d1\u30b9>\n\ -classpath <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304a\u3088\u3073 ZIP/JAR \u30d5\u30a1\u30a4\u30eb\u306e\u30af\u30e9\u30b9\u691c\u7d22\u30d1\u30b9>\n\ \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3001JAR \u30a2\u30fc\u30ab\u30a4\u30d6\u3001\n\ \u304a\u3088\u3073 ZIP \u30a2\u30fc\u30ab\u30a4\u30d6\u306e {0} \u3067\u5206\u5272\u3055\u308c\u305f\u30ea\u30b9\u30c8\u3002\n\ -D=\n\ \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u8a2d\u5b9a\n\ -verbose[:class|gc|jni]\n\ \u8a73\u7d30\u51fa\u529b\u306e\u6709\u52b9\u5316\n\ -version \u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5370\u5237\u3057\u3066\u7d42\u4e86\n\ -version:\n\ \u5b9f\u884c\u306b\u5fc5\u8981\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u8981\u6c42\n\ -showversion \u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5370\u5237\u3057\u3066\u7d99\u7d9a\n\ -jre-restrict-search | -jre-no-restrict-search\n\ \u30d0\u30fc\u30b8\u30e7\u30f3\u691c\u7d22\u306b\u30e6\u30fc\u30b6\u30fc\u306e\u975e\u516c\u958b JRE \u3092\u542b\u3081\u308b\u304b\u9664\u5916\u3059\u308b\u304b\u3092\u5207\u308a\u66ff\u3048\u308b\n\ -? -help \u3053\u306e\u30d8\u30eb\u30d7\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5370\u5237\n\ -X \u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u30d8\u30eb\u30d7\u3092\u5370\u5237\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ \u6307\u5b9a\u3057\u305f\u7c92\u5ea6\u3067\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u5316\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ \u6307\u5b9a\u3057\u305f\u7c92\u5ea6\u3067\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u5316\n\ -esa | -enablesystemassertions\n\ \u30b7\u30b9\u30c6\u30e0\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u6709\u52b9\u5316\n\ -dsa | -disablesystemassertions\n\ \u30b7\u30b9\u30c6\u30e0\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u5316\n\ -agentlib:[=]\n\ \u30cd\u30a4\u30c6\u30a3\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea (\u4f8b: -agentlib:hprof) \u3092\u30ed\u30fc\u30c9\n\ \u95a2\u9023\u9805\u76ee\u3001 -agentlib:jdwp=help and -agentlib:hprof=help\n\ -agentpath:[=]\n\ \u5b8c\u5168\u306a\u30d1\u30b9\u540d\u3067\u30cd\u30a4\u30c6\u30a3\u30d6\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30ed\u30fc\u30c9\n\ -javaagent:[=]\n\ Java \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u30ed\u30fc\u30c9\u3002java.lang.instrument \u3092\u53c2\u7167\n\ -splash:\n\ \u6307\u5b9a\u3057\u305f\u753b\u50cf\u306e\u30b9\u30d7\u30e9\u30c3\u30b7\u30e5\u753b\u9762\u3092\u8868\u793a\n\u8a73\u7d30\u306f http://java.sun.com/javase/reference \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed \u6df7\u5408\u30e2\u30fc\u30c9\u3067\u306e\u5b9f\u884c (\u30c7\u30d5\u30a9\u30eb\u30c8)\n\ -Xint \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30e2\u30fc\u30c9\u3067\u306e\u307f\u5b9f\u884c\n\ -Xbootclasspath:\n\ \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u304a\u3088\u3073\u30ea\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u30d1\u30b9\u3092\u8a2d\u5b9a\n\ -Xbootclasspath/a:\n\ \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306e\u30d1\u30b9\u306e\u672b\u5c3e\u306b\u8ffd\u52a0\n\ -Xbootclasspath/p:\n\ \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306e\u30d1\u30b9\u306e\u5192\u982d\u306b\u8ffd\u52a0\n\ -Xnoclassgc \u30af\u30e9\u30b9\u30ac\u30fc\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u5316\n\ -Xincgc \u5897\u5206\u30ac\u30fc\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u7121\u52b9\u5316\n\ -Xloggc: \u30d5\u30a1\u30a4\u30eb\u306e GC \u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u4ed8\u304d\u3067\u8a18\u9332\n\ -Xbatch \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u7121\u52b9\u5316\n\ -Xms \u521d\u671f Java \u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\ -Xmx \u6700\u5927 Java \u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\ -Xss Java \u30b9\u30ec\u30c3\u30c9\u30b9\u30bf\u30c3\u30af\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\ -Xprof CPU \u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u30c7\u30fc\u30bf\u3092\u51fa\u529b\n\ -Xfuture \u4eca\u5f8c\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3059\u308b\u6700\u3082\u53b3\u683c\u306a\u30c1\u30a7\u30c3\u30af\u3092\u6709\u52b9\u5316\n\ -Xrs Java/VM \u306e OS \u30b7\u30b0\u30ca\u30eb\u4f7f\u7528\u3092\u524a\u6e1b (\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u53c2\u7167)\n\ -Xcheck:jni JNI \u95a2\u6570\u306e\u8ffd\u52a0\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c\n\ -Xshare:off \u5171\u6709\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u306e\u4f7f\u7528\u3092\u8a66\u884c\u3057\u306a\u3044\n\ -Xshare:auto \u53ef\u80fd\u306a\u5834\u5408\u306f\u5171\u6709\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u3092\u4f7f\u7528 (\u30c7\u30d5\u30a9\u30eb\u30c8)\n\ -Xshare:on \u5171\u6709\u30af\u30e9\u30b9\u30c7\u30fc\u30bf\u306e\u4f7f\u7528\u3092\u8981\u6c42 (\u305d\u3046\u3057\u306a\u3044\u3068\u969c\u5bb3\u304c\u767a\u751f\u3059\u308b\u5834\u5408)\n\n-X \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u975e\u6a19\u6e96\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3042\u308a\u3001\u4e88\u544a\u306a\u304f\u5909\u66f4\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\n + +java.launcher.cls.error1=\u30a8\u30e9\u30fc: \u30e1\u30a4\u30f3\u30af\u30e9\u30b9 {0} \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +java.launcher.cls.error2=\u30a8\u30e9\u30fc: \u30af\u30e9\u30b9 {1} \u3067\u3001\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u304c {0} \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u3092\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044:\n\ public static void main(String[] args) +java.launcher.cls.error3=\u30a8\u30e9\u30fc: \u30af\u30e9\u30b9 {0} \u3067\u3001\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u306f void \u578b\u306e\u5024\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u3092\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044:\n\ public static void main(String[] args) +java.launcher.cls.error4=\u30a8\u30e9\u30fc: \u30af\u30e9\u30b9 {1} \u3067\u3001\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002\u30e1\u30a4\u30f3\u30e1\u30bd\u30c3\u30c9\u3092\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties new file mode 100644 index 00000000000..7b6607438d7 --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_ko.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = \uc0ac\uc6a9\ubc95: {0} [-options] class [args...]\n\ (\ud074\ub798\uc2a4 \uc2e4\ud589)\n \ub610\ub294 {0} [-options] -jar jarfile [args...]\n\ (jar \ud30c\uc77c \uc2e4\ud589)\n\uc635\uc158:\n + +java.launcher.opt.datamodel =\ -d{0}\t \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uacbd\uc6b0 {0}\ube44\ud2b8 \ub370\uc774\ud130 \ubaa8\ub378 \uc0ac\uc6a9\n +java.launcher.opt.vmselect =\ {0}\t "{1}" VM \uc120\ud0dd \uc2dc\n +java.launcher.opt.hotspot =\ {0}\t "{1}" VM[\ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc74c]\uacfc \ub3d9\uc77c \n + +java.launcher.ergo.message1 =\ \uae30\ubcf8 VM\uc740 {0}\uc784 +java.launcher.ergo.message2 =\ \uadf8 \uc774\uc720\ub294 \uc11c\ubc84 \ud074\ub798\uc2a4 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc2e4\ud589 \uc911\uc774\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp <\ub514\ub809\ud1a0\ub9ac \ubc0f zip/jar \ud30c\uc77c\uc758 \ud074\ub798\uc2a4 \uac80\uc0c9 \uacbd\ub85c>\n\ -classpath <\ub514\ub809\ud1a0\ub9ac \ubc0f zip/jar \ud30c\uc77c\uc758 \ud074\ub798\uc2a4 \uac80\uc0c9 \uacbd\ub85c>\n\ \ud074\ub798\uc2a4 \ud30c\uc77c\uc744 \uac80\uc0c9\ud558\uae30 \uc704\ud55c \ub514\ub809\ud1a0\ub9ac, JAR \uc544\uce74\uc774\ube0c \ubc0f\n\ ZIP \uc544\uce74\uc774\ube0c\uc758 {0} \uad6c\ubd84\ub41c \ubaa9\ub85d\uc785\ub2c8\ub2e4.\n\ -D=\n\ \uc2dc\uc2a4\ud15c \ub4f1\ub85d \uc815\ubcf4 \uc124\uc815\n\ -verbose[:class|gc|jni]\n\ \ucd94\uac00 \ucd9c\ub825 \uc0ac\uc6a9\n\ -version \uc81c\ud488 \ubc84\uc804\uc744 \uc778\uc1c4\ud558\uace0 \uc885\ub8cc\n\ -version:\n\ \uc2e4\ud589\ud558\ub824\uba74 \uc9c0\uc815\ud55c \ubc84\uc804 \ud544\uc694\n\ -showversion \uc81c\ud488 \ubc84\uc804\uc744 \uc778\uc1c4\ud558\uace0 \uacc4\uc18d\n\ -jre-restrict-search | -jre-no-restrict-search\n\ \ubc84\uc804 \uac80\uc0c9\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uac1c\uc778 JRE \ud3ec\ud568/\uc81c\uc678\n\ -? -help \uc774 \ub3c4\uc6c0\ub9d0 \uba54\uc2dc\uc9c0 \uc778\uc1c4\n\ -X \ube44\ud45c\uc900 \uc635\uc158\uc5d0 \ub300\ud55c \ub3c4\uc6c0\ub9d0 \uc778\uc1c4\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ \uc9c0\uc815\ud55c \uc815\ubc00\ub3c4\uc758 \uba85\uc81c \uc0ac\uc6a9\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ \uc9c0\uc815\ud55c \uc815\ubc00\ub3c4\uc758 \uba85\uc81c \uc0ac\uc6a9 \uc548 \ud568\n\ -esa | -enablesystemassertions\n\ \uc2dc\uc2a4\ud15c \uba85\uc81c \uc0ac\uc6a9\n\ -dsa | -disablesystemassertions\n\ \uc2dc\uc2a4\ud15c \uba85\uc81c \uc0ac\uc6a9 \uc548 \ud568\n\ -agentlib:[=]\n\ \uc6d0\uc2dc \uc5d0\uc774\uc804\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ub85c\ub4dc, \uc608: -agentlib:hprof\n\ \ucc38\uc870: -agentlib:jdwp=help \ubc0f -agentlib:hprof=help\n\ -agentpath:[=]\n\ \uc804\uccb4 \uacbd\ub85c \uc774\ub984\uc73c\ub85c \uc6d0\uc2dc \uc5d0\uc774\uc804\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ub85c\ub4dc\n\ -javaagent:[=]\n\ Java \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4 \uc5d0\uc774\uc804\ud2b8 \ub85c\ub4dc, java.lang.instrument \ucc38\uc870\n\ -splash:\n\ \uc9c0\uc815\ud55c \uc774\ubbf8\uc9c0\uc758 \uc2a4\ud50c\ub798\uc2dc \ud654\uba74 \ud45c\uc2dc\n\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 http://java.sun.com/javase/reference\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed \ud63c\ud569 \ubaa8\ub4dc \uc2e4\ud589(\uae30\ubcf8\uac12)\n\ -Xint \ud574\uc11d\ub41c \ubaa8\ub4dc \uc2e4\ud589 \uc804\uc6a9\n\ -Xbootclasspath:\n\ \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ud074\ub798\uc2a4\uc640 \uc790\uc6d0\uc758 \uac80\uc0c9 \uacbd\ub85c \uc124\uc815\n\ -Xbootclasspath/a:\n\ \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ud074\ub798\uc2a4 \uacbd\ub85c \ub05d\uc5d0 \ucd94\uac00\n\ -Xbootclasspath/p:\n\ \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ud074\ub798\uc2a4 \uacbd\ub85c \uc55e\uc5d0 \ucd94\uac00\n\ -Xnoclassgc \ud074\ub798\uc2a4 \uac00\ube44\uc9c0 \uceec\ub809\uc158 \uc0ac\uc6a9 \uc548 \ud568\n\ -Xincgc \uc99d\ubd84 \uac00\ube44\uc9c0 \uceec\ub809\uc158 \uc0ac\uc6a9\n\ -Xloggc: GC \uc0c1\ud0dc\ub97c \ud0c0\uc784 \uc2a4\ud0ec\ud504\uc640 \ud568\uaed8 \ud30c\uc77c\uc5d0 \ub85c\uadf8\n\ -Xbatch \ubc31\uadf8\ub77c\uc6b4\ub4dc \ucef4\ud30c\uc77c \uc0ac\uc6a9 \uc548 \ud568\n\ -Xms \ucd08\uae30 Java \ud799 \ud06c\uae30 \uc124\uc815\n\ -Xmx \ucd5c\ub300 Java \ud799 \ud06c\uae30 \uc124\uc815\n\ -Xss java \uc2a4\ub808\ub4dc \uc2a4\ud0dd \ud06c\uae30 \uc124\uc815\n\ -Xprof cpu \ud504\ub85c\ud30c\uc77c\ub9c1 \ub370\uc774\ud130 \ucd9c\ub825\n\ -Xfuture \ubbf8\ub798 \uae30\ubcf8\uac12\uc744 \uc608\uce21\ud558\uc5ec \uac00\uc7a5 \uc5c4\uaca9\ud55c \uac80\uc0ac \uc0ac\uc6a9\n\ -Xrs Java/VM\uc5d0 \uc758\ud55c OS \uc2e0\ud638 \uc0ac\uc6a9 \uac10\uc18c(\uc124\uba85\uc11c \ucc38\uc870)\n\ -Xcheck:jni JNI \uae30\ub2a5\uc5d0 \ub300\ud55c \ucd94\uac00\uc801\uc778 \uac80\uc0ac \uc218\ud589\n\ -Xshare:off \uacf5\uc720\ub41c \ud074\ub798\uc2a4 \ub370\uc774\ud130\uc758 \uc0ac\uc6a9\uc744 \uc2dc\ub3c4\ud558\uc9c0 \uc54a\uc74c\n\ -Xshare:auto \uac00\ub2a5\ud55c \uacbd\uc6b0 \uacf5\uc720\ub41c \ud074\ub798\uc2a4 \ub370\uc774\ud130 \uc0ac\uc6a9(\uae30\ubcf8\uac12)\n\ -Xshare:on \uacf5\uc720\ub41c \ud074\ub798\uc2a4 \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\uba70 \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 \uc2e4\ud328.\n\n-X \uc635\uc158\uc740 \ud45c\uc900\uc774 \uc544\ub2c8\uba70 \uc54c\ub9bc \uc5c6\uc774 \ubcc0\uacbd\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n + +java.launcher.cls.error1=\uc624\ub958: \uae30\ubcf8 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +java.launcher.cls.error2=\uc624\ub958: \ud575\uc2ec \uba54\uc18c\ub4dc\uac00 \ud074\ub798\uc2a4 {1}\uc758 {0}\uc774(\uac00) \uc544\ub2d9\ub2c8\ub2e4. \ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud558\uc2ed\uc2dc\uc624.\n\ public static void main(String[] args) +java.launcher.cls.error3=\uc624\ub958: \ud575\uc2ec \uba54\uc18c\ub4dc\ub294 \ud074\ub798\uc2a4 {0}\uc758 void \uc720\ud615\uc758 \uac12\uc744 \ubc18\ud658\ud574\uc57c \ud569\ub2c8\ub2e4.\n\ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud558\uc2ed\uc2dc\uc624.\n\ public static void main(String[] args) +java.launcher.cls.error4=\uc624\ub958: \ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ud074\ub798\uc2a4 {0}\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud558\uc2ed\uc2dc\uc624.\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties new file mode 100644 index 00000000000..da4670a4756 --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_sv.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = Anv\u00e4ndning: {0} [-alternativ] class [arg...]\n\ (f\u00f6r att k\u00f6ra en klass)\n or {0} [-alternativ] -jar jarfile [arg...]\n\ (f\u00f6r att k\u00f6ra en jar-fil)\nbland alternativen kan n\u00e4mnas:\n + +java.launcher.opt.datamodel =\ -d{0}\t anv\u00e4nd en {0}-bitars datamodell om den finns tillg\u00e4nglig\n +java.launcher.opt.vmselect =\ {0}\t f\u00f6r att v\u00e4lja "{1}" VM\n +java.launcher.opt.hotspot =\ {0}\t \u00e4r liktydigt med "{1}"-VM [utfasad]\n + +java.launcher.ergo.message1 =\ Standard-VM \u00e4r {0} +java.launcher.ergo.message2 =\ eftersom du k\u00f6r p\u00e5 en dator med server-klass.\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp \n\ -classpath \n\ en med {0} avgr\u00e4nsad lista \u00f6ver kataloger, JAR-arkiv\n\ och ZIP-arkiv f\u00f6r s\u00f6kning efter klassfiler.\n\ -D=\n\ ange en systemegenskap\n\ -verbose[:klass|gc|jni]\n\ visa mer text\n\ -version skriv ut produktversionen och avsluta\n\ -version:\n\ kr\u00e4ver den angivna versionen f\u00f6r att kunna k\u00f6ras\n\ -showversion skriv ut produktversion och forts\u00e4tt\n\ -jre-restrict-search | -jre-no-restrict-search\n\ inkludera/exkludera anv\u00e4ndarens privata JRE-filer i versionss\u00f6kningen\n\ -? -help skriver ut det h\u00e4r hj\u00e4lpmeddelandet\n\ -X skriv ut hj\u00e4lp f\u00f6r alternativ som inte \u00e4r standard\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ aktivera bekr\u00e4ftelser med angiven precision\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ inaktivera bekr\u00e4ftelser med angiven precision\n\ -esa | -enablesystemassertions\n\ aktivera systembekr\u00e4ftelser\n\ -dsa | -disablesystemassertions\n\ inaktivera systembekr\u00e4ftelser\n\ -agentlib:[=]\n\ l\u00e4s in det interna agentbiblioteket , t.ex. -agentlib:hprof\n\ se \u00e4ven, -agentlib:jdwp=help och -agentlib:hprof=help\n\ -agentpath:[=]\n\ l\u00e4s in internt agentbibliotek utifr\u00e5n fullst\u00e4ndig s\u00f6kv\u00e4g\n\ -javaagent:[=]\n\ l\u00e4s in agenten f\u00f6r programmeringsspr\u00e5ket Java, se java.lang.instrument\n\ -splash:\n\ visa v\u00e4lkomstf\u00f6nster med angiven bild\nMer information finns p\u00e5 http://java.sun.com/javase/reference. + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed k\u00f6rning i blandat l\u00e4ge (standard)\n\ -Xint endast k\u00f6rning i tolkat l\u00e4ge\n\ -Xbootclasspath:\n\ ange s\u00f6kv\u00e4g f\u00f6r bootstrap-klasser och -resurser\n\ -Xbootclasspath/a:\n\ l\u00e4gg till p\u00e5 slutet av s\u00f6kv\u00e4gen till bootstrap-klassen\n\ -Xbootclasspath/p:\n\ l\u00e4gg till i b\u00f6rjan av s\u00f6kv\u00e4gen till bootstrap-klassen\n\ -Xnoclassgc inaktivera skr\u00e4pinsamling f\u00f6r klass\n\ -Xincgc aktivera inkrementell skr\u00e4pinsaming\n\ -Xloggc: logga GC-status till en fil med tidsst\u00e4mpel\n\ -Xbatch inaktivera kompilering i bakgrunden\n\ -Xms st\u00e4ll in ursprunglig heapstorlek f\u00f6r Java\n\ -Xmx st\u00e4ll in st\u00f6rsta heapstorlek f\u00f6r Java\n\ -Xss st\u00e4ll in tr\u00e5dstackens storlek f\u00f6r Java\n\ -Xprof visa profileringsdata om processorn\n\ -Xfuture aktivera de mest rigor\u00f6sa kontrollerna och f\u00f6regrip framtida standardl\u00e4ge\n\ -Xrs minska anv\u00e4ndningen av signaler fr\u00e5n operativsystemet i Java/VM (mer information finns i dokumentationen)\n\ -Xcheck:jni utf\u00f6r ytterligare kontroller f\u00f6r JNI-funktioner\n\ -Xshare:off f\u00f6rs\u00f6k inte att anv\u00e4nda delade klassdata\n\ -Xshare:auto anv\u00e4nd om m\u00f6jligt delade klassdata (standard)\n\ -Xshare:on kr\u00e4v att delade klassdata anv\u00e4nds, skicka fel om s\u00e5 inte \u00e4r fallet.\n\n -X-alternativen betraktas inte som standard och kan \u00e4ndras utan att detta meddelas.\n + +java.launcher.cls.error1=Fel: Det g\u00e5r inte att hitta klassen main {0} +java.launcher.cls.error2=Fel: Metoden i main \u00e4r inte {0} i klass {1}. Ange huvudmetoden som:\n\ public static void main(String[] args) +java.launcher.cls.error3=Fel: Metoden i main m\u00e5ste returnera ett v\u00e4rde av typen void i klass {0}. Definiera \nmetoden i main som:\n\ public static void main(String[] args) +java.launcher.cls.error4=Fel: Klass {0} saknar metod i main. Definiera metoden som:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties new file mode 100644 index 00000000000..ad1f5e8666d --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_CN.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = \u7528\u6cd5\uff1a{0} [-\u9009\u9879] class [\u53c2\u6570...]\n\ \uff08\u6267\u884c\u4e00\u4e2a\u7c7b\uff09\n \u6216 {0} [-\u9009\u9879] -jar jarfile [\u53c2\u6570...]\n\ \uff08\u6267\u884c\u4e00\u4e2a jar \u6587\u4ef6\uff09\n\u5176\u4e2d\uff0c\u9009\u9879\u5305\u62ec\uff1a\n + +java.launcher.opt.datamodel =\ -d{0}\t \u4f7f\u7528\u4e00\u4e2a {0} \u4f4d\u6570\u636e\u6a21\u578b\uff08\u5982\u679c\u53ef\u7528\uff09\n +java.launcher.opt.vmselect =\ {0}\t \u9009\u62e9 "{1}" VM\n +java.launcher.opt.hotspot =\ {0}\t \u4e3a "{1}" VM \u7684\u540c\u4e49\u8bcd [\u5df2\u8fc7\u65f6]\n + +java.launcher.ergo.message1 =\ \u9ed8\u8ba4\u7684 VM \u4e3a {0} +java.launcher.ergo.message2 =\ \u56e0\u4e3a\u60a8\u662f\u5728\u670d\u52a1\u5668\u7c7b\u8ba1\u7b97\u673a\u4e0a\u8fd0\u884c\u3002\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp <\u76ee\u5f55\u548c zip/jar \u6587\u4ef6\u7684\u7c7b\u641c\u7d22\u8def\u5f84>\n\ -classpath <\u76ee\u5f55\u548c zip/jar \u6587\u4ef6\u7684\u7c7b\u641c\u7d22\u8def\u5f84>\n\ \u4e00\u4e2a\u4ee5 {0} \u5206\u9694\u7684\u76ee\u5f55\u3001JAR \u5f52\u6863\u6587\u4ef6\n\ \u548c ZIP \u5f52\u6863\u6587\u4ef6\u7684\u5217\u8868\uff0c\u7528\u4e8e\u641c\u7d22\u7c7b\u6587\u4ef6\u3002\n\ -D=\n\ \u8bbe\u7f6e\u7cfb\u7edf\u5c5e\u6027\n\ -verbose[:class|gc|jni]\n\ \u542f\u7528\u8be6\u7ec6\u8f93\u51fa\n\ -version \u663e\u793a\u4ea7\u54c1\u7248\u672c\u5e76\u9000\u51fa\n\ -version:\n\ \u8981\u6c42\u8fd0\u884c\u6307\u5b9a\u7684\u7248\u672c\n\ -showversion \u663e\u793a\u4ea7\u54c1\u7248\u672c\u5e76\u7ee7\u7eed\n\ -jre-restrict-search | -jre-no-restrict-search\n\ \u5728\u7248\u672c\u641c\u7d22\u4e2d\u5305\u62ec/\u4e0d\u5305\u62ec\u7528\u6237\u79c1\u6709 JRE\n\ -? -help \u663e\u793a\u6b64\u5e2e\u52a9\u6d88\u606f\n\ -X \u663e\u793a\u6709\u5173\u975e\u6807\u51c6\u9009\u9879\u7684\u5e2e\u52a9\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ \u542f\u7528\u6307\u5b9a\u7c92\u5ea6\u7684\u65ad\u8a00\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ \u7981\u7528\u6307\u5b9a\u7c92\u5ea6\u7684\u65ad\u8a00\n\ -esa | -enablesystemassertions\n\ \u542f\u7528\u7cfb\u7edf\u65ad\u8a00\n\ -dsa | -disablesystemassertions\n\ \u7981\u7528\u7cfb\u7edf\u65ad\u8a00\n\ -agentlib:[=]\n\ \u88c5\u5165\u672c\u673a\u4ee3\u7406\u5e93 \uff0c\u4f8b\u5982\uff1a-agentlib:hprof\n\ \u53e6\u8bf7\u53c2\u89c1 -agentlib:jdwp=help \u548c -agentlib:hprof=help\n\ -agentpath:[=]\n\ \u4ee5\u5168\u8def\u5f84\u540d\u88c5\u5165\u672c\u673a\u4ee3\u7406\u5e93\n\ -javaagent:[=]\n\ \u88c5\u5165 Java \u7f16\u7a0b\u8bed\u8a00\u4ee3\u7406\uff0c\u8bf7\u53c2\u89c1 java.lang.instrument\n\ -splash:\n\ \u4f7f\u7528\u6307\u5b9a\u56fe\u50cf\u663e\u793a\u95ea\u73b0\u5c4f\u5e55\n\u6709\u5173\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1 http://java.sun.com/javase/reference\u3002 + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed \u6df7\u5408\u6a21\u5f0f\u6267\u884c\uff08\u9ed8\u8ba4\uff09\n\ -Xint \u4ec5\u89e3\u91ca\u6a21\u5f0f\u6267\u884c\n\ -Xbootclasspath:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u5f55\u548c zip/jar \u6587\u4ef6>\n\ \u8bbe\u7f6e\u5f15\u5bfc\u7c7b\u548c\u8d44\u6e90\u7684\u641c\u7d22\u8def\u5f84\n\ -Xbootclasspath/a:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u5f55\u548c zip/jar \u6587\u4ef6>\n\ \u9644\u52a0\u5230\u5f15\u5bfc\u7c7b\u8def\u5f84\u5c3e\u90e8\n\ -Xbootclasspath/p:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u5f55\u548c zip/jar \u6587\u4ef6>\n\ \u7f6e\u4e8e\u5f15\u5bfc\u7c7b\u8def\u5f84\u524d\u9762\n\ -Xnoclassgc \u7981\u7528\u7c7b\u5783\u573e\u6536\u96c6\n\ -Xincgc \u542f\u7528\u589e\u91cf\u5783\u573e\u6536\u96c6\n\ -Xloggc:<\u6587\u4ef6> \u5c06 GC \u72b6\u6001\u8bb0\u5f55\u5230\u4e00\u4e2a\u5e26\u6709\u65f6\u95f4\u6233\u7684\u6587\u4ef6\n\ -Xbatch \u7981\u7528\u540e\u53f0\u7f16\u8bd1\n\ -Xms<\u5927\u5c0f> \u8bbe\u7f6e\u521d\u59cb Java \u5806\u5927\u5c0f\n\ -Xmx<\u5927\u5c0f> \u8bbe\u7f6e\u6700\u5927 Java \u5806\u5927\u5c0f\n\ -Xss<\u5927\u5c0f> \u8bbe\u7f6e Java \u7ebf\u7a0b\u5806\u6808\u5927\u5c0f\n\ -Xprof \u8f93\u51fa CPU \u914d\u7f6e\u6570\u636e\n\ -Xfuture \u542f\u7528\u6700\u4e25\u683c\u7684\u68c0\u67e5\uff0c\u672a\u6765\u53ef\u80fd\u4f1a\u6210\u4e3a\u9ed8\u8ba4\u9009\u9879\n\ -Xrs \u51cf\u5c11 Java/VM \u5bf9\u64cd\u4f5c\u7cfb\u7edf\u4fe1\u53f7\u7684\u4f7f\u7528\uff08\u8bf7\u53c2\u89c1\u6587\u6863\uff09\n\ -Xcheck:jni \u9488\u5bf9 JNI \u529f\u80fd\u6267\u884c\u989d\u5916\u7684\u68c0\u67e5\n\ -Xshare:off \u4e0d\u5c1d\u8bd5\u4f7f\u7528\u5171\u4eab\u7c7b\u6570\u636e\n\ -Xshare:auto \u5982\u679c\u53ef\u80fd\u7684\u8bdd\uff0c\u4f7f\u7528\u5171\u4eab\u7c7b\u6570\u636e\uff08\u9ed8\u8ba4\uff09\n\ -Xshare:on \u8981\u6c42\u4f7f\u7528\u5171\u4eab\u7c7b\u6570\u636e\uff0c\u5426\u5219\u4f1a\u5931\u8d25\u3002\n\n-X \u9009\u9879\u662f\u975e\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002\n + +java.launcher.cls.error1=\u9519\u8bef\uff1a\u627e\u4e0d\u5230\u4e3b\u7c7b {0} +java.launcher.cls.error2=\u9519\u8bef\uff1aMain \u65b9\u6cd5\u4e0d\u662f\u7c7b {1} \u4e2d\u7684 {0}\uff0c\u8bf7\u5c06 main \u65b9\u6cd5\u5b9a\u4e49\u4e3a\uff1a\n\ public static void main(String[] args) +java.launcher.cls.error3=\u9519\u8bef\uff1a\u5728\u7c7b {0} \u4e2d\uff0cMain \u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de void \u7c7b\u578b\u7684\u503c\uff0c\u8bf7\u5c06 \nmain \u65b9\u6cd5\u5b9a\u4e49\u4e3a\uff1a\n\ public static void main(String[] args) +java.launcher.cls.error4=\u9519\u8bef\uff1a\u5728\u7c7b {0} \u4e2d\u672a\u627e\u5230 Main \u65b9\u6cd5\uff0c\u8bf7\u5c06 main \u65b9\u6cd5\u5b9a\u4e49\u4e3a\uff1a\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties new file mode 100644 index 00000000000..a05a247e862 --- /dev/null +++ b/jdk/src/share/classes/sun/launcher/resources/launcher_zh_TW.properties @@ -0,0 +1,47 @@ +# +# Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Translators please note do not translate the options themselves +java.launcher.opt.header = \u7528\u6cd5: {0} [-options] class [args...]\n\ (\u57f7\u884c\u985e\u5225)\n \u6216 {0} [-options] -jar jarfile [args...]\n\ (\u57f7\u884c jar \u6a94\u6848)\n\u5176\u4e2d options \u5305\u62ec:\n + +java.launcher.opt.datamodel =\ -d{0}\t \u4f7f\u7528 {0} \u4f4d\u5143\u8cc7\u6599\u6a21\u5f0f (\u5982\u679c\u53ef\u7528)\n +java.launcher.opt.vmselect =\ {0}\t \u9078\u53d6\u300c{1}\u300dVM\n +java.launcher.opt.hotspot =\ {0}\t \u662f\u300c{1}\u300dVM [\u5df2\u505c\u7528] \u7684\u540c\u7fa9\u8a5e\n + +java.launcher.ergo.message1 =\ \u9810\u8a2d VM \u70ba {0} +java.launcher.ergo.message2 =\ \u56e0\u70ba\u60a8\u6b63\u57f7\u884c\u65bc\u4f3a\u670d\u5668\u7d1a\u7684\u6a5f\u5668\u4e0a\u3002\n + +# Translators please note do not translate the options themselves +java.launcher.opt.footer =\ -cp <\u76ee\u9304\u548c zip/jar \u6a94\u6848\u7684\u985e\u5225\u641c\u5c0b\u8def\u5f91>\n\ -classpath <\u76ee\u9304\u548c zip/jar \u6a94\u6848\u7684\u985e\u5225\u641c\u5c0b\u8def\u5f91>\n\ {0} \u76ee\u9304\u3001JAR \u6b78\u6a94\n\ \u548c ZIP \u6b78\u6a94\u7684\u5206\u9694\u6e05\u55ae\uff0c\u7528\u65bc\u641c\u5c0b\u985e\u5225\u6a94\u6848\u3002\n\ -D=\n\ \u8a2d\u5b9a\u7cfb\u7d71\u7279\u6027\n\ -verbose[:class|gc|jni]\n\ \u555f\u7528\u8a73\u7d30\u8f38\u51fa\n\ -version \u5217\u5370\u7522\u54c1\u7248\u672c\u4e26\u7d50\u675f\n\ -version:\n\ \u9700\u8981\u57f7\u884c\u6307\u5b9a\u7684\u7248\u672c\n\ -showversion \u5217\u5370\u7522\u54c1\u7248\u672c\u4e26\u7e7c\u7e8c\n\ -jre-restrict-search | -jre-no-restrict-search\n\ \u5728\u7248\u672c\u641c\u5c0b\u4e2d\u5305\u542b/\u6392\u9664\u4f7f\u7528\u8005\u79c1\u7528 JRE\n\ -? -help \u5217\u5370\u6b64\u8aaa\u660e\u8a0a\u606f\n\ -X \u5217\u5370\u6709\u95dc\u975e\u6a19\u6e96\u9078\u9805\u7684\u8aaa\u660e\n\ -ea[:...|:]\n\ -enableassertions[:...|:]\n\ \u555f\u7528\u5177\u6709\u6307\u5b9a\u9846\u7c92\u6027\u7684\u5ba3\u544a\n\ -da[:...|:]\n\ -disableassertions[:...|:]\n\ \u505c\u7528\u5177\u6709\u6307\u5b9a\u9846\u7c92\u6027\u7684\u5ba3\u544a\n\ -esa | -enablesystemassertions\n\ \u555f\u7528\u7cfb\u7d71\u5ba3\u544a\n\ -dsa | -disablesystemassertions\n\ \u505c\u7528\u7cfb\u7d71\u5ba3\u544a\n\ -agentlib:[=]\n\ \u8f09\u5165\u539f\u751f\u4ee3\u7406\u7a0b\u5f0f\u7a0b\u5f0f\u5eab \uff0c\u4f8b\u5982 -agentlib:hprof\n\ \u53e6\u8acb\u53c3\u95b1 -agentlib:jdwp=help \u548c -agentlib:hprof=help\n\ -agentpath:[=]\n\ \u4f9d\u64da\u5b8c\u6574\u8def\u5f91\u540d\u7a31\u8f09\u5165\u539f\u751f\u4ee3\u7406\u7a0b\u5f0f\n\ -javaagent:[=]\n\ \u8f09\u5165 Java \u7a0b\u5f0f\u8a2d\u8a08\u8a9e\u8a00\u4ee3\u7406\u7a0b\u5f0f\uff0c\u8acb\u53c3\u95b1 java.lang.instrument\n\ -splash:\n\ \u986f\u793a\u542b\u6709\u6307\u5b9a\u5f71\u50cf\u7684\u8edf\u9ad4\u8cc7\u8a0a\u756b\u9762\n\u8acb\u53c3\u95b1 http://java.sun.com/javase/reference\uff0c\u4ee5\u53d6\u5f97\u66f4\u591a\u8a73\u7d30\u8cc7\u8a0a\u3002 + +# Translators please note do not translate the options themselves +java.launcher.X.usage=\ -Xmixed \u57f7\u884c\u6df7\u5408\u6a21\u5f0f (\u9810\u8a2d)\n\ -Xint \u50c5\u57f7\u884c\u89e3\u8b6f\u6a21\u5f0f\n\ -Xbootclasspath:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u9304\u548c zip/jar \u6a94\u6848>\n\ \u8a2d\u5b9a\u555f\u52d5\u985e\u5225\u548c\u8cc7\u6e90\u7684\u641c\u5c0b\u8def\u5f91\n\ -Xbootclasspath/a:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u9304\u548c zip/jar \u6a94\u6848>\n\ \u9644\u52a0\u81f3\u555f\u52d5\u985e\u5225\u7684\u672b\u5c3e\n\ -Xbootclasspath/p:<\u4ee5 {0} \u5206\u9694\u7684\u76ee\u9304\u548c zip/jar \u6a94\u6848>\n\ \u524d\u7f6e\u65bc\u555f\u52d5\u985e\u5225\u8def\u5f91\u7684\u524d\u9762\n\ -Xnoclassgc \u505c\u7528\u985e\u5225\u56de\u6536\u6536\u96c6\n\ -Xincgc \u555f\u7528\u905e\u589e\u56de\u6536\u6536\u96c6\n\ -Xloggc:<\u6a94\u6848> \u4f7f\u7528\u6642\u9593\u6233\u8a18\u5c07 GC \u72c0\u614b\u8a18\u9304\u81f3\u6a94\u6848\n\ -Xbatch \u505c\u7528\u80cc\u5f71\u7de8\u8b6f\n\ -Xms<\u5927\u5c0f> \u8a2d\u5b9a\u521d\u59cb Java \u5806\u758a\u5927\u5c0f\n\ -Xmx<\u5927\u5c0f> \u8a2d\u5b9a\u6700\u5927 Java \u5806\u758a\u5927\u5c0f\n\ -Xss<\u5927\u5c0f> \u8a2d\u5b9a java \u57f7\u884c\u7dd2\u5806\u758a\u5927\u5c0f\n\ -Xprof \u8f38\u51fa cpu \u8a2d\u5b9a\u6a94\u8cc7\u6599\n\ -Xfuture \u555f\u7528\u6700\u56b4\u683c\u7684\u6aa2\u67e5\uff0c\u9810\u671f\u672a\u4f86\u9810\u8a2d\u503c\n\ -Xrs \u964d\u4f4e Java/VM \u7684 OS \u8a0a\u865f\u4f7f\u7528 (\u8acb\u53c3\u95b1\u6587\u4ef6)\n\ -Xcheck:jni \u5c0d JNI \u529f\u80fd\u57f7\u884c\u5176\u4ed6\u6aa2\u67e5\n\ -Xshare:off \u4e0d\u5617\u8a66\u4f7f\u7528\u5171\u7528\u985e\u5225\u8cc7\u6599\n\ -Xshare:auto \u5982\u53ef\u80fd\uff0c\u4f7f\u7528\u5171\u7528\u985e\u5225\u8cc7\u6599 (\u9810\u8a2d)\n\ -Xshare:on \u9700\u8981\u4f7f\u7528\u5171\u7528\u985e\u5225\u8cc7\u6599\uff0c\u5426\u5247\u6703\u5931\u6557\u3002\n\n-X \u9078\u9805\u70ba\u975e\u6a19\u6e96\u9078\u9805\uff0c\u53ef\u80fd\u6703\u8b8a\u66f4\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002\n + +java.launcher.cls.error1=\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u4e3b\u985e\u5225 {0} +java.launcher.cls.error2=\u932f\u8aa4\uff1a\u5728\u985e\u5225 {1} \u4e2d\uff0c\u4e3b\u65b9\u6cd5\u4e0d\u662f {0}\uff0c\u8acb\u5b9a\u7fa9\u4e3b\u65b9\u6cd5\u70ba:\n\ public static void main(String[] args) +java.launcher.cls.error3=\u932f\u8aa4\uff1a\u5728\u985e\u5225 {0} \u4e2d\uff0c\u4e3b\u65b9\u6cd5\u5fc5\u9808\u50b3\u56de\u985e\u578b void \u7684\u503c\uff0c\u8acb\n\u5b9a\u7fa9\u4e3b\u65b9\u6cd5\u70ba:\n\ public static void main(String[] args) +java.launcher.cls.error4=\u932f\u8aa4\uff1a\u5728\u985e\u5225 {0} \u4e2d\u627e\u4e0d\u5230\u4e3b\u65b9\u6cd5\uff0c\u8acb\u5b9a\u7fa9\u4e3b\u65b9\u6cd5\u70ba:\n\ public static void main(String[] args) + + diff --git a/jdk/src/share/classes/sun/management/resources/agent_de.properties b/jdk/src/share/classes/sun/management/resources/agent_de.properties index d4afd6b8ce7..c9725f1473c 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_de.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_de.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = Ung\u00fcltiger Eigenschaftswert f\u00fcr c agent.err.invalid.jmxremote.port = Ung\u00fcltige Nummer f\u00fcr com.sun.management.jmxremote.port +agent.err.file.not.set = Datei nicht angegeben +agent.err.file.not.readable = Datei nicht lesbar +agent.err.file.read.failed = Datei konnte nicht gelesen werden +agent.err.file.not.found = Datei wurde nicht gefunden +agent.err.file.access.not.restricted = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein + agent.err.password.file.notset = Es wurde keine Passwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist. agent.err.password.file.not.readable = Passwortdatei kann nicht gelesen werden. agent.err.password.file.read.failed = Passwortdatei konnte nicht gelesen werden. @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = JMX-Anschlussserver starten: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Keine Authentifizierung jmxremote.ConnectorBootstrap.initialize.ready = JMX-Anschluss bereit unter: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = ACL verarbeiten jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00fcgen: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_es.properties b/jdk/src/share/classes/sun/management/resources/agent_es.properties index 0a39beafb22..09ab9784f8b 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_es.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_es.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = Valor de propiedad com.sun.management.agent agent.err.invalid.jmxremote.port = N\u00famero com.sun.management.jmxremote.port no v\u00e1lido +agent.err.file.not.set = Archivo no especificado +agent.err.file.not.readable = Archivo ilegible +agent.err.file.read.failed = Error al leer el archivo +agent.err.file.not.found = Archivo no encontrado +agent.err.file.access.not.restricted = Se debe restringir el acceso de lectura al archivo + agent.err.password.file.notset = El archivo de contrase\u00f1as no se ha especificado, pero com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = No se puede leer el archivo de contrase\u00f1as agent.err.password.file.read.failed = Error al leer el archivo de contrase\u00f1as @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = Iniciando servidor de conector JMX: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sin autenticaci\u00f3n jmxremote.ConnectorBootstrap.initialize.ready = Conector JMX listo en: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = Se debe restringir el acceso de lectura al archivo: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Procesando ACL jmxremote.AdaptorBootstrap.getTargetList.adding = Agregando destino: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_fr.properties b/jdk/src/share/classes/sun/management/resources/agent_fr.properties index e90ea584956..d909ab07e17 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_fr.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_fr.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = Valeur de propri\u00e9t\u00e9 com.sun.manag agent.err.invalid.jmxremote.port = Num\u00e9ro com.sun.management.jmxremote.port incorrect +agent.err.file.not.set = Fichier non sp\u00e9cifi\u00e9 +agent.err.file.not.readable = Fichier illisible +agent.err.file.read.failed = Impossible de lire le fichier +agent.err.file.not.found = Fichier introuvable +agent.err.file.access.not.restricted = L'acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9 + agent.err.password.file.notset = Le fichier de mots de passe n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = Fichier de mots de passe illisible agent.err.password.file.read.failed = Impossible de lire le fichier de mots de passe @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = D\u00e9marrage du serveur du connecteu jmxremote.ConnectorBootstrap.initialize.noAuthentication = Pas d'authentification jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00eat \u00e0 : {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 : {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9\u00a0: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement d'ACL jmxremote.AdaptorBootstrap.getTargetList.adding = Ajout de la cible : {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_it.properties b/jdk/src/share/classes/sun/management/resources/agent_it.properties index 46b7fb3aae5..3ca6dc8e9a1 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_it.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_it.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = Valore propriet\u00e0 com.sun.management.ag agent.err.invalid.jmxremote.port = Numero com.sun.management.jmxremote.port non valido +agent.err.file.not.set = File non specificato +agent.err.file.not.readable = File non leggibile +agent.err.file.read.failed = Lettura del file non riuscita +agent.err.file.not.found = File non trovato +agent.err.file.access.not.restricted = L'accesso in lettura al file deve essere limitato + agent.err.password.file.notset = Il file password non \u00e8 specificato ma com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = File password non leggibile agent.err.password.file.read.failed = Errore di lettura file password @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = Avvio del server connettore JMX: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Nessuna autenticazione jmxremote.ConnectorBootstrap.initialize.ready = Connettore JMX pronto in: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = Limitare l''accesso in lettura al file password: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = Limitare l''accesso in lettura al file: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = Elaborazione ACL jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta della destinazione: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_ja.properties b/jdk/src/share/classes/sun/management/resources/agent_ja.properties index cbc99bcca1f..35852fdc402 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_ja.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_ja.properties @@ -42,10 +42,16 @@ agent.err.agentclass.notfound = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\ agent.err.agentclass.failed = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 agent.err.premain.notfound = premain(String) \u304c\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 agent.err.agentclass.access.denied = premain(String) \u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 -agent.err.invalid.agentclass = com.sun.management.agent.class \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u4e0d\u6b63\u3067\u3059\u3002 +agent.err.invalid.agentclass = com.sun.management.agent.class \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u5024\u304c\u4e0d\u6b63\u3067\u3059\u3002 agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002 +agent.err.file.not.set = \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +agent.err.file.not.readable = \u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 +agent.err.file.read.failed = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +agent.err.file.not.found = \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +agent.err.file.access.not.restricted = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 + agent.err.password.file.notset = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.jmxremote.authenticate=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 agent.err.password.file.not.readable = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 agent.err.password.file.read.failed = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = JMX \u30b3\u30cd\u30af\u30bf\u30b5\u30 jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u8a8d\u8a3c\u306a\u3057 jmxremote.ConnectorBootstrap.initialize.ready = JMX \u30b3\u30cd\u30af\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u3059 jmxremote.AdaptorBootstrap.getTargetList.adding = \u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_ko.properties b/jdk/src/share/classes/sun/management/resources/agent_ko.properties index 063d93894f3..b6667029fd0 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_ko.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_ko.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = \uc798\ubabb\ub41c com.sun.management.agent agent.err.invalid.jmxremote.port = \uc798\ubabb\ub41c com.sun.management.jmxremote.port \ubc88\ud638 +agent.err.file.not.set = \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. +agent.err.file.not.readable = \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +agent.err.file.read.failed = \ud30c\uc77c\uc744 \uc77d\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. +agent.err.file.not.found = \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +agent.err.file.access.not.restricted = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. + agent.err.password.file.notset = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. agent.err.password.file.not.readable = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. agent.err.password.file.read.failed = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \u jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uc778\uc99d \uc5c6\uc74c jmxremote.ConnectorBootstrap.initialize.ready = \ub2e4\uc74c\uc5d0\uc11c JMX \ucee4\ub125\ud130 \uc900\ube44: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0} jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \ucc98\ub9ac jmxremote.AdaptorBootstrap.getTargetList.adding = \ub300\uc0c1 \ucd94\uac00: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_sv.properties b/jdk/src/share/classes/sun/management/resources/agent_sv.properties index ae0ac13f35f..5b75adbe6d2 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_sv.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_sv.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = Ogiltigt egenskapsv\u00e4rde f\u00f6r com.s agent.err.invalid.jmxremote.port = Ogiltigt com.sun.management.jmxremote.port-nummer +agent.err.file.not.set = Filen har inte angetts. +agent.err.file.not.readable = Filen g\u00e5r inte att l\u00e4sa. +agent.err.file.read.failed = Det gick inte att l\u00e4sa filen +agent.err.file.not.found = Filen hittades inte +agent.err.file.access.not.restricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas + agent.err.password.file.notset = L\u00f6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = L\u00f6senordsfilen \u00e4r inte l\u00e4sbar agent.err.password.file.read.failed = Det g\u00e5r inte att l\u00e4sa l\u00f6senordsfilen @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = Startar JMX Connector-servern: jmxremote.ConnectorBootstrap.initialize.noAuthentication = Ingen autentisering jmxremote.ConnectorBootstrap.initialize.ready = JMX Connector redo p\u00e5: {0} jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r l\u00f6senordsfilen m\u00e5ste begr\u00e4nsas: {0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = ACL bearbetas jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00e5l l\u00e4ggs till: {0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties index 6fe9d9fa5ff..956af6cd0a8 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties @@ -1,6 +1,6 @@ # # -# Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = com.sun.management.agent.class \u5c5e\u6027 agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u7f16\u53f7\u65e0\u6548 +agent.err.file.not.set = \u672a\u6307\u5b9a\u6587\u4ef6 +agent.err.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u6587\u4ef6 +agent.err.file.read.failed = \u8bfb\u53d6\u6587\u4ef6\u5931\u8d25 +agent.err.file.not.found = \u627e\u4e0d\u5230\u6587\u4ef6 +agent.err.file.access.not.restricted = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee + agent.err.password.file.notset = \u672a\u6307\u5b9a\u53e3\u4ee4\u6587\u4ef6\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6 agent.err.password.file.read.failed = \u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6\u5931\u8d25 @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u542f\u52a8 JMX \u8fde\u6 jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u65e0\u9a8c\u8bc1 jmxremote.ConnectorBootstrap.initialize.ready = \u4f4d\u4e8e {0} \u7684 JMX \u8fde\u63a5\u5668\u5c31\u7eea jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0} jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u5904\u7406 ACL jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u6dfb\u52a0\u76ee\u6807\uff1a{0} diff --git a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties index 90e8eef2fdc..fecdc80d2e7 100644 --- a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties +++ b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties @@ -46,6 +46,12 @@ agent.err.invalid.agentclass = com.sun.management.agent.class \u7279\u6027 agent.err.invalid.jmxremote.port = com.sun.management.jmxremote.port \u7de8\u865f\u7121\u6548 +agent.err.file.not.set = \u672a\u6307\u5b9a\u6a94\u6848 +agent.err.file.not.readable = \u6a94\u6848\u4e0d\u53ef\u8b80 +agent.err.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u6a94\u6848 +agent.err.file.not.found = \u627e\u4e0d\u5230\u6a94\u6848 +agent.err.file.access.not.restricted = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6 + agent.err.password.file.notset = \u672a\u6307\u5b9a\u5bc6\u78bc\u6a94\u6848\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true agent.err.password.file.not.readable = \u5bc6\u78bc\u6a94\u6848\u4e0d\u53ef\u8b80 agent.err.password.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u5bc6\u78bc\u6a94\u6848 @@ -76,6 +82,7 @@ jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u555f\u52d5 JMX \u9023\u6 jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u7121\u8a8d\u8b49 jmxremote.ConnectorBootstrap.initialize.ready = JMX \u9023\u63a5\u5668\u5c31\u7dd2\uff0c\u4f4d\u65bc\ufe30{0} jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6\ufe30{0} +jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6: {0} jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u8655\u7406 ACL jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u589e\u52a0\u76ee\u6a19\ufe30{0} diff --git a/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java b/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java index 6a75fa2e872..b40decd23ba 100644 --- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java +++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2009 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 @@ -54,8 +54,8 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408 -storepass \u304a\u3088\u3073 -keypass \u3092\u6307\u5b9a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044"}, {"Usage: jarsigner [options] jar-file alias", "\u4f7f\u3044\u65b9: jarsigner [options] jar-file alias"}, - {" jarsigner -verify [options] jar-file", - " jarsigner -verify [options] jar-file"}, + {" jarsigner -verify [options] jar-file [alias...]", + " jarsigner -verify [options] jar-file [alias...]"}, {"[-keystore ] keystore location", "[-keystore ] \u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u4f4d\u7f6e"}, {"[-storepass ] password for keystore integrity", @@ -64,6 +64,8 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "[-storetype ] \u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u578b"}, {"[-keypass ] password for private key (if different)", "[-keypass ] \u975e\u516c\u958b\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 (\u7570\u306a\u308b\u5834\u5408)"}, + {"[-certchain ] name of alternative certchain file", + "[-certchain ] \u4ee3\u66ff\u8a3c\u660e\u9023\u9396\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d"}, {"[-sigfile ] name of .SF/.DSA file", "[-sigfile ] .SF/.DSA \u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d"}, {"[-signedjar ] name of signed JAR file", @@ -74,8 +76,10 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "[-sigalg ] \u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u540d\u524d"}, {"[-verify] verify a signed JAR file", "[-verify] \u7f72\u540d\u4ed8\u304d JAR \u30d5\u30a1\u30a4\u30eb\u306e\u691c\u8a3c"}, - {"[-verbose] verbose output when signing/verifying", - "[-verbose] \u7f72\u540d/\u691c\u8a3c\u6642\u306e\u8a73\u7d30\u51fa\u529b"}, + {"[-verbose[:suboptions]] verbose output when signing/verifying.", + "[-verbose[:suboptions]] \u7f72\u540d/\u691c\u8a3c\u6642\u306e\u8a73\u7d30\u51fa\u529b"}, + {" suboptions can be all, grouped or summary", + " \u30b5\u30d6\u30aa\u30d7\u30b7\u30e7\u30f3\u306f all\u3001grouped\u3001\u307e\u305f\u306f summary \u3067\u3059"}, {"[-certs] display certificates when verbose and verifying", "[-certs] \u8a73\u7d30\u51fa\u529b\u304a\u3088\u3073\u691c\u8a3c\u6642\u306b\u8a3c\u660e\u66f8\u3092\u8868\u793a"}, {"[-tsa ] location of the Timestamping Authority", @@ -98,10 +102,22 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "[-providerClass \u6697\u53f7\u5316\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u540d\u524d"}, {" [-providerArg ]] ... master class file and constructor argument", " [-providerArg ]] ... \u30de\u30b9\u30bf\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3068\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5f15\u6570"}, + {"[-strict] treat warnings as errors", + "[-strict] \u8b66\u544a\u3092\u30a8\u30e9\u30fc\u3068\u3057\u3066\u53d6\u308a\u6271\u3044\u307e\u3059"}, + {"Option lacks argument", "\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}, + {"Please type jarsigner -help for usage", "\u4f7f\u3044\u65b9\u3092\u898b\u308b\u306b\u306f jarsigner -help \u3068\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, + {"Please specify jarfile name", "jar \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, + {"Please specify alias name", "\u5225\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}, + {"Only one alias can be specified", "\u6307\u5b9a\u3067\u304d\u308b\u5225\u540d\u306f 1 \u3064\u3060\u3051\u3067\u3059\u3002"}, + {"This jar contains signed entries which is not signed by the specified alias(es).", + "\u3053\u306e jar \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u7f72\u540d\u6e08\u307f\u30a8\u30f3\u30c8\u30ea\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5225\u540d\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, + {"This jar contains signed entries that's not signed by alias in this keystore.", + "\u3053\u306e jar \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u7f72\u540d\u6e08\u307f\u30a8\u30f3\u30c8\u30ea\u306f\u3001\u3053\u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, {"s", "s"}, {"m", "m"}, {"k", "k"}, {"i", "i"}, + {"(and %d more)", "(\u3055\u3089\u306b %d)"}, {" s = signature was verified ", " s = \u7f72\u540d\u304c\u691c\u8a3c\u3055\u308c\u307e\u3057\u305f\u3002"}, {" m = entry is listed in manifest", @@ -110,7 +126,11 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { " k = 1 \u3064\u4ee5\u4e0a\u306e\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"}, {" i = at least one certificate was found in identity scope", " i = 1 \u3064\u4ee5\u4e0a\u306e\u8a3c\u660e\u66f8\u304c\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30b9\u30b3\u30fc\u30d7\u3067\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"}, + {" X = not signed by specified alias(es)", + "X = \u6307\u5b9a\u3055\u308c\u305f\u5225\u540d\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}, {"no manifest.", "\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"}, + {"(Signature related entries)","(\u7f72\u540d\u306b\u95a2\u9023\u3059\u308b\u30a8\u30f3\u30c8\u30ea)"}, + {"(Unsigned entries)", "(\u7f72\u540d\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30c8\u30ea)"}, {"jar is unsigned. (signatures missing or not parsable)", "jar \u306f\u7f72\u540d\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002(\u7f72\u540d\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u69cb\u6587\u89e3\u6790\u3067\u304d\u307e\u305b\u3093)"}, {"jar verified.", "jar \u304c\u691c\u8a3c\u3055\u308c\u307e\u3057\u305f\u3002"}, @@ -134,6 +154,12 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "\u30ad\u30fc\u30b9\u30c8\u30a2\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093: "}, {"Certificate chain not found for: alias. alias must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.", "\u6b21\u306e\u8a3c\u660e\u9023\u9396\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}\u3002 {1} \u306f\u3001\u975e\u516c\u958b\u9375\u304a\u3088\u3073\u5bfe\u5fdc\u3059\u308b\u516c\u958b\u9375\u8a3c\u660e\u9023\u9396\u3092\u542b\u3080\u6709\u52b9\u306a KeyStore \u9375\u30a8\u30f3\u30c8\u30ea\u3092\u53c2\u7167\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}, + {"File specified by -certchain does not exist", + "-certchain \u3067\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"}, + {"Cannot restore certchain from file specified", + "\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8a3c\u660e\u9023\u9396\u3092\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093\u3002"}, + {"Certificate chain not found in the file specified.", + "\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u8a3c\u660e\u9023\u9396\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"}, {"found non-X.509 certificate in signer's chain", "\u7f72\u540d\u8005\u306e\u9023\u9396\u5185\u3067\u975e X.509 \u8a3c\u660e\u66f8\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"}, {"incomplete certificate chain", "\u4e0d\u5b8c\u5168\u306a\u8a3c\u660e\u9023\u9396"}, @@ -149,6 +175,7 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { {"certificate is not valid until", "\u8a3c\u660e\u66f8\u306f {0} \u307e\u3067\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}, {"certificate will expire on", "\u8a3c\u660e\u66f8\u306f {0} \u306b\u5931\u52b9\u3057\u307e\u3059"}, + {"[CertPath not validated: ", "[CertPath \u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093:"}, {"requesting a signature timestamp", "\u7f72\u540d\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306e\u8981\u6c42"}, {"TSA location: ", "TSA \u306e\u5834\u6240: "}, @@ -189,14 +216,18 @@ public class JarSignerResources_ja extends java.util.ListResourceBundle { "\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e ExtendedKeyUsage \u62e1\u5f35\u6a5f\u80fd\u3067\u306f\u3001\u30b3\u30fc\u30c9\u7f72\u540d\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"}, {"The signer certificate's NetscapeCertType extension doesn't allow code signing.", "\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e NetscapeCertType \u62e1\u5f35\u6a5f\u80fd\u3067\u306f\u3001\u30b3\u30fc\u30c9\u7f72\u540d\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"}, - {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.", - "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e KeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, - {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.", - "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e ExtendedKeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, - {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.", - "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e NetscapeCertType \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, + {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.", + "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e KeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, + {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.", + "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e ExtendedKeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, + {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.", + "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e NetscapeCertType \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, {"[{0} extension does not support code signing]", "[{0} \u62e1\u5f35\u6a5f\u80fd\u306f\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093]"}, + {"The signer's certificate chain is not validated.", + "\u7f72\u540d\u8005\u306e\u8a3c\u660e\u9023\u9396\u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}, + {"This jar contains entries whose certificate chain is not validated.", + "\u3053\u306e jar \u306b\u306f\u8a3c\u660e\u9023\u9396\u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}, }; /** diff --git a/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java b/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java index 9e67fa26d3e..07a71b04fad 100644 --- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java +++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2009 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 @@ -51,11 +51,11 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { {"If -protected is specified, then -storepass and -keypass must not be specified", "\u5982\u679c\u6307\u5b9a\u4e86 -protected\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -storepass \u548c -keypass"}, {"If keystore is not password protected, then -storepass and -keypass must not be specified", -"\u5982\u679c\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -storepass \u548c -keypass"}, + "\u5982\u679c\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -storepass \u548c -keypass"}, {"Usage: jarsigner [options] jar-file alias", "\u7528\u6cd5\uff1ajarsigner [\u9009\u9879] jar \u6587\u4ef6\u522b\u540d"}, - {" jarsigner -verify [options] jar-file", - " jarsigner -verify [\u9009\u9879] jar \u6587\u4ef6"}, + {" jarsigner -verify [options] jar-file [alias...]", + " jarsigner -verify [\u9009\u9879] jar \u6587\u4ef6 [\u522b\u540d...]"}, {"[-keystore ] keystore location", "[-keystore ] \u5bc6\u94a5\u5e93\u4f4d\u7f6e"}, {"[-storepass ] password for keystore integrity", @@ -64,6 +64,8 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { "[-storetype <\u7c7b\u578b>] \u5bc6\u94a5\u5e93\u7c7b\u578b"}, {"[-keypass ] password for private key (if different)", "[-keypass <\u53e3\u4ee4>] \u4e13\u7528\u5bc6\u94a5\u7684\u53e3\u4ee4\uff08\u5982\u679c\u4e0d\u540c\uff09"}, + {"[-certchain ] name of alternative certchain file", + "[-certchain <\u6587\u4ef6>] \u66ff\u4ee3\u8bc1\u4e66\u94fe\u6587\u4ef6\u7684\u540d\u79f0"}, {"[-sigfile ] name of .SF/.DSA file", "[-sigfile <\u6587\u4ef6>] .SF/.DSA \u6587\u4ef6\u7684\u540d\u79f0"}, {"[-signedjar ] name of signed JAR file", @@ -74,8 +76,10 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { "[-sigalg <\u7b97\u6cd5>] \u7b7e\u540d\u7b97\u6cd5\u7684\u540d\u79f0"}, {"[-verify] verify a signed JAR file", "[-verify] \u9a8c\u8bc1\u5df2\u7b7e\u540d\u7684 JAR \u6587\u4ef6"}, - {"[-verbose] verbose output when signing/verifying", - "[-verbose] \u7b7e\u540d/\u9a8c\u8bc1\u65f6\u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f"}, + {"[-verbose[:suboptions]] verbose output when signing/verifying.", + "[-verbose[:\u5b50\u9009\u9879]] \u7b7e\u540d/\u9a8c\u8bc1\u65f6\u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f\u3002"}, + {" suboptions can be all, grouped or summary", + " \u5b50\u9009\u9879\u53ef\u4ee5\u4e3a all\u3001grouped \u6216 summary"}, {"[-certs] display certificates when verbose and verifying", "[-certs] \u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f\u548c\u9a8c\u8bc1\u65f6\u663e\u793a\u8bc1\u4e66"}, {"[-tsa ] location of the Timestamping Authority", @@ -98,10 +102,22 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { "[-providerClass <\u7c7b> \u52a0\u5bc6\u670d\u52a1\u63d0\u4f9b\u8005\u7684\u540d\u79f0"}, {" [-providerArg ]] ... master class file and constructor argument", " [-providerArg <\u53c2\u6570>]] ... \u4e3b\u7c7b\u6587\u4ef6\u548c\u6784\u9020\u51fd\u6570\u53c2\u6570"}, + {"[-strict] treat warnings as errors", + "[-strict] \u5c06\u8b66\u544a\u89c6\u4e3a\u9519\u8bef"}, + {"Option lacks argument", "\u9009\u9879\u7f3a\u5c11\u53c2\u6570"}, + {"Please type jarsigner -help for usage", "\u6709\u5173\u7528\u6cd5\uff0c\u8bf7\u952e\u5165 jarsigner -help"}, + {"Please specify jarfile name", "\u8bf7\u6307\u5b9a jarfile \u540d\u79f0"}, + {"Please specify alias name", "\u8bf7\u6307\u5b9a\u522b\u540d"}, + {"Only one alias can be specified", "\u53ea\u80fd\u6307\u5b9a\u4e00\u4e2a\u522b\u540d"}, + {"This jar contains signed entries which is not signed by the specified alias(es).", + "\u6b64 jar \u5305\u542b\u6307\u5b9a\u522b\u540d\u672a\u7b7e\u540d\u7684\u7b7e\u540d\u6761\u76ee\u3002"}, + {"This jar contains signed entries that's not signed by alias in this keystore.", + "\u6b64 jar \u5305\u542b\u6b64\u5bc6\u94a5\u5e93\u4e2d\u522b\u540d\u672a\u7b7e\u540d\u7684\u7b7e\u540d\u6761\u76ee\u3002"}, {"s", "s"}, {"m", "m"}, {"k", "k"}, {"i", "i"}, + {"(and %d more)", "\uff08\u8fd8\u6709 %d\uff09"}, {" s = signature was verified ", " s = \u5df2\u9a8c\u8bc1\u7b7e\u540d "}, {" m = entry is listed in manifest", @@ -110,7 +126,11 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { " k = \u5728\u5bc6\u94a5\u5e93\u4e2d\u81f3\u5c11\u627e\u5230\u4e86\u4e00\u4e2a\u8bc1\u4e66"}, {" i = at least one certificate was found in identity scope", " i = \u5728\u8eab\u4efd\u4f5c\u7528\u57df\u5185\u81f3\u5c11\u627e\u5230\u4e86\u4e00\u4e2a\u8bc1\u4e66"}, + {" X = not signed by specified alias(es)", + " X = \u672a\u7ecf\u6307\u5b9a\u522b\u540d\u7b7e\u540d"}, {"no manifest.", "\u6ca1\u6709\u6e05\u5355\u3002"}, + {"(Signature related entries)","\uff08\u4e0e\u7b7e\u540d\u6709\u5173\u7684\u6761\u76ee\uff09"}, + {"(Unsigned entries)", "\uff08\u672a\u7b7e\u540d\u7684\u6761\u76ee\uff09"}, {"jar is unsigned. (signatures missing or not parsable)", "jar \u672a\u7b7e\u540d\u3002\uff08\u7f3a\u5c11\u7b7e\u540d\u6216\u7b7e\u540d\u65e0\u6cd5\u89e3\u6790\uff09"}, {"jar verified.", "jar \u5df2\u9a8c\u8bc1\u3002"}, @@ -134,6 +154,12 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { "\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5bc6\u94a5\u5e93\u7c7b\uff1a "}, {"Certificate chain not found for: alias. alias must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.", "\u627e\u4e0d\u5230 {0} \u7684\u8bc1\u4e66\u94fe\u3002{1} \u5fc5\u987b\u5f15\u7528\u5305\u542b\u4e13\u7528\u5bc6\u94a5\u548c\u76f8\u5e94\u7684\u516c\u5171\u5bc6\u94a5\u8bc1\u4e66\u94fe\u7684\u6709\u6548\u5bc6\u94a5\u5e93\u5bc6\u94a5\u6761\u76ee\u3002"}, + {"File specified by -certchain does not exist", + "-certchain \u6307\u5b9a\u7684\u6587\u4ef6\u4e0d\u5b58\u5728"}, + {"Cannot restore certchain from file specified", + "\u65e0\u6cd5\u4ece\u6307\u5b9a\u6587\u4ef6\u6062\u590d\u8bc1\u4e66\u94fe"}, + {"Certificate chain not found in the file specified.", + "\u5728\u6307\u5b9a\u6587\u4ef6\u4e2d\u672a\u627e\u5230\u8bc1\u4e66\u94fe\u3002"}, {"found non-X.509 certificate in signer's chain", "\u5728\u7b7e\u540d\u8005\u7684\u94fe\u4e2d\u627e\u5230\u975e X.509 \u8bc1\u4e66"}, {"incomplete certificate chain", "\u8bc1\u4e66\u94fe\u4e0d\u5b8c\u6574"}, @@ -149,6 +175,7 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { {"certificate is not valid until", "\u76f4\u5230 {0}\uff0c\u8bc1\u4e66\u624d\u6709\u6548"}, {"certificate will expire on", "\u8bc1\u4e66\u5c06\u5728 {0} \u5230\u671f"}, + {"[CertPath not validated: ", "[\u8bc1\u4e66\u8def\u5f84\u672a\u7ecf\u8fc7\u9a8c\u8bc1\uff1a"}, {"requesting a signature timestamp", "\u6b63\u5728\u8bf7\u6c42\u7b7e\u540d\u65f6\u95f4\u6233"}, {"TSA location: ", "TSA \u4f4d\u7f6e\uff1a "}, @@ -184,19 +211,23 @@ public class JarSignerResources_zh_CN extends java.util.ListResourceBundle { {"The signer certificate is not yet valid.", "\u7b7e\u540d\u8005\u8bc1\u4e66\u4ecd\u65e0\u6548\u3002"}, {"The signer certificate's KeyUsage extension doesn't allow code signing.", -"\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, + "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, {"The signer certificate's ExtendedKeyUsage extension doesn't allow code signing.", -"\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, + "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, {"The signer certificate's NetscapeCertType extension doesn't allow code signing.", -"\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, - {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.", -"\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, - {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.", -"\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, - {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.", -"\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, + "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"}, + {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.", + "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, + {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.", + "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, + {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.", + "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"}, {"[{0} extension does not support code signing]", -"[{0} \u6269\u5c55\u4e0d\u652f\u6301\u4ee3\u7801\u7b7e\u540d]"}, + "[{0} \u6269\u5c55\u4e0d\u652f\u6301\u4ee3\u7801\u7b7e\u540d]"}, + {"The signer's certificate chain is not validated.", + "\u7b7e\u540d\u8005\u7684\u8bc1\u4e66\u94fe\u672a\u7ecf\u8fc7\u9a8c\u8bc1\u3002"}, + {"This jar contains entries whose certificate chain is not validated.", + "\u6b64 jar \u5305\u542b\u8bc1\u4e66\u94fe\u672a\u7ecf\u8fc7\u9a8c\u8bc1\u7684\u6761\u76ee\u3002"}, }; /** diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_de.java b/jdk/src/share/classes/sun/security/util/AuthResources_de.java index 6d76f3331f7..f7848fdc1ac 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_de.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_de.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -53,30 +53,30 @@ public class AuthResources_de extends java.util.ListResourceBundle { // UnixPrincipals {"UnixNumericGroupPrincipal [Primary Group]: name", - "Unix numerischer Gruppen-Principal [Prim\u00e4rgruppe]: {0}"}, + "Unix numerischer Gruppen-Principal [Prim\u00e4rgruppe]: {0}"}, {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "Unix numerische Gruppen-Principal [Zusatzgruppe]: {0}"}, + "Unix numerische Gruppen-Principal [Zusatzgruppe]: {0}"}, {"UnixNumericUserPrincipal: name", "Unix numerischer Benutzer-Principal: {0}"}, {"UnixPrincipal: name", "Unix-Principal: {0}"}, // com.sun.security.auth.login.ConfigFile {"Unable to properly expand config", "{0} kann nicht ordnungsgem\u00e4\u00df erweitert werden."}, {"extra_config (No such file or directory)", - "{0} (Datei oder Verzeichnis existiert nicht.)"}, - {"Unable to locate a login configuration", - "Anmeldekonfiguration kann nicht gefunden werden."}, + "{0} (Datei oder Verzeichnis existiert nicht.)"}, + {"Configuration Error:\n\tNo such file or directory", + "Konfigurationsfehler: \n\tKeine Datei oder kein Verzeichnis dieser Art vorhanden"}, {"Configuration Error:\n\tInvalid control flag, flag", - "Konfigurationsfehler:\n\tUng\u00fcltiges Steuerflag, {0}"}, + "Konfigurationsfehler:\n\tUng\u00fcltiges Steuerflag, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Konfigurationsfehler:\n\tEs k\u00f6nnen nicht mehrere Angaben f\u00fcr {0} gemacht werden."}, + "Konfigurationsfehler:\n\tEs k\u00f6nnen nicht mehrere Angaben f\u00fcr {0} gemacht werden."}, {"Configuration Error:\n\texpected [expect], read [end of file]", - "Konfigurationsfehler:\n\terwartet [{0}], gelesen [Dateiende]"}, + "Konfigurationsfehler:\n\terwartet [{0}], gelesen [Dateiende]"}, {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}], gefunden [{2}]"}, + "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}], gefunden [{2}]"}, {"Configuration Error:\n\tLine line: expected [expect]", - "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}]"}, + "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}]"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Konfigurationsfehler:\n\tZeile {0}: Systemeigenschaft [{1}] auf leeren Wert erweitert"}, + "Konfigurationsfehler:\n\tZeile {0}: Systemeigenschaft [{1}] auf leeren Wert erweitert"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","Benutzername: "}, @@ -88,13 +88,13 @@ public class AuthResources_de extends java.util.ListResourceBundle { {"Keystore alias: ","Keystore-Alias: "}, {"Keystore password: ","Keystore-Passwort: "}, {"Private key password (optional): ", - "Privates Schl\u00fcsselpasswort (optional): "}, + "Privates Schl\u00fcsselpasswort (optional): "}, // com.sun.security.auth.module.Krb5LoginModule {"Kerberos username [[defUsername]]: ", - "Kerberos-Benutzername [{0}]: "}, + "Kerberos-Benutzername [{0}]: "}, {"Kerberos password for [username]: ", - "Kerberos-Passwort f\u00fcr {0}: "}, + "Kerberos-Passwort f\u00fcr {0}: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ @@ -107,17 +107,17 @@ public class AuthResources_de extends java.util.ListResourceBundle { {"(", "("}, {")", ")"}, {"attempt to add a Permission to a readonly PermissionCollection", - "Es wurde versucht, eine Berechtigung zu einer schreibgesch\u00fctzten Berechtigungssammlung hinzuzuf\u00fcgen."}, + "Es wurde versucht, eine Berechtigung zu einer schreibgesch\u00fctzten Berechtigungssammlung hinzuzuf\u00fcgen."}, // com.sun.security.auth.PolicyParser {"expected keystore type", "erwarteter Keystore-Typ"}, {"can not specify Principal with a ", - "Principal kann nicht mit einer "}, + "Principal kann nicht mit einer "}, {"wildcard class without a wildcard name", - "Wildcard-Klasse ohne Wildcard-Namen angegeben werden."}, + "Wildcard-Klasse ohne Wildcard-Namen angegeben werden."}, {"expected codeBase or SignedBy", "codeBase oder SignedBy erwartet"}, {"only Principal-based grant entries permitted", - "Nur Principal-basierte Berechtigungseintr\u00e4ge erlaubt"}, + "Nur Principal-basierte Berechtigungseintr\u00e4ge erlaubt"}, {"expected permission entry", "Berechtigungseintrag erwartet"}, {"number ", "Nummer "}, {"expected ", "erwartet "}, @@ -130,11 +130,11 @@ public class AuthResources_de extends java.util.ListResourceBundle { // SolarisPrincipals {"SolarisNumericGroupPrincipal [Primary Group]: ", - "Solaris numerischer Gruppen-Principal [Prim\u00e4rgruppe]: "}, + "Solaris numerischer Gruppen-Principal [Prim\u00e4rgruppe]: "}, {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "Solaris numerischer Gruppen-Principal [Zusatzgruppe]: "}, + "Solaris numerischer Gruppen-Principal [Zusatzgruppe]: "}, {"SolarisNumericUserPrincipal: ", - "Solaris numerischer Benutzer-Principal: "}, + "Solaris numerischer Benutzer-Principal: "}, {"SolarisPrincipal: ", "Solaris-Principal: "}, {"provided null name", "enthielt leeren Namen"} diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_es.java b/jdk/src/share/classes/sun/security/util/AuthResources_es.java index ded7452b086..84855010813 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_es.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_es.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -53,30 +53,30 @@ public class AuthResources_es extends java.util.ListResourceBundle { // UnixPrincipals {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [Grupo principal] {0}"}, + "UnixNumericGroupPrincipal [Grupo principal] {0}"}, {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [Grupo adicional] {0}"}, + "UnixNumericGroupPrincipal [Grupo adicional] {0}"}, {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, {"UnixPrincipal: name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile {"Unable to properly expand config", "No se puede ampliar correctamente {0}"}, {"extra_config (No such file or directory)", - "{0} (No existe tal archivo o directorio)"}, - {"Unable to locate a login configuration", - "No se puede localizar una configuraci\u00f3n de inicio de sesi\u00f3n"}, + "{0} (No existe tal archivo o directorio)"}, + {"Configuration Error:\n\tNo such file or directory", + "Error de configuraci\u00f3n:\n\tNo se encuentra archivo o directorio"}, {"Configuration Error:\n\tInvalid control flag, flag", - "Error de configuraci\u00f3n:\n\tIndicador de control no v\u00e1lido, {0}"}, + "Error de configuraci\u00f3n:\n\tIndicador de control no v\u00e1lido, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Error de configuraci\u00f3n:\n\tNo se pueden especificar m\u00faltiples entradas para {0}"}, + "Error de configuraci\u00f3n:\n\tNo se pueden especificar m\u00faltiples entradas para {0}"}, {"Configuration Error:\n\texpected [expect], read [end of file]", - "Error de configuraci\u00f3n:\n\tse esperaba [{0}], se ha le\u00eddo [end of file]"}, + "Error de configuraci\u00f3n:\n\tse esperaba [{0}], se ha le\u00eddo [end of file]"}, {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}], se ha encontrado [{2}]"}, + "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}], se ha encontrado [{2}]"}, {"Configuration Error:\n\tLine line: expected [expect]", - "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}]"}, + "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}]"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: propiedad de sistema [{1}] ampliada a valor vac\u00edo"}, + "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: propiedad de sistema [{1}] ampliada a valor vac\u00edo"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","nombre de usuario: "}, @@ -88,13 +88,13 @@ public class AuthResources_es extends java.util.ListResourceBundle { {"Keystore alias: ","Alias de almac\u00e9n de claves: "}, {"Keystore password: ","Contrase\u00f1a de almac\u00e9n de claves: "}, {"Private key password (optional): ", - "Contrase\u00f1a de clave privada (opcional): "}, + "Contrase\u00f1a de clave privada (opcional): "}, // com.sun.security.auth.module.Krb5LoginModule {"Kerberos username [[defUsername]]: ", - "Nombre de usuario de Kerberos [{0}]: "}, + "Nombre de usuario de Kerberos [{0}]: "}, {"Kerberos password for [username]: ", - "Contrase\u00f1a de Kerberos de {0}: "}, + "Contrase\u00f1a de Kerberos de {0}: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ @@ -107,17 +107,17 @@ public class AuthResources_es extends java.util.ListResourceBundle { {"(", "("}, {")", ")"}, {"attempt to add a Permission to a readonly PermissionCollection", - "se ha intentado agregar un Permiso a una Colecci\u00f3n de permisos de s\u00f3lo lectura"}, + "se ha intentado agregar un Permiso a una Colecci\u00f3n de permisos de s\u00f3lo lectura"}, // com.sun.security.auth.PolicyParser {"expected keystore type", "se esperaba un tipo de almac\u00e9n de claves"}, {"can not specify Principal with a ", - "no se puede especificar Principal con una "}, + "no se puede especificar Principal con una "}, {"wildcard class without a wildcard name", - "clase comod\u00edn sin nombre de comod\u00edn"}, + "clase comod\u00edn sin nombre de comod\u00edn"}, {"expected codeBase or SignedBy", "se esperaba base de c\u00f3digos o SignedBy"}, {"only Principal-based grant entries permitted", - "s\u00f3lo se permite conceder entradas basadas en Principal"}, + "s\u00f3lo se permite conceder entradas basadas en Principal"}, {"expected permission entry", "se esperaba un permiso de entrada"}, {"number ", "n\u00famero "}, {"expected ", "se esperaba "}, @@ -130,11 +130,11 @@ public class AuthResources_es extends java.util.ListResourceBundle { // SolarisPrincipals {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [Grupo principal]: "}, + "SolarisNumericGroupPrincipal [Grupo principal]: "}, {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [Grupo adicional]: "}, + "SolarisNumericGroupPrincipal [Grupo adicional]: "}, {"SolarisNumericUserPrincipal: ", - "SolarisNumericUserPrincipal: "}, + "SolarisNumericUserPrincipal: "}, {"SolarisPrincipal: ", "SolarisPrincipal: "}, {"provided null name", "se ha proporcionado un nombre nulo"} diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_fr.java b/jdk/src/share/classes/sun/security/util/AuthResources_fr.java index 39611a8d345..146d5fb343a 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_fr.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_fr.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -53,30 +53,30 @@ public class AuthResources_fr extends java.util.ListResourceBundle { // UnixPrincipals {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [groupe principal] : {0}"}, + "UnixNumericGroupPrincipal [groupe principal] : {0}"}, {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [groupe suppl\u00e9mentaire] : {0}"}, + "UnixNumericGroupPrincipal [groupe suppl\u00e9mentaire] : {0}"}, {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal : {0}"}, {"UnixPrincipal: name", "UnixPrincipal : {0}"}, // com.sun.security.auth.login.ConfigFile {"Unable to properly expand config", "Impossible de d\u00e9velopper {0} correctement"}, {"extra_config (No such file or directory)", - "{0} (fichier ou r\u00e9pertoire introuvable)"}, - {"Unable to locate a login configuration", - "Impossible de trouver une configuration de connexion"}, + "{0} (fichier ou r\u00e9pertoire introuvable)"}, + {"Configuration Error:\n\tNo such file or directory", + "Erreur de configuration\u00a0:\n\tAucun fichier ou r\u00e9pertoire de ce type"}, {"Configuration Error:\n\tInvalid control flag, flag", - "Erreur de configuration :\n\tIndicateur de contr\u00f4le non valide, {0}"}, + "Erreur de configuration :\n\tIndicateur de contr\u00f4le non valide, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Erreur de configuration :\n\tImpossible de sp\u00e9cifier des entr\u00e9es multiples pour {0}"}, + "Erreur de configuration :\n\tImpossible de sp\u00e9cifier des entr\u00e9es multiples pour {0}"}, {"Configuration Error:\n\texpected [expect], read [end of file]", - "Erreur de configuration :\n\tattendu [{0}], lecture [fin de fichier]"}, + "Erreur de configuration :\n\tattendu [{0}], lecture [fin de fichier]"}, {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Erreur de configuration :\n\tLigne {0} : attendu [{1}], trouv\u00e9 [{2}]"}, + "Erreur de configuration :\n\tLigne {0} : attendu [{1}], trouv\u00e9 [{2}]"}, {"Configuration Error:\n\tLine line: expected [expect]", - "Erreur de configuration :\n\tLigne {0} : attendu [{1}]"}, + "Erreur de configuration :\n\tLigne {0} : attendu [{1}]"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Erreur de configuration :\n\tLigne {0} : propri\u00e9t\u00e9 syst\u00e8me [{1}] d\u00e9velopp\u00e9e en valeur vide"}, + "Erreur de configuration :\n\tLigne {0} : propri\u00e9t\u00e9 syst\u00e8me [{1}] d\u00e9velopp\u00e9e en valeur vide"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","Nom d'utilisateur : "}, @@ -88,13 +88,13 @@ public class AuthResources_fr extends java.util.ListResourceBundle { {"Keystore alias: ","Alias pour Keystore : "}, {"Keystore password: ","Mot de passe pour Keystore : "}, {"Private key password (optional): ", - "Mot de passe de cl\u00e9 priv\u00e9e (facultatif) : "}, + "Mot de passe de cl\u00e9 priv\u00e9e (facultatif) : "}, // com.sun.security.auth.module.Krb5LoginModule {"Kerberos username [[defUsername]]: ", - "Nom d''utilisateur Kerberos [{0}] : "}, + "Nom d''utilisateur Kerberos [{0}] : "}, {"Kerberos password for [username]: ", - "Mot de pass\u00e9 Kerberos pour {0} : "}, + "Mot de pass\u00e9 Kerberos pour {0} : "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ @@ -107,17 +107,17 @@ public class AuthResources_fr extends java.util.ListResourceBundle { {"(", "("}, {")", ")"}, {"attempt to add a Permission to a readonly PermissionCollection", - "tentative d'ajout de permission \u00e0 un ensemble de permissions en lecture seule"}, + "tentative d'ajout de permission \u00e0 un ensemble de permissions en lecture seule"}, // com.sun.security.auth.PolicyParser {"expected keystore type", "type de Keystore attendu"}, {"can not specify Principal with a ", - "impossible de sp\u00e9cifier Principal avec une"}, + "impossible de sp\u00e9cifier Principal avec une "}, {"wildcard class without a wildcard name", - "classe g\u00e9n\u00e9rique sans nom g\u00e9n\u00e9rique"}, + "classe g\u00e9n\u00e9rique sans nom g\u00e9n\u00e9rique"}, {"expected codeBase or SignedBy", "codeBase ou SignedBy attendu"}, {"only Principal-based grant entries permitted", - "seules les entr\u00e9es bas\u00e9es sur Principal sont autoris\u00e9es"}, + "seules les entr\u00e9es bas\u00e9es sur Principal sont autoris\u00e9es"}, {"expected permission entry", "entr\u00e9e de permission attendue"}, {"number ", "nombre "}, {"expected ", "attendu "}, @@ -130,11 +130,11 @@ public class AuthResources_fr extends java.util.ListResourceBundle { // SolarisPrincipals {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [groupe principal] : "}, + "SolarisNumericGroupPrincipal [groupe principal] : "}, {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [groupe suppl\u00e9mentaire] : "}, + "SolarisNumericGroupPrincipal [groupe suppl\u00e9mentaire] : "}, {"SolarisNumericUserPrincipal: ", - "SolarisNumericUserPrincipal : "}, + "SolarisNumericUserPrincipal : "}, {"SolarisPrincipal: ", "SolarisPrincipal : "}, {"provided null name", "nom Null sp\u00e9cifi\u00e9"} diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_it.java b/jdk/src/share/classes/sun/security/util/AuthResources_it.java index 4d846f2d958..4900458fa9b 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_it.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_it.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -38,7 +38,6 @@ package sun.security.util; public class AuthResources_it extends java.util.ListResourceBundle { private static final Object[][] contents = { - // NT principals {"invalid null input: value", "input nullo non valido: {0}"}, {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"}, @@ -53,30 +52,30 @@ public class AuthResources_it extends java.util.ListResourceBundle { // UnixPrincipals {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [gruppo primario]: {0}"}, + "UnixNumericGroupPrincipal [gruppo primario]: {0}"}, {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [gruppo supplementare]: {0}"}, + "UnixNumericGroupPrincipal [gruppo supplementare]: {0}"}, {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, {"UnixPrincipal: name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile {"Unable to properly expand config", "Impossibile espandere correttamente {0}"}, {"extra_config (No such file or directory)", - "{0} (file o directory inesistente)"}, - {"Unable to locate a login configuration", - "Impossibile trovare una configurazione di login"}, + "{0} (file o directory inesistente)"}, + {"Configuration Error:\n\tNo such file or directory", + "Errore di configurazione:\n\tfile o directory inesistente"}, {"Configuration Error:\n\tInvalid control flag, flag", - "Errore di configurazione:\n\tflag di controllo non valido, {0}"}, + "Errore di configurazione:\n\tflag di controllo non valido, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Errore di configurazione:\n\timpossibile specificare pi\u00f9 valori per {0}"}, + "Errore di configurazione:\n\timpossibile specificare pi\u00f9 valori per {0}"}, {"Configuration Error:\n\texpected [expect], read [end of file]", - "Errore di configurazione:\n\tprevisto [{0}], letto [end of file]"}, + "Errore di configurazione:\n\tprevisto [{0}], letto [end of file]"}, {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Errore di configurazione:\n\triga {0}: previsto [{1}], trovato [{2}]"}, + "Errore di configurazione:\n\triga {0}: previsto [{1}], trovato [{2}]"}, {"Configuration Error:\n\tLine line: expected [expect]", - "Errore di configurazione:\n\triga {0}: previsto [{1}]"}, + "Errore di configurazione:\n\triga {0}: previsto [{1}]"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Errore di configurazione:\n\triga {0}: propriet\u00e0 di sistema [{1}] espansa a valore vuoto"}, + "Errore di configurazione:\n\triga {0}: propriet\u00e0 di sistema [{1}] espansa a valore vuoto"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","Nome utente: "}, @@ -88,13 +87,13 @@ public class AuthResources_it extends java.util.ListResourceBundle { {"Keystore alias: ","Alias keystore: "}, {"Keystore password: ","Password keystore: "}, {"Private key password (optional): ", - "Password chiave privata (opzionale): "}, + "Password chiave privata (opzionale): "}, // com.sun.security.auth.module.Krb5LoginModule {"Kerberos username [[defUsername]]: ", "Nome utente Kerberos [{0}]: "}, {"Kerberos password for [username]: ", - "Password Kerberos per {0}: "}, + "Password Kerberos per {0}: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ @@ -102,22 +101,22 @@ public class AuthResources_it extends java.util.ListResourceBundle { {": error parsing ", ": errore nell'analisi "}, {": ", ": "}, {": error adding Permission ", ": errore nell'aggiunta del permesso "}, - {" ", " "}, + {" ", " "}, {": error adding Entry ", ": errore nell'aggiunta dell'entry "}, {"(", "("}, {")", ")"}, {"attempt to add a Permission to a readonly PermissionCollection", - "tentativo di aggiungere un permesso a una PermissionCollection di sola lettura"}, + "tentativo di aggiungere un permesso a una PermissionCollection di sola lettura"}, // com.sun.security.auth.PolicyParser {"expected keystore type", "tipo di keystore previsto"}, {"can not specify Principal with a ", - "impossibile specificare Principal con una "}, + "impossibile specificare Principal con una "}, {"wildcard class without a wildcard name", - "classe wildcard senza un nome wildcard"}, + "classe wildcard senza un nome wildcard"}, {"expected codeBase or SignedBy", "previsto codeBase o SignedBy"}, {"only Principal-based grant entries permitted", - "sono permessi solo valori garantiti basati su Principal"}, + "sono permessi solo valori garantiti basati su Principal"}, {"expected permission entry", "prevista entry di permesso"}, {"number ", "numero "}, {"expected ", "previsto "}, @@ -130,11 +129,11 @@ public class AuthResources_it extends java.util.ListResourceBundle { // SolarisPrincipals {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [gruppo primario]: "}, + "SolarisNumericGroupPrincipal [gruppo primario]: "}, {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [gruppo supplementare]: "}, + "SolarisNumericGroupPrincipal [gruppo supplementare]: "}, {"SolarisNumericUserPrincipal: ", - "SolarisNumericUserPrincipal: "}, + "SolarisNumericUserPrincipal: "}, {"SolarisPrincipal: ", "SolarisPrincipal: "}, {"provided null name", "il nome fornito \u00e8 nullo"} diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_ja.java b/jdk/src/share/classes/sun/security/util/AuthResources_ja.java index 1aee9bb2434..7e2a9aee819 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_ja.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_ja.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -63,8 +63,8 @@ public class AuthResources_ja extends java.util.ListResourceBundle { {"Unable to properly expand config", "{0} \u3092\u6b63\u3057\u304f\u5c55\u958b\u3067\u304d\u307e\u305b\u3093\u3002"}, {"extra_config (No such file or directory)", "{0} (\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093)"}, - {"Unable to locate a login configuration", - "\u30ed\u30b0\u30a4\u30f3\u69cb\u6210\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002"}, + {"Configuration Error:\n\tNo such file or directory", + "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"}, {"Configuration Error:\n\tInvalid control flag, flag", "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u7121\u52b9\u306a\u5236\u5fa1\u30d5\u30e9\u30b0: {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", @@ -76,7 +76,7 @@ public class AuthResources_ja extends java.util.ListResourceBundle { {"Configuration Error:\n\tLine line: expected [expect]", "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: [{1}] \u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u3002"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3 [{1}] \u304c\u7a7a\u306e\u5024\u306b\u5c55\u958b\u3055\u308c\u307e\u3057\u305f\u3002"}, + "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc [{1}] \u304c\u7a7a\u306e\u5024\u306b\u5c55\u958b\u3055\u308c\u307e\u3057\u305f\u3002"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","\u30e6\u30fc\u30b6\u540d: "}, diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_ko.java b/jdk/src/share/classes/sun/security/util/AuthResources_ko.java index bcd1ab2b0d5..b72f40c9826 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_ko.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_ko.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -63,8 +63,8 @@ public class AuthResources_ko extends java.util.ListResourceBundle { {"Unable to properly expand config", "\uc801\uc808\ud788 \ud655\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}"}, {"extra_config (No such file or directory)", "{0} (\ud574\ub2f9 \ud30c\uc77c\uc774\ub098 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.)"}, - {"Unable to locate a login configuration", - "\ub85c\uadf8\uc778 \uad6c\uc131\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}, + {"Configuration Error:\n\tNo such file or directory", + "\uad6c\uc131 \uc624\ub958:\n\t\ud574\ub2f9 \ud30c\uc77c\uc774\ub098 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."}, {"Configuration Error:\n\tInvalid control flag, flag", "\uad6c\uc131 \uc624\ub958:\n\t\uc798\ubabb\ub41c \ucee8\ud2b8\ub864 \ud50c\ub798\uadf8, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java index e81795c5592..e72699ec32b 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -53,47 +53,48 @@ public class AuthResources_sv extends java.util.ListResourceBundle { // UnixPrincipals {"UnixNumericGroupPrincipal [Primary Group]: name", - "UnixNumericGroupPrincipal [prim\u00e4r grupp]: {0}"}, + "UnixNumericGroupPrincipal [prim\u00e4r grupp]: {0}"}, {"UnixNumericGroupPrincipal [Supplementary Group]: name", - "UnixNumericGroupPrincipal [till\u00e4ggsgrupp]: {0}"}, + "UnixNumericGroupPrincipal [till\u00e4ggsgrupp]: {0}"}, {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"}, {"UnixPrincipal: name", "UnixPrincipal: {0}"}, // com.sun.security.auth.login.ConfigFile {"Unable to properly expand config", "Det g\u00e5r inte att utvidga korrekt {0}"}, {"extra_config (No such file or directory)", - "{0} (Det finns ingen s\u00e5dan fil eller katalog.)"}, - {"Unable to locate a login configuration", - "Det g\u00e5r inte att hitta n\u00e5gon inloggningskonfiguration"}, + "{0} (Det finns ingen s\u00e5dan fil eller katalog.)"}, + {"Configuration Error:\n\tNo such file or directory", + "Konfigurationsfel:\n\tDet finns ingen s\u00e5dan fil eller katalog."}, {"Configuration Error:\n\tInvalid control flag, flag", - "Konfigurationsfel:\n\tOgiltig kontrollflagga, {0}"}, + "Konfigurationsfel:\n\tOgiltig kontrollflagga, {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", - "Konfigurationsfel:\n\tDet g\u00e5r inte att ange flera poster f\u00f6r {0}"}, + "Konfigurationsfel:\n\tDet g\u00e5r inte att ange flera poster f\u00f6r {0}"}, {"Configuration Error:\n\texpected [expect], read [end of file]", - "Konfigurationsfel:\n\tf\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"}, + "Konfigurationsfel:\n\tf\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"}, {"Configuration Error:\n\tLine line: expected [expect], found [value]", - "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"}, + "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"}, {"Configuration Error:\n\tLine line: expected [expect]", - "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}]"}, + "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}]"}, {"Configuration Error:\n\tLine line: system property [value] expanded to empty value", - "Konfigurationsfel:\n\tLine {0}: systemegenskapen [{1}] utvidgad till tomt v\u00e4rde"}, + "Konfigurationsfel:\n\tLine {0}: systemegenskapen [{1}] utvidgad till tomt v\u00e4rde"}, // com.sun.security.auth.module.JndiLoginModule {"username: ","anv\u00e4ndarnamn: "}, {"password: ","l\u00f6senord: "}, // com.sun.security.auth.module.KeyStoreLoginModule - {"Please enter keystore information","Ange keystore-information"}, + {"Please enter keystore information", + "Ange keystore-information"}, {"Keystore alias: ","Keystore-alias: "}, {"Keystore password: ","Keystore-l\u00f6senord: "}, {"Private key password (optional): ", - "L\u00f6senord f\u00f6r personlig nyckel (valfritt): "}, + "L\u00f6senord f\u00f6r personlig nyckel (valfritt): "}, // com.sun.security.auth.module.Krb5LoginModule {"Kerberos username [[defUsername]]: ", - "Kerberos-anv\u00e4ndarnamn [{0}]: "}, + "Kerberos-anv\u00e4ndarnamn [{0}]: "}, {"Kerberos password for [username]: ", - "Kerberos-l\u00f6senord f\u00f6r {0}: "}, + "Kerberos-l\u00f6senord f\u00f6r {0}: "}, /*** EVERYTHING BELOW IS DEPRECATED ***/ @@ -106,17 +107,17 @@ public class AuthResources_sv extends java.util.ListResourceBundle { {"(", "("}, {")", ")"}, {"attempt to add a Permission to a readonly PermissionCollection", - "f\u00f6rs\u00f6k att l\u00e4gga till beh\u00f6righet till skrivskyddad PermissionCollection"}, + "f\u00f6rs\u00f6k att l\u00e4gga till beh\u00f6righet till skrivskyddad PermissionCollection"}, // com.sun.security.auth.PolicyParser {"expected keystore type", "f\u00f6rv\u00e4ntad keystore-typ"}, {"can not specify Principal with a ", - "det g\u00e5r inte att specificera n\u00e5gon principal med "}, + "det g\u00e5r inte att specificera n\u00e5gon principal med "}, {"wildcard class without a wildcard name", - "jokertecken f\u00f6r klass men inte f\u00f6r namn"}, + "jokertecken f\u00f6r klass men inte f\u00f6r namn"}, {"expected codeBase or SignedBy", "f\u00f6rv\u00e4ntade codeBase eller SignedBy"}, {"only Principal-based grant entries permitted", - "enbart Principal-baserade poster till\u00e5tna"}, + "enbart Principal-baserade poster till\u00e5tna"}, {"expected permission entry", "f\u00f6rv\u00e4ntade beh\u00f6righetspost"}, {"number ", "antal "}, {"expected ", "f\u00f6rv\u00e4ntade "}, @@ -129,11 +130,11 @@ public class AuthResources_sv extends java.util.ListResourceBundle { // SolarisPrincipals {"SolarisNumericGroupPrincipal [Primary Group]: ", - "SolarisNumericGroupPrincipal [prim\u00e4r grupp]: "}, + "SolarisNumericGroupPrincipal [prim\u00e4r grupp]: "}, {"SolarisNumericGroupPrincipal [Supplementary Group]: ", - "SolarisNumericGroupPrincipal [till\u00e4ggsgrupp]: "}, + "SolarisNumericGroupPrincipal [till\u00e4ggsgrupp]: "}, {"SolarisNumericUserPrincipal: ", - "SolarisNumericUserPrincipal: "}, + "SolarisNumericUserPrincipal: "}, {"SolarisPrincipal: ", "SolarisPrincipal: "}, {"provided null name", "gav null-namn"} diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java index efb4cba7968..f9731a8692a 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -63,8 +63,8 @@ public class AuthResources_zh_CN extends java.util.ListResourceBundle { {"Unable to properly expand config", "\u65e0\u6cd5\u5b8c\u5168\u6269\u5145 {0}"}, {"extra_config (No such file or directory)", "{0} \uff08\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55\uff09"}, - {"Unable to locate a login configuration", - "\u65e0\u6cd5\u5b9a\u4f4d\u767b\u5f55\u914d\u7f6e"}, + {"Configuration Error:\n\tNo such file or directory", + "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55"}, {"Configuration Error:\n\tInvalid control flag, flag", "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u65e0\u6548\u7684\u63a7\u5236\u6807\u8bb0\uff0c {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", diff --git a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java index a85ffd038df..150b456436a 100644 --- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java +++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-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 @@ -63,8 +63,8 @@ public class AuthResources_zh_TW extends java.util.ListResourceBundle { {"Unable to properly expand config", "\u7121\u6cd5\u5b8c\u5168\u64f4\u5145 {0}"}, {"extra_config (No such file or directory)", "{0} \uff08\u6c92\u6709\u6b64\u6a94\u6848\u6216\u76ee\u9304\uff09"}, - {"Unable to locate a login configuration", - "\u7121\u6cd5\u5b9a\u4f4d\u767b\u5165\u914d\u7f6e"}, + {"Configuration Error:\n\tNo such file or directory", + "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u6c92\u6709\u9019\u985e\u7684\u6a94\u6848\u6216\u76ee\u9304"}, {"Configuration Error:\n\tInvalid control flag, flag", "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u7121\u6548\u7684\u63a7\u5236\u65d7\u865f\uff0c {0}"}, {"Configuration Error:\n\tCan not specify multiple entries for appName", diff --git a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java index 12cdd003ef4..6954a1e9290 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java +++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java @@ -114,7 +114,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"ClassTab.infoLabelFormat", "\u30ed\u30fc\u30c9: {0} \u30a2\u30f3\u30ed\u30fc\u30c9: {1} \u7dcf\u6570: {2}"}, {"ClassTab.loadedClassesPlotter.accessibleName", "\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u56f3\u3002"}, {"Classes","\u30af\u30e9\u30b9"}, - {"Clear","\u6d88\u53bb"}, {"Close","\u9589\u3058\u308b"}, {"Column.Name", "\u540d\u524d"}, {"Column.PID", "PID"}, @@ -122,7 +121,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"Committed virtual memory","\u78ba\u5b9a\u4eee\u60f3\u30e1\u30e2\u30ea"}, {"Committed", "\u78ba\u5b9a"}, {"Compiler","\u30b3\u30f3\u30d1\u30a4\u30e9"}, - {"Composite Navigation", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, {"CompositeData","CompositeData"}, {"Config","\u69cb\u6210"}, {"Connect", "\u63a5\u7d9a(C)"}, @@ -158,12 +156,9 @@ public class JConsoleResources_ja extends JConsoleResources { {"Detect Deadlock.toolTip", "\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u3092\u691c\u51fa\u3059\u308b"}, {"Dimension is not supported:","\u5927\u304d\u3055\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093:"}, {"Discard chart", "\u56f3\u3092\u7834\u68c4\u3059\u308b"}, - {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u65e5 |1.0<{0,number,integer} \u65e5 }" + - "{1,choice,0<{1,number,integer} \u6642\u9593 |1#{1,number,integer} \u6642\u9593 |1<{1,number,integer} \u6642\u9593 }" + - "{2,choice,0<{2,number,integer} \u5206 |1#{2,number,integer} \u5206 |1.0<{2,number,integer} \u5206}"}, + {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u65e5 |1.0<{0,number,integer} \u65e5 }{1,choice,0<{1,number,integer} \u6642\u9593 |1#{1,number,integer} \u6642\u9593 |1<{1,number,integer} \u6642\u9593 }{2,choice,0<{2,number,integer} \u5206 |1#{2,number,integer} \u5206 |1.0<{2,number,integer} \u5206}"}, - {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u6642\u9593 |1<{0,number,integer} \u6642\u9593 }" + - "{1,choice,0<{1,number,integer} \u5206 |1#{1,number,integer} \u5206 |1.0<{1,number,integer} \u5206}"}, + {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u6642\u9593 |1<{0,number,integer} \u6642\u9593 }{1,choice,0<{1,number,integer} \u5206 |1#{1,number,integer} \u5206 |1.0<{1,number,integer} \u5206}"}, {"DurationMinutes","{0,choice,1#{0,number,integer} \u5206 |1.0<{0,number,integer} \u5206}"}, {"DurationSeconds","{0} \u79d2"}, @@ -201,8 +196,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"Help.AboutDialog.title", "JConsole: \u88fd\u54c1\u60c5\u5831"}, {"Help.AboutDialog.userGuideLink", "JConsole \u30e6\u30fc\u30b6\u30fc\u30ac\u30a4\u30c9:
{0}"}, {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, - // Note: The java.sun.com URL should be used for RC, or as soon as the page is available. - //{"Help.AboutDialog.UsingJMX.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"}, {"HelpMenu.About.title", "JConsole \u306b\u3064\u3044\u3066(A)"}, {"HelpMenu.About.title.mnemonic", 'A'}, @@ -241,9 +234,22 @@ public class JConsoleResources_ja extends JConsoleResources { {"MBeanNotificationInfo","MBeanNotificationInfo"}, {"MBeanOperationInfo","MBeanOperationInfo"}, {"MBeans","MBean"}, + {"MBeansTab.clearNotificationsButton", "\u6d88\u53bb(C)"}, + {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, + {"MBeansTab.clearNotificationsButton.toolTip", "\u901a\u77e5\u3092\u6d88\u53bb\u3059\u308b"}, + {"MBeansTab.compositeNavigationMultiple", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"}, + {"MBeansTab.compositeNavigationSingle", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, {"MBeansTab.refreshAttributesButton", "\u66f4\u65b0(R)"}, {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, {"MBeansTab.refreshAttributesButton.toolTip", "\u5c5e\u6027\u3092\u66f4\u65b0\u3059\u308b"}, + {"MBeansTab.subscribeNotificationsButton", "\u767b\u9332(S)"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, + {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u958b\u59cb"}, + {"MBeansTab.tabularNavigationMultiple", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"}, + {"MBeansTab.tabularNavigationSingle", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, + {"MBeansTab.unsubscribeNotificationsButton", "\u767b\u9332\u89e3\u9664(U)"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, + {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u505c\u6b62"}, {"Manage Hotspot MBeans in: ", "Hotspot MBean \u3092\u7ba1\u7406: "}, {"Max","\u6700\u5927"}, {"Maximum heap size","\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba"}, @@ -343,7 +349,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"Source","\u30bd\u30fc\u30b9"}, {"Stack trace", cr + "\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9: " + cr}, - {"Subscribe","\u767b\u9332"}, {"Success:","\u6210\u529f:"}, // Note: SummaryTab.headerDateTimeFormat can be one the following: // 1. A combination of two styles for date and time, using the @@ -357,7 +362,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"SummaryTab.pendingFinalization.value", "{0} \u30aa\u30d6\u30b8\u30a7\u30af\u30c8"}, {"SummaryTab.tabName", "VM \u306e\u6982\u8981"}, {"SummaryTab.vmVersion","{0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1}"}, - {"Tabular Navigation","\u8868\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"}, {"TabularData are not supported", "TabularData \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"}, {"Threads","\u30b9\u30ec\u30c3\u30c9"}, {"ThreadTab.infoLabelFormat", "\u30e9\u30a4\u30d6: {0} \u30d4\u30fc\u30af: {1} \u7dcf\u6570: {2}"}, @@ -381,7 +385,6 @@ public class JConsoleResources_ja extends JConsoleResources { {"Unavailable","\u4f7f\u7528\u4e0d\u53ef\u80fd"}, {"UNKNOWN","UNKNOWN"}, {"Unknown Host","\u672a\u77e5\u306e\u30db\u30b9\u30c8: {0}"}, - {"Unsubscribe","\u767b\u9332\u89e3\u9664"}, {"Unregister", "\u767b\u9332\u89e3\u9664"}, {"Uptime","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0"}, {"Uptime: ","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0: "}, @@ -409,15 +412,11 @@ public class JConsoleResources_ja extends JConsoleResources { {"You cannot drop a class here", "\u30af\u30e9\u30b9\u3092\u3053\u3053\u306b\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093"}, {"collapse", "\u6298\u308a\u305f\u305f\u307f"}, {"connectionFailed1","\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \u518d\u8a66\u884c\u3057\u307e\u3059\u304b?"}, - {"connectionFailed2","{0} \u3078\u306e\u63a5\u7d9a\u304c\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002
" + - "\u3082\u3046\u4e00\u5ea6\u8a66\u3057\u307e\u3059\u304b?"}, + {"connectionFailed2","{0} \u3078\u306e\u63a5\u7d9a\u304c\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002
\u3082\u3046\u4e00\u5ea6\u8a66\u3057\u307e\u3059\u304b?"}, {"connectionLost1","\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f: \u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"}, - {"connectionLost2","\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u305f\u305f\u3081\u3001" + - "{0} \u3078\u306e\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f\u3002
" + - "\u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"}, + {"connectionLost2","\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u305f\u305f\u3081\u3001{0} \u3078\u306e\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f\u3002
\u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"}, {"connectingTo1","{0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059"}, - {"connectingTo2","\u73fe\u5728 {0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u3002
" + - "\u3053\u308c\u306b\u306f\u5c11\u3057\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002"}, + {"connectingTo2","\u73fe\u5728 {0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u308c\u306b\u306f\u5c11\u3057\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002"}, {"deadlockAllTab","\u3059\u3079\u3066"}, {"deadlockTab","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af"}, {"deadlockTabN","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af {0}"}, diff --git a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java index a4e1f7e0c1b..f5a9bf48610 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java +++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2004-2007 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 @@ -114,7 +114,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"ClassTab.infoLabelFormat", "\u5df2\u52a0\u8f7d: {0} \u672a\u52a0\u8f7d: {1} \u603b\u8ba1: {2}"}, {"ClassTab.loadedClassesPlotter.accessibleName", "\u5df2\u88c5\u5165\u7c7b\u7684\u56fe\u8868\u3002"}, {"Classes","\u7c7b"}, - {"Clear","\u6e05\u9664"}, {"Close","\u5173\u95ed"}, {"Column.Name", "\u540d\u79f0"}, {"Column.PID", "PID"}, @@ -122,7 +121,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Committed virtual memory","\u5206\u914d\u7684\u865a\u62df\u5185\u5b58"}, {"Committed", "\u5206\u914d"}, {"Compiler","\u7f16\u8bd1\u5668"}, - {"Composite Navigation", "\u590d\u5408\u6d4f\u89c8"}, {"CompositeData","\u590d\u5408\u6570\u636e"}, {"Config","\u914d\u7f6e"}, {"Connect", "\u8fde\u63a5"}, @@ -158,12 +156,9 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Detect Deadlock.toolTip", "\u68c0\u6d4b\u5230\u6b7b\u9501\u7684\u7ebf\u7a0b"}, {"Dimension is not supported:","\u4e0d\u652f\u6301\u7ef4\uff1a"}, {"Discard chart", "\u653e\u5f03\u56fe\u8868"}, - {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} day |1.0<{0,number,integer} days }" + - "{1,choice,0<{1,number,integer} hours |1#{1,number,integer} hour |1<{1,number,integer} hours }" + - "{2,choice,0<{2,number,integer} minutes|1#{2,number,integer} minute|1.0<{2,number,integer} minutes}"}, + {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} day |1.0<{0,number,integer} days }{1,choice,0<{1,number,integer} hours |1#{1,number,integer} hour |1<{1,number,integer} hours }{2,choice,0<{2,number,integer} minutes|1#{2,number,integer} minute|1.0<{2,number,integer} minutes}"}, - {"DurationHoursMinutes","{0,choice,1#{0,number,integer} hour |1<{0,number,integer} hours }" + - "{1,choice,0<{1,number,integer} minutes|1#{1,number,integer} minute|1.0<{1,number,integer} minutes}"}, + {"DurationHoursMinutes","{0,choice,1#{0,number,integer} hour |1<{0,number,integer} hours }{1,choice,0<{1,number,integer} minutes|1#{1,number,integer} minute|1.0<{1,number,integer} minutes}"}, {"DurationMinutes","{0,choice,1#{0,number,integer} minute|1.0<{0,number,integer} minutes}"}, {"DurationSeconds","{0} \u79d2"}, @@ -201,8 +196,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Help.AboutDialog.title", "JConsole\uff1a\u5173\u4e8e"}, {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357:
{0}"}, {"Help.AboutDialog.userGuideLink.mnemonic", 'U'}, - // Note: The java.sun.com URL should be used for RC, or as soon as the page is available. - //{"Help.AboutDialog.UsingJMX.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"}, {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"}, {"HelpMenu.About.title", "\u5173\u4e8e JConsole"}, {"HelpMenu.About.title.mnemonic", 'A'}, @@ -241,9 +234,22 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"MBeanNotificationInfo","MBeanNotificationInfo"}, {"MBeanOperationInfo","MBeanOperationInfo"}, {"MBeans","MBean"}, - {"MBeansTab.refreshAttributesButton", "\u5237\u65b0"}, + {"MBeansTab.clearNotificationsButton", "\u6e05\u9664(C)"}, + {"MBeansTab.clearNotificationsButton.mnemonic", 'C'}, + {"MBeansTab.clearNotificationsButton.toolTip", "\u6e05\u9664\u901a\u77e5"}, + {"MBeansTab.compositeNavigationMultiple", "\u590d\u5408\u5bfc\u822a {0}/{1}"}, + {"MBeansTab.compositeNavigationSingle", "\u590d\u5408\u5bfc\u822a"}, + {"MBeansTab.refreshAttributesButton", "\u5237\u65b0(R)"}, {"MBeansTab.refreshAttributesButton.mnemonic", 'R'}, {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65b0\u5c5e\u6027"}, + {"MBeansTab.subscribeNotificationsButton", "\u8ba2\u9605(S)"}, + {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'}, + {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5f00\u59cb\u4fa6\u542c\u901a\u77e5"}, + {"MBeansTab.tabularNavigationMultiple", "\u8868\u683c\u5bfc\u822a {0}/{1}"}, + {"MBeansTab.tabularNavigationSingle", "\u8868\u683c\u5bfc\u822a"}, + {"MBeansTab.unsubscribeNotificationsButton", "\u53d6\u6d88\u8ba2\u9605(U)"}, + {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'}, + {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505c\u6b62\u4fa6\u542c\u901a\u77e5"}, {"Manage Hotspot MBeans in: ", "\u7ba1\u7406 Hotspot MBean \u4e8e\uff1a "}, {"Max","\u6700\u5927\u503c"}, {"Maximum heap size","\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c"}, @@ -262,7 +268,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Minimize All.mnemonic", 'M'}, {"Minus Version", "\u8fd9\u662f {0} \u7248\u672c {1}"}, {"Monitor locked", -" - \u5df2\u9501\u5b9a {0}" + cr}, + " - \u5df2\u9501\u5b9a {0}" + cr}, {"Motif","\u4fee\u6539"}, {"Name Build and Mode","{0}\uff08\u5185\u90e8\u7248\u672c {1}\u3001{2}\uff09"}, {"Name and Build","{0}\uff08\u5185\u90e8\u7248\u672c {1}\uff09"}, @@ -343,7 +349,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Source","\u6e90"}, {"Stack trace", cr + "\u5806\u6808\u8ffd\u8e2a\uff1a " + cr}, - {"Subscribe","\u8ba2\u9605"}, {"Success:","\u6210\u529f\uff1a"}, // Note: SummaryTab.headerDateTimeFormat can be one the following: // 1. A combination of two styles for date and time, using the @@ -357,7 +362,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"SummaryTab.pendingFinalization.value", "{0} \u4e2a\u5bf9\u8c61"}, {"SummaryTab.tabName", "VM \u6458\u8981"}, {"SummaryTab.vmVersion","{0} \u7248\u672c {1}"}, - {"Tabular Navigation","\u8868\u683c\u5f0f\u6d4f\u89c8"}, {"TabularData are not supported", "\u4e0d\u652f\u6301\u8868\u683c\u5f0f\u6570\u636e"}, {"Threads","\u7ebf\u7a0b"}, {"ThreadTab.infoLabelFormat", "\u6d3b\u52a8: {0} \u5cf0\u503c: {1} \u603b\u8ba1: {2}"}, @@ -381,7 +385,6 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"Unavailable","\u4e0d\u53ef\u7528"}, {"UNKNOWN","\u672a\u77e5"}, {"Unknown Host","\u672a\u77e5\u4e3b\u673a: {0}"}, - {"Unsubscribe","\u672a\u8ba2\u9605"}, {"Unregister", "\u672a\u6ce8\u518c"}, {"Uptime","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4"}, {"Uptime: ","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4\uff1a "}, @@ -409,15 +412,11 @@ public class JConsoleResources_zh_CN extends JConsoleResources { {"You cannot drop a class here", "\u60a8\u4e0d\u80fd\u5c06\u7c7b\u653e\u5728\u6b64\u5904"}, {"collapse", "\u6298\u53e0"}, {"connectionFailed1","\u8fde\u63a5\u5931\u8d25\uff1a\u662f\u5426\u91cd\u8bd5\uff1f"}, - {"connectionFailed2","\u4e0e {0} \u7684\u8fde\u63a5\u672a\u6210\u529f\u3002
" + -"\u662f\u5426\u8981\u91cd\u8bd5\uff1f"}, + {"connectionFailed2","\u4e0e {0} \u7684\u8fde\u63a5\u672a\u6210\u529f\u3002
\u662f\u5426\u8981\u91cd\u8bd5\uff1f"}, {"connectionLost1","\u8fde\u63a5\u65ad\u5f00\uff1a\u662f\u5426\u91cd\u65b0\u8fde\u63a5\uff1f"}, - {"connectionLost2","\u4e0e {0} \u7684\u8fde\u63a5\u5df2\u65ad\u5f00" + - "\u539f\u56e0\u662f\u5df2\u7ec8\u6b62\u8fdc\u7a0b\u8fdb\u7a0b\u3002
" + - "\u662f\u5426\u8981\u91cd\u65b0\u8fde\u63a5\uff1f"}, + {"connectionLost2","\u4e0e {0} \u7684\u8fde\u63a5\u5df2\u65ad\u5f00\u539f\u56e0\u662f\u5df2\u7ec8\u6b62\u8fdc\u7a0b\u8fdb\u7a0b\u3002
\u662f\u5426\u8981\u91cd\u65b0\u8fde\u63a5\uff1f"}, {"connectingTo1","\u6b63\u5728\u8fde\u63a5\u81f3 {0}"}, - {"connectingTo2","\u5f53\u524d\u6b63\u5728\u8fde\u63a5\u81f3 {0}\u3002
" + -"\u8fd9\u5c06\u4f1a\u82b1\u8d39\u4e00\u4e9b\u65f6\u95f4\u3002"}, + {"connectingTo2","\u5f53\u524d\u6b63\u5728\u8fde\u63a5\u81f3 {0}\u3002
\u8fd9\u5c06\u4f1a\u82b1\u8d39\u4e00\u4e9b\u65f6\u95f4\u3002"}, {"deadlockAllTab","\u5168\u90e8"}, {"deadlockTab","\u6b7b\u9501"}, {"deadlockTabN","\u6b7b\u9501 {0}"}, @@ -435,7 +434,7 @@ public class JConsoleResources_zh_CN extends JConsoleResources { " -version \u8f93\u51fa\u7a0b\u5e8f\u7248\u672c" + cr + cr + " connection = pid || host:port || JMX URL (service:jmx:://...)" + cr + - " pid \u76ee\u6807\u8fdb\u7a0b\u7684\u8fdb\u7a0b ID"+ cr + + " pid \u76ee\u6807\u8fdb\u7a0b\u7684\u8fdb\u7a0b ID" + cr + " host \u8fdc\u7a0b\u4e3b\u673a\u540d\u6216 IP \u5730\u5740" + cr + " port \u7528\u4e8e\u8fdc\u7a0b\u8fde\u63a5\u7684\u7aef\u53e3\u53f7" + cr + cr + From f78418e286d7ba73f7208bc462c1ec1750fcb2b7 Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Sun, 11 Apr 2010 23:24:24 -0700 Subject: [PATCH 09/64] 6875904: Java 7 message synchronization 1 Reviewed-by: ogino, faryad --- .../sun/tools/apt/resources/apt_ja.properties | 150 +- .../tools/apt/resources/apt_zh_CN.properties | 152 +- .../html/resources/standard_ja.properties | 53 +- .../html/resources/standard_zh_CN.properties | 51 +- .../toolkit/resources/doclets_ja.properties | 60 +- .../resources/doclets_zh_CN.properties | 63 +- .../javac/resources/compiler_ja.properties | 1361 ++++++----------- .../javac/resources/compiler_zh_CN.properties | 1361 ++++++----------- .../tools/javac/resources/javac_ja.properties | 246 +-- .../javac/resources/javac_zh_CN.properties | 246 +-- 10 files changed, 1384 insertions(+), 2359 deletions(-) diff --git a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties index bd1e5f30794..be7730d5946 100644 --- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties +++ b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties @@ -23,60 +23,34 @@ # have any questions. # -apt.msg.usage.header=\ -\u4f7f\u7528\u6cd5: {0} <\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb>\n\ -\u6b21\u306e apt \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059: +apt.msg.usage.header=\u4f7f\u7528\u6cd5: {0} <\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb>\n\u6b21\u306e apt \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059: -apt.msg.usage.footer=\ -javac \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001javac -help \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +apt.msg.usage.footer=javac \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001javac -help \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -apt.msg.usage.nonstandard.footer=\ -\u3053\u308c\u3089\u306f\u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3042\u308a\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\n\u8868\u793a\u5f62\u5f0f\u306f\u540c\u3058\u3067\u3059\u3002 +apt.msg.usage.nonstandard.footer=\u3053\u308c\u3089\u306f\u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3042\u308a\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\n\u8868\u793a\u5f62\u5f0f\u306f\u540c\u3058\u3067\u3059\u3002 -apt.msg.bug=\ -\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f ({0})\u3002\ -Bug Parade \u306b\u540c\u3058\u30d0\u30b0\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u3054\u78ba\u8a8d\u306e\u4e0a\u3001Java Developer Connection \ -(http://java.sun.com/webapps/bugreport) \u306b\u3066\u30d0\u30b0\u306e\u767b\u9332\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002 \ -\u30ec\u30dd\u30fc\u30c8\u306b\u306f\u3001\u305d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u4e0b\u8a18\u306e\u8a3a\u65ad\u5185\u5bb9\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3054\u5354\u529b\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002 +apt.msg.bug=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f ({0})\u3002Bug Parade \u306b\u540c\u3058\u30d0\u30b0\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u3054\u78ba\u8a8d\u306e\u4e0a\u3001Java Developer Connection (http://java.sun.com/webapps/bugreport) \u306b\u3066\u30d0\u30b0\u306e\u767b\u9332\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002 \u30ec\u30dd\u30fc\u30c8\u306b\u306f\u3001\u305d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u4e0b\u8a18\u306e\u8a3a\u65ad\u5185\u5bb9\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3054\u5354\u529b\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002 ## apt options -apt.opt.A=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u6e21\u3055\u308c\u308b\u30aa\u30d7\u30b7\u30e7\u30f3 -apt.opt.arg.class=\ - -apt.opt.arg.directory=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u304a\u3088\u3073 javac \u304c\u751f\u6210\u3057\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -apt.opt.classpath=\ - \u30e6\u30fc\u30b6\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -apt.opt.d=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u304a\u3088\u3073 javac \u304c\u751f\u6210\u3057\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -apt.opt.factory=\ - \u4f7f\u7528\u3059\u308b AnnotationProcessorFactory \u306e\u540d\u524d\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u691c\u51fa\u51e6\u7406\u3092\u30d0\u30a4\u30d1\u30b9 -apt.opt.factorypath=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u306e\u691c\u7d22\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b -apt.opt.s=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u751f\u6210\u3057\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -apt.opt.help=\ - \u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b\u3002\u8a73\u7d30\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f javac -help \u3092\u53c2\u7167 -apt.opt.print=\ - \u6307\u5b9a\u3057\u305f\u578b\u306e\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3092\u51fa\u529b\u3059\u308b -apt.opt.nocompile=\ - \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u306a\u3044 -apt.opt.proc.flag=\ - [key[=value]] -apt.opt.version=\ - \u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831 -apt.opt.XListAnnotationTypes=\ - \u898b\u3064\u304b\u3063\u305f\u6ce8\u91c8\u578b\u3092\u30ea\u30b9\u30c8\u3059\u308b -apt.opt.XListDeclarations=\ - \u6307\u5b9a\u3055\u308c\u305f\u5ba3\u8a00\u304a\u3088\u3073\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3055\u308c\u305f\u5ba3\u8a00\u3092\u30ea\u30b9\u30c8\u3059\u308b -apt.opt.XPrintAptRounds=\ - \u521d\u671f\u304a\u3088\u3073\u518d\u5e30 apt \u5f80\u5fa9\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b -apt.opt.XPrintFactoryInfo=\ - \u30d5\u30a1\u30af\u30c8\u30ea\u304c\u51e6\u7406\u3092\u4f9d\u983c\u3055\u308c\u308b\u6ce8\u91c8\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b -apt.opt.XClassesAsDecls=\ - \u30af\u30e9\u30b9\u3068\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u4e21\u65b9\u3068\u3082\u51e6\u7406\u3059\u308b\u5ba3\u8a00\u3068\u3057\u3066\u51e6\u7406 +apt.opt.A=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u6e21\u3055\u308c\u308b\u30aa\u30d7\u30b7\u30e7\u30f3 +apt.opt.arg.class= +apt.opt.arg.directory=\u30d7\u30ed\u30bb\u30c3\u30b5\u304a\u3088\u3073 javac \u304c\u751f\u6210\u3057\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +apt.opt.classpath=\u30e6\u30fc\u30b6\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +apt.opt.d=\u30d7\u30ed\u30bb\u30c3\u30b5\u304a\u3088\u3073 javac \u304c\u751f\u6210\u3057\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +apt.opt.factory=\u4f7f\u7528\u3059\u308b AnnotationProcessorFactory \u306e\u540d\u524d\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u691c\u51fa\u51e6\u7406\u3092\u30d0\u30a4\u30d1\u30b9 +apt.opt.factorypath=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u306e\u691c\u7d22\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b +apt.opt.s=\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u751f\u6210\u3057\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +apt.opt.help=\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b\u3002\u8a73\u7d30\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f javac -help \u3092\u53c2\u7167 +apt.opt.print=\u6307\u5b9a\u3057\u305f\u578b\u306e\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3092\u51fa\u529b\u3059\u308b +apt.opt.nocompile=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u306a\u3044 +apt.opt.proc.flag=[key[=value]] +apt.opt.version=\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831 +apt.opt.XListAnnotationTypes=\u898b\u3064\u304b\u3063\u305f\u6ce8\u91c8\u578b\u3092\u30ea\u30b9\u30c8\u3059\u308b +apt.opt.XListDeclarations=\u6307\u5b9a\u3055\u308c\u305f\u5ba3\u8a00\u304a\u3088\u3073\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3055\u308c\u305f\u5ba3\u8a00\u3092\u30ea\u30b9\u30c8\u3059\u308b +apt.opt.XPrintAptRounds=\u521d\u671f\u304a\u3088\u3073\u518d\u5e30 apt \u5f80\u5fa9\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b +apt.opt.XPrintFactoryInfo=\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u51e6\u7406\u3092\u4f9d\u983c\u3055\u308c\u308b\u6ce8\u91c8\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b +apt.opt.XClassesAsDecls=\u30af\u30e9\u30b9\u3068\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u4e21\u65b9\u3068\u3082\u51e6\u7406\u3059\u308b\u5ba3\u8a00\u3068\u3057\u3066\u51e6\u7406 ## ## errors @@ -85,92 +59,68 @@ apt.opt.XClassesAsDecls=\ ## All errors which do not refer to a particular line in the source code are ## preceded by this string. -apt.err.error=\ - \u30a8\u30e9\u30fc: +apt.err.error=\u30a8\u30e9\u30fc: -apt.err.unsupported.source.version=\ - \u30bd\u30fc\u30b9\u30ea\u30ea\u30fc\u30b9 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ea\u30ea\u30fc\u30b9 5 \u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 +apt.err.unsupported.source.version=\u30bd\u30fc\u30b9\u30ea\u30ea\u30fc\u30b9 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ea\u30ea\u30fc\u30b9 5 \u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 -apt.err.unsupported.target.version=\ - \u30bf\u30fc\u30b2\u30c3\u30c8\u30ea\u30ea\u30fc\u30b9 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ea\u30ea\u30fc\u30b9 5 \u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 +apt.err.unsupported.target.version=\u30bf\u30fc\u30b2\u30c3\u30c8\u30ea\u30ea\u30fc\u30b9 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ea\u30ea\u30fc\u30b9 5 \u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 -apt.err.BadDeclaration=\ - \u6ce8\u91c8\u578b {0} \u7528\u306b\u4f5c\u6210\u3055\u308c\u305f\u7121\u52b9\u306a\u5ba3\u8a00\u3067\u3059\u3002 +apt.err.BadDeclaration=\u6ce8\u91c8\u578b {0} \u7528\u306b\u4f5c\u6210\u3055\u308c\u305f\u7121\u52b9\u306a\u5ba3\u8a00\u3067\u3059\u3002 -apt.err.CantFindClass=\ - {0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +apt.err.CantFindClass={0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -apt.err.DeclarationCreation=\ - \u6ce8\u91c8\u578b {0} \u7528\u306b\u5ba3\u8a00\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +apt.err.DeclarationCreation=\u6ce8\u91c8\u578b {0} \u7528\u306b\u5ba3\u8a00\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 # Print an error from the Messager -apt.err.Messager=\ - {0} +apt.err.Messager={0} ## ## miscellaneous strings ## -apt.misc.Problem=\ - \u6ce8\u91c8\u306e\u51e6\u7406\u4e2d\u306b\u554f\u984c\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u4e0b\u8a18\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +apt.misc.Deprecation=\n\u8b66\u544a: apt \u30c4\u30fc\u30eb\u3068\u3053\u308c\u306b\u95a2\u9023\u3059\u308b API \u306f\u3001\u6b21\u306e JDK \u30e1\u30b8\u30e3\u30fc\u30ea\u30ea\u30fc\u30b9\u3067\n\u524a\u9664\u3055\u308c\u308b\u4e88\u5b9a\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u6a5f\u80fd\u306f\u3001\njavac \u304a\u3088\u3073\u6a19\u6e96\u5316\u6ce8\u91c8\u51e6\u7406 API \n(javax.annotation.processing \u3068 javax.lang.model) \u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u307e\u3057\u305f\u3002javac \u306e\n\u6ce8\u91c8\u51e6\u7406\u6a5f\u80fd\u3078\u306e\u79fb\u884c\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001\njavac \u306e\u30de\u30cb\u30e5\u30a2\u30eb\u30da\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n -apt.misc.SunMiscService=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u306e\u691c\u7d22\u30a8\u30e9\u30fc\u3067\u3059\u3002\nMETA-INF/services \u5185\u306e\u60c5\u5831\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +apt.misc.Problem=\u6ce8\u91c8\u306e\u51e6\u7406\u4e2d\u306b\u554f\u984c\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002\n\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u4e0b\u8a18\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 + +apt.misc.SunMiscService=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u306e\u691c\u7d22\u30a8\u30e9\u30fc\u3067\u3059\u3002\nMETA-INF/services \u5185\u306e\u60c5\u5831\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 # Print a notice from the Messager -apt.note.Messager=\ - {0} +apt.note.Messager={0} ## ## warnings ## ## All warning messages are preceded by the following string. -apt.warn.warning=\ - \u8b66\u544a: +apt.warn.warning=\u8b66\u544a: -apt.warn.AnnotationsWithoutProcessors=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u306a\u3057\u306e\u6ce8\u91c8\u578b\u3067\u3059: {0} +apt.warn.AnnotationsWithoutProcessors=\u30d7\u30ed\u30bb\u30c3\u30b5\u306a\u3057\u306e\u6ce8\u91c8\u578b\u3067\u3059: {0} -apt.warn.BadFactory=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u7121\u52b9\u3067\u3059: {0} +apt.warn.BadFactory=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u7121\u52b9\u3067\u3059: {0} -apt.warn.BadParentDirectory=\ - {0} \u306e\u3044\u304f\u3064\u304b\u306e\u89aa\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f +apt.warn.BadParentDirectory={0} \u306e\u3044\u304f\u3064\u304b\u306e\u89aa\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f -apt.warn.FactoryCantInstantiate=\ - \u30d5\u30a1\u30af\u30c8\u30ea ''{0}'' \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +apt.warn.FactoryCantInstantiate=\u30d5\u30a1\u30af\u30c8\u30ea ''{0}'' \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -apt.warn.FactoryWrongType=\ - \u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30af\u30c8\u30ea ''{0}'' \u306f AnnotationProcessorFactory \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +apt.warn.FactoryWrongType=\u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30af\u30c8\u30ea ''{0}'' \u306f AnnotationProcessorFactory \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -apt.warn.FactoryNotFound=\ - \u6307\u5b9a\u3057\u305f AnnotationProcessorFactory ''{0}'' \u306f\u691c\u7d22\u30d1\u30b9\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +apt.warn.FactoryNotFound=\u6307\u5b9a\u3057\u305f AnnotationProcessorFactory ''{0}'' \u306f\u691c\u7d22\u30d1\u30b9\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -apt.warn.FileReopening=\ - ''{0}'' \u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002 +apt.warn.FileReopening=''{0}'' \u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002 -apt.warn.IllegalFileName=\ - \u7121\u52b9\u306a\u540d\u524d ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +apt.warn.IllegalFileName=\u7121\u52b9\u306a\u540d\u524d ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -apt.warn.MalformedSupportedString=\ - \u30d5\u30a1\u30af\u30c8\u30ea\u304c\u8fd4\u3057\u305f\u6ce8\u91c8\u30b5\u30dd\u30fc\u30c8 ''{0}'' \u306e\u6587\u5b57\u5217\u304c\u4e0d\u6b63\u3067\u3059\u3002 +apt.warn.MalformedSupportedString=\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u8fd4\u3057\u305f\u6ce8\u91c8\u30b5\u30dd\u30fc\u30c8 ''{0}'' \u306e\u6587\u5b57\u5217\u304c\u4e0d\u6b63\u3067\u3059\u3002 -apt.warn.NoNewFilesAfterRound=\ - \u5f80\u5fa9\u306e\u7d42\u4e86\u5f8c\u306b\u30d5\u30a1\u30a4\u30eb ''{0}'' \u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +apt.warn.NoNewFilesAfterRound=\u5f80\u5fa9\u306e\u7d42\u4e86\u5f8c\u306b\u30d5\u30a1\u30a4\u30eb ''{0}'' \u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 # Print a warning from the Messager -apt.warn.Messager=\ - {0} +apt.warn.Messager={0} -apt.warn.NoAnnotationProcessors=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u3001\u6ce8\u91c8\u306f\u5b58\u5728\u3057\u307e\u3059\u3002 +apt.warn.NoAnnotationProcessors=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u3001\u6ce8\u91c8\u306f\u5b58\u5728\u3057\u307e\u3059\u3002 -apt.warn.NullProcessor=\ - \u30d5\u30a1\u30af\u30c8\u30ea {0} \u304c\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b null \u3092\u8fd4\u3057\u307e\u3057\u305f\u3002 +apt.warn.NullProcessor=\u30d5\u30a1\u30af\u30c8\u30ea {0} \u304c\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b null \u3092\u8fd4\u3057\u307e\u3057\u305f\u3002 -apt.warn.CorrespondingClassFile=\ - \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb ''{0}'' \u306b\u5bfe\u5fdc\u3059\u308b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +apt.warn.CorrespondingClassFile=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb ''{0}'' \u306b\u5bfe\u5fdc\u3059\u308b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -apt.warn.CorrespondingSourceFile=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb ''{0}'' \u306b\u5bfe\u5fdc\u3059\u308b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +apt.warn.CorrespondingSourceFile=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb ''{0}'' \u306b\u5bfe\u5fdc\u3059\u308b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002 diff --git a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties index 1443397b94d..ef0c7c439f5 100644 --- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties +++ b/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2004-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 @@ -23,60 +23,34 @@ # have any questions. # -apt.msg.usage.header=\ -\u7528\u6cd5\uff1a{0} <\u6e90\u6587\u4ef6>\n\ -\u5176\u4e2d\uff0capt \u9009\u9879\u5305\u62ec\uff1a +apt.msg.usage.header=\u7528\u6cd5\uff1a{0} <\u6e90\u6587\u4ef6>\n\u5176\u4e2d\uff0capt \u9009\u9879\u5305\u62ec\uff1a -apt.msg.usage.footer=\ -\u6709\u5173 javac \u9009\u9879\u7684\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1 javac -help\u3002 +apt.msg.usage.footer=\u6709\u5173 javac \u9009\u9879\u7684\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1 javac -help\u3002 -apt.msg.usage.nonstandard.footer=\ -\u8fd9\u4e9b\u9009\u9879\u53ca\u5176\u8f93\u51fa\u683c\u5f0f\u90fd\u4e0d\u662f\u6807\u51c6\u7684\uff0c\n\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002 +apt.msg.usage.nonstandard.footer=\u8fd9\u4e9b\u9009\u9879\u53ca\u5176\u8f93\u51fa\u683c\u5f0f\u90fd\u4e0d\u662f\u6807\u51c6\u7684\uff0c\n\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002 -apt.msg.bug=\ -apt ({0}) \u4e2d\u51fa\u73b0\u5f02\u5e38\u3002 \ -\u5982\u679c\u5728 Bug Parade \u4e2d\u6ca1\u6709\u627e\u5230\u8be5\u9519\u8bef\uff0c\u8bf7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \ -\u5bf9\u8be5\u9519\u8bef\u8fdb\u884c\u5f52\u6863\u3002 \ -\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u60a8\u7684\u7a0b\u5e8f\u548c\u4ee5\u4e0b\u8bca\u65ad\u4fe1\u606f\u3002\u8c22\u8c22\u60a8\u7684\u5408\u4f5c\u3002 +apt.msg.bug=apt ({0}) \u4e2d\u51fa\u73b0\u5f02\u5e38\u3002 \u5982\u679c\u5728 Bug Parade \u4e2d\u6ca1\u6709\u627e\u5230\u8be5\u9519\u8bef\uff0c\u8bf7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \u5bf9\u8be5\u9519\u8bef\u8fdb\u884c\u5f52\u6863\u3002 \u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u60a8\u7684\u7a0b\u5e8f\u548c\u4ee5\u4e0b\u8bca\u65ad\u4fe1\u606f\u3002\u8c22\u8c22\u60a8\u7684\u5408\u4f5c\u3002 ## apt options -apt.opt.A=\ -\u4f20\u9012\u7ed9\u6ce8\u91ca\u5904\u7406\u5668\u7684\u9009\u9879 -apt.opt.arg.class=\ -<\u7c7b> -apt.opt.arg.directory=\ -\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u548c javac \u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e -apt.opt.classpath=\ -\u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u548c\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u7684\u4f4d\u7f6e -apt.opt.d=\ -\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u548c javac \u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e -apt.opt.factory=\ -\u8981\u4f7f\u7528\u7684 AnnotationProcessorFactory \u7684\u540d\u79f0\uff1b\u7ed5\u8fc7\u9ed8\u8ba4\u7684\u641c\u7d22\u8fdb\u7a0b -apt.opt.factorypath=\ -\u6307\u5b9a\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u7684\u4f4d\u7f6e -apt.opt.s=\ -\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u751f\u6210\u7684\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e -apt.opt.help=\ -\u8f93\u51fa\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981\uff1b\u4f7f\u7528 javac -help \u53ef\u4ee5\u5f97\u5230\u66f4\u591a\u9009\u9879 -apt.opt.print=\ -\u8f93\u51fa\u6307\u5b9a\u7c7b\u578b\u7684\u6587\u672c\u8868\u793a -apt.opt.nocompile=\ -\u8bf7\u52ff\u5c06\u6e90\u6587\u4ef6\u7f16\u8bd1\u4e3a\u7c7b\u6587\u4ef6 -apt.opt.proc.flag=\ -[\u5173\u952e\u5b57[=\u503c]] -apt.opt.version=\ -\u7248\u672c\u4fe1\u606f -apt.opt.XListAnnotationTypes=\ -\u5217\u51fa\u627e\u5230\u7684\u6ce8\u91ca\u7c7b\u578b -apt.opt.XListDeclarations=\ -\u5217\u51fa\u6307\u5b9a\u548c\u5305\u542b\u7684\u58f0\u660e -apt.opt.XPrintAptRounds=\ -\u8f93\u51fa\u6709\u5173\u521d\u59cb\u548c\u9012\u5f52 apt \u5faa\u73af\u7684\u4fe1\u606f -apt.opt.XPrintFactoryInfo=\ -\u8f93\u51fa\u6709\u5173\u8bf7\u6c42\u5de5\u5382\u5904\u7406\u54ea\u4e9b\u6ce8\u91ca\u7684\u4fe1\u606f -apt.opt.XClassesAsDecls=\ -\u5c06\u7c7b\u6587\u4ef6\u548c\u6e90\u6587\u4ef6\u90fd\u89c6\u4e3a\u8981\u5904\u7406\u7684\u58f0\u660e +apt.opt.A=\u4f20\u9012\u7ed9\u6ce8\u91ca\u5904\u7406\u5668\u7684\u9009\u9879 +apt.opt.arg.class=<\u7c7b> +apt.opt.arg.directory=\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u548c javac \u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e +apt.opt.classpath=\u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u548c\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u7684\u4f4d\u7f6e +apt.opt.d=\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u548c javac \u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e +apt.opt.factory=\u8981\u4f7f\u7528\u7684 AnnotationProcessorFactory \u7684\u540d\u79f0\uff1b\u7ed5\u8fc7\u9ed8\u8ba4\u7684\u641c\u7d22\u8fdb\u7a0b +apt.opt.factorypath=\u6307\u5b9a\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u7684\u4f4d\u7f6e +apt.opt.s=\u6307\u5b9a\u5b58\u653e\u5904\u7406\u5668\u751f\u6210\u7684\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e +apt.opt.help=\u8f93\u51fa\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981\uff1b\u4f7f\u7528 javac -help \u53ef\u4ee5\u5f97\u5230\u66f4\u591a\u9009\u9879 +apt.opt.print=\u8f93\u51fa\u6307\u5b9a\u7c7b\u578b\u7684\u6587\u672c\u8868\u793a +apt.opt.nocompile=\u8bf7\u52ff\u5c06\u6e90\u6587\u4ef6\u7f16\u8bd1\u4e3a\u7c7b\u6587\u4ef6 +apt.opt.proc.flag=[\u5173\u952e\u5b57[=\u503c]] +apt.opt.version=\u7248\u672c\u4fe1\u606f +apt.opt.XListAnnotationTypes=\u5217\u51fa\u627e\u5230\u7684\u6ce8\u91ca\u7c7b\u578b +apt.opt.XListDeclarations=\u5217\u51fa\u6307\u5b9a\u548c\u5305\u542b\u7684\u58f0\u660e +apt.opt.XPrintAptRounds=\u8f93\u51fa\u6709\u5173\u521d\u59cb\u548c\u9012\u5f52 apt \u5faa\u73af\u7684\u4fe1\u606f +apt.opt.XPrintFactoryInfo=\u8f93\u51fa\u6709\u5173\u8bf7\u6c42\u5de5\u5382\u5904\u7406\u54ea\u4e9b\u6ce8\u91ca\u7684\u4fe1\u606f +apt.opt.XClassesAsDecls=\u5c06\u7c7b\u6587\u4ef6\u548c\u6e90\u6587\u4ef6\u90fd\u89c6\u4e3a\u8981\u5904\u7406\u7684\u58f0\u660e ## ## errors @@ -85,92 +59,68 @@ apt.opt.XClassesAsDecls=\ ## All errors which do not refer to a particular line in the source code are ## preceded by this string. -apt.err.error=\ -\u9519\u8bef\uff1a +apt.err.error=\u9519\u8bef\uff1a -apt.err.unsupported.source.version=\ - \u4e0d\u652f\u6301\u6e90\u7248\u672c {0}\uff1b\u8bf7\u4f7f\u7528\u7248\u672c 5 \u6216\u65e9\u671f\u7248\u672c +apt.err.unsupported.source.version=\u4e0d\u652f\u6301\u6e90\u7248\u672c {0}\uff1b\u8bf7\u4f7f\u7528\u7248\u672c 5 \u6216\u65e9\u671f\u7248\u672c -apt.err.unsupported.target.version=\ - \u4e0d\u652f\u6301\u76ee\u6807\u7248\u672c {0}\uff1b\u8bf7\u4f7f\u7528\u7248\u672c 5 \u6216\u65e9\u671f\u7248\u672c +apt.err.unsupported.target.version=\u4e0d\u652f\u6301\u76ee\u6807\u7248\u672c {0}\uff1b\u8bf7\u4f7f\u7528\u7248\u672c 5 \u6216\u65e9\u671f\u7248\u672c -apt.err.BadDeclaration=\ -\u4e3a\u6ce8\u91ca\u7c7b\u578b {0} \u521b\u5efa\u7684\u58f0\u660e\u51fa\u73b0\u9519\u8bef +apt.err.BadDeclaration=\u4e3a\u6ce8\u91ca\u7c7b\u578b {0} \u521b\u5efa\u7684\u58f0\u660e\u51fa\u73b0\u9519\u8bef -apt.err.CantFindClass=\ -\u627e\u4e0d\u5230 {0} \u7684\u7c7b\u6587\u4ef6 +apt.err.CantFindClass=\u627e\u4e0d\u5230 {0} \u7684\u7c7b\u6587\u4ef6 -apt.err.DeclarationCreation=\ -\u65e0\u6cd5\u4e3a\u6ce8\u91ca\u7c7b\u578b {0} \u521b\u5efa\u58f0\u660e +apt.err.DeclarationCreation=\u65e0\u6cd5\u4e3a\u6ce8\u91ca\u7c7b\u578b {0} \u521b\u5efa\u58f0\u660e # Print an error from the Messager -apt.err.Messager=\ - {0} +apt.err.Messager={0} ## ## miscellaneous strings ## -apt.misc.Problem=\ -\u6ce8\u91ca\u5904\u7406\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\uff1b\n\u6709\u5173\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1\u4e0b\u9762\u7684\u5806\u6808\u8ffd\u8e2a\u3002 +apt.misc.Deprecation=\n\u8b66\u544a\uff1a\u5728\u4e0b\u4e00\u4e2a JDK \u4e3b\u8981\u7248\u672c\u4e2d\uff0c\napt \u5de5\u5177\u53ca\u5176\u5173\u8054\u7684 API \u5c06\u88ab\u5220\u9664\u3002\u5176\u4e2d\u7684\u529f\u80fd\u5df2\u88ab javac \u4ee5\u53ca\n\u6807\u51c6\u5316\u6ce8\u91ca\u5904\u7406 API \njavax.annotation.processing \u548c javax.lang.model \u53d6\u4ee3\u3002\u5efa\u8bae\u7528\u6237\n\u6539\u7528 javac \u7684\u6ce8\u91ca\u5904\u7406\u529f\u80fd\uff1b\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1 javac \u624b\u518c\u9875\u3002\n -apt.misc.SunMiscService=\ -\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u65f6\u51fa\u9519\uff1b\n\u8bf7\u67e5\u770b META-INF/\u670d\u52a1\u4fe1\u606f\u3002 +apt.misc.Problem=\u6ce8\u91ca\u5904\u7406\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\uff1b\n\u6709\u5173\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1\u4e0b\u9762\u7684\u5806\u6808\u8ffd\u8e2a\u3002 + +apt.misc.SunMiscService=\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u65f6\u51fa\u9519\uff1b\n\u8bf7\u67e5\u770b META-INF/\u670d\u52a1\u4fe1\u606f\u3002 # Print a notice from the Messager -apt.note.Messager=\ - {0} +apt.note.Messager={0} ## ## warnings ## ## All warning messages are preceded by the following string. -apt.warn.warning=\ -\u8b66\u544a\uff1a +apt.warn.warning=\u8b66\u544a\uff1a -apt.warn.AnnotationsWithoutProcessors=\ -\u4e0d\u5e26\u5904\u7406\u5668\u7684\u6ce8\u91ca\u7c7b\u578b\uff1a {0} +apt.warn.AnnotationsWithoutProcessors=\u4e0d\u5e26\u5904\u7406\u5668\u7684\u6ce8\u91ca\u7c7b\u578b\uff1a {0} -apt.warn.BadFactory=\ -\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u51fa\u73b0\u9519\u8bef\uff1a {0} +apt.warn.BadFactory=\u6ce8\u91ca\u5904\u7406\u5668\u5de5\u5382\u51fa\u73b0\u9519\u8bef\uff1a {0} -apt.warn.BadParentDirectory=\ -\u65e0\u6cd5\u521b\u5efa {0} \u7684\u67d0\u4e9b\u7236\u76ee\u5f55 +apt.warn.BadParentDirectory=\u65e0\u6cd5\u521b\u5efa {0} \u7684\u67d0\u4e9b\u7236\u76ee\u5f55 -apt.warn.FactoryCantInstantiate=\ -\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5de5\u5382 "{0}" \u7684\u5b9e\u4f8b\u3002 +apt.warn.FactoryCantInstantiate=\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5de5\u5382 "{0}" \u7684\u5b9e\u4f8b\u3002 -apt.warn.FactoryWrongType=\ -\u6307\u5b9a\u7684\u5de5\u5382 "{0}" \u4e0d\u662f AnnotationProcessorFactory\u3002 +apt.warn.FactoryWrongType=\u6307\u5b9a\u7684\u5de5\u5382 "{0}" \u4e0d\u662f AnnotationProcessorFactory\u3002 -apt.warn.FactoryNotFound=\ -\u5728\u641c\u7d22\u8def\u5f84\u4e2d\u627e\u4e0d\u5230\u6307\u5b9a\u7684 AnnotationProcessorFactory "{0}"\u3002 +apt.warn.FactoryNotFound=\u5728\u641c\u7d22\u8def\u5f84\u4e2d\u627e\u4e0d\u5230\u6307\u5b9a\u7684 AnnotationProcessorFactory "{0}"\u3002 -apt.warn.FileReopening=\ -\u5c1d\u8bd5\u591a\u6b21\u521b\u5efa "{0}" +apt.warn.FileReopening=\u5c1d\u8bd5\u591a\u6b21\u521b\u5efa "{0}" -apt.warn.IllegalFileName=\ -\u65e0\u6cd5\u521b\u5efa\u5e26\u6709\u975e\u6cd5\u540d\u79f0 "{0}" \u7684\u6587\u4ef6\u3002 +apt.warn.IllegalFileName=\u65e0\u6cd5\u521b\u5efa\u5e26\u6709\u975e\u6cd5\u540d\u79f0 "{0}" \u7684\u6587\u4ef6\u3002 -apt.warn.MalformedSupportedString=\ -\u5de5\u5382\u8fd4\u56de\u4e0d\u89c4\u5219\u7684\u6ce8\u91ca\u652f\u6301\u5b57\u7b26\u4e32 "{0}"\u3002 +apt.warn.MalformedSupportedString=\u5de5\u5382\u8fd4\u56de\u4e0d\u89c4\u5219\u7684\u6ce8\u91ca\u652f\u6301\u5b57\u7b26\u4e32 "{0}"\u3002 -apt.warn.NoNewFilesAfterRound=\ -\u5faa\u73af\u7ed3\u675f\u540e\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6 "{0}"\u3002 +apt.warn.NoNewFilesAfterRound=\u5faa\u73af\u7ed3\u675f\u540e\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6 "{0}"\u3002 # Print a warning from the Messager -apt.warn.Messager=\ - {0} +apt.warn.Messager={0} -apt.warn.NoAnnotationProcessors=\ -\u672a\u627e\u5230\u6ce8\u91ca\u5904\u7406\u5668\uff0c\u4f46\u5b58\u5728\u6ce8\u91ca\u3002 +apt.warn.NoAnnotationProcessors=\u672a\u627e\u5230\u6ce8\u91ca\u5904\u7406\u5668\uff0c\u4f46\u5b58\u5728\u6ce8\u91ca\u3002 -apt.warn.NullProcessor=\ -\u5bf9\u4e8e\u67d0\u4e2a\u6ce8\u91ca\u5904\u7406\u5668\uff0c\u5de5\u5382 {0} \u8fd4\u56de\u7684\u503c\u4e3a null\u3002 +apt.warn.NullProcessor=\u5bf9\u4e8e\u67d0\u4e2a\u6ce8\u91ca\u5904\u7406\u5668\uff0c\u5de5\u5382 {0} \u8fd4\u56de\u7684\u503c\u4e3a null\u3002 -apt.warn.CorrespondingClassFile=\ -\u5df2\u521b\u5efa\u4e0e\u6e90\u6587\u4ef6 "{0}" \u76f8\u5bf9\u5e94\u7684\u7c7b\u6587\u4ef6\u3002 +apt.warn.CorrespondingClassFile=\u5df2\u521b\u5efa\u4e0e\u6e90\u6587\u4ef6 "{0}" \u76f8\u5bf9\u5e94\u7684\u7c7b\u6587\u4ef6\u3002 -apt.warn.CorrespondingSourceFile=\ -\u5df2\u521b\u5efa\u4e0e\u7c7b\u6587\u4ef6 "{0}" \u76f8\u5bf9\u5e94\u7684\u6e90\u6587\u4ef6\u3002 +apt.warn.CorrespondingSourceFile=\u5df2\u521b\u5efa\u4e0e\u7c7b\u6587\u4ef6 "{0}" \u76f8\u5bf9\u5e94\u7684\u6e90\u6587\u4ef6\u3002 diff --git a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties index 9489cc201fb..393175875c4 100644 --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties @@ -83,6 +83,17 @@ doclet.Deprecated_Constructors=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\ doclet.Deprecated_Methods=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30e1\u30bd\u30c3\u30c9 doclet.Deprecated_Enum_Constants=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u5217\u6319\u578b\u5b9a\u6570 doclet.Deprecated_Annotation_Type_Members=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u6ce8\u91c8\u578b\u306e\u8981\u7d20 +doclet.deprecated_classes=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30af\u30e9\u30b9 +doclet.deprecated_enums=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u5217\u6319\u578b +doclet.deprecated_interfaces=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +doclet.deprecated_exceptions=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u4f8b\u5916 +doclet.deprecated_annotation_types=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u6ce8\u91c8\u578b +doclet.deprecated_errors=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30e9\u30fc +doclet.deprecated_fields=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9 +doclet.deprecated_constructors=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf +doclet.deprecated_methods=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u30e1\u30bd\u30c3\u30c9 +doclet.deprecated_enum_constants=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u5217\u6319\u578b\u5b9a\u6570 +doclet.deprecated_annotation_type_members=\u63a8\u5968\u3055\u308c\u3066\u3044\u306a\u3044\u6ce8\u91c8\u578b\u306e\u8981\u7d20 doclet.Frame_Output=\u30d5\u30ec\u30fc\u30e0\u51fa\u529b doclet.Docs_generated_by_Javadoc=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f javadoc \u3067\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002 doclet.Generated_Docs_Untitled=\u751f\u6210\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 (\u30bf\u30a4\u30c8\u30eb\u306a\u3057) @@ -158,7 +169,7 @@ doclet.Help_enum_line_3=\u5217\u6319\u578b\u306e\u8aac\u660e doclet.Help_annotation_type_line_1=\u5404\u6ce8\u91c8\u578b\u306b\u306f\u3001\u305d\u308c\u81ea\u8eab\u306e\u500b\u5225\u306e\u30da\u30fc\u30b8\u3068\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059: doclet.Help_annotation_type_line_2=\u6ce8\u91c8\u578b\u306e\u5ba3\u8a00 doclet.Help_annotation_type_line_3=\u6ce8\u91c8\u578b\u306e\u8aac\u660e -doclet.The= +doclet.The=The doclet.Style_line_1=javadoc \u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8 doclet.Style_line_2=\u8272\u3084\u30d5\u30a9\u30f3\u30c8\u306a\u3069\u306e\u30b9\u30bf\u30a4\u30eb\u5c5e\u6027\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u4e0a\u66f8\u304d\u3059\u308b\u306b\u306f\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002 doclet.Style_line_3=\u30da\u30fc\u30b8\u306e\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u306e\u8272 @@ -171,6 +182,7 @@ doclet.Style_line_8=\u5de6\u5074\u306e\u30d5\u30ec\u30fc\u30e0\u306e\u30ea\u30b9 doclet.Style_line_9=\u30d5\u30ec\u30fc\u30e0\u306b\u304a\u3051\u308b\u3001\u3088\u308a\u5c0f\u3055\u3044\u3001\u30bb\u30ea\u30d5\u306a\u3057\u30d5\u30a9\u30f3\u30c8\u306e\u4f8b doclet.Style_line_10=\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u306e\u30d5\u30a9\u30f3\u30c8\u3068\u8272 doclet.Style_line_11=\u6fc3\u3044\u9752 +doclet.Style_line_12=\u8868\u898b\u51fa\u3057\u306e\u30b9\u30bf\u30a4\u30eb doclet.ClassUse_Packages.that.use.0={0} \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30d1\u30c3\u30b1\u30fc\u30b8 doclet.ClassUse_Uses.of.0.in.1={1} \u3067\u306e {0} \u306e\u4f7f\u7528 doclet.ClassUse_Classes.in.0.used.by.1={1} \u306b\u3088\u308a\u4f7f\u7528\u3055\u308c\u308b {0} \u306e\u30af\u30e9\u30b9 @@ -206,44 +218,7 @@ doclet.Groupname_already_used=-group \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u304a\ doclet.Same_package_name_used=\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u5f62\u5f0f\u304c 2 \u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059: {0} doclet.Serialization.Excluded_Class=\u5e38\u99d0\u30d5\u30a3\u30fc\u30eb\u30c9 {1} \u306f\u3001\u9664\u5916\u3055\u308c\u305f\u30af\u30e9\u30b9 {0} \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 doclet.Serialization.Nonexcluded_Class=\u5e38\u99d0\u30d5\u30a3\u30fc\u30eb\u30c9 {1} \u306f\u3001\u975e\u8868\u793a\u306e\u3001\u542b\u307e\u308c\u306a\u3044\u30af\u30e9\u30b9 {0} \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 -doclet.usage=\u6a19\u6e96\u306e doclet \u306b\u3088\u308a\u63d0\u4f9b\u3055\u308c\u308b\u3082\u306e:\n\ - -d \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u8ee2\u9001\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n\ - -use \u30af\u30e9\u30b9\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f7f\u7528\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\n\ - -version @version \u30d1\u30e9\u30b0\u30e9\u30d5\u3092\u542b\u3081\u308b\n\ - -author @author \u30d1\u30e9\u30b0\u30e9\u30d5\u3092\u542b\u3081\u308b\n\ - -docfilessubdirs doc-file \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u518d\u5e30\u7684\u306b\u30b3\u30d4\u30fc\u3059\u308b\n\ - -splitindex 1 \u5b57\u3054\u3068\u306b 1 \u30d5\u30a1\u30a4\u30eb\u306b\u7d22\u5f15\u3092\u5206\u5272\u3059\u308b\n\ - -windowtitle \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7528\u306e\u30d6\u30e9\u30a6\u30b6\u30a6\u30a3\u30f3\u30c9\u30a6\u30bf\u30a4\u30c8\u30eb\n\ - -doctitle \u6982\u8981\u30da\u30fc\u30b8\u306b\u30bf\u30a4\u30c8\u30eb\u3092\u542b\u3081\u308b\n\ - -header \u5404\u30da\u30fc\u30b8\u306b\u30d8\u30c3\u30c0\u30fc\u3092\u542b\u3081\u308b\n\ - -footer \u5404\u30da\u30fc\u30b8\u306b\u30d5\u30c3\u30bf\u30fc\u3092\u542b\u3081\u308b\n\ - -top \u5404\u30da\u30fc\u30b8\u306b\u4e0a\u90e8\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3081\u308b\n\ - -bottom \u5404\u30da\u30fc\u30b8\u306b\u4e0b\u90e8\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3081\u308b\n\ - -link \u306b javadoc \u51fa\u529b\u3078\u306e\u30ea\u30f3\u30af\u3092\u4f5c\u6210\u3059\u308b\n\ - -linkoffline \u306b\u3042\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066 \u306e docs \u306b\u30ea\u30f3\u30af\u3059\u308b\n\ - -excludedocfilessubdir :.. \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e doc-files \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u3059\u3079\u3066\u9664\u5916\u3059\u308b\n\ - -group :.. \u6307\u5b9a\u3059\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u6982\u8981\u30da\u30fc\u30b8\u306b\u304a\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\n\ - -nocomment \u8a18\u8ff0\u304a\u3088\u3073\u30bf\u30b0\u3092\u6291\u5236\u3057\u3066\u5ba3\u8a00\u3060\u3051\u3092\u751f\u6210\u3059\u308b\n\ - -nodeprecated @deprecated \u60c5\u5831\u3092\u9664\u5916\u3059\u308b\n\ - -noqualifier ::... \u51fa\u529b\u304b\u3089\u4fee\u98fe\u5b50\u306e\u30ea\u30b9\u30c8\u3092\u9664\u5916\u3059\u308b\n\ - -nosince @since \u60c5\u5831\u3092\u9664\u5916\u3059\u308b\n\ - -notimestamp \u975e\u8868\u793a\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u9664\u5916\u3059\u308b\n\ - -nodeprecatedlist \u975e\u63a8\u5968 \u306e\u30ea\u30b9\u30c8\u3092\u751f\u6210\u3057\u306a\u3044\n\ - -notree \u30af\u30e9\u30b9\u968e\u5c64\u3092\u751f\u6210\u3057\u306a\u3044\n\ - -noindex \u7d22\u5f15\u3092\u751f\u6210\u3057\u306a\u3044\n\ - -nohelp \u30d8\u30eb\u30d7\u30ea\u30f3\u30af\u3092\u751f\u6210\u3057\u306a\u3044\n\ - -nonavbar \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u751f\u6210\u3057\u306a\u3044\n\ - -serialwarn @serial \u30bf\u30b0\u306b\u95a2\u3059\u308b\u8b66\u544a\u3092\u751f\u6210\u3059\u308b\n\ - -tag ::
\u5358\u4e00\u306e\u5f15\u6570\u3092\u6301\u3064\u30ab\u30b9\u30bf\u30e0\u30bf\u30b0\u3092\u6307\u5b9a\u3059\u308b\n\ - -taglet \u30bf\u30b0\u30ec\u30c3\u30c8\u306e\u5b8c\u5168\u4fee\u98fe\u540d\u3092\u767b\u9332\u3059\u308b\n\ - -tagletpath \u30bf\u30b0\u30ec\u30c3\u30c8\u306e\u30d1\u30b9\n\ - -charset \u751f\u6210\u3055\u308c\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\n\ - -helpfile \u30d8\u30eb\u30d7\u30ea\u30f3\u30af\u306e\u30ea\u30f3\u30af\u5148\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3081\u308b\n\ - -linksource HTML \u5f62\u5f0f\u3067\u30bd\u30fc\u30b9\u3092\u751f\u6210\u3059\u308b\n\ - -sourcetab \u30bd\u30fc\u30b9\u5185\u306e\u30bf\u30d6\u306e\u7a7a\u767d\u6587\u5b57\u306e\u6570\u3092\u6307\u5b9a\u3059\u308b\n\ - -keywords HTML \u306e meta \u30bf\u30b0\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u3001\u30af\u30e9\u30b9\u3001\u304a\u3088\u3073\u30e1\u30f3\u30d0\u30fc\u306e\u60c5\u5831\u3092\u542b\u3081\u308b\n\ - -stylesheetfile \u751f\u6210\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30b9\u30bf\u30a4\u30eb\u5909\u66f4\u7528\u30d5\u30a1\u30a4\u30eb\n\ - -docencoding \u51fa\u529b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u540d +doclet.usage=\u6a19\u6e96\u306e doclet \u306b\u3088\u308a\u63d0\u4f9b\u3055\u308c\u308b\u3082\u306e:\n-d \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u8ee2\u9001\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n-use \u30af\u30e9\u30b9\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f7f\u7528\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\n-version @version \u30d1\u30e9\u30b0\u30e9\u30d5\u3092\u542b\u3081\u308b\n-author @author \u30d1\u30e9\u30b0\u30e9\u30d5\u3092\u542b\u3081\u308b\n-docfilessubdirs doc-file \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u518d\u5e30\u7684\u306b\u30b3\u30d4\u30fc\u3059\u308b\n-splitindex 1 \u5b57\u3054\u3068\u306b 1 \u30d5\u30a1\u30a4\u30eb\u306b\u7d22\u5f15\u3092\u5206\u5272\u3059\u308b\n-windowtitle \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7528\u306e\u30d6\u30e9\u30a6\u30b6\u30a6\u30a3\u30f3\u30c9\u30a6\u30bf\u30a4\u30c8\u30eb\n-doctitle \u6982\u8981\u30da\u30fc\u30b8\u306b\u30bf\u30a4\u30c8\u30eb\u3092\u542b\u3081\u308b\n-header \u5404\u30da\u30fc\u30b8\u306b\u30d8\u30c3\u30c0\u30fc\u3092\u542b\u3081\u308b\n-footer \u5404\u30da\u30fc\u30b8\u306b\u30d5\u30c3\u30bf\u30fc\u3092\u542b\u3081\u308b\n-top \u5404\u30da\u30fc\u30b8\u306b\u4e0a\u90e8\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3081\u308b\n-bottom \u5404\u30da\u30fc\u30b8\u306b\u4e0b\u90e8\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3081\u308b\n-link \u306b javadoc \u51fa\u529b\u3078\u306e\u30ea\u30f3\u30af\u3092\u4f5c\u6210\u3059\u308b\n-linkoffline \u306b\u3042\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066 \u306e docs \u306b\u30ea\u30f3\u30af\u3059\u308b\n-excludedocfilessubdir :.. \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e doc-files \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u3059\u3079\u3066\u9664\u5916\u3059\u308b\n-group :.. \u6307\u5b9a\u3059\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u6982\u8981\u30da\u30fc\u30b8\u306b\u304a\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\n-nocomment \u8a18\u8ff0\u304a\u3088\u3073\u30bf\u30b0\u3092\u6291\u5236\u3057\u3066\u5ba3\u8a00\u3060\u3051\u3092\u751f\u6210\u3059\u308b\n-nodeprecated @deprecated \u60c5\u5831\u3092\u9664\u5916\u3059\u308b\n-noqualifier ::... \u51fa\u529b\u304b\u3089\u4fee\u98fe\u5b50\u306e\u30ea\u30b9\u30c8\u3092\u9664\u5916\u3059\u308b\n-nosince @since \u60c5\u5831\u3092\u9664\u5916\u3059\u308b\n-notimestamp \u975e\u8868\u793a\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u9664\u5916\u3059\u308b\n-nodeprecatedlist \u975e\u63a8\u5968 \u306e\u30ea\u30b9\u30c8\u3092\u751f\u6210\u3057\u306a\u3044\n-notree \u30af\u30e9\u30b9\u968e\u5c64\u3092\u751f\u6210\u3057\u306a\u3044\n-noindex \u7d22\u5f15\u3092\u751f\u6210\u3057\u306a\u3044\n-nohelp \u30d8\u30eb\u30d7\u30ea\u30f3\u30af\u3092\u751f\u6210\u3057\u306a\u3044\n-nonavbar \u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u751f\u6210\u3057\u306a\u3044\n-serialwarn @serial \u30bf\u30b0\u306b\u95a2\u3059\u308b\u8b66\u544a\u3092\u751f\u6210\u3059\u308b\n-tag ::
\u5358\u4e00\u306e\u5f15\u6570\u3092\u6301\u3064\u30ab\u30b9\u30bf\u30e0\u30bf\u30b0\u3092\u6307\u5b9a\u3059\u308b\n-taglet \u30bf\u30b0\u30ec\u30c3\u30c8\u306e\u5b8c\u5168\u4fee\u98fe\u540d\u3092\u767b\u9332\u3059\u308b\n-tagletpath \u30bf\u30b0\u30ec\u30c3\u30c8\u306e\u30d1\u30b9\n-charset \u751f\u6210\u3055\u308c\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\n-helpfile \u30d8\u30eb\u30d7\u30ea\u30f3\u30af\u306e\u30ea\u30f3\u30af\u5148\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3081\u308b\n-linksource HTML \u5f62\u5f0f\u3067\u30bd\u30fc\u30b9\u3092\u751f\u6210\u3059\u308b\n-sourcetab \u30bd\u30fc\u30b9\u5185\u306e\u30bf\u30d6\u306e\u7a7a\u767d\u6587\u5b57\u306e\u6570\u3092\u6307\u5b9a\u3059\u308b\n-keywords HTML \u306e meta \u30bf\u30b0\u306b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u3001\u30af\u30e9\u30b9\u3001\u304a\u3088\u3073\u30e1\u30f3\u30d0\u30fc\u306e\u60c5\u5831\u3092\u542b\u3081\u308b\n-stylesheetfile \u751f\u6210\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30b9\u30bf\u30a4\u30eb\u5909\u66f4\u7528\u30d5\u30a1\u30a4\u30eb\n-docencoding \u51fa\u529b\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u540d diff --git a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties index 31d1cccf0f9..667fa978061 100644 --- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties +++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties @@ -83,6 +83,17 @@ doclet.Deprecated_Constructors=\u5df2\u8fc7\u65f6\u7684\u6784\u9020\u65b9\u6cd5 doclet.Deprecated_Methods=\u5df2\u8fc7\u65f6\u7684\u65b9\u6cd5 doclet.Deprecated_Enum_Constants=\u5df2\u8fc7\u65f6\u7684\u679a\u4e3e\u5e38\u91cf doclet.Deprecated_Annotation_Type_Members=\u5df2\u8fc7\u65f6\u7684\u6ce8\u91ca\u7c7b\u578b\u5143\u7d20 +doclet.deprecated_classes=\u5df2\u8fc7\u65f6\u7684\u7c7b +doclet.deprecated_enums=\u5df2\u8fc7\u65f6\u7684\u679a\u4e3e +doclet.deprecated_interfaces=\u5df2\u8fc7\u65f6\u7684\u63a5\u53e3 +doclet.deprecated_exceptions=\u5df2\u8fc7\u65f6\u7684\u5f02\u5e38 +doclet.deprecated_annotation_types=\u5df2\u8fc7\u65f6\u7684\u6ce8\u91ca\u7c7b\u578b +doclet.deprecated_errors=\u5df2\u8fc7\u65f6\u7684\u9519\u8bef +doclet.deprecated_fields=\u5df2\u8fc7\u65f6\u7684\u5b57\u6bb5 +doclet.deprecated_constructors=\u5df2\u8fc7\u65f6\u7684\u6784\u9020\u51fd\u6570 +doclet.deprecated_methods=\u5df2\u8fc7\u65f6\u7684\u65b9\u6cd5 +doclet.deprecated_enum_constants=\u5df2\u8fc7\u65f6\u7684\u679a\u4e3e\u5e38\u91cf +doclet.deprecated_annotation_type_members=\u5df2\u8fc7\u65f6\u7684\u6ce8\u91ca\u7c7b\u578b\u5143\u7d20 doclet.Frame_Output=\u6846\u67b6\u8f93\u51fa doclet.Docs_generated_by_Javadoc=\u7531 Javadoc \u751f\u6210\u7684\u6587\u6863\u3002 doclet.Generated_Docs_Untitled=\u751f\u6210\u7684\u6587\u6863\uff08\u65e0\u6807\u9898\uff09 @@ -171,6 +182,7 @@ doclet.Style_line_8=\u5de6\u4fa7\u7684\u6846\u67b6\u5217\u8868\u4e2d\u4f7f\u7528 doclet.Style_line_9=\u6846\u67b6\u4e2d\u5c0f\u53f7 sans-serif \u5b57\u4f53\u7684\u793a\u4f8b doclet.Style_line_10=\u5bfc\u822a\u680f\u5b57\u4f53\u548c\u989c\u8272 doclet.Style_line_11=\u6df1\u84dd\u8272 +doclet.Style_line_12=\u8868\u683c\u6807\u9898\u6837\u5f0f doclet.ClassUse_Packages.that.use.0=\u4f7f\u7528 {0} \u7684\u8f6f\u4ef6\u5305 doclet.ClassUse_Uses.of.0.in.1={1} \u4e2d {0} \u7684\u4f7f\u7528 doclet.ClassUse_Classes.in.0.used.by.1={1} \u4f7f\u7528\u7684 {0} \u4e2d\u7684\u7c7b @@ -206,44 +218,7 @@ doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4e2d\uff0cgroupname \u doclet.Same_package_name_used=\u8f6f\u4ef6\u5305\u540d\u79f0\u5f62\u5f0f\u4f7f\u7528\u4e86\u4e24\u6b21\uff1a {0} doclet.Serialization.Excluded_Class=\u975e\u77ac\u6001\u5b57\u6bb5 {1} \u4f7f\u7528\u4e86\u6392\u9664\u7684\u7c7b {0}\u3002 doclet.Serialization.Nonexcluded_Class=\u975e\u77ac\u6001\u5b57\u6bb5 {1} \u4f7f\u7528\u4e86\u9690\u85cf\u7684\u3001\u672a\u5305\u542b\u7684\u7c7b {0}\u3002 -doclet.usage=\u901a\u8fc7\u6807\u51c6 doclet \u63d0\u4f9b:\n\ --d \u8f93\u51fa\u6587\u4ef6\u7684\u76ee\u6807\u76ee\u5f55\n\ --use \u521b\u5efa\u7c7b\u548c\u5305\u7528\u6cd5\u9875\u9762\n\ --version \u5305\u542b @version \u6bb5\n\ --author \u5305\u542b @author \u6bb5\n\ --docfilessubdirs \u9012\u5f52\u590d\u5236\u6587\u6863\u6587\u4ef6\u5b50\u76ee\u5f55\n\ --splitindex \u5c06\u7d22\u5f15\u5206\u4e3a\u6bcf\u4e2a\u5b57\u6bcd\u5bf9\u5e94\u4e00\u4e2a\u6587\u4ef6\n\ --windowtitle \u6587\u6863\u7684\u6d4f\u89c8\u5668\u7a97\u53e3\u6807\u9898\n\ --doctitle \u5305\u542b\u6982\u8ff0\u9875\u9762\u7684\u6807\u9898\n\ --header \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9875\u7709\u6587\u672c\n\ --footer \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9875\u811a\u6587\u672c\n\ --top \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9876\u90e8\u6587\u672c\n\ --bottom \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u5e95\u90e8\u6587\u672c\n\ --link \u521b\u5efa\u6307\u5411\u4f4d\u4e8e \u7684 javadoc \u8f93\u51fa\u7684\u94fe\u63a5\n\ --linkoffline \u5229\u7528\u4f4d\u4e8e \u7684\u5305\u5217\u8868\u94fe\u63a5\u81f3\u4f4d\u4e8e \u7684\u6587\u6863\n\ --excludedocfilessubdir :..\u6392\u9664\u5177\u6709\u7ed9\u5b9a\u540d\u79f0\u7684\u6240\u6709\u6587\u6863\u6587\u4ef6\u5b50\u76ee\u5f55\u3002\n\ --group :..\u5728\u6982\u8ff0\u9875\u9762\u4e2d\uff0c\u5c06\u6307\u5b9a\u7684\u5305\u5206\u7ec4\n\ --nocomment \u4e0d\u751f\u6210\u63cf\u8ff0\u548c\u6807\u8bb0\uff0c\u53ea\u751f\u6210\u58f0\u660e\u3002\n\ --nodeprecated \u4e0d\u5305\u542b @deprecated \u4fe1\u606f\n\ --noqualifier ::...\u8f93\u51fa\u4e2d\u4e0d\u5305\u62ec\u6307\u5b9a\u9650\u5b9a\u7b26\u7684\u5217\u8868\u3002\n\ --nosince \u4e0d\u5305\u542b @since \u4fe1\u606f\n\ --notimestamp \u4e0d\u5305\u542b\u9690\u85cf\u65f6\u95f4\u6233\n\ --nodeprecatedlist \u4e0d\u751f\u6210\u5df2\u8fc7\u65f6\u7684\u5217\u8868\n\ --notree \u4e0d\u751f\u6210\u7c7b\u5206\u5c42\u7ed3\u6784\n\ --noindex \u4e0d\u751f\u6210\u7d22\u5f15\n\ --nohelp \u4e0d\u751f\u6210\u5e2e\u52a9\u94fe\u63a5\n\ --nonavbar \u4e0d\u751f\u6210\u5bfc\u822a\u680f\n\ --serialwarn \u751f\u6210\u6709\u5173 @serial \u6807\u8bb0\u7684\u8b66\u544a\n\ --tag ::
\u6307\u5b9a\u5355\u4e2a\u53c2\u6570\u81ea\u5b9a\u4e49\u6807\u8bb0\n\ --taglet \u8981\u6ce8\u518c\u7684 Taglet \u7684\u5168\u9650\u5b9a\u540d\u79f0\n\ --tagletpath Taglet \u7684\u8def\u5f84\n\ --charset \u7528\u4e8e\u8de8\u5e73\u53f0\u67e5\u770b\u751f\u6210\u7684\u6587\u6863\u7684\u5b57\u7b26\u96c6\u3002\n\ --helpfile \u5305\u542b\u5e2e\u52a9\u94fe\u63a5\u6240\u94fe\u63a5\u5230\u7684\u6587\u4ef6\n\ --linksource \u4ee5 HTML \u683c\u5f0f\u751f\u6210\u6e90\u6587\u4ef6\n\ --sourcetab \u6307\u5b9a\u6e90\u4e2d\u6bcf\u4e2a\u5236\u8868\u7b26\u5360\u636e\u7684\u7a7a\u683c\u6570\n\ --keywords \u4f7f\u5305\u3001\u7c7b\u548c\u6210\u5458\u4fe1\u606f\u9644\u5e26 HTML \u5143\u6807\u8bb0\n\ --stylesheetfile \u7528\u4e8e\u66f4\u6539\u751f\u6210\u6587\u6863\u7684\u6837\u5f0f\u7684\u6587\u4ef6\n\ --docencoding \u8f93\u51fa\u7f16\u7801\u540d\u79f0 +doclet.usage=\u901a\u8fc7\u6807\u51c6 doclet \u63d0\u4f9b:\n-d \u8f93\u51fa\u6587\u4ef6\u7684\u76ee\u6807\u76ee\u5f55\n-use \u521b\u5efa\u7c7b\u548c\u5305\u7528\u6cd5\u9875\u9762\n-version \u5305\u542b @version \u6bb5\n-author \u5305\u542b @author \u6bb5\n-docfilessubdirs \u9012\u5f52\u590d\u5236\u6587\u6863\u6587\u4ef6\u5b50\u76ee\u5f55\n-splitindex \u5c06\u7d22\u5f15\u5206\u4e3a\u6bcf\u4e2a\u5b57\u6bcd\u5bf9\u5e94\u4e00\u4e2a\u6587\u4ef6\n-windowtitle \u6587\u6863\u7684\u6d4f\u89c8\u5668\u7a97\u53e3\u6807\u9898\n-doctitle \u5305\u542b\u6982\u8ff0\u9875\u9762\u7684\u6807\u9898\n-header \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9875\u7709\u6587\u672c\n-footer \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9875\u811a\u6587\u672c\n-top \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u9876\u90e8\u6587\u672c\n-bottom \u5305\u542b\u6bcf\u4e2a\u9875\u9762\u7684\u5e95\u90e8\u6587\u672c\n-link \u521b\u5efa\u6307\u5411\u4f4d\u4e8e \u7684 javadoc \u8f93\u51fa\u7684\u94fe\u63a5\n-linkoffline \u5229\u7528\u4f4d\u4e8e \u7684\u5305\u5217\u8868\u94fe\u63a5\u81f3\u4f4d\u4e8e \u7684\u6587\u6863\n-excludedocfilessubdir :..\u6392\u9664\u5177\u6709\u7ed9\u5b9a\u540d\u79f0\u7684\u6240\u6709\u6587\u6863\u6587\u4ef6\u5b50\u76ee\u5f55\u3002\n-group :..\u5728\u6982\u8ff0\u9875\u9762\u4e2d\uff0c\u5c06\u6307\u5b9a\u7684\u5305\u5206\u7ec4\n-nocomment \u4e0d\u751f\u6210\u63cf\u8ff0\u548c\u6807\u8bb0\uff0c\u53ea\u751f\u6210\u58f0\u660e\u3002\n-nodeprecated \u4e0d\u5305\u542b @deprecated \u4fe1\u606f\n-noqualifier ::...\u8f93\u51fa\u4e2d\u4e0d\u5305\u62ec\u6307\u5b9a\u9650\u5b9a\u7b26\u7684\u5217\u8868\u3002\n-nosince \u4e0d\u5305\u542b @since \u4fe1\u606f\n-notimestamp \u4e0d\u5305\u542b\u9690\u85cf\u65f6\u95f4\u6233\n-nodeprecatedlist \u4e0d\u751f\u6210\u5df2\u8fc7\u65f6\u7684\u5217\u8868\n-notree \u4e0d\u751f\u6210\u7c7b\u5206\u5c42\u7ed3\u6784\n-noindex \u4e0d\u751f\u6210\u7d22\u5f15\n-nohelp \u4e0d\u751f\u6210\u5e2e\u52a9\u94fe\u63a5\n-nonavbar \u4e0d\u751f\u6210\u5bfc\u822a\u680f\n-serialwarn \u751f\u6210\u6709\u5173 @serial \u6807\u8bb0\u7684\u8b66\u544a\n-tag ::
\u6307\u5b9a\u5355\u4e2a\u53c2\u6570\u81ea\u5b9a\u4e49\u6807\u8bb0\n-taglet \u8981\u6ce8\u518c\u7684 Taglet \u7684\u5168\u9650\u5b9a\u540d\u79f0\n-tagletpath Taglet \u7684\u8def\u5f84\n-charset \u7528\u4e8e\u8de8\u5e73\u53f0\u67e5\u770b\u751f\u6210\u7684\u6587\u6863\u7684\u5b57\u7b26\u96c6\u3002\n-helpfile <\u6587\u4ef6> \u5305\u542b\u5e2e\u52a9\u94fe\u63a5\u6240\u94fe\u63a5\u5230\u7684\u6587\u4ef6\n-linksource \u4ee5 HTML \u683c\u5f0f\u751f\u6210\u6e90\u6587\u4ef6\n-sourcetab \u6307\u5b9a\u6e90\u4e2d\u6bcf\u4e2a\u5236\u8868\u7b26\u5360\u636e\u7684\u7a7a\u683c\u6570\n-keywords \u4f7f\u5305\u3001\u7c7b\u548c\u6210\u5458\u4fe1\u606f\u9644\u5e26 HTML \u5143\u6807\u8bb0\n-stylesheetfile <\u8def\u5f84> \u7528\u4e8e\u66f4\u6539\u751f\u6210\u6587\u6863\u7684\u6837\u5f0f\u7684\u6587\u4ef6\n-docencoding <\u540d\u79f0> \u8f93\u51fa\u7f16\u7801\u540d\u79f0 diff --git a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties index d508f48c2a8..4ab694fea9f 100644 --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties @@ -11,10 +11,8 @@ doclet.Class_0_implements_serializable=Class {0} implements Serializable doclet.Class_0_extends_implements_serializable=Class {0} extends {1} implements Serializable doclet.Option_conflict=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u304c {1} \u3068\u77db\u76fe\u3057\u307e\u3059 doclet.Option_reuse=\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u518d\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059: {0} -doclet.exception_encountered= {0} \u3092\u691c\u51fa \n\ -\t\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u4e2d: {1} -doclet.perform_copy_exception_encountered= \u30b3\u30d4\u30fc\u5b9f\u884c\u4e2d\u306b {0} \u3092 \n\ -\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 +doclet.exception_encountered= {0} \u3092\u691c\u51fa \n\t\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u4e2d: {1} +doclet.perform_copy_exception_encountered= \u30b3\u30d4\u30fc\u5b9f\u884c\u4e2d\u306b {0} \u3092 \n\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 doclet.File_not_found=\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} doclet.Copy_Overwrite_warning=\u30d5\u30a1\u30a4\u30eb {0} \u306f\u540c\u3058\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u306e\u3067 {1} \u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f... doclet.Copying_File_0_To_Dir_1=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {1} \u306b\u30b3\u30d4\u30fc\u4e2d... @@ -81,6 +79,8 @@ doclet.AnnotationTypes=\u6ce8\u91c8\u578b doclet.Exceptions=\u4f8b\u5916 doclet.Errors=\u30a8\u30e9\u30fc doclet.Classes=\u30af\u30e9\u30b9 +doclet.Packages=\u30d1\u30c3\u30b1\u30fc\u30b8 +doclet.packages=\u30d1\u30c3\u30b1\u30fc\u30b8 doclet.All_Classes=\u3059\u3079\u3066\u306e\u30af\u30e9\u30b9 doclet.All_Superinterfaces=\u3059\u3079\u3066\u306e\u30b9\u30fc\u30d1\u30fc\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: doclet.All_Implemented_Interfaces=\u3059\u3079\u3066\u306e\u5b9f\u88c5\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: @@ -91,14 +91,20 @@ doclet.Interface=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 doclet.Class=\u30af\u30e9\u30b9 doclet.AnnotationType=\u6ce8\u91c8\u578b doclet.annotationtype=\u6ce8\u91c8\u578b +doclet.annotationtypes=\u6ce8\u91c8\u578b doclet.Enum=\u5217\u6319\u578b doclet.enum=\u5217\u6319 +doclet.enums=\u5217\u6319\u578b doclet.interface=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +doclet.interfaces=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 doclet.class=\u30af\u30e9\u30b9 +doclet.classes=\u30af\u30e9\u30b9 doclet.Error=\u30a8\u30e9\u30fc doclet.error=\u30a8\u30e9\u30fc +doclet.errors=\u30a8\u30e9\u30fc doclet.Exception=\u4f8b\u5916 doclet.exception=\u4f8b\u5916 +doclet.exceptions=\u4f8b\u5916 doclet.extended_by=\u4e0a\u4f4d\u3092\u62e1\u5f35 doclet.extends=extends doclet.Package_private=(package private) @@ -124,24 +130,34 @@ doclet.value_tag_invalid_reference={0} (@value \u30bf\u30b0\u306b\u3088\u308a\u5 doclet.value_tag_invalid_constant=@value \u30bf\u30b0 ({0} \u3092\u53c2\u7167\u3057\u3066\u3044\u308b) \u306f\u5b9a\u6570\u5185\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 doclet.dest_dir_create=\u5b9b\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u4e2d: "{0}" doclet.in={1} \u306e {0} +doclet.Use_Table_Summary=\u8868\u3001\u4e00\u89a7 {0}\u3001\u8aac\u660e\u3092\u4f7f\u7528 +doclet.Constants_Table_Summary={0} \u8868\u3001\u5b9a\u6570\u30d5\u30a3\u30fc\u30eb\u30c9\u4e00\u89a7\u3001\u5024 +doclet.Member_Table_Summary={0} \u8868\u3001\u4e00\u89a7 {1}\u3001\u8aac\u660e +doclet.fields=\u30d5\u30a3\u30fc\u30eb\u30c9 +doclet.constructors=\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf +doclet.methods=\u30e1\u30bd\u30c3\u30c9 +doclet.annotation_type_optional_members=\u4efb\u610f\u8981\u7d20 +doclet.annotation_type_required_members=\u5fc5\u9808\u8981\u7d20 +doclet.enum_constants=\u5217\u6319\u578b\u5b9a\u6570 +doclet.nested_classes=\u5165\u308c\u5b50\u306e\u30af\u30e9\u30b9 +doclet.subclasses=\u30b5\u30d6\u30af\u30e9\u30b9 +doclet.subinterfaces=\u30b5\u30d6\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +doclet.Modifier=\u4fee\u98fe\u5b50 +doclet.Type=\u30bf\u30a4\u30d7 +doclet.Field=\u30d5\u30a3\u30fc\u30eb\u30c9 +doclet.Constructor=\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf +doclet.Method=\u30e1\u30bd\u30c3\u30c9 +doclet.Annotation_Type_Optional_Member=\u4efb\u610f\u8981\u7d20 +doclet.Annotation_Type_Required_Member=\u5fc5\u9808\u8981\u7d20 +doclet.Annotation_Type_Member=\u6ce8\u91c8\u578b\u8981\u7d20 +doclet.Enum_Constant=\u5217\u6319\u578b\u5b9a\u6570 +doclet.Class=\u30af\u30e9\u30b9 +doclet.Description=\u8aac\u660e +doclet.ConstantField=\u5b9a\u6570\u30d5\u30a3\u30fc\u30eb\u30c9 +doclet.Value=\u5024 +doclet.0_and_1={0} \u304a\u3088\u3073 {1} #Documentation for Enums -doclet.enum_values_doc=\n\ - \u3053\u306e\u5217\u6319\u578b\u306e\u5b9a\u6570\u3092\u542b\u3080\u914d\u5217\u3092\u5ba3\u8a00\u3055\u308c\u3066\u3044\u308b\u9806\u5e8f\u3067\u8fd4\u3057\u307e\u3059\u3002\n\ - \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u6b21\u306e\u3088\u3046\u306b\u3057\u3066\u5b9a\u6570\u3092\u53cd\u5fa9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:\n\ -
\n\
- for ({0} c : {0}.values())\n\
-     System.out.println(c);\n\
- 
\n\ - @return \u3053\u306e\u5217\u6319\u578b\u306e\u5b9a\u6570\u3092\u5ba3\u8a00\u3055\u308c\u3066\u3044\u308b\u9806\u5e8f\u3067\u542b\u3080\u914d\u5217 +doclet.enum_values_doc=\n\u3053\u306e\u5217\u6319\u578b\u306e\u5b9a\u6570\u3092\u542b\u3080\u914d\u5217\u3092\u5ba3\u8a00\u3055\u308c\u3066\u3044\u308b\u9806\u5e8f\u3067\u8fd4\u3057\u307e\u3059\u3002\n\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u6b21\u306e\u3088\u3046\u306b\u3057\u3066\u5b9a\u6570\u3092\u53cd\u5fa9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:\n
\nfor ({0} c : {0}.values())\n    System.out.println(c);\n
\n@return \u3053\u306e\u5217\u6319\u578b\u306e\u5b9a\u6570\u3092\u5ba3\u8a00\u3055\u308c\u3066\u3044\u308b\u9806\u5e8f\u3067\u542b\u3080\u914d\u5217 -doclet.enum_valueof_doc=\n\ - \u6307\u5b9a\u3057\u305f\u540d\u524d\u3092\u6301\u3064\u3053\u306e\u578b\u306e\u5217\u6319\u578b\u5b9a\u6570\u3092\u8fd4\u3057\u307e\u3059\u3002\n\ - \u6587\u5b57\u5217\u306f\u3001\u3053\u306e\u578b\u306e\u5217\u6319\u578b\u5b9a\u6570\u3092\u5ba3\u8a00\u3059\u308b\u306e\u306b\u4f7f\u7528\u3057\u305f\u8b58\u5225\u5b50\u3068\u53b3\u5bc6\u306b\n\ - \u4e00\u81f4\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 (\u4f59\u5206\u306a\u7a7a\u767d\u6587\u5b57\u3092\u542b\u3081\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093)\u3002\n\ - \n\ - @param name \u8fd4\u3055\u308c\u308b\u5217\u6319\u578b\u5b9a\u6570\u306e\u540d\u524d\n\ - @return \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u3092\u6301\u3064\u5217\u6319\u578b\u5b9a\u6570\n\ - @throws IllegalArgumentException \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u3092\u6301\u3064\u5b9a\u6570\u3092\n\ - \u3053\u306e\u5217\u6319\u578b\u304c\u6301\u3063\u3066\u3044\u306a\u3044\u5834\u5408\n\ - @throws NullPointerException \u5f15\u6570\u304c null \u306e\u5834\u5408 +doclet.enum_valueof_doc=\n\u6307\u5b9a\u3057\u305f\u540d\u524d\u3092\u6301\u3064\u3053\u306e\u578b\u306e\u5217\u6319\u578b\u5b9a\u6570\u3092\u8fd4\u3057\u307e\u3059\u3002\n\u6587\u5b57\u5217\u306f\u3001\u3053\u306e\u578b\u306e\u5217\u6319\u578b\u5b9a\u6570\u3092\u5ba3\u8a00\u3059\u308b\u306e\u306b\u4f7f\u7528\u3057\u305f\u8b58\u5225\u5b50\u3068\u53b3\u5bc6\u306b\n\u4e00\u81f4\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 (\u4f59\u5206\u306a\u7a7a\u767d\u6587\u5b57\u3092\u542b\u3081\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093)\u3002\n\n@param name \u8fd4\u3055\u308c\u308b\u5217\u6319\u578b\u5b9a\u6570\u306e\u540d\u524d\n@return \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u3092\u6301\u3064\u5217\u6319\u578b\u5b9a\u6570\n@throws IllegalArgumentException \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u3092\u6301\u3064\u5b9a\u6570\u3092\n\u3053\u306e\u5217\u6319\u578b\u304c\u6301\u3063\u3066\u3044\u306a\u3044\u5834\u5408\n@throws NullPointerException \u5f15\u6570\u304c null \u306e\u5834\u5408 diff --git a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties index 48e2377d6fe..4a238b7d57d 100644 --- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties +++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties @@ -11,10 +11,8 @@ doclet.Class_0_implements_serializable=\u7c7b {0} \u5b9e\u73b0 Serializable doclet.Class_0_extends_implements_serializable=\u7c7b {0} \u7ee7\u627f {1} \u5b9e\u73b0 Serializable doclet.Option_conflict=\u9009\u9879 {0} \u4e0e {1} \u51b2\u7a81 doclet.Option_reuse=\u91cd\u590d\u4f7f\u7528\u7684\u9009\u9879\uff1a {0} -doclet.exception_encountered= \u5c1d\u8bd5\u521b\u5efa\u6587\u4ef6 {1} \u65f6 \n\ -\t\u9047\u5230 {0} -doclet.perform_copy_exception_encountered= \u6267\u884c\u590d\u5236\u65f6 \n\ -\u9047\u5230{0} \u3002 +doclet.exception_encountered= \u5c1d\u8bd5\u521b\u5efa\u6587\u4ef6 {1} \u65f6 \n\t\u9047\u5230 {0} +doclet.perform_copy_exception_encountered= \u6267\u884c\u590d\u5236\u65f6 \n\u9047\u5230{0} \u3002 doclet.File_not_found=\u627e\u4e0d\u5230\u6587\u4ef6\uff1a {0} doclet.Copy_Overwrite_warning=\u672a\u5c06\u6587\u4ef6 {0} \u590d\u5236\u5230 {1}\uff0c\u56e0\u4e3a\u73b0\u6709\u6587\u4ef6\u5177\u6709\u76f8\u540c\u540d\u79f0... doclet.Copying_File_0_To_Dir_1=\u6b63\u5728\u5c06\u6587\u4ef6 {0} \u590d\u5236\u5230\u76ee\u5f55 {1}... @@ -81,6 +79,8 @@ doclet.AnnotationTypes=\u6ce8\u91ca\u7c7b\u578b doclet.Exceptions=\u5f02\u5e38 doclet.Errors=\u9519\u8bef doclet.Classes=\u7c7b +doclet.Packages=\u8f6f\u4ef6\u5305 +doclet.packages=\u8f6f\u4ef6\u5305 doclet.All_Classes=\u6240\u6709\u7c7b doclet.All_Superinterfaces=\u6240\u6709\u8d85\u7ea7\u63a5\u53e3\uff1a doclet.All_Implemented_Interfaces=\u6240\u6709\u5df2\u5b9e\u73b0\u7684\u63a5\u53e3\uff1a @@ -91,14 +91,20 @@ doclet.Interface=\u63a5\u53e3 doclet.Class=\u7c7b doclet.AnnotationType=\u6ce8\u91ca\u7c7b\u578b doclet.annotationtype=\u6ce8\u91ca\u7c7b\u578b +doclet.annotationtypes=\u6ce8\u91ca\u7c7b\u578b doclet.Enum=\u679a\u4e3e doclet.enum=\u679a\u4e3e +doclet.enums=\u679a\u4e3e doclet.interface=\u63a5\u53e3 +doclet.interfaces=\u63a5\u53e3 doclet.class=\u7c7b +doclet.classes=\u7c7b doclet.Error=\u9519\u8bef doclet.error=\u9519\u8bef +doclet.errors=\u9519\u8bef doclet.Exception=\u5f02\u5e38 doclet.exception=\u5f02\u5e38 +doclet.exceptions=\u5f02\u5e38 doclet.extended_by=\u7ee7\u627f\u8005 doclet.extends=\u7ee7\u627f doclet.Package_private=\uff08\u4e13\u7528\u8f6f\u4ef6\u5305\uff09 @@ -124,27 +130,34 @@ doclet.value_tag_invalid_reference={0}\uff08\u7531 @value \u6807\u8bb0\u5f15\u75 doclet.value_tag_invalid_constant=@value \u6807\u8bb0\uff08\u5f15\u7528 {0}\uff09\u53ea\u80fd\u5728\u5e38\u91cf\u4e2d\u4f7f\u7528\u3002 doclet.dest_dir_create=\u6b63\u5728\u521b\u5efa\u76ee\u6807\u76ee\u5f55\uff1a "{0}" doclet.in={1} \u4e2d\u7684 {0} +doclet.Use_Table_Summary=\u4f7f\u7528\u8868\u683c\uff0c\u5217\u51fa {0} \u548c\u8bf4\u660e +doclet.Constants_Table_Summary={0} \u8868\u683c\uff0c\u5217\u51fa\u5e38\u91cf\u5b57\u6bb5\u548c\u503c +doclet.Member_Table_Summary={0} \u8868\u683c\uff0c\u5217\u51fa {1} \u548c\u8bf4\u660e +doclet.fields=\u5b57\u6bb5 +doclet.constructors=\u6784\u9020\u51fd\u6570 +doclet.methods=\u65b9\u6cd5 +doclet.annotation_type_optional_members=\u53ef\u9009\u5143\u7d20 +doclet.annotation_type_required_members=\u5fc5\u9700\u5143\u7d20 +doclet.enum_constants=\u679a\u4e3e\u5e38\u91cf +doclet.nested_classes=\u5d4c\u5957\u7c7b +doclet.subclasses=\u5b50\u7c7b +doclet.subinterfaces=\u5b50\u63a5\u53e3 +doclet.Modifier=\u4fee\u9970\u7b26 +doclet.Type=\u7c7b\u578b +doclet.Field=\u5b57\u6bb5 +doclet.Constructor=\u6784\u9020\u51fd\u6570 +doclet.Method=\u65b9\u6cd5 +doclet.Annotation_Type_Optional_Member=\u53ef\u9009\u5143\u7d20 +doclet.Annotation_Type_Required_Member=\u5fc5\u9700\u5143\u7d20 +doclet.Annotation_Type_Member=\u6ce8\u91ca\u7c7b\u578b\u5143\u7d20 +doclet.Enum_Constant=\u679a\u4e3e\u5e38\u91cf +doclet.Class=\u7c7b +doclet.Description=\u63cf\u8ff0 +doclet.ConstantField=\u5e38\u91cf\u5b57\u6bb5 +doclet.Value=\u503c +doclet.0_and_1={0} \u548c {1} #Documentation for Enums -doclet.enum_values_doc=\n\ - \u6309\u7167\u58f0\u660e\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u5e38\u91cf\u7684\u987a\u5e8f\uff0c\u8fd4\u56de\n\ - \u5305\u542b\u8fd9\u4e9b\u5e38\u91cf\u7684\u6570\u7ec4\u3002\u8be5\u65b9\u6cd5\u53ef\u7528\u4e8e\u8fed\u4ee3\n\ - \u5e38\u91cf\uff0c\u5982\u4e0b\u6240\u793a\uff1a\n\ -
\n\
- for ({0} c : {0}.values())\n\
-     System.out.println(c);\n\
- 
\n\ - @\u6309\u7167\u58f0\u660e\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u5e38\u91cf\u7684\u987a\u5e8f\uff0c\u8fd4\u56de\n\ - \u5305\u542b\u8fd9\u4e9b\u5e38\u91cf\u7684\u6570\u7ec4 +doclet.enum_values_doc=\n\u6309\u7167\u58f0\u660e\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u5e38\u91cf\u7684\u987a\u5e8f\uff0c\u8fd4\u56de\n\u5305\u542b\u8fd9\u4e9b\u5e38\u91cf\u7684\u6570\u7ec4\u3002\u8be5\u65b9\u6cd5\u53ef\u7528\u4e8e\u8fed\u4ee3\n\u5e38\u91cf\uff0c\u5982\u4e0b\u6240\u793a\uff1a\n
\nfor ({0} c : {0}.values())\n    System.out.println(c);\n
\n@\u6309\u7167\u58f0\u660e\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u5e38\u91cf\u7684\u987a\u5e8f\uff0c\u8fd4\u56de\n\u5305\u542b\u8fd9\u4e9b\u5e38\u91cf\u7684\u6570\u7ec4 -doclet.enum_valueof_doc=\n\ - \u8fd4\u56de\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u8be5\u7c7b\u578b\u7684\u679a\u4e3e\u5e38\u91cf\u3002\n\ - \u5b57\u7b26\u4e32\u5fc5\u987b\u4e0e\u7528\u4e8e\u58f0\u660e\u8be5\u7c7b\u578b\u7684\u679a\u4e3e\u5e38\u91cf\u7684\n\ - \u6807\u8bc6\u7b26\u5b8c\u5168\u5339\u914d\u3002\uff08\u4e0d\u5141\u8bb8\u6709\u591a\u4f59\n\ - \u7684\u7a7a\u683c\u3002\uff09\n\ - \n\ - @param name \u8981\u8fd4\u56de\u7684\u679a\u4e3e\u5e38\u91cf\u7684\u540d\u79f0\u3002\n\ - @return \u8fd4\u56de\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u679a\u4e3e\u5e38\u91cf\n\ - @throws \u5982\u679c\u8be5\u679a\u4e3e\u7c7b\u578b\u6ca1\u6709\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u5e38\u91cf\uff0c\n\ - \u5219\u629b\u51fa IllegalArgumentException - @throws \u5982\u679c\u53c2\u6570\u4e3a\u7a7a\u5219\u629b\u51fa NullPointerException +doclet.enum_valueof_doc=\n\u8fd4\u56de\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u8be5\u7c7b\u578b\u7684\u679a\u4e3e\u5e38\u91cf\u3002\n\u5b57\u7b26\u4e32\u5fc5\u987b\u4e0e\u7528\u4e8e\u58f0\u660e\u8be5\u7c7b\u578b\u7684\u679a\u4e3e\u5e38\u91cf\u7684\n\u6807\u8bc6\u7b26\u5b8c\u5168\u5339\u914d\u3002\uff08\u4e0d\u5141\u8bb8\u6709\u591a\u4f59\n\u7684\u7a7a\u683c\u3002\uff09\n\n@param name \u8981\u8fd4\u56de\u7684\u679a\u4e3e\u5e38\u91cf\u7684\u540d\u79f0\u3002\n@return \u8fd4\u56de\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u679a\u4e3e\u5e38\u91cf\n@throws \u5982\u679c\u8be5\u679a\u4e3e\u7c7b\u578b\u6ca1\u6709\u5e26\u6709\u6307\u5b9a\u540d\u79f0\u7684\u5e38\u91cf\uff0c\n\u5219\u629b\u51fa IllegalArgumentException diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties index 865b70f8a0a..c65ca31ed9a 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties @@ -1,5 +1,5 @@ # -# Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1999-2009 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 @@ -27,475 +27,284 @@ ## errors ## -compiler.err.abstract.cant.be.instantiated=\ - {0} \u306f abstract \u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.abstract.meth.cant.have.body=\ - abstract \u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.already.annotated=\ - {0} {1} \u306f\u6ce8\u91c8\u304c\u4ed8\u3044\u3066\u3044\u307e\u3059\u3002 -compiler.err.already.defined=\ - {0} \u306f {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.already.defined.single.import=\ - {0} \u306f\u5358\u4e00\u306e\u578b\u30a4\u30f3\u30dd\u30fc\u30c8\u5ba3\u8a00\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.already.defined.static.single.import=\ - {0} \u306f static \u306e\u5358\u4e00\u306e\u578b\u30a4\u30f3\u30dd\u30fc\u30c8\u5ba3\u8a00\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.already.defined.this.unit=\ - {0} \u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u5358\u4f4d\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.annotation.missing.default.value=\ - \u6ce8\u91c8 {0} \u306b {1} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.annotation.not.valid.for.type=\ - \u6ce8\u91c8\u306f\u30bf\u30a4\u30d7 {0} \u306e\u5024\u306b\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.annotation.type.not.applicable=\ - \u6ce8\u91c8\u578b\u306f\u3053\u306e\u7a2e\u985e\u306e\u5ba3\u8a00\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.annotation.value.must.be.annotation=\ - \u6ce8\u91c8\u306e\u5024\u306f\u6ce8\u91c8\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.annotation.value.must.be.class.literal=\ - \u6ce8\u91c8\u306e\u5024\u306f\u30af\u30e9\u30b9\u30ea\u30c6\u30e9\u30eb\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.annotation.value.must.be.name.value=\ - \u6ce8\u91c8\u306e\u5024\u306f ''name=value'' \u3068\u3044\u3046\u5f62\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 -compiler.err.annotation.value.not.allowable.type=\ - \u4f7f\u7528\u3067\u304d\u306a\u3044\u30bf\u30a4\u30d7\u306e\u6ce8\u91c8\u306e\u5024\u3067\u3059\u3002 -compiler.err.anon.class.impl.intf.no.args=\ - \u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.anon.class.impl.intf.no.typeargs=\ - \u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u578b\u5f15\u6570\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -compiler.err.anon.class.impl.intf.no.qual.for.new=\ - \u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002new \u306b\u4fee\u98fe\u5b50\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.array.and.varargs=\ - {2} \u3067 {0} \u3068 {1} \u306e\u4e21\u65b9\u3092\u5ba3\u8a00\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -compiler.err.array.dimension.missing=\ - \u914d\u5217\u306e\u5927\u304d\u3055\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.array.req.but.found=\ - \u914d\u5217\u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u304c\u3001{0} \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 +compiler.err.abstract.cant.be.instantiated={0} \u306f abstract \u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.abstract.meth.cant.have.body=abstract \u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.already.annotated={0} {1} \u306f\u6ce8\u91c8\u304c\u4ed8\u3044\u3066\u3044\u307e\u3059\u3002 +compiler.err.already.defined={0} \u306f {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.already.defined.single.import={0} \u306f\u5358\u4e00\u306e\u578b\u30a4\u30f3\u30dd\u30fc\u30c8\u5ba3\u8a00\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.already.defined.static.single.import={0} \u306f static \u306e\u5358\u4e00\u306e\u578b\u30a4\u30f3\u30dd\u30fc\u30c8\u5ba3\u8a00\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.already.defined.this.unit={0} \u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u5358\u4f4d\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.annotation.missing.default.value=\u6ce8\u91c8 {0} \u306b {1} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.annotation.not.valid.for.type=\u6ce8\u91c8\u306f\u30bf\u30a4\u30d7 {0} \u306e\u5024\u306b\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.annotation.type.not.applicable=\u6ce8\u91c8\u578b\u306f\u3053\u306e\u7a2e\u985e\u306e\u5ba3\u8a00\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.annotation.value.must.be.annotation=\u6ce8\u91c8\u306e\u5024\u306f\u6ce8\u91c8\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.annotation.value.must.be.class.literal=\u6ce8\u91c8\u306e\u5024\u306f\u30af\u30e9\u30b9\u30ea\u30c6\u30e9\u30eb\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.annotation.value.must.be.name.value=\u6ce8\u91c8\u306e\u5024\u306f ''name=value'' \u3068\u3044\u3046\u5f62\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +compiler.err.annotation.value.not.allowable.type=\u4f7f\u7528\u3067\u304d\u306a\u3044\u30bf\u30a4\u30d7\u306e\u6ce8\u91c8\u306e\u5024\u3067\u3059\u3002 +compiler.err.anon.class.impl.intf.no.args=\u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.anon.class.impl.intf.no.typeargs=\u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u578b\u5f15\u6570\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +compiler.err.anon.class.impl.intf.no.qual.for.new=\u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002new \u306b\u4fee\u98fe\u5b50\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.array.and.varargs={2} \u3067 {0} \u3068 {1} \u306e\u4e21\u65b9\u3092\u5ba3\u8a00\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +compiler.err.array.dimension.missing=\u914d\u5217\u306e\u5927\u304d\u3055\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.array.req.but.found=\u914d\u5217\u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u304c\u3001{0} \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 -compiler.err.assignment.from.super-bound=\ - \u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 {0} \u304b\u3089\u4ee3\u5165\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.assignment.to.extends-bound=\ - \u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 {0} \u3078\u4ee3\u5165\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.attribute.value.must.be.constant=\ - \u5c5e\u6027\u306e\u5024\u306f\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.assignment.from.super-bound=\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 {0} \u304b\u3089\u4ee3\u5165\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.assignment.to.extends-bound=\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 {0} \u3078\u4ee3\u5165\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.attribute.value.must.be.constant=\u5c5e\u6027\u306e\u5024\u306f\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.break.outside.switch.loop=\ - break \u304c switch \u6587\u307e\u305f\u306f\u30eb\u30fc\u30d7\u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002 +compiler.err.break.outside.switch.loop=break \u304c switch \u6587\u307e\u305f\u306f\u30eb\u30fc\u30d7\u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002 -compiler.err.call.must.be.first.stmt.in.ctor=\ - {0} \u306e\u547c\u3073\u51fa\u3057\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5148\u982d\u6587\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.cant.apply.symbol=\ - {0} ({1} \u5185) \u3092 {2}({3}) \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093 -compiler.err.cant.apply.symbol.1=\ - {0} ({1} \u5185) \u3092 {2}({3}) \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093; {4} -compiler.err.cant.assign.val.to.final.var=\ - final \u5909\u6570 {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.cant.deref=\ - {0} \u306f\u9593\u63a5\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.cant.extend.intf.annotation=\ - @interfaces \u3067\u306f ''extends'' \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093 -compiler.err.cant.inherit.from.final=\ - final {0} \u304b\u3089\u306f\u7d99\u627f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.cant.ref.before.ctor.called=\ - \u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u524d\u306f {0} \u3092\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.cant.ret.val.from.meth.decl.void=\ - \u623b\u308a\u5024\u306e\u578b\u304c void \u306e\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u306f\u5024\u3092\u8fd4\u305b\u307e\u305b\u3093\u3002 -compiler.err.cant.select.static.class.from.param.type=\ - \u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3055\u308c\u305f\u578b\u304b\u3089 static \u30af\u30e9\u30b9\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.cant.inherit.diff.arg=\ - {0} \u3092\u7570\u306a\u308b\u5f15\u6570 <{1}> \u3068 <{2}> \u3067\u7d99\u627f\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.catch.without.try=\ - ''catch'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.clash.with.pkg.of.same.name=\ - {0} \u306f\u540c\u540d\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -compiler.err.const.expr.req=\ - \u5b9a\u6570\u5f0f\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.enum.const.req=\ - \u4fee\u98fe\u3055\u308c\u3066\u3044\u306a\u3044\u5217\u6319\u578b\u5b9a\u6570\u306e\u540d\u524d\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.cont.outside.loop=\ - continue \u304c\u30eb\u30fc\u30d7\u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002 -compiler.err.cyclic.inheritance=\ - {0} \u3092\u542b\u3080\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.cyclic.annotation.element=\ - \u6ce8\u91c8\u306e\u8981\u7d20\u30bf\u30a4\u30d7\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.call.to.super.not.allowed.in.enum.ctor=\ - \u5217\u6319\u578b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u306f\u3001\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u547c\u3073\u51fa\u3057\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.no.superclass=\ - {0} \u306b\u306f\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.call.must.be.first.stmt.in.ctor={0} \u306e\u547c\u3073\u51fa\u3057\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5148\u982d\u6587\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.cant.apply.symbol={0} ({1} \u5185) \u3092 {2}({3}) \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093 +compiler.err.cant.apply.symbol.1={0} {1} ({4} {5} \u5185) \u306f\u4e0e\u3048\u3089\u308c\u305f\u578b\u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093\n\u671f\u5f85\u5024: {2}\n\u691c\u51fa\u5024: {3}\n\u7406\u7531: {6} +compiler.err.cant.assign.val.to.final.var=final \u5909\u6570 {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.cant.deref={0} \u306f\u9593\u63a5\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.cant.extend.intf.annotation=@interfaces \u3067\u306f ''extends'' \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093 +compiler.err.cant.inherit.from.final=final {0} \u304b\u3089\u306f\u7d99\u627f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.cant.ref.before.ctor.called=\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u524d\u306f {0} \u3092\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.cant.ret.val.from.meth.decl.void=\u623b\u308a\u5024\u306e\u578b\u304c void \u306e\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u306f\u5024\u3092\u8fd4\u305b\u307e\u305b\u3093\u3002 +compiler.err.cant.select.static.class.from.param.type=\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3055\u308c\u305f\u578b\u304b\u3089 static \u30af\u30e9\u30b9\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.cant.inherit.diff.arg={0} \u3092\u7570\u306a\u308b\u5f15\u6570 <{1}> \u3068 <{2}> \u3067\u7d99\u627f\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.catch.without.try=''catch'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.clash.with.pkg.of.same.name={0} \u306f\u540c\u540d\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 +compiler.err.const.expr.req=\u5b9a\u6570\u5f0f\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.enum.const.req=\u4fee\u98fe\u3055\u308c\u3066\u3044\u306a\u3044\u5217\u6319\u578b\u5b9a\u6570\u306e\u540d\u524d\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.cont.outside.loop=continue \u304c\u30eb\u30fc\u30d7\u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002 +compiler.err.cyclic.inheritance={0} \u3092\u542b\u3080\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.cyclic.annotation.element=\u6ce8\u91c8\u306e\u8981\u7d20\u30bf\u30a4\u30d7\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5217\u6319\u578b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u306f\u3001\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u547c\u3073\u51fa\u3057\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.no.superclass={0} \u306b\u306f\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.concrete.inheritance.conflict=\ - {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3068 {3} \u306e {2} \u306f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304b\u3089\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.concrete.inheritance.conflict={1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3068 {3} \u306e {2} \u306f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304b\u3089\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.default.allowed.in.intf.annotation.member=\ - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f @interface \u30e1\u30f3\u30d0\u5185\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 -compiler.err.doesnt.exist=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -compiler.err.duplicate.annotation=\ - \u6ce8\u91c8\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.duplicate.annotation.member.value=\ - {1} \u306e\u6ce8\u91c8\u30e1\u30f3\u30d0\u306e\u5024 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.duplicate.class=\ - \u30af\u30e9\u30b9 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.duplicate.case.label=\ - case \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.duplicate.default.label=\ - default \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.default.allowed.in.intf.annotation.member=\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f @interface \u30e1\u30f3\u30d0\u5185\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +compiler.err.doesnt.exist=\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +compiler.err.duplicate.annotation=\u6ce8\u91c8\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.duplicate.annotation.member.value={1} \u306e\u6ce8\u91c8\u30e1\u30f3\u30d0\u306e\u5024 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.duplicate.class=\u30af\u30e9\u30b9 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.duplicate.case.label=case \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.duplicate.default.label=default \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.else.without.if=\ - ''else'' \u3078\u306e ''if'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.empty.char.lit=\ - \u7a7a\u306e\u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u3067\u3059\u3002 -compiler.err.encl.class.required=\ - {0} \u3092\u542b\u3080\u56f2\u3046\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.enum.annotation.must.be.enum.constant=\ - \u5217\u6319\u578b\u6ce8\u91c8\u5024\u306f\u3001\u5217\u6319\u578b\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.else.without.if=''else'' \u3078\u306e ''if'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.empty.bytecode.ident=\u7a7a\u306e\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u8b58\u5225\u5b50\u3067\u3059\u3002 +compiler.err.empty.char.lit=\u7a7a\u306e\u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u3067\u3059\u3002 +compiler.err.encl.class.required={0} \u3092\u542b\u3080\u56f2\u3046\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.enum.annotation.must.be.enum.constant=\u5217\u6319\u578b\u6ce8\u91c8\u5024\u306f\u3001\u5217\u6319\u578b\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.enum.cant.be.instantiated=\ - \u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.enum.label.must.be.unqualified.enum=\ - \u5217\u6319\u578b\u306e switch case \u30e9\u30d9\u30eb\u306f\u5217\u6319\u578b\u5b9a\u6570\u306e\u975e\u4fee\u98fe\u540d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.enum.no.subclassing=\ - \u30af\u30e9\u30b9\u306f\u76f4\u63a5 java.lang.Enum \u3092\u62e1\u5f35\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.enum.types.not.extensible=\ - \u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f\u62e1\u5f35\u53ef\u80fd\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.enum.no.finalize=\ - \u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f finalize \u30e1\u30bd\u30c3\u30c9\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -compiler.err.error.reading.file=\ - {0} \u306e\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002{1} -compiler.err.except.already.caught=\ - \u4f8b\u5916 {0} \u306f\u3059\u3067\u306b\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.except.never.thrown.in.try=\ - \u4f8b\u5916 {0} \u306f\u5bfe\u5fdc\u3059\u308b try \u6587\u306e\u672c\u4f53\u3067\u306f\u30b9\u30ed\u30fc\u3055\u308c\u307e\u305b\u3093\u3002 +compiler.err.enum.cant.be.instantiated=\u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.enum.label.must.be.unqualified.enum=\u5217\u6319\u578b\u306e switch case \u30e9\u30d9\u30eb\u306f\u5217\u6319\u578b\u5b9a\u6570\u306e\u975e\u4fee\u98fe\u540d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.enum.no.subclassing=\u30af\u30e9\u30b9\u306f\u76f4\u63a5 java.lang.Enum \u3092\u62e1\u5f35\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.enum.types.not.extensible=\u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f\u62e1\u5f35\u53ef\u80fd\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.enum.no.finalize=\u5217\u6319\u578b\u30bf\u30a4\u30d7\u306f finalize \u30e1\u30bd\u30c3\u30c9\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +compiler.err.error.reading.file={0} \u306e\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002{1} +compiler.err.except.already.caught=\u4f8b\u5916 {0} \u306f\u3059\u3067\u306b\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.except.never.thrown.in.try=\u4f8b\u5916 {0} \u306f\u5bfe\u5fdc\u3059\u308b try \u6587\u306e\u672c\u4f53\u3067\u306f\u30b9\u30ed\u30fc\u3055\u308c\u307e\u305b\u3093\u3002 -compiler.err.final.parameter.may.not.be.assigned=\ - final \u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.finally.without.try=\ - ''finally'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.foreach.not.applicable.to.type=\ - foreach \u306f\u5f0f\u306e\u30bf\u30a4\u30d7\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.fp.number.too.large=\ - \u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 -compiler.err.fp.number.too.small=\ - \u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002 +compiler.err.final.parameter.may.not.be.assigned=final \u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.finally.without.try=''finally'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.foreach.not.applicable.to.type=foreach \u306f\u5f0f\u306e\u30bf\u30a4\u30d7\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.fp.number.too.large=\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 +compiler.err.fp.number.too.small=\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002 -compiler.err.generic.array.creation=\ - \u6c4e\u7528\u914d\u5217\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 -compiler.err.generic.throwable=\ - \u6c4e\u7528\u30af\u30e9\u30b9\u306f java.lang.Throwable \u3092\u62e1\u5f35\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.generic.array.creation=\u6c4e\u7528\u914d\u5217\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 +compiler.err.generic.throwable=\u6c4e\u7528\u30af\u30e9\u30b9\u306f java.lang.Throwable \u3092\u62e1\u5f35\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.icls.cant.have.static.decl=\ - \u5185\u90e8\u30af\u30e9\u30b9\u304c static \u5ba3\u8a00\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.illegal.char=\ - \\{0} \u306f\u4e0d\u6b63\u306a\u6587\u5b57\u3067\u3059\u3002 -compiler.err.illegal.char.for.encoding=\ - \u3053\u306e\u6587\u5b57\u306f\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 {0} \u306b\u30de\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.illegal.combination.of.modifiers=\ - \u4fee\u98fe\u5b50 {0} \u3068 {1} \u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.enum.static.ref=\ - \u521d\u671f\u5316\u5b50\u304b\u3089 static \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u53c2\u7167\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.esc.char=\ - \u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.forward.ref=\ - \u9806\u65b9\u5411\u53c2\u7167\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.warn.forward.ref=\ - \u521d\u671f\u5316\u3055\u308c\u308b\u524d\u306e\u5909\u6570 ''{0}'' \u3092\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f -compiler.err.illegal.generic.type.for.instof=\ - instanceof \u306e\u7dcf\u79f0\u578b\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.initializer.for.type=\ - {0} \u306e\u521d\u671f\u5316\u5b50\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.line.end.in.char.lit=\ - \u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u306e\u884c\u672b\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.nonascii.digit=\ - \u4e0d\u6b63\u306a\u975e ASCII \u6570\u5b57\u3067\u3059\u3002 -compiler.err.illegal.qual.not.icls=\ - \u4fee\u98fe\u5b50\u304c\u4e0d\u6b63\u3067\u3059\u3002{0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.illegal.start.of.expr=\ - \u5f0f\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.start.of.type=\ - \u578b\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.illegal.unicode.esc=\ - Unicode \u30a8\u30b9\u30b1\u30fc\u30d7\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.import.requires.canonical=\ - \u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u306f {0} \u306e\u6a19\u6e96\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.improperly.formed.type.param.missing=\ - \u578b\u306e\u5f62\u5f0f\u304c\u4e0d\u9069\u5207\u3067\u3059\u3002\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.err.improperly.formed.type.inner.raw.param=\ - \u578b\u306e\u5f62\u5f0f\u304c\u4e0d\u9069\u5207\u3067\u3059\u3002raw \u578b\u306b\u6307\u5b9a\u3055\u308c\u305f\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3059\u3002 -compiler.err.incomparable.types=\ - \u578b {0} \u3068 {1} \u306f\u6bd4\u8f03\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.int.number.too.large=\ - \u6574\u6570 {0} \u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 -compiler.err.internal.error.cant.instantiate=\ - \u5185\u90e8\u30a8\u30e9\u30fc\u3067\u3059\u3002{0} \u3092 {1} \u3067 ({2}) \u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.intf.annotation.members.cant.have.params=\ - @interface \u30e1\u30f3\u30d0\u304c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.intf.annotation.cant.have.type.params=\ - @interface \u304c\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.intf.annotation.members.cant.have.type.params=\ - @interface \u30e1\u30f3\u30d0\u304c\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.intf.annotation.member.clash=\ - @interface \u30e1\u30f3\u30d0\u30fc\u306f {1} \u306e\u30e1\u30bd\u30c3\u30c9 ''{0}'' \u3068\u7af6\u5408\u3057\u307e\u3059 -compiler.err.intf.expected.here=\ - \u3053\u3053\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.intf.meth.cant.have.body=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.invalid.annotation.member.type=\ - \u6ce8\u91c8\u30e1\u30f3\u30d0\u306e\u578b\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.invalid.hex.number=\ - 16 \u9032\u6570\u306b\u306f 16 \u9032\u6570\u5b57\u304c\u6700\u4f4e 1 \u3064\u306f\u542b\u307e\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.invalid.meth.decl.ret.type.req=\ - \u30e1\u30bd\u30c3\u30c9\u306e\u5ba3\u8a00\u304c\u4e0d\u6b63\u3067\u3059\u3002\u623b\u308a\u5024\u306e\u578b\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.icls.cant.have.static.decl=\u5185\u90e8\u30af\u30e9\u30b9\u304c static \u5ba3\u8a00\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.illegal.bytecode.ident.char=\u4e0d\u6b63\u306a\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u8b58\u5225\u5b50\u3067\u3059: \\{0} +compiler.err.illegal.char=\\{0} \u306f\u4e0d\u6b63\u306a\u6587\u5b57\u3067\u3059\u3002 +compiler.err.illegal.char.for.encoding=\u3053\u306e\u6587\u5b57\u306f\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 {0} \u306b\u30de\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.illegal.combination.of.modifiers=\u4fee\u98fe\u5b50 {0} \u3068 {1} \u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.enum.static.ref=\u521d\u671f\u5316\u5b50\u304b\u3089 static \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u53c2\u7167\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.esc.char=\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.forward.ref=\u9806\u65b9\u5411\u53c2\u7167\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.warn.forward.ref=\u521d\u671f\u5316\u3055\u308c\u308b\u524d\u306e\u5909\u6570 ''{0}'' \u3092\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 +compiler.err.illegal.self.ref=\u521d\u671f\u5316\u5b50\u5185\u306b\u81ea\u5df1\u53c2\u7167\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.warn.self.ref=\u521d\u671f\u5316\u5b50\u5185\u306b\u5909\u6570 ''{0}'' \u306e\u81ea\u5df1\u53c2\u7167\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.err.illegal.generic.type.for.instof=instanceof \u306e\u7dcf\u79f0\u578b\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.initializer.for.type={0} \u306e\u521d\u671f\u5316\u5b50\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.line.end.in.char.lit=\u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u306e\u884c\u672b\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.nonascii.digit=\u4e0d\u6b63\u306a\u975e ASCII \u6570\u5b57\u3067\u3059\u3002 +compiler.err.illegal.underscore=\u4e0b\u7dda\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.qual.not.icls=\u4fee\u98fe\u5b50\u304c\u4e0d\u6b63\u3067\u3059\u3002{0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.illegal.start.of.expr=\u5f0f\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.start.of.type=\u578b\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.illegal.unicode.esc=Unicode \u30a8\u30b9\u30b1\u30fc\u30d7\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.import.requires.canonical=\u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u306f {0} \u306e\u6a19\u6e96\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.improperly.formed.type.param.missing=\u578b\u306e\u5f62\u5f0f\u304c\u4e0d\u9069\u5207\u3067\u3059\u3002\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.improperly.formed.type.inner.raw.param=\u578b\u306e\u5f62\u5f0f\u304c\u4e0d\u9069\u5207\u3067\u3059\u3002raw \u578b\u306b\u6307\u5b9a\u3055\u308c\u305f\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3059\u3002 +compiler.err.incomparable.types=\u578b {0} \u3068 {1} \u306f\u6bd4\u8f03\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.int.number.too.large=\u6574\u6570 {0} \u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002 +compiler.err.internal.error.cant.instantiate=\u5185\u90e8\u30a8\u30e9\u30fc\u3067\u3059\u3002{0} \u3092 {1} \u3067 ({2}) \u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.intf.annotation.members.cant.have.params=@interface \u30e1\u30f3\u30d0\u304c\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.intf.annotation.cant.have.type.params=@interface \u304c\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.intf.annotation.members.cant.have.type.params=@interface \u30e1\u30f3\u30d0\u304c\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.intf.annotation.member.clash=@interface \u30e1\u30f3\u30d0\u30fc\u306f {1} \u306e\u30e1\u30bd\u30c3\u30c9 ''{0}'' \u3068\u7af6\u5408\u3057\u307e\u3059 +compiler.err.intf.expected.here=\u3053\u3053\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.intf.meth.cant.have.body=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.invalid.annotation.member.type=\u6ce8\u91c8\u30e1\u30f3\u30d0\u306e\u578b\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.invalid.binary.number=2 \u9032\u6570\u306b\u306f 2 \u9032\u6570\u5b57\u304c\u6700\u4f4e 1 \u3064\u306f\u542b\u307e\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.invalid.hex.number=16 \u9032\u6570\u306b\u306f 16 \u9032\u6570\u5b57\u304c\u6700\u4f4e 1 \u3064\u306f\u542b\u307e\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.invalid.meth.decl.ret.type.req=\u30e1\u30bd\u30c3\u30c9\u306e\u5ba3\u8a00\u304c\u4e0d\u6b63\u3067\u3059\u3002\u623b\u308a\u5024\u306e\u578b\u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.label.already.in.use=\ - \u30e9\u30d9\u30eb {0} \u306f\u3059\u3067\u306b\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.local.var.accessed.from.icls.needs.final=\ - \u30ed\u30fc\u30ab\u30eb\u5909\u6570 {0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002final \u3067\u5ba3\u8a00\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.err.local.enum=\ - \u5217\u6319\u578b\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3044\u3051\u307e\u305b\u3093\u3002 +compiler.err.label.already.in.use=\u30e9\u30d9\u30eb {0} \u306f\u3059\u3067\u306b\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.local.var.accessed.from.icls.needs.final=\u30ed\u30fc\u30ab\u30eb\u5909\u6570 {0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002final \u3067\u5ba3\u8a00\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.err.local.enum=\u5217\u6319\u578b\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3044\u3051\u307e\u305b\u3093\u3002 +compiler.err.cannot.create.array.with.type.arguments=\u578b\u5f15\u6570\u3092\u4f7f\u3063\u3066\u914d\u5217\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002 # # limits. We don't give the limits in the diagnostic because we expect # them to change, yet we want to use the same diagnostic. These are all # detected during code generation. # -compiler.err.limit.code=\ - \u30b3\u30fc\u30c9\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.code.too.large.for.try.stmt=\ - try \u6587\u306e\u30b3\u30fc\u30c9\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.dimensions=\ - \u914d\u5217\u578b\u306e\u6b21\u5143\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.locals=\ - \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.parameters=\ - \u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.pool=\ - \u5b9a\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.pool.in.class=\ - \u30af\u30e9\u30b9 {0} \u5185\u306e\u5b9a\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.stack=\ - \u30b3\u30fc\u30c9\u304c\u8981\u6c42\u3059\u308b\u30b9\u30bf\u30c3\u30af\u304c\u591a\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.string=\ - \u5b9a\u6570\u6587\u5b57\u5217\u304c\u9577\u3059\u304e\u307e\u3059\u3002 -compiler.err.limit.string.overflow=\ - \u6587\u5b57\u5217 \"{0}...\" \u306e UTF8 \u8868\u73fe\u304c\u3001\u5b9a\u6570\u30d7\u30fc\u30eb\u306b\u5bfe\u3057\u3066\u9577\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.code=\u30b3\u30fc\u30c9\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.code.too.large.for.try.stmt=try \u6587\u306e\u30b3\u30fc\u30c9\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.dimensions=\u914d\u5217\u578b\u306e\u6b21\u5143\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.locals=\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.parameters=\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.pool=\u5b9a\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.pool.in.class=\u30af\u30e9\u30b9 {0} \u5185\u306e\u5b9a\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.stack=\u30b3\u30fc\u30c9\u304c\u8981\u6c42\u3059\u308b\u30b9\u30bf\u30c3\u30af\u304c\u591a\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.string=\u5b9a\u6570\u6587\u5b57\u5217\u304c\u9577\u3059\u304e\u307e\u3059\u3002 +compiler.err.limit.string.overflow=\u6587\u5b57\u5217 \"{0}...\" \u306e UTF8 \u8868\u73fe\u304c\u3001\u5b9a\u6570\u30d7\u30fc\u30eb\u306b\u5bfe\u3057\u3066\u9577\u3059\u304e\u307e\u3059\u3002 -compiler.err.malformed.fp.lit=\ - \u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.err.method.does.not.override.superclass=\ - \u30e1\u30bd\u30c3\u30c9\u306f\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u307e\u305f\u306f\u5b9f\u88c5\u3057\u307e\u305b\u3093 -compiler.err.missing.meth.body.or.decl.abstract=\ - \u30e1\u30bd\u30c3\u30c9\u672c\u4f53\u304c\u306a\u3044\u304b\u3001abstract \u3068\u3057\u3066\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.missing.ret.stmt=\ - return \u6587\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.missing.ret.val=\ - \u623b\u308a\u5024\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.mod.not.allowed.here=\ - \u4fee\u98fe\u5b50 {0} \u3092\u3053\u3053\u3067\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.intf.not.allowed.here=\ - \u3053\u3053\u3067\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093 -compiler.err.enums.must.be.static=\ - \u5217\u6319\u578b\u306e\u5ba3\u8a00\u306f static \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u3057\u304b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 +compiler.err.malformed.fp.lit=\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.err.method.does.not.override.superclass=\u30e1\u30bd\u30c3\u30c9\u306f\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u307e\u305f\u306f\u5b9f\u88c5\u3057\u307e\u305b\u3093 +compiler.err.missing.meth.body.or.decl.abstract=\u30e1\u30bd\u30c3\u30c9\u672c\u4f53\u304c\u306a\u3044\u304b\u3001abstract \u3068\u3057\u3066\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.missing.ret.stmt=return \u6587\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.missing.ret.val=\u623b\u308a\u5024\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.mod.not.allowed.here=\u4fee\u98fe\u5b50 {0} \u3092\u3053\u3053\u3067\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.intf.not.allowed.here=\u3053\u3053\u3067\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093 +compiler.err.enums.must.be.static=\u5217\u6319\u578b\u306e\u5ba3\u8a00\u306f static \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u3057\u304b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 -compiler.err.name.clash.same.erasure=\ - \u540d\u524d\u304c\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002{0} \u3068 {1} \u306f\u524a\u9664\u5f8c\u306e\u540d\u524d\u304c\u540c\u3058\u3067\u3059\u3002 -compiler.err.name.clash.same.erasure.no.override=\ - \u540d\u524d\u304c\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002{1} \u306e {0} \u3068 {3} \u306e {2} \u306f\u307e\u3060\u4ed6\u65b9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u524a\u9664\u5f8c\u306e\u540d\u524d\u304c\u540c\u3058\u3067\u3059\u3002 -compiler.err.name.reserved.for.internal.use=\ - {0} \u306f\u5185\u90e8\u3067\u306e\u4f7f\u7528\u306e\u305f\u3081\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.native.meth.cant.have.body=\ - native \u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.neither.conditional.subtype=\ - ? \u306b\u5bfe\u3059\u308b\u4e92\u63db\u6027\u306e\u306a\u3044\u578b : \u3069\u3061\u3089\u3082\u4ed6\u65b9\u306e\u30b5\u30d6\u30bf\u30a4\u30d7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\ - 2 \u756a\u76ee\u306e\u30aa\u30da\u30e9\u30f3\u30c9 : {0}\n\ - 3 \u756a\u76ee\u306e\u30aa\u30da\u30e9\u30f3\u30c9 : {1} -compiler.err.new.not.allowed.in.annotation=\ - ''new'' \u306f\u6ce8\u91c8\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 -compiler.err.no.annotation.member=\ - {1} \u306e\u6ce8\u91c8\u30e1\u30f3\u30d0 {0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.no.encl.instance.of.type.in.scope=\ - \u578b {0} \u306e\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.no.intf.expected.here=\ - \u3053\u3053\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.no.match.entry=\ - {0} \u306f {1} \u306e\u30a8\u30f3\u30c8\u30ea\u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002{2} \u304c\u5fc5\u8981\u3067\u3059\u3002 -compiler.err.not.annotation.type=\ - {0} \u306f\u6ce8\u91c8\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.not.def.access.class.intf.cant.access=\ - {1} \u306e {0} \u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059 -compiler.err.not.def.public.cant.access=\ - {1} \u306e {0} \u306f public \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u5916\u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.not.loop.label=\ - {0} \u306f\u30eb\u30fc\u30d7\u30e9\u30d9\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.not.stmt=\ - \u6587\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.not.encl.class=\ - {0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u307f\u307e\u305b\u3093\u3002 +compiler.err.name.clash.same.erasure=\u540d\u524d\u304c\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002{0} \u3068 {1} \u306f\u524a\u9664\u5f8c\u306e\u540d\u524d\u304c\u540c\u3058\u3067\u3059\u3002 +compiler.err.name.clash.same.erasure.no.override=\u540d\u524d\u304c\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002{1} \u306e {0} \u3068 {3} \u306e {2} \u306f\u307e\u3060\u4ed6\u65b9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u524a\u9664\u5f8c\u306e\u540d\u524d\u304c\u540c\u3058\u3067\u3059\u3002 +compiler.err.name.reserved.for.internal.use={0} \u306f\u5185\u90e8\u3067\u306e\u4f7f\u7528\u306e\u305f\u3081\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.native.meth.cant.have.body=native \u30e1\u30bd\u30c3\u30c9\u304c\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.neither.conditional.subtype=? \u306b\u5bfe\u3059\u308b\u4e92\u63db\u6027\u306e\u306a\u3044\u578b : \u3069\u3061\u3089\u3082\u4ed6\u65b9\u306e\u30b5\u30d6\u30bf\u30a4\u30d7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n2 \u756a\u76ee\u306e\u30aa\u30da\u30e9\u30f3\u30c9 : {0}\n3 \u756a\u76ee\u306e\u30aa\u30da\u30e9\u30f3\u30c9 : {1} +compiler.err.new.not.allowed.in.annotation=''new'' \u306f\u6ce8\u91c8\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 +compiler.err.no.annotation.member={1} \u306e\u6ce8\u91c8\u30e1\u30f3\u30d0 {0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.no.encl.instance.of.type.in.scope=\u578b {0} \u306e\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.no.intf.expected.here=\u3053\u3053\u306b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.no.match.entry={0} \u306f {1} \u306e\u30a8\u30f3\u30c8\u30ea\u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002{2} \u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.not.annotation.type={0} \u306f\u6ce8\u91c8\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.not.def.access.class.intf.cant.access={1} \u306e {0} \u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059 +compiler.err.not.def.public.cant.access={1} \u306e {0} \u306f public \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u5916\u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.not.loop.label={0} \u306f\u30eb\u30fc\u30d7\u30e9\u30d9\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.not.stmt=\u6587\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.not.encl.class={0} \u306f\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u307f\u307e\u305b\u3093\u3002 -compiler.err.operator.cant.be.applied=\ - \u6f14\u7b97\u5b50 {0} \u306f {1} \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.operator.cant.be.applied=\u6f14\u7b97\u5b50 {0} \u306f {1} \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.pkg.annotations.sb.in.package-info.java=\ - \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6ce8\u91c8\u306f\u30d5\u30a1\u30a4\u30eb package-info.java \u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.pkg.clashes.with.class.of.same.name=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u540c\u540d\u306e\u30af\u30e9\u30b9\u3068\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.err.pkg.annotations.sb.in.package-info.java=\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6ce8\u91c8\u306f\u30d5\u30a1\u30a4\u30eb package-info.java \u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.pkg.clashes.with.class.of.same.name=\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u540c\u540d\u306e\u30af\u30e9\u30b9\u3068\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002 + +compiler.err.warnings.and.werror=\u8b66\u544a\u3092\u691c\u51fa\u3057 -Werror \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 # Errors related to annotation processing -compiler.err.proc.cant.access=\ -{0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\n\ -{1}\n\ -\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\ -{2} +compiler.err.proc.cant.access={0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\n{1}\n\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n{2} -compiler.err.proc.cant.find.class=\ - ''{0}'' \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +compiler.err.proc.cant.find.class=''{0}'' \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 # Print a client-generated error message; assumed to be localized, no translation required -compiler.err.proc.messager=\ - {0} +compiler.err.proc.messager={0} -compiler.err.proc.no.explicit.annotation.processing.requested=\ - \u30af\u30e9\u30b9\u540d ''{0}'' \u304c\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u306e\u306f\u3001\u6ce8\u91c8\u51e6\u7406\u304c\u660e\u793a\u7684\u306b\u8981\u6c42\u3055\u308c\u305f\u5834\u5408\u3060\u3051\u3067\u3059 +compiler.err.proc.no.explicit.annotation.processing.requested=\u30af\u30e9\u30b9\u540d ''{0}'' \u304c\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u306e\u306f\u3001\u6ce8\u91c8\u51e6\u7406\u304c\u660e\u793a\u7684\u306b\u8981\u6c42\u3055\u308c\u305f\u5834\u5408\u3060\u3051\u3067\u3059 -compiler.err.proc.processor.bad.option.name=\ - \u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u306b\u3088\u3063\u3066\u6307\u5b9a\u3055\u308c\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u540d ''{0}'' \u304c\u4e0d\u6b63\u3067\u3059 +compiler.err.proc.no.service=\u30b5\u30fc\u30d3\u30b9\u30ed\u30fc\u30c0\u30fc\u30af\u30e9\u30b9\u304c\u307f\u3064\u304b\u308a\u307e\u305b\u3093\u3002\njava.util.ServiceLoader \u3082\u3057\u304f\u306f sun.misc.Service \u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.err.proc.processor.cant.instantiate=\ - \u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +compiler.err.proc.processor.bad.option.name=\u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u306b\u3088\u3063\u3066\u6307\u5b9a\u3055\u308c\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u540d ''{0}'' \u304c\u4e0d\u6b63\u3067\u3059 -compiler.err.proc.processor.constructor.error=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u7bc9\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f: {0} +compiler.err.proc.processor.cant.instantiate=\u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -compiler.err.proc.processor.not.found=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +compiler.err.proc.processor.constructor.error=\u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u7bc9\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f: {0} -compiler.err.proc.processor.wrong.type=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u304c javax.annotation.processing.Processor \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093 +compiler.err.proc.processor.not.found=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -compiler.err.proc.bad.config.file=\ - \u30b5\u30fc\u30d3\u30b9\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u304c\u4e0d\u6b63\u3067\u3042\u308b\u304b\u3001\u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u7bc9\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f: {0} +compiler.err.proc.processor.wrong.type=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{0}'' \u304c javax.annotation.processing.Processor \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093 -compiler.err.proc.cant.create.loader=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +compiler.err.proc.service.problem=Processor \u3092\u30ed\u30fc\u30c9\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u30ed\u30fc\u30c0\u30fc\u306e\u751f\u6210\u6642\u306e\u30a8\u30e9\u30fc\u3067\u3059\u3002 -compiler.err.qualified.new.of.static.class=\ - static \u30af\u30e9\u30b9\u306e new \u304c\u4fee\u98fe\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.proc.bad.config.file=\u30b5\u30fc\u30d3\u30b9\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u304c\u4e0d\u6b63\u3067\u3042\u308b\u304b\u3001\u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u7bc9\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f: {0} -compiler.err.recursive.ctor.invocation=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u304c\u518d\u5e30\u7684\u3067\u3059\u3002 -compiler.err.ref.ambiguous=\ - {0} \u306e\u53c2\u7167\u306f\u3042\u3044\u307e\u3044\u3067\u3059\u3002{3} \u306e {1} {2} \u3068 {6} \u306e {4} {5} \u304c\u4e21\u65b9\u9069\u5408\u3057\u307e\u3059\u3002 -compiler.err.repeated.annotation.target=\ - \u6ce8\u91c8\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.repeated.interface=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.repeated.modifier=\ - \u4fee\u98fe\u5b50\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.report.access=\ - {0} \u306f {2} \u3067 {1} \u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002 -compiler.err.ret.outside.meth=\ - \u30e1\u30bd\u30c3\u30c9\u306e\u5916\u306e return \u6587\u3067\u3059\u3002 +compiler.err.proc.cant.create.loader=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} -compiler.err.signature.doesnt.match.supertype=\ - \u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c {0} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\u4e92\u63db\u6027\u306e\u306a\u3044\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u3067\u3059\u3002 -compiler.err.signature.doesnt.match.intf=\ - \u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c {0} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\u4e92\u63db\u6027\u306e\u306a\u3044\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002 -compiler.err.does.not.override.abstract=\ - {0} \u306f abstract \u3067\u306a\u304f\u3001{2} \u5185\u306e abstract \u30e1\u30bd\u30c3\u30c9 {1} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u305b\u3093\u3002 -compiler.err.source.cant.overwrite.input.file=\ - \u30bd\u30fc\u30b9\u306e\u66f8\u304d\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002\u5165\u529b\u30d5\u30a1\u30a4\u30eb {0} \u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.stack.sim.error=\ - \u5185\u90e8\u30a8\u30e9\u30fc: {0} \u3067\u306e\u30b9\u30bf\u30c3\u30af\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc -compiler.err.static.imp.only.classes.and.interfaces=\ - static import \u306f\u30af\u30e9\u30b9\u3068\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u3089\u306e\u307f\u3068\u306a\u308a\u307e\u3059\u3002 -compiler.err.synthetic.name.conflict=\ - \u30b7\u30f3\u30dc\u30eb {0} \u304c\u3001{1} \u3067\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u5408\u6210\u3057\u305f\u30b7\u30f3\u30dc\u30eb\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 +compiler.err.qualified.new.of.static.class=static \u30af\u30e9\u30b9\u306e new \u304c\u4fee\u98fe\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.err.throws.not.allowed.in.intf.annotation=\ - throws \u7bc0\u3092 @interface \u30e1\u30f3\u30d0\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.try.without.catch.or.finally=\ - ''try'' \u3078\u306e ''catch'' \u307e\u305f\u306f ''finally'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.type.doesnt.take.params=\ - \u578b {0} \u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u3068\u308a\u307e\u305b\u3093\u3002 -compiler.err.type.var.cant.be.deref=\ - \u578b\u5909\u6570\u304b\u3089\u9078\u629e\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.type.var.may.not.be.followed.by.other.bounds=\ - \u3053\u306e\u578b\u5909\u6570\u306e\u5f8c\u308d\u306b\u4ed6\u306e\u5883\u754c\u3092\u914d\u7f6e\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.type.var.more.than.once=\ - \u578b\u5909\u6570 {0} \u306f {1} \u306e\u623b\u308a\u5024\u306e\u578b\u3067 2 \u56de\u4ee5\u4e0a\u51fa\u73fe\u3057\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3055\u308c\u306a\u3044\u307e\u307e\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.type.var.more.than.once.in.result=\ - \u578b\u5909\u6570 {0} \u306f {1} \u306e\u578b\u3067 2 \u56de\u4ee5\u4e0a\u51fa\u73fe\u3057\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3055\u308c\u306a\u3044\u307e\u307e\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.types.incompatible.diff.ret=\ - \u578b {0} \u3068\u578b {1} \u306e\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u4e21\u65b9\u3068\u3082 {2} \u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u623b\u308a\u5024\u306e\u578b\u304c\u7121\u95a2\u4fc2\u3067\u3059\u3002 +compiler.err.recursive.ctor.invocation=\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u304c\u518d\u5e30\u7684\u3067\u3059\u3002 +compiler.err.ref.ambiguous={0} \u306e\u53c2\u7167\u306f\u3042\u3044\u307e\u3044\u3067\u3059\u3002{3} \u306e {1} {2} \u3068 {6} \u306e {4} {5} \u304c\u4e21\u65b9\u9069\u5408\u3057\u307e\u3059\u3002 +compiler.err.repeated.annotation.target=\u6ce8\u91c8\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.repeated.interface=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.repeated.modifier=\u4fee\u98fe\u5b50\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.err.report.access={0} \u306f {2} \u3067 {1} \u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002 +compiler.err.ret.outside.meth=\u30e1\u30bd\u30c3\u30c9\u306e\u5916\u306e return \u6587\u3067\u3059\u3002 -compiler.err.unclosed.char.lit=\ - \u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.unclosed.comment=\ - \u30b3\u30e1\u30f3\u30c8\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.unclosed.str.lit=\ - \u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.unknown.enum.constant=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u5185: \u4e0d\u660e\u306a\u5217\u6319\u578b\u5b9a\u6570\u3067\u3059 {1}.{2} -compiler.err.unsupported.encoding=\ - \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059: {0} -compiler.err.io.exception=\ - \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a8\u30e9\u30fc\u3067\u3059: {0} -compiler.err.undef.label=\ - \u30e9\u30d9\u30eb {0} \u306f\u672a\u5b9a\u7fa9\u3067\u3059\u3002 -compiler.err.undetermined.type=\ - {0} \u306e\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5224\u5225\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.err.undetermined.type.1=\ - \u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u3092\u5224\u5225\u3067\u304d\u307e\u305b\u3093; {1} -compiler.err.unreachable.stmt=\ - \u3053\u306e\u6587\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.initializer.must.be.able.to.complete.normally=\ - \u521d\u671f\u5316\u5b50\u306f\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.unreported.exception.need.to.catch.or.throw=\ - \u4f8b\u5916 {0} \u306f\u5831\u544a\u3055\u308c\u307e\u305b\u3093\u3002\u30b9\u30ed\u30fc\u3059\u308b\u306b\u306f\u30ad\u30e3\u30c3\u30c1\u307e\u305f\u306f\u3001\u30b9\u30ed\u30fc\u5ba3\u8a00\u3092\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.err.unreported.exception.default.constructor=\ - \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u5185\u306b\u5831\u544a\u3055\u308c\u306a\u3044\u4f8b\u5916 {0} \u304c\u5b58\u5728\u3057\u307e\u3059\u3002 -compiler.err.unsupported.cross.fp.lit=\ - 16 \u9032\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u306f\u3053\u306e VM \u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.err.void.not.allowed.here=\ - \u3053\u3053\u3067 ''void'' \u578b\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.signature.doesnt.match.supertype=\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c {0} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\u4e92\u63db\u6027\u306e\u306a\u3044\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7\u3067\u3059\u3002 +compiler.err.signature.doesnt.match.intf=\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c {0} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\u4e92\u63db\u6027\u306e\u306a\u3044\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002 +compiler.err.does.not.override.abstract={0} \u306f abstract \u3067\u306a\u304f\u3001{2} \u5185\u306e abstract \u30e1\u30bd\u30c3\u30c9 {1} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u305b\u3093\u3002 +compiler.err.source.cant.overwrite.input.file=\u30bd\u30fc\u30b9\u306e\u66f8\u304d\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002\u5165\u529b\u30d5\u30a1\u30a4\u30eb {0} \u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.stack.sim.error=\u5185\u90e8\u30a8\u30e9\u30fc: {0} \u3067\u306e\u30b9\u30bf\u30c3\u30af\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc +compiler.err.static.imp.only.classes.and.interfaces=static import \u306f\u30af\u30e9\u30b9\u3068\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u3089\u306e\u307f\u3068\u306a\u308a\u307e\u3059\u3002 +compiler.err.string.const.req=\u5b9a\u6570\u6587\u5b57\u5217\u5f0f\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.synthetic.name.conflict=\u30b7\u30f3\u30dc\u30eb {0} \u304c\u3001{1} \u3067\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u5408\u6210\u3057\u305f\u30b7\u30f3\u30dc\u30eb\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 +compiler.warn.synthetic.name.conflict=\u30b7\u30f3\u30dc\u30eb {0} \u304c\u3001{1} \u3067\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u5408\u6210\u3057\u305f\u30b7\u30f3\u30dc\u30eb\u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -compiler.err.wrong.number.type.args=\ - \u578b\u5f15\u6570\u306e\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002{0} \u500b\u5fc5\u8981\u3067\u3059\u3002 +compiler.err.throws.not.allowed.in.intf.annotation=throws \u7bc0\u3092 @interface \u30e1\u30f3\u30d0\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.try.without.catch.or.finally=''try'' \u3078\u306e ''catch'' \u307e\u305f\u306f ''finally'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.type.doesnt.take.params=\u578b {0} \u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u3068\u308a\u307e\u305b\u3093\u3002 +compiler.err.type.var.cant.be.deref=\u578b\u5909\u6570\u304b\u3089\u9078\u629e\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.type.var.may.not.be.followed.by.other.bounds=\u3053\u306e\u578b\u5909\u6570\u306e\u5f8c\u308d\u306b\u4ed6\u306e\u5883\u754c\u3092\u914d\u7f6e\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.type.var.more.than.once=\u578b\u5909\u6570 {0} \u306f {1} \u306e\u623b\u308a\u5024\u306e\u578b\u3067 2 \u56de\u4ee5\u4e0a\u51fa\u73fe\u3057\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3055\u308c\u306a\u3044\u307e\u307e\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.type.var.more.than.once.in.result=\u578b\u5909\u6570 {0} \u306f {1} \u306e\u578b\u3067 2 \u56de\u4ee5\u4e0a\u51fa\u73fe\u3057\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u751f\u6210\u3055\u308c\u306a\u3044\u307e\u307e\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.types.incompatible.diff.ret=\u578b {0} \u3068\u578b {1} \u306e\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u4e21\u65b9\u3068\u3082 {2} \u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u623b\u308a\u5024\u306e\u578b\u304c\u7121\u95a2\u4fc2\u3067\u3059\u3002 -compiler.err.var.might.already.be.assigned=\ - \u5909\u6570 {0} \u306f\u3059\u3067\u306b\u4ee3\u5165\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.err.var.might.not.have.been.initialized=\ - \u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.err.var.might.be.assigned.in.loop=\ - \u5909\u6570 {0} \u306f\u30eb\u30fc\u30d7\u5185\u3067\u4ee3\u5165\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.err.unclosed.bytecode.ident=\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u8b58\u5225\u5b50\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.unclosed.char.lit=\u6587\u5b57\u30ea\u30c6\u30e9\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.unclosed.comment=\u30b3\u30e1\u30f3\u30c8\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.unclosed.str.lit=\u6587\u5b57\u5217\u30ea\u30c6\u30e9\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.unknown.enum.constant=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u5185: \u4e0d\u660e\u306a\u5217\u6319\u578b\u5b9a\u6570\u3067\u3059 {1}.{2} +compiler.err.unsupported.encoding=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u3059: {0} +compiler.err.io.exception=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a8\u30e9\u30fc\u3067\u3059: {0} +compiler.err.undef.label=\u30e9\u30d9\u30eb {0} \u306f\u672a\u5b9a\u7fa9\u3067\u3059\u3002 +compiler.err.undetermined.type={0} \u306e\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5224\u5225\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.undetermined.type.1=\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u3092\u5224\u5225\u3067\u304d\u307e\u305b\u3093; {1} +compiler.err.invalid.inferred.types={0} \u306e\u63a8\u5b9a\u3055\u308c\u305f\u578b\u304c\u4e0d\u6b63\u3067\u3059; {1} +compiler.err.unreachable.stmt=\u3053\u306e\u6587\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.initializer.must.be.able.to.complete.normally=\u521d\u671f\u5316\u5b50\u306f\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.unreported.exception.need.to.catch.or.throw=\u4f8b\u5916 {0} \u306f\u5831\u544a\u3055\u308c\u307e\u305b\u3093\u3002\u30b9\u30ed\u30fc\u3059\u308b\u306b\u306f\u30ad\u30e3\u30c3\u30c1\u307e\u305f\u306f\u3001\u30b9\u30ed\u30fc\u5ba3\u8a00\u3092\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.unreported.exception.default.constructor=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u5185\u306b\u5831\u544a\u3055\u308c\u306a\u3044\u4f8b\u5916 {0} \u304c\u5b58\u5728\u3057\u307e\u3059\u3002 +compiler.err.unsupported.cross.fp.lit=16 \u9032\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u306f\u3053\u306e VM \u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.err.void.not.allowed.here=\u3053\u3053\u3067 ''void'' \u578b\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 + +compiler.err.wrong.number.type.args=\u578b\u5f15\u6570\u306e\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002{0} \u500b\u5fc5\u8981\u3067\u3059\u3002 + +compiler.err.var.might.already.be.assigned=\u5909\u6570 {0} \u306f\u3059\u3067\u306b\u4ee3\u5165\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.err.var.might.not.have.been.initialized=\u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.err.var.might.be.assigned.in.loop=\u5909\u6570 {0} \u306f\u30eb\u30fc\u30d7\u5185\u3067\u4ee3\u5165\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 # In the following string, {1} will always be the detail message from # java.io.IOException. -compiler.err.class.cant.write=\ - {0} \u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002{1} +compiler.err.class.cant.write={0} \u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002{1} # In the following string, {0} is the name of the class in the Java source. # It really should be used two times.. -compiler.err.class.public.should.be.in.file=\ - \u30af\u30e9\u30b9 {0} \u306f public \u3067\u3042\u308a\u3001\u30d5\u30a1\u30a4\u30eb {0}.java \u3067\u5ba3\u8a00\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.err.class.public.should.be.in.file=\u30af\u30e9\u30b9 {0} \u306f public \u3067\u3042\u308a\u3001\u30d5\u30a1\u30a4\u30eb {0}.java \u3067\u5ba3\u8a00\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 ## All errors which do not refer to a particular line in the source code are ## preceded by this string. -compiler.err.error=\ - \u30a8\u30e9\u30fc: +compiler.err.error=\u30a8\u30e9\u30fc: # The following error messages do not refer to a line in the source code. -compiler.err.cant.read.file=\ - {0} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002 +compiler.err.cant.read.file={0} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002 ##### # Fatal Errors -compiler.misc.fatal.err.no.java.lang=\ - \u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30af\u30e9\u30b9\u30d1\u30b9\u307e\u305f\u306f\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9\u3067\u30d1\u30c3\u30b1\u30fc\u30b8 java.lang \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.fatal.err.cant.locate.meth=\ - \u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30e1\u30bd\u30c3\u30c9 {0} \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.fatal.err.cant.locate.field=\ - \u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.fatal.err.cant.locate.ctor=\ - \u81f4\u547d\u7684\u30a8\u30e9\u30fc: {0} \u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.fatal.err.no.java.lang=\u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30af\u30e9\u30b9\u30d1\u30b9\u307e\u305f\u306f\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9\u3067\u30d1\u30c3\u30b1\u30fc\u30b8 java.lang \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.fatal.err.cant.locate.meth=\u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30e1\u30bd\u30c3\u30c9 {0} \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.fatal.err.cant.locate.field=\u81f4\u547d\u7684\u30a8\u30e9\u30fc: \u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.fatal.err.cant.locate.ctor=\u81f4\u547d\u7684\u30a8\u30e9\u30fc: {0} \u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 ##### @@ -503,107 +312,81 @@ compiler.misc.fatal.err.cant.locate.ctor=\ ## miscellaneous strings ## -compiler.misc.source.unavailable=\ - (\u30bd\u30fc\u30b9\u304c\u5229\u7528\u4e0d\u53ef) -compiler.misc.base.membership=\ - \u3059\u3079\u3066\u306e\u57fa\u5e95\u30af\u30e9\u30b9\u304c\u3001\u30e1\u30f3\u30d0\u3067\u3059\u3002 -compiler.misc.x.print.processor.info=\ - \u30d7\u30ed\u30bb\u30c3\u30b5 {0} \u306f {1} \u306b\u4e00\u81f4\u3057\u3001{2} \u3092\u8fd4\u3057\u307e\u3059\u3002 -compiler.misc.x.print.rounds=\ - \u5f80\u5fa9 {0}:\n\t\u5165\u529b\u30d5\u30a1\u30a4\u30eb: {1}\n\t\u6ce8\u91c8: {2}\n\t\u6700\u5f8c\u306e\u5f80\u5fa9: {3} +compiler.misc.source.unavailable=(\u30bd\u30fc\u30b9\u304c\u5229\u7528\u4e0d\u53ef) +compiler.misc.base.membership=\u3059\u3079\u3066\u306e\u57fa\u5e95\u30af\u30e9\u30b9\u304c\u3001\u30e1\u30f3\u30d0\u3067\u3059\u3002 +compiler.misc.x.print.processor.info=\u30d7\u30ed\u30bb\u30c3\u30b5 {0} \u306f {1} \u306b\u4e00\u81f4\u3057\u3001{2} \u3092\u8fd4\u3057\u307e\u3059\u3002 +compiler.misc.x.print.rounds=\u5f80\u5fa9 {0}:\n\t\u5165\u529b\u30d5\u30a1\u30a4\u30eb: {1}\n\t\u6ce8\u91c8: {2}\n\t\u6700\u5f8c\u306e\u5f80\u5fa9: {3} ##### ## The following string will appear before all messages keyed as: ## "compiler.note". -compiler.note.note=\ - \u6ce8: +compiler.note.note=\u6ce8: -compiler.note.deprecated.filename=\ - {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 -compiler.note.deprecated.plural=\ - \u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.note.deprecated.filename={0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.note.deprecated.plural=\u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 # The following string may appear after one of the above deprecation # messages. -compiler.note.deprecated.recompile=\ - \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001-Xlint:deprecation \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +compiler.note.deprecated.recompile=\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001-Xlint:deprecation \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -compiler.note.deprecated.filename.additional=\ - {0} \u306b\u63a8\u5968\u3055\u308c\u306a\u3044 API \u306e\u8ffd\u52a0\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.note.deprecated.plural.additional=\ - \u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u8ffd\u52a0\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 +compiler.note.deprecated.filename.additional={0} \u306b\u63a8\u5968\u3055\u308c\u306a\u3044 API \u306e\u8ffd\u52a0\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.note.deprecated.plural.additional=\u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u8ffd\u52a0\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 + +compiler.note.unchecked.filename={0} \u306e\u64cd\u4f5c\u306f\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.note.unchecked.plural=\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u64cd\u4f5c\u306e\u3046\u3061\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002 +# The following string may appear after one of the above deprecation +# messages. +compiler.note.unchecked.recompile=\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001-Xlint:unchecked \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 + +compiler.note.unchecked.filename.additional={0} \u306b\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u64cd\u4f5c\u304c\u3055\u3089\u306b\u3042\u308a\u307e\u3059\u3002 +compiler.note.unchecked.plural.additional=\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u64cd\u4f5c\u306e\u3046\u3061\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u3082\u306e\u304c\u3055\u3089\u306b\u3042\u308a\u307e\u3059\u3002 + +compiler.note.sunapi.filename={0} \u306f\u4eca\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u524a\u9664\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3001Sun \u304c\u6240\u6709\u3059\u308b API \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 +compiler.note.sunapi.plural=\u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u4eca\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u524a\u9664\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3001Sun \u304c\u6240\u6709\u3059\u308b API \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 +# The following string may appear after one of the above sunapi messages. +compiler.note.sunapi.recompile=\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001-Xlint:sunapi \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 + +compiler.note.sunapi.filename.additional={0} \u306f\u4eca\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u524a\u9664\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3001Sun \u304c\u6240\u6709\u3059\u308b API \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 +compiler.note.sunapi.plural.additional=\u4e00\u90e8\u306e\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306f\u4eca\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u524a\u9664\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3001Sun \u304c\u6240\u6709\u3059\u308b API \u3092\u8ffd\u52a0\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002 # Notes related to annotation processing # Print a client-generated note; assumed to be localized, no translation required -compiler.note.proc.messager=\ - {0} - -compiler.note.unchecked.filename=\ - {0} \u306e\u64cd\u4f5c\u306f\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.note.unchecked.plural=\ - \u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u64cd\u4f5c\u306e\u3046\u3061\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002 -# The following string may appear after one of the above deprecation -# messages. -compiler.note.unchecked.recompile=\ - \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001-Xlint:unchecked \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - -compiler.note.unchecked.filename.additional=\ - {0} \u306b\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u64cd\u4f5c\u304c\u3055\u3089\u306b\u3042\u308a\u307e\u3059\u3002 -compiler.note.unchecked.plural.additional=\ - \u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u64cd\u4f5c\u306e\u3046\u3061\u3001\u672a\u30c1\u30a7\u30c3\u30af\u307e\u305f\u306f\u5b89\u5168\u3067\u306f\u306a\u3044\u3082\u306e\u304c\u3055\u3089\u306b\u3042\u308a\u307e\u3059\u3002 +compiler.note.proc.messager={0} ##### -compiler.misc.count.error=\ - \u30a8\u30e9\u30fc {0} \u500b -compiler.misc.count.error.plural=\ - \u30a8\u30e9\u30fc {0} \u500b -compiler.misc.count.warn=\ - \u8b66\u544a {0} \u500b -compiler.misc.count.warn.plural=\ - \u8b66\u544a {0} \u500b +compiler.misc.count.error=\u30a8\u30e9\u30fc {0} \u500b +compiler.misc.count.error.plural=\u30a8\u30e9\u30fc {0} \u500b +compiler.misc.count.warn=\u8b66\u544a {0} \u500b +compiler.misc.count.warn.plural=\u8b66\u544a {0} \u500b ## extra output when using -verbose (JavaCompiler) -compiler.misc.verbose.checking.attribution=\ - [{0} \u3092\u78ba\u8a8d\u4e2d] -compiler.misc.verbose.parsing.done=\ - [{0}ms \u3067\u69cb\u6587\u89e3\u6790\u5b8c\u4e86] -compiler.misc.verbose.parsing.started=\ - [{0} \u3092\u69cb\u6587\u89e3\u6790\u958b\u59cb] -compiler.misc.verbose.total=\ - [\u5408\u8a08 {0}ms] -compiler.misc.verbose.wrote.file=\ - [{0} \u3092\u66f8\u304d\u8fbc\u307f\u5b8c\u4e86] +compiler.misc.verbose.checking.attribution=[{0} \u3092\u78ba\u8a8d\u4e2d] +compiler.misc.verbose.parsing.done=[{0}ms \u3067\u69cb\u6587\u89e3\u6790\u5b8c\u4e86] +compiler.misc.verbose.parsing.started=[{0} \u3092\u69cb\u6587\u89e3\u6790\u958b\u59cb] +compiler.misc.verbose.total=[\u5408\u8a08 {0}ms] +compiler.misc.verbose.wrote.file=[{0} \u3092\u66f8\u304d\u8fbc\u307f\u5b8c\u4e86] ## extra output when using -verbose (Retro) -compiler.misc.verbose.retro=\ - [{0} \u3092\u7d44\u307f\u66ff\u3048\u4e2d] -compiler.misc.verbose.retro.with=\ - \{0} \u3092 {1} \u3067\u7d44\u307f\u66ff\u3048\u4e2d\u3067\u3059\u3002 -compiler.misc.verbose.retro.with.list=\ - \{0} \u3092\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {1}\u3001\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7 {2}\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {3} \u3067\u7d44\u307f\u66ff\u3048\u4e2d\u3067\u3059\u3002 +compiler.misc.verbose.retro=[{0} \u3092\u7d44\u307f\u66ff\u3048\u4e2d] +compiler.misc.verbose.retro.with=\{0} \u3092 {1} \u3067\u7d44\u307f\u66ff\u3048\u4e2d\u3067\u3059\u3002 +compiler.misc.verbose.retro.with.list=\{0} \u3092\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {1}\u3001\u30b9\u30fc\u30d1\u30fc\u30bf\u30a4\u30d7 {2}\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {3} \u3067\u7d44\u307f\u66ff\u3048\u4e2d\u3067\u3059\u3002 ## extra output when using -verbose (code/ClassReader) -compiler.misc.verbose.loading=\ - [{0} \u3092\u8aad\u307f\u8fbc\u307f\u4e2d] +compiler.misc.verbose.loading=[{0} \u3092\u8aad\u307f\u8fbc\u307f\u4e2d] -compiler.misc.verbose.sourcepath=\ - [\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u30d1\u30b9: {0}] +compiler.misc.verbose.sourcepath=[\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u30d1\u30b9: {0}] -compiler.misc.verbose.classpath=\ - [\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u30d1\u30b9: {0}] +compiler.misc.verbose.classpath=[\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u30d1\u30b9: {0}] ## extra output when using -checkclassfile (code/ClassReader) -compiler.misc.ccf.found.later.version=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e88\u60f3\u5916\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.misc.ccf.unrecognized.attribute=\ - {0} \u306f\u8a8d\u8b58\u3055\u308c\u306a\u3044\u5c5e\u6027\u3067\u3059\u3002 +compiler.misc.ccf.found.later.version=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e88\u60f3\u5916\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.misc.ccf.unrecognized.attribute={0} \u306f\u8a8d\u8b58\u3055\u308c\u306a\u3044\u5c5e\u6027\u3067\u3059\u3002 ## extra output when using -prompt (util/Log) -compiler.misc.resume.abort=\ - R)\u518d\u958b, A)\u4e2d\u6b62> +compiler.misc.resume.abort=R)\u518d\u958b, A)\u4e2d\u6b62> ##### @@ -612,165 +395,109 @@ compiler.misc.resume.abort=\ ## ## All warning messages are preceded by the following string. -compiler.warn.warning=\ - \u8b66\u544a: +compiler.warn.warning=\u8b66\u544a: -compiler.warn.constant.SVUID=\ - [serial] serialVersionUID \u306f\u30af\u30e9\u30b9 {0} \u306e\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.warn.constant.SVUID=[serial] serialVersionUID \u306f\u30af\u30e9\u30b9 {0} \u306e\u5b9a\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.warn.dir.path.element.not.found=\ - [path] \u4e0d\u6b63\u306a\u30d1\u30b9\u8981\u7d20 "{0}": \u305d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +compiler.warn.dir.path.element.not.found=[path] \u4e0d\u6b63\u306a\u30d1\u30b9\u8981\u7d20 "{0}": \u305d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -compiler.warn.finally.cannot.complete=\ - [finally] finally \u7bc0\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.warn.finally.cannot.complete=[finally] finally \u7bc0\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.warn.has.been.deprecated=\ - [deprecation] {1} \u306e {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 +compiler.warn.has.been.deprecated=[deprecation] {1} \u306e {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002 -compiler.warn.illegal.char.for.encoding=\ - \u3053\u306e\u6587\u5b57\u306f\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 {0} \u306b\u30de\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.warn.improper.SVUID=\ - [serial] serialVersionUID \u306f\u3001\u30af\u30e9\u30b9 {0} \u306b static \u30d5\u30a1\u30a4\u30ca\u30eb\u3092\u5ba3\u8a00\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.warn.sun.proprietary={0} \u306f Sun \u304c\u6240\u6709\u3059\u308b API \u3067\u3042\u308a\u3001\u4eca\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u524a\u9664\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059 -compiler.warn.inexact.non-varargs.call=\ -\u6700\u7d42\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e0d\u6b63\u78ba\u306a\u5f15\u6570\u578b\u3092\u6301\u3063\u305f\u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u306e\u975e\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057;\n\ -\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057\u306b\u95a2\u3057\u3066\u306f {0} \u306b\u30ad\u30e3\u30b9\u30c8\u3057\u307e\u3059\u3002\n\ -\u975e\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057\u306b\u95a2\u3057\u3066\u306f {1} \u306b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u3053\u306e\u8b66\u544a\u3092\u51fa\u3055\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002 +compiler.warn.illegal.char.for.encoding=\u3053\u306e\u6587\u5b57\u306f\u3001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0 {0} \u306b\u30de\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.warn.improper.SVUID=[serial] serialVersionUID \u306f\u3001\u30af\u30e9\u30b9 {0} \u306b static \u30d5\u30a1\u30a4\u30ca\u30eb\u3092\u5ba3\u8a00\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.warn.long.SVUID=\ - [serial] serialVersionUID \u306f\u3001\u30af\u30e9\u30b9 {0} \u306e long \u578b\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +compiler.warn.inexact.non-varargs.call=\u6700\u7d42\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u4e0d\u6b63\u78ba\u306a\u5f15\u6570\u578b\u3092\u6301\u3063\u305f\u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u306e\u975e\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057;\n\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057\u306b\u95a2\u3057\u3066\u306f {0} \u306b\u30ad\u30e3\u30b9\u30c8\u3057\u307e\u3059\u3002\n\u975e\u53ef\u5909\u5f15\u6570\u547c\u3073\u51fa\u3057\u306b\u95a2\u3057\u3066\u306f {1} \u306b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u3053\u306e\u8b66\u544a\u3092\u51fa\u3055\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002 -compiler.warn.missing.SVUID=\ - [serial] \u76f4\u5217\u5316\u53ef\u80fd\u306a\u30af\u30e9\u30b9 {0} \u306b\u306f\u3001serialVersionUID \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.warn.long.SVUID=[serial] serialVersionUID \u306f\u3001\u30af\u30e9\u30b9 {0} \u306e long \u578b\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 -compiler.warn.override.varargs.missing=\ - {0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306b\u306f ''...'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.warn.override.varargs.extra=\ - {0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30e1\u30bd\u30c3\u30c9\u306b\u306f ''...'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.warn.override.bridge=\ - {0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f\u30d6\u30ea\u30c3\u30b8\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 +compiler.warn.missing.SVUID=[serial] \u76f4\u5217\u5316\u53ef\u80fd\u306a\u30af\u30e9\u30b9 {0} \u306b\u306f\u3001serialVersionUID \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.warn.pkg-info.already.seen=\ - [package-info] package-info.java \u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u7528\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -compiler.warn.path.element.not.found=\ - [path] \u4e0d\u6b63\u306a\u30d1\u30b9\u8981\u7d20 "{0}": \u305d\u306e\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.warn.possible.fall-through.into.case=\ - [fallthrough] case \u306b fall-through \u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.warn.override.varargs.missing={0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306b\u306f ''...'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.warn.override.varargs.extra={0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30e1\u30bd\u30c3\u30c9\u306b\u306f ''...'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.warn.override.bridge={0}; \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f\u30d6\u30ea\u30c3\u30b8\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002 -compiler.warn.redundant.cast=\ - [cast] {0} \u3078\u306e\u5197\u9577\u306a\u30ad\u30e3\u30b9\u30c8\u3067\u3059 +compiler.warn.pkg-info.already.seen=[package-info] package-info.java \u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u7528\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +compiler.warn.path.element.not.found=[path] \u4e0d\u6b63\u306a\u30d1\u30b9\u8981\u7d20 "{0}": \u305d\u306e\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.warn.possible.fall-through.into.case=[fallthrough] case \u306b fall-through \u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.warn.position.overflow=\ - \u4f4d\u7f6e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u884c {0} \u3067\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3059 +compiler.warn.redundant.cast=[cast] {0} \u3078\u306e\u5197\u9577\u306a\u30ad\u30e3\u30b9\u30c8\u3067\u3059 -compiler.warn.big.major.version=\ - {0}: \u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u306f\u3001\u3053\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u6700\u65b0\u306e\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 {2} \u3088\u308a\u65b0\u3057\u3044\u3067\u3059\u3002\n\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 +compiler.warn.position.overflow=\u4f4d\u7f6e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u884c {0} \u3067\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3059 + +compiler.warn.big.major.version={0}: \u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u306f\u3001\u3053\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u6700\u65b0\u306e\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 {2} \u3088\u308a\u65b0\u3057\u3044\u3067\u3059\u3002\n\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 # Warnings related to annotation processing -compiler.warn.proc.package.does.not.exist=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093 -compiler.warn.proc.file.reopening=\ - ''{0}'' \u7528\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059 +compiler.warn.proc.package.does.not.exist=\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093 +compiler.warn.proc.file.reopening=''{0}'' \u7528\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059 -compiler.warn.proc.type.already.exists=\ - \u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u306b\u30bd\u30fc\u30b9\u30d1\u30b9\u3082\u3057\u304f\u306f\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u5b58\u5728\u3057\u307e\u3059 +compiler.warn.proc.type.already.exists=\u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u306b\u30bd\u30fc\u30b9\u30d1\u30b9\u3082\u3057\u304f\u306f\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u5b58\u5728\u3057\u307e\u3059 -compiler.warn.proc.type.recreate=\ - \u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059 +compiler.warn.proc.type.recreate=\u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u6570\u56de\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059 -compiler.warn.proc.illegal.file.name=\ - \u7121\u52b9\u306a\u540d\u524d ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.warn.proc.illegal.file.name=\u7121\u52b9\u306a\u540d\u524d ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.warn.proc.file.create.last.round=\ - \u6700\u5f8c\u306b\u4f5c\u6210\u3055\u308c\u305f\u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002 +compiler.warn.proc.file.create.last.round=\u6700\u5f8c\u306b\u4f5c\u6210\u3055\u308c\u305f\u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002 -compiler.warn.proc.malformed.supported.string=\ - \u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u304c\u8fd4\u3057\u305f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u6ce8\u91c8\u578b\u306e\u6587\u5b57\u5217 ''{0}'' \u304c\u4e0d\u6b63\u3067\u3059 +compiler.warn.proc.malformed.supported.string=\u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u304c\u8fd4\u3057\u305f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u6ce8\u91c8\u578b\u306e\u6587\u5b57\u5217 ''{0}'' \u304c\u4e0d\u6b63\u3067\u3059 -compiler.warn.proc.annotations.without.processors=\ - \u3053\u308c\u3089\u306e\u6ce8\u91c8\u3092\u8981\u6c42\u3059\u308b\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0} +compiler.warn.proc.annotations.without.processors=\u3053\u308c\u3089\u306e\u6ce8\u91c8\u3092\u8981\u6c42\u3059\u308b\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0} -compiler.warn.proc.processor.incompatible.source.version=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u304b\u3089 -source ''{2}'' \u3088\u308a\u5c0f\u3055\u3044\u30bd\u30fc\u30b9\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059 +compiler.warn.proc.processor.incompatible.source.version=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5 ''{1}'' \u304b\u3089 -source ''{2}'' \u3088\u308a\u5c0f\u3055\u3044\u30bd\u30fc\u30b9\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059 -compiler.warn.proc.proc-only.requested.no.procs=\ - \u30b3\u30f3\u30d1\u30a4\u30eb\u306a\u3057\u306e\u6ce8\u91c8\u51e6\u7406\u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +compiler.warn.proc.proc-only.requested.no.procs=\u30b3\u30f3\u30d1\u30a4\u30eb\u306a\u3057\u306e\u6ce8\u91c8\u51e6\u7406\u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -compiler.warn.proc.use.implicit=\ -\u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002\n\ --implicit \u3092\u4f7f\u7528\u3057\u6697\u9ed9\u7684\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002 +compiler.warn.proc.use.implicit=\u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002\n-implicit \u3092\u4f7f\u7528\u3057\u6697\u9ed9\u7684\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002 -compiler.warn.proc.use.proc.or.implicit=\ -\u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002\n\ --proc:none \u3092\u4f7f\u7528\u3057\u6ce8\u91c8\u51e6\u7406\u3092\u7121\u52b9\u306b\u3059\u308b\u304b -implicit \u3092\u4f7f\u7528\u3057\u6697\u9ed9\u7684\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002 +compiler.warn.proc.use.proc.or.implicit=\u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u6ce8\u91c8\u51e6\u7406\u306b\u6e21\u3055\u308c\u307e\u305b\u3093\u3002\n-proc:none \u3092\u4f7f\u7528\u3057\u6ce8\u91c8\u51e6\u7406\u3092\u7121\u52b9\u306b\u3059\u308b\u304b -implicit \u3092\u4f7f\u7528\u3057\u6697\u9ed9\u7684\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u6307\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002 # Print a client-generated warning; assumed to be localized, no translation required -compiler.warn.proc.messager=\ - {0} +compiler.warn.proc.messager={0} -compiler.warn.proc.unclosed.type.files=\ - \u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306e\u30bf\u30a4\u30d7\u306f\u6ce8\u91c8\u51e6\u7406\u3055\u308c\u307e\u305b\u3093 +compiler.warn.proc.unclosed.type.files=\u30bf\u30a4\u30d7 ''{0}'' \u306e\u30d5\u30a1\u30a4\u30eb\u304c\u9589\u3058\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306e\u30bf\u30a4\u30d7\u306f\u6ce8\u91c8\u51e6\u7406\u3055\u308c\u307e\u305b\u3093 -compiler.warn.proc.unmatched.processor.options=\ - \u6b21\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3069\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u3067\u3082\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f: ''{0}'' +compiler.warn.proc.unmatched.processor.options=\u6b21\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3069\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u3067\u3082\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f: ''{0}'' -compiler.warn.unchecked.assign=\ - [unchecked] {0} \u304b\u3089 {1} \u3078\u306e\u7121\u691c\u67fb\u4ee3\u5165\u3067\u3059\u3002 -compiler.warn.unchecked.assign.to.var=\ - [unchecked] raw \u578b {1} \u306e\u30e1\u30f3\u30d0\u30fc\u3068\u3057\u3066\u5909\u6570 {0} \u3078\u306e\u7121\u691c\u67fb\u4ee3\u5165\u3067\u3059\u3002 -compiler.warn.unchecked.call.mbr.of.raw.type=\ - [unchecked] raw \u578b {1} \u306e\u30e1\u30f3\u30d0\u3068\u3057\u3066\u306e {0} \u3078\u306e\u7121\u691c\u67fb\u547c\u3073\u51fa\u3057\u3067\u3059\u3002 -compiler.warn.unchecked.cast.to.type=\ - [unchecked] \u578b {0} \u3078\u306e\u7121\u691c\u67fb\u30ad\u30e3\u30b9\u30c8\u3067\u3059\u3002 -compiler.warn.unchecked.meth.invocation.applied=\ - [unchecked] \u7121\u691c\u67fb\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057: {1} \u306e {0} \u306f {2}({3}) \u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002 -compiler.warn.unchecked.generic.array.creation=\ - [unchecked] \u53ef\u5909\u5f15\u6570\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u5bfe\u3059\u308b\u578b {0} \u306e\u7dcf\u79f0\u578b\u914d\u5217\u306e\u7121\u691c\u67fb\u4f5c\u6210\u3067\u3059\u3002 +compiler.warn.unchecked.assign=[unchecked] {0} \u304b\u3089 {1} \u3078\u306e\u7121\u691c\u67fb\u4ee3\u5165\u3067\u3059\u3002 +compiler.warn.unchecked.assign.to.var=[unchecked] raw \u578b {1} \u306e\u30e1\u30f3\u30d0\u30fc\u3068\u3057\u3066\u5909\u6570 {0} \u3078\u306e\u7121\u691c\u67fb\u4ee3\u5165\u3067\u3059\u3002 +compiler.warn.unchecked.call.mbr.of.raw.type=[unchecked] raw \u578b {1} \u306e\u30e1\u30f3\u30d0\u3068\u3057\u3066\u306e {0} \u3078\u306e\u7121\u691c\u67fb\u547c\u3073\u51fa\u3057\u3067\u3059\u3002 +compiler.warn.unchecked.cast.to.type=[unchecked] \u578b {0} \u3078\u306e\u7121\u691c\u67fb\u30ad\u30e3\u30b9\u30c8\u3067\u3059\u3002 +compiler.warn.unchecked.meth.invocation.applied=[unchecked] \u7121\u691c\u67fb\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057: {0} {1} ({4} {5} \u5185) \u304c\u4e0e\u3048\u3089\u308c\u305f\u578b\u306b\u9069\u7528\u3055\u308c\u307e\u3057\u305f\n\u671f\u5f85\u5024: {2}\n\u691c\u51fa\u5024: {3} -compiler.warn.missing.deprecated.annotation=\ - [dep-ann] \u63a8\u5968\u3055\u308c\u306a\u3044\u9805\u76ee\u306f @Deprecated \u3067\u6ce8\u91c8\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.warn.unchecked.generic.array.creation=[unchecked] \u30bf\u30a4\u30d7 {0} \u306e varargs \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u305f\u3081\u306e\u3001\u7121\u691c\u67fb\u6c4e\u7528\u914d\u5217\u306e\u4f5c\u6210 -compiler.warn.invalid.archive.file=\ - [path] \u30d1\u30b9\u4e0a\u306e\u4e88\u671f\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb: {0} +compiler.warn.missing.deprecated.annotation=[dep-ann] \u63a8\u5968\u3055\u308c\u306a\u3044\u9805\u76ee\u306f @Deprecated \u3067\u6ce8\u91c8\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.warn.unexpected.archive.file=\ - [path] \u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u306e\u4e88\u671f\u3057\u306a\u3044\u62e1\u5f35\u5b50: {0} +compiler.warn.invalid.archive.file=[path] \u30d1\u30b9\u4e0a\u306e\u4e88\u671f\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb: {0} -compiler.warn.div.zero=\ - [divzero] \u30bc\u30ed\u3067\u9664\u7b97 +compiler.warn.unexpected.archive.file=[path] \u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u306e\u4e88\u671f\u3057\u306a\u3044\u62e1\u5f35\u5b50: {0} -compiler.warn.empty.if=\ - [empty] if \u4ee5\u964d\u304c\u7a7a\u306e\u6587\u3067\u3059 +compiler.warn.div.zero=[divzero] \u30bc\u30ed\u3067\u9664\u7b97 -compiler.warn.annotation.method.not.found=\ - \u30bf\u30a4\u30d7 ''{0}'' \u5185\u306b\u6ce8\u91c8\u30e1\u30bd\u30c3\u30c9 ''{1}()'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +compiler.warn.empty.if=[empty] if \u4ee5\u964d\u304c\u7a7a\u306e\u6587\u3067\u3059 -compiler.warn.annotation.method.not.found.reason=\ - \u30bf\u30a4\u30d7 ''{0}'' \u5185\u306b\u6ce8\u91c8\u30e1\u30bd\u30c3\u30c9 ''{1}()'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {2} +compiler.warn.annotation.method.not.found=\u30bf\u30a4\u30d7 ''{0}'' \u5185\u306b\u6ce8\u91c8\u30e1\u30bd\u30c3\u30c9 ''{1}()'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 + +compiler.warn.annotation.method.not.found.reason=\u30bf\u30a4\u30d7 ''{0}'' \u5185\u306b\u6ce8\u91c8\u30e1\u30bd\u30c3\u30c9 ''{1}()'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {2} + +compiler.warn.raw.class.use=[rawtypes] raw \u578b\u3092\u691c\u51fa: {0}\n\u7dcf\u79f0\u30af\u30e9\u30b9 {1} \u306e\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 ##### ## The following are tokens which are non-terminals in the language. They should ## be named as JLS3 calls them when translated to the appropriate language. -compiler.misc.token.identifier=\ - -compiler.misc.token.character=\ - -compiler.misc.token.string=\ - -compiler.misc.token.integer=\ - -compiler.misc.token.long-integer=\ - -compiler.misc.token.float=\ - -compiler.misc.token.double=\ - -compiler.misc.token.bad-symbol=\ - -compiler.misc.token.end-of-input=\ - +compiler.misc.token.identifier= +compiler.misc.token.character= +compiler.misc.token.string= +compiler.misc.token.integer= +compiler.misc.token.long-integer= +compiler.misc.token.float= +compiler.misc.token.double= +compiler.misc.token.bad-symbol= +compiler.misc.token.end-of-input= ## The argument to the following string will always be one of the following: ## 1. one of the above non-terminals @@ -781,78 +508,59 @@ compiler.misc.token.end-of-input=\ ## 6. an operator (JLS3.12) ## ## This is the only place these tokens will be used. -compiler.err.expected=\ - {0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.expected2=\ - {0} \u307e\u305f\u306f {1} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.expected3=\ - {0}\u3001{1}\u3001\u307e\u305f\u306f {2} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.expected={0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.expected2={0} \u307e\u305f\u306f {1} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.expected3={0}\u3001{1}\u3001\u307e\u305f\u306f {2} \u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.err.premature.eof=\ - \u69cb\u6587\u89e3\u6790\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u306b\u79fb\u308a\u307e\u3057\u305f +compiler.err.premature.eof=\u69cb\u6587\u89e3\u6790\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u306b\u79fb\u308a\u307e\u3057\u305f ## The following are related in form, but do not easily fit the above paradigm. -compiler.err.dot.class.expected=\ - ''.class'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.dot.class.expected=''.class'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002 ## The argument to this string will always be either 'case' or 'default'. -compiler.err.orphaned=\ - {0} \u306b\u306f\u89aa\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +compiler.err.orphaned={0} \u306b\u306f\u89aa\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -compiler.misc.anonymous.class=\ - +compiler.misc.anonymous.class= + +compiler.misc.type.captureof={1} \u306e capture#{0} + +compiler.misc.type.captureof.1=capture#{0} + +compiler.misc.type.none= + +compiler.misc.unnamed.package=\u7121\u540d\u30d1\u30c3\u30b1\u30fc\u30b8 ##### -compiler.err.cant.access=\ -{0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n\ -{1} +compiler.err.cant.access={0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n{1} -compiler.misc.bad.class.file.header=\ -\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002\n\ -{1}\n\ -\u524a\u9664\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u306e\u6b63\u3057\u3044\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +compiler.misc.bad.class.file.header=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002\n{1}\n\u524a\u9664\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u306e\u6b63\u3057\u3044\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +compiler.misc.bad.source.file.header=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002\n{1}\n\u524a\u9664\u3059\u308b\u304b\u3001\u30bd\u30fc\u30b9\u30d1\u30b9\u306e\u6b63\u3057\u3044\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 ## The following are all possible strings for the second argument ({1}) of the ## above strings. -compiler.misc.bad.class.signature=\ - \u30af\u30e9\u30b9 {0} \u306e\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.misc.bad.enclosing.method=\ - \u56f2\u3093\u3067\u3044\u308b\u30e1\u30bd\u30c3\u30c9\u5c5e\u6027\u304c\u4e0d\u6b63\u3067\u3059: {0} -compiler.misc.bad.runtime.invisible.param.annotations=\ - RuntimeInvisibleParameterAnnotations \u5c5e\u6027\u304c\u4e0d\u6b63\u3067\u3059: {0} -compiler.misc.bad.const.pool.tag=\ - \u5b9a\u6570\u30d7\u30fc\u30eb\u30bf\u30b0 {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.misc.bad.const.pool.tag.at=\ - \u5b9a\u6570\u30d7\u30fc\u30eb\u30bf\u30b0 {1} \u3067\u306e {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.misc.bad.signature=\ - \u30b7\u30b0\u30cb\u30c1\u30e3\u30fc {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.misc.class.file.wrong.class=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e0d\u6b63\u306a\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 -compiler.misc.class.file.not.found=\ - {0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -compiler.misc.file.doesnt.contain.class=\ - \u30d5\u30a1\u30a4\u30eb\u306b\u30af\u30e9\u30b9 {0} \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.misc.file.does.not.contain.package=\ - \u30d5\u30a1\u30a4\u30eb\u306b\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093 -compiler.misc.illegal.start.of.class.file=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 -compiler.misc.unable.to.access.file=\ - \u30d5\u30a1\u30a4\u30eb {0} \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.unicode.str.not.supported=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u5185\u306e Unicode \u6587\u5b57\u5217\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.misc.undecl.type.var=\ - \u578b\u5909\u6570 {0} \u306f\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -compiler.misc.wrong.version=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 {0}.{1} \u306f\u4e0d\u6b63\u3067\u3059\u3002{2}.{3} \u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002 +compiler.misc.bad.class.signature=\u30af\u30e9\u30b9 {0} \u306e\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.misc.bad.enclosing.method=\u56f2\u3093\u3067\u3044\u308b\u30e1\u30bd\u30c3\u30c9\u5c5e\u6027\u304c\u4e0d\u6b63\u3067\u3059: {0} +compiler.misc.bad.runtime.invisible.param.annotations=RuntimeInvisibleParameterAnnotations \u5c5e\u6027\u304c\u4e0d\u6b63\u3067\u3059: {0} +compiler.misc.bad.const.pool.tag=\u5b9a\u6570\u30d7\u30fc\u30eb\u30bf\u30b0 {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.misc.bad.const.pool.tag.at=\u5b9a\u6570\u30d7\u30fc\u30eb\u30bf\u30b0 {1} \u3067\u306e {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.misc.bad.signature=\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc {0} \u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.misc.bad.type.annotation.value=\u578b\u6ce8\u91c8\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u578b\u5024\u304c\u4e0d\u6b63\u3067\u3059: {0} +compiler.misc.class.file.wrong.class=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e0d\u6b63\u306a\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 +compiler.misc.class.file.not.found={0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +compiler.misc.file.doesnt.contain.class=\u30d5\u30a1\u30a4\u30eb\u306b\u30af\u30e9\u30b9 {0} \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.misc.file.does.not.contain.package=\u30d5\u30a1\u30a4\u30eb\u306b\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093 +compiler.misc.illegal.start.of.class.file=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u958b\u59cb\u304c\u4e0d\u6b63\u3067\u3059\u3002 +compiler.misc.unable.to.access.file=\u30d5\u30a1\u30a4\u30eb {0} \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.unicode.str.not.supported=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u5185\u306e Unicode \u6587\u5b57\u5217\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.misc.undecl.type.var=\u578b\u5909\u6570 {0} \u306f\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +compiler.misc.wrong.version=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 {0}.{1} \u306f\u4e0d\u6b63\u3067\u3059\u3002{2}.{3} \u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002 ##### -compiler.err.not.within.bounds=\ - \u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306f\u305d\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002 +compiler.err.not.within.bounds=\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306f\u305d\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002 -compiler.err.not.within.bounds.explain=\ - \u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306f\u305d\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002{1} +compiler.err.not.within.bounds.explain=\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} \u306f\u305d\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002{1} ## The following are all possible strings for the second argument ({1}) of the ## above string. @@ -861,43 +569,26 @@ compiler.err.not.within.bounds.explain=\ ##### -compiler.err.prob.found.req=\ -{0}\n\ -\u691c\u51fa\u5024 : {1}\n\ -\u671f\u5f85\u5024 : {2} -compiler.warn.prob.found.req=\ -{0}\n\ -\u691c\u51fa\u5024 : {1}\n\ -\u671f\u5f85\u5024 : {2} -compiler.err.prob.found.req.1=\ -{0} {3}\n\ -\u691c\u51fa\u5024 : {1}\n\ -\u671f\u5f85\u5024 : {2} +compiler.err.prob.found.req={0}\n\u671f\u5f85\u5024: {2}\n\u691c\u51fa\u5024: {1} +compiler.warn.prob.found.req={0}\n\u671f\u5f85\u5024: {2}\n\u691c\u51fa\u5024: {1} +compiler.err.prob.found.req.1={0} {3}\n\u671f\u5f85\u5024: {2}\n\u691c\u51fa\u5024: {1} ## The following are all possible strings for the first argument ({0}) of the ## above strings. -compiler.misc.incompatible.types=\ - \u4e92\u63db\u6027\u306e\u306a\u3044\u578b -compiler.misc.incompatible.types.1=\ - \u4e92\u63db\u6027\u306e\u306a\u3044\u578b; {0} -compiler.misc.inconvertible.types=\ - \u5909\u63db\u3067\u304d\u306a\u3044\u578b -compiler.misc.possible.loss.of.precision=\ - \u7cbe\u5ea6\u304c\u843d\u3061\u3066\u3044\u308b\u53ef\u80fd\u6027 +compiler.misc.incompatible.types=\u4e92\u63db\u6027\u306e\u306a\u3044\u578b +compiler.misc.incompatible.types.1=\u4e92\u63db\u6027\u306e\u306a\u3044\u578b; {0} +compiler.misc.inconvertible.types=\u5909\u63db\u3067\u304d\u306a\u3044\u578b +compiler.misc.possible.loss.of.precision=\u7cbe\u5ea6\u304c\u843d\u3061\u3066\u3044\u308b\u53ef\u80fd\u6027 -compiler.misc.unchecked.assign=\ - [unchecked] \u7121\u691c\u67fb\u5909\u63db\u3067\u3059 +compiler.misc.unchecked.assign=[unchecked] \u7121\u691c\u67fb\u5909\u63db\u3067\u3059 # compiler.misc.storecheck=\ # [unchecked] assignment might cause later store checks to fail # compiler.misc.unchecked=\ # [unchecked] assigned array cannot dynamically check its stores -compiler.misc.unchecked.cast.to.type=\ - [unchecked] \u7121\u691c\u67fb\u30ad\u30e3\u30b9\u30c8\u3067\u3059 +compiler.misc.unchecked.cast.to.type=[unchecked] \u7121\u691c\u67fb\u30ad\u30e3\u30b9\u30c8\u3067\u3059 -compiler.misc.assignment.from.super-bound=\ - \u30b9\u30fc\u30d1\u30fc\u30d0\u30a6\u30f3\u30c9\u578b {0} \u304b\u3089\u306e\u4ee3\u5165 -compiler.misc.assignment.to.extends-bound=\ - \u62e1\u5f35\u30d0\u30a6\u30f3\u30c9\u578b {0} \u3078\u306e\u4ee3\u5165 +compiler.misc.assignment.from.super-bound=\u30b9\u30fc\u30d1\u30fc\u30d0\u30a6\u30f3\u30c9\u578b {0} \u304b\u3089\u306e\u4ee3\u5165 +compiler.misc.assignment.to.extends-bound=\u62e1\u5f35\u30d0\u30a6\u30f3\u30c9\u578b {0} \u3078\u306e\u4ee3\u5165 # compiler.err.star.expected=\ # ''*'' expected # compiler.err.no.elem.type=\ @@ -905,221 +596,187 @@ compiler.misc.assignment.to.extends-bound=\ ##### -compiler.err.type.found.req=\ -\u4e88\u671f\u3057\u306a\u3044\u578b\n\ -\u691c\u51fa\u5024 : {0}\n\ -\u671f\u5f85\u5024 : {1} +compiler.err.type.found.req=\u4e88\u671f\u3057\u306a\u3044\u578b\n\u671f\u5f85\u5024: {1}\n\u691c\u51fa\u5024: {0} ## The following are all possible strings for the first argument ({0}) of the ## above string. -compiler.misc.type.req.class=\ - \u30af\u30e9\u30b9 -compiler.misc.type.req.class.array=\ - \u30af\u30e9\u30b9\u307e\u305f\u306f\u914d\u5217 -compiler.misc.type.req.ref=\ - \u53c2\u7167 -compiler.misc.type.req.exact=\ - \u5883\u754c\u306e\u306a\u3044\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 -compiler.misc.type.parameter=\ - \u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} +compiler.misc.type.req.class=\u30af\u30e9\u30b9 +compiler.misc.type.req.class.array=\u30af\u30e9\u30b9\u307e\u305f\u306f\u914d\u5217 +compiler.misc.type.req.ref=\u53c2\u7167 +compiler.misc.type.req.exact=\u5883\u754c\u306e\u306a\u3044\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +compiler.misc.type.parameter=\u578b\u30d1\u30e9\u30e1\u30fc\u30bf {0} ##### ## The following are all possible strings for the last argument of all those ## diagnostics whose key ends in ".1" -compiler.misc.undetermined.type=\ - \u672a\u5b9a\u578b -ncompiler.misc.type.variable.has.undetermined.type=\ - \u578b\u5909\u6570 {0} \u306f\u672a\u5b9a\u578b\u3067\u3059\u3002 -compiler.misc.no.unique.maximal.instance.exists=\ - \u578b\u5909\u6570 {0} (\u4e0a\u9650 {1}) \u306e\u56fa\u6709\u306e\u6700\u5927\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -compiler.misc.no.unique.minimal.instance.exists=\ - \u578b\u5909\u6570 {0} (\u4e0b\u9650 {1}) \u306e\u56fa\u6709\u306e\u6700\u5c0f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -compiler.misc.no.conforming.instance.exists=\ - \u578b\u5909\u6570 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001{1} \u306f {2} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002 -compiler.misc.no.conforming.assignment.exists=\ - \u578b\u5909\u6570 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001\u5f15\u6570\u578b {1} \u306f\u4eee\u30d1\u30e9\u30e1\u30fc\u30bf\u578b {2} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002 -compiler.misc.arg.length.mismatch=\ - \u5b9f\u5f15\u6570\u30ea\u30b9\u30c8\u3068\u4eee\u5f15\u6570\u30ea\u30b9\u30c8\u306e\u9577\u3055\u304c\u7570\u306a\u308b\u305f\u3081\u3001\u5f15\u6570\u304b\u3089\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.inferred.do.not.conform.to.bounds=\ - \u63a8\u5b9a\u578b\u5f15\u6570 {0} \u306f\u578b\u5909\u6570 {1} \u306e\u5883\u754c\u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002 +compiler.misc.undetermined.type=\u672a\u5b9a\u578b +ncompiler.misc.type.variable.has.undetermined.type=\u578b\u5909\u6570 {0} \u306f\u672a\u5b9a\u578b\u3067\u3059\u3002 +compiler.misc.no.unique.maximal.instance.exists=\u578b\u5909\u6570 {0} (\u4e0a\u9650 {1}) \u306e\u56fa\u6709\u306e\u6700\u5927\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +compiler.misc.no.unique.minimal.instance.exists=\u578b\u5909\u6570 {0} (\u4e0b\u9650 {1}) \u306e\u56fa\u6709\u306e\u6700\u5c0f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +compiler.misc.no.conforming.instance.exists=\u578b\u5909\u6570 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001{1} \u306f {2} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002 +compiler.misc.no.conforming.assignment.exists=\u578b\u5909\u6570 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001\u5f15\u6570\u578b {1} \u306f\u4eee\u30d1\u30e9\u30e1\u30fc\u30bf\u578b {2} \u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002 +compiler.misc.arg.length.mismatch=\u5b9f\u5f15\u6570\u30ea\u30b9\u30c8\u3068\u4eee\u5f15\u6570\u30ea\u30b9\u30c8\u306e\u9577\u3055\u304c\u7570\u306a\u308b\u305f\u3081\u3001\u5f15\u6570\u304b\u3089\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.inferred.do.not.conform.to.bounds=\u63a8\u5b9a\u3055\u308c\u305f\u578b\u306f\u5ba3\u8a00\u3055\u308c\u305f\u5883\u754c\u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\n\u63a8\u5b9a: {0}\n\u5883\u754c: {1} +compiler.misc.inferred.do.not.conform.to.params=\u5b9f\u5f15\u6570\u304c\u63a8\u5b9a\u3055\u308c\u305f\u4eee\u5f15\u6570\u306b\u9069\u5408\u3057\u307e\u305b\u3093\u3002\n\u671f\u5f85\u5024: {0}\n\u691c\u51fa\u5024: {1} ##### ## The first argument ({0}) is a "kindname". -compiler.err.abstract.cant.be.accessed.directly=\ - \u62bd\u8c61 {0} {1} ({2} \u5185) \u306b\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.abstract.cant.be.accessed.directly=\u62bd\u8c61 {0} {1} ({2} \u5185) \u306b\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 ## The first argument ({0}) is a "kindname". -compiler.err.non-static.cant.be.ref=\ - static \u3067\u306a\u3044 {0} {1} \u3092 static \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.err.non-static.cant.be.ref=static \u3067\u306a\u3044 {0} {1} \u3092 static \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 ## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list ## of kindnames (the list should be identical to that provided in source. -compiler.err.unexpected.type=\ -\u4e88\u671f\u3057\u306a\u3044\u578b\n\ -\u671f\u5f85\u5024 : {0}\n\ -\u691c\u51fa\u5024 : {1} +compiler.err.unexpected.type=\u4e88\u671f\u3057\u306a\u3044\u578b\n\u671f\u5f85\u5024 : {0}\n\u691c\u51fa\u5024 : {1} -## The first argument ({0}) is a "kindname". -compiler.err.cant.resolve=\ -\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002\n\ -\u30b7\u30f3\u30dc\u30eb: {0} {3}{1}{2} +## The first argument {0} is a "kindname" (e.g. 'constructor', 'field', etc.) +## The second argument {1} is the non-resolved symbol +## The third argument {2} is a list of type parameters (non-empty if {1} is a method) +## The fourth argument {3} is a list of argument types (non-empty if {1} is a method) +compiler.err.cant.resolve=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002\n\u30b7\u30f3\u30dc\u30eb: {0} {3}{1}{2} -## The first argument ({0}) and fifth argument ({4}) are "kindname"s. -compiler.err.cant.resolve.location=\ -\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002\n\ -\u30b7\u30f3\u30dc\u30eb: {0} {3}{1}{2}\n\ -\u5834\u6240 : {5} \u306e {4} +compiler.err.cant.resolve.args=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\n\u30b7\u30f3\u30dc\u30eb: {0} {1}({3}) + +compiler.err.cant.resolve.args.params=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\n\u30b7\u30f3\u30dc\u30eb: {0} <{2}>{1}({3}) + +## arguments from {0} to {3} have the same meaning as above +## The fifth argument {4} is the location "kindname" (e.g. 'constructor', 'field', etc.) +## The sixth argument {5} is the location type +compiler.err.cant.resolve.location=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\n\u30b7\u30f3\u30dc\u30eb: {0} {1}\n\u5834\u6240: {4} {5} + +compiler.err.cant.resolve.location.args=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\n\u30b7\u30f3\u30dc\u30eb: {0} {1}({3})\n\u5834\u6240: {4} {5} + +compiler.err.cant.resolve.location.args.params=\u30b7\u30f3\u30dc\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\n\u30b7\u30f3\u30dc\u30eb: {0} <{2}>{1}({3})\n\u5834\u6240: {4} {5} + +compiler.err.cant.apply.diamond=\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u6f14\u7b97\u5b50\u304c {0} \u306e\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093;\n\u7406\u7531: {1} ## The following are all possible string for "kindname". ## They should be called whatever the JLS calls them after it been translated ## to the appropriate language. # compiler.misc.kindname.constructor=\ # static member -compiler.misc.kindname.annotation=\ - @\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 -compiler.misc.kindname.constructor=\ - \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf -compiler.misc.kindname.interface=\ - \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 -compiler.misc.kindname.static=\ - static -compiler.misc.kindname.type.variable=\ - \u578b\u5909\u6570\u306e\u5883\u754c -compiler.misc.kindname=\ - \u8b58\u5225\u5b50 ({0}) -compiler.misc.kindname.variable=\ - \u5909\u6570 -compiler.misc.kindname.value=\ - \u5024 -compiler.misc.kindname.method=\ - \u30e1\u30bd\u30c3\u30c9 -compiler.misc.kindname.variable.method=\ - \u5909\u6570\u3001\u30e1\u30bd\u30c3\u30c9 -compiler.misc.kindname.value.method=\ - \u5024\u3001\u30e1\u30bd\u30c3\u30c9 -compiler.misc.kindname.class=\ - \u30af\u30e9\u30b9 -compiler.misc.kindname.variable.class=\ - \u5909\u6570\u3001\u30af\u30e9\u30b9 -compiler.misc.kindname.value.class=\ - \u5024\u3001\u30af\u30e9\u30b9 -compiler.misc.kindname.method.class=\ - \u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9 -compiler.misc.kindname.variable.method.class=\ - \u5909\u6570\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9 -compiler.misc.kindname.value.method.class=\ - \u5024\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9 -compiler.misc.kindname.package=\ - \u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.variable.package=\ - \u5909\u6570\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.value.package=\ - \u5024\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.method.package=\ - \u30e1\u30bd\u30c3\u30c9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.variable.method.package=\ - \u5909\u6570\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.value.method.package=\ - \u5024\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.class.package=\ - \u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.variable.class.package=\ - \u5909\u6570\u3001\u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.value.class.package=\ - \u5024\u3001\u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.method.class.package=\ - \u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.variable.method.class.package=\ - \u5909\u6570\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 -compiler.misc.kindname.value.method.class.package=\ - \u5024\u3001\u30e1\u30bd\u30c3\u30c9\u3001\u30af\u30e9\u30b9\u3001\u30d1\u30c3\u30b1\u30fc\u30b8 - +compiler.misc.kindname.annotation=@\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +compiler.misc.kindname.constructor=\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf +compiler.misc.kindname.interface=\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 +compiler.misc.kindname.static=static +compiler.misc.kindname.type.variable=\u578b\u5909\u6570\u306e\u5883\u754c +compiler.misc.kindname.type.variable.bound=\u578b\u5909\u6570\u306e\u5883\u754c +compiler.misc.kindname.variable=\u5909\u6570 +compiler.misc.kindname.value=\u5024 +compiler.misc.kindname.method=\u30e1\u30bd\u30c3\u30c9 +compiler.misc.kindname.class=\u30af\u30e9\u30b9 +compiler.misc.kindname.package=\u30d1\u30c3\u30b1\u30fc\u30b8 ##### -compiler.err.override.static=\ - {0}\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c static \u3067\u3059\u3002 -compiler.err.override.meth=\ - {0}\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f {1} \u3067\u3059\u3002 +compiler.misc.no.args=\u5f15\u6570\u7121\u3057 -compiler.err.override.meth.doesnt.throw=\ - {0}\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f {1} \u3092\u30b9\u30ed\u30fc\u3057\u307e\u305b\u3093\u3002 +compiler.err.override.static={0}\n\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c static \u3067\u3059\u3002 +compiler.err.override.meth={0}\n\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f {1} \u3067\u3059\u3002 + +compiler.err.override.meth.doesnt.throw={0}\n\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f {1} \u3092\u30b9\u30ed\u30fc\u3057\u307e\u305b\u3093\u3002 # In the following string {1} is a space separated list of Java Keywords, as # they would have been declared in the source code -compiler.err.override.weaker.access=\ - {0}\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3067\u306e\u5b9a\u7fa9\u3088\u308a\u5f31\u3044\u30a2\u30af\u30bb\u30b9\u7279\u6a29 ({1}) \u3092\u5272\u308a\u5f53\u3066\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 +compiler.err.override.weaker.access={0}\n\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3067\u306e\u5b9a\u7fa9\u3088\u308a\u5f31\u3044\u30a2\u30af\u30bb\u30b9\u7279\u6a29 ({1}) \u3092\u5272\u308a\u5f53\u3066\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -compiler.misc.override.incompatible.ret=\ - {0}\u4e92\u63db\u6027\u306e\u306a\u3044\u623b\u308a\u5024\u306e\u578b\u3092\u4f7f\u304a\u3046\u3068\u3057\u307e\u3057\u305f\u3002 +compiler.err.override.incompatible.ret={0}\n\u623b\u308a\u5024\u306e\u578b {1} \u306f {2} \u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093 -compiler.misc.override.unchecked.ret=\ - {0}; \u623b\u308a\u5024\u306e\u578b\u306f\u7121\u691c\u67fb\u5909\u63db\u304c\u5fc5\u8981\u3067\u3059\u3002 +compiler.warn.override.unchecked.ret=[unchecked] {0}\n\u623b\u308a\u5024\u306e\u578b\u306b\u306f {1} \u304b\u3089 {2} \u3078\u306e\u7121\u691c\u67fb\u306e\u5909\u63db\u304c\u5fc5\u8981\u3067\u3059\u3002 + +compiler.warn.override.unchecked.thrown=[unchecked] {0}\n\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9\u306f {1} \u3092\u30b9\u30ed\u30fc\u3057\u307e\u305b\u3093\u3002 ## The following are all possible strings for the first argument ({0}) of the ## above strings. -compiler.misc.cant.override=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.cant.implement=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3067\u304d\u307e\u305b\u3093\u3002 -compiler.misc.clashes.with=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3068\u7af6\u5408\u3057\u307e\u3059\u3002 -compiler.misc.unchecked.override=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 -compiler.misc.unchecked.implement=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 -compiler.misc.unchecked.clash.with=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002 -compiler.misc.varargs.override=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 -compiler.misc.varargs.implement=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 -compiler.misc.varargs.clash.with=\ - {1} \u306e {0} \u306f {3} \u306e {2} \u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 +compiler.misc.cant.override={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.cant.implement={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3067\u304d\u307e\u305b\u3093\u3002 +compiler.misc.clashes.with={1} \u306e {0} \u306f {3} \u306e {2} \u3068\u7af6\u5408\u3057\u307e\u3059\u3002 +compiler.misc.unchecked.override={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 +compiler.misc.unchecked.implement={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 +compiler.misc.unchecked.clash.with={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002 +compiler.misc.varargs.override={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 +compiler.misc.varargs.implement={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 +compiler.misc.varargs.clash.with={1} \u306e {0} \u306f {3} \u306e {2} \u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002 ######################################## # Diagnostics for language feature changes ######################################## -compiler.err.unsupported.fp.lit=\ - 16 \u9032\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u306f -source 5 \u3088\u308a\u524d\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +compiler.err.unsupported.fp.lit=16 \u9032\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u306e\u30ea\u30c6\u30e9\u30eb\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(16 \u9032\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.warn.enum.as.identifier=\ - \u30ea\u30ea\u30fc\u30b9 5 \u304b\u3089 ''enum'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n\ -(''enum'' \u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f -source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.unsupported.binary.lit=2 \u9032\u306e\u30ea\u30c6\u30e9\u30eb\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(2 \u9032\u306e\u30ea\u30c6\u30e9\u30eb\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 7 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.warn.assert.as.identifier=\ - \u30ea\u30ea\u30fc\u30b9 1.4 \u304b\u3089 ''assert'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u3001\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n\ -(''assert'' \u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001-source 1.4 (\u307e\u305f\u306f\u305d\u308c\u4ee5\u964d\u306e\u30ea\u30ea\u30fc\u30b9\u540d) \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.unsupported.underscore.lit=\u30ea\u30c6\u30e9\u30eb\u306e\u4e0b\u7dda\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u30ea\u30c6\u30e9\u30eb\u3067\u4e0b\u7dda\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 7 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.enum.as.identifier=\ - \u30ea\u30ea\u30fc\u30b9 5 \u304b\u3089 ''enum'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n\ -(''enum'' \u3092\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f -source 1.4 \u307e\u305f\u306f\u305d\u308c\u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.warn.enum.as.identifier=\u30ea\u30ea\u30fc\u30b9 5 \u304b\u3089 ''enum'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n(''enum'' \u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f -source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.assert.as.identifier=\ - \u30ea\u30ea\u30fc\u30b9 1.4 \u304b\u3089 ''assert'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u3001\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n\ -(''assert'' \u3092\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001-source 1.3 (\u307e\u305f\u306f\u305d\u308c\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u540d) \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.warn.assert.as.identifier=\u30ea\u30ea\u30fc\u30b9 1.4 \u304b\u3089 ''assert'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u3001\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n(''assert'' \u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001-source 1.4 (\u307e\u305f\u306f\u305d\u308c\u4ee5\u964d\u306e\u30ea\u30ea\u30fc\u30b9\u540d) \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.generics.not.supported.in.source=\ - \u7dcf\u79f0\u578b\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(\u7dcf\u79f0\u578b\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.enum.as.identifier=\u30ea\u30ea\u30fc\u30b9 5 \u304b\u3089 ''enum'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n(''enum'' \u3092\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f -source 1.4 \u307e\u305f\u306f\u305d\u308c\u4ee5\u524d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.varargs.not.supported.in.source=\ - \u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(\u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.assert.as.identifier=\u30ea\u30ea\u30fc\u30b9 1.4 \u304b\u3089 ''assert'' \u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u306a\u306e\u3067\u3001\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\n(''assert'' \u3092\u8b58\u5225\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001-source 1.3 (\u307e\u305f\u306f\u305d\u308c\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u540d) \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.annotations.not.supported.in.source=\ - \u6ce8\u91c8\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(\u6ce8\u91c8\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.generics.not.supported.in.source=\u7dcf\u79f0\u578b\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u7dcf\u79f0\u578b\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.foreach.not.supported.in.source=\ - for-each \u30eb\u30fc\u30d7\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(for-each \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) +compiler.err.varargs.not.supported.in.source=\u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u53ef\u5909\u5f15\u6570\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.annotations.not.supported.in.source=\u6ce8\u91c8\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u6ce8\u91c8\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.type.annotations.not.supported.in.source=\u578b\u6ce8\u91c8\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u578b\u6ce8\u91c8\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 7 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.foreach.not.supported.in.source=for-each \u30eb\u30fc\u30d7\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(for-each \u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.static.import.not.supported.in.source=static import \u5ba3\u8a00\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(static import \u5ba3\u8a00\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.enums.not.supported.in.source=\u5217\u6319\u578b\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u5217\u6319\u578b\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f -source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.diamond.not.supported.in.source=\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u6f14\u7b97\u5b50\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f -source 7 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +compiler.err.string.switch.not.supported.in.source=\u30b9\u30a4\u30c3\u30c1\u3067\u306e\u6587\u5b57\u5217\u306e\u4f7f\u7528\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n(\u30b9\u30a4\u30c3\u30c1\u3067\u6587\u5b57\u5217\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 7 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) + +######################################## +# Diagnostics for where clause implementation +# used by the RichDiagnosticFormatter. +######################################## + +compiler.misc.type.null= + +# X#n (where n is an int id) is disambiguated tvar name +compiler.misc.type.var={0}#{1} + +# CAP#n (where n is an int id) is an abbreviation for 'captured type' +compiler.misc.captured.type=CAP#{0} + +# (where n is an int id) is an abbreviation for 'intersection type' +compiler.misc.intersection.type=INT#{0} + +# where clause for captured type: contains upper ('extends {1}') and lower +# ('super {2}') bound along with the wildcard that generated this captured type ({3}) +compiler.misc.where.captured={3} \u306e\u6355\u6349\u304b\u3089 {0} \u306f {1} \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067 {2} \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 + +# compact where clause for captured type: contains upper ('extends {1}') along +# with the wildcard that generated this captured type ({3}) +compiler.misc.where.captured.1={3} \u306e\u6355\u6349\u304b\u3089 {0} \u306f {1} \u306e\u30b5\u30d6\u30af\u30e9\u30b9 + +# where clause for type variable: contains upper bound(s) ('extends {1}') along with +# the kindname ({2}) and location ({3}) in which the typevar has been declared +compiler.misc.where.typevar={2} {3} \u3067\u5ba3\u8a00\u3055\u308c\u305f {0} \u306f {1} \u306e\u30b5\u30d6\u30af\u30e9\u30b9 + +# compact where clause for type variable: contains the kindname ({2}) and location ({3}) +# in which the typevar has been declared +compiler.misc.where.typevar.1={2} {3} \u3067\u5ba3\u8a00\u3055\u308c\u305f {0} + +# where clause for type variable: contains all the upper bound(s) ('extends {1}') +# of this intersection type +compiler.misc.where.intersection={0} \u306f {1} \u306e\u30b5\u30d6\u30af\u30e9\u30b9 + +### Where clause headers ### +compiler.misc.where.description.captured={0} \u306f\u65b0\u305f\u306a\u578b\u5909\u6570\u3067\u3059: +compiler.misc.where.description.typevar={0} \u306f\u578b\u5909\u6570\u3067\u3059: +compiler.misc.where.description.intersection={0} \u306f\u30a4\u30f3\u30bf\u30fc\u30bb\u30af\u30b7\u30e7\u30f3\u578b\u3067\u3059: +compiler.misc.where.description.captured.1={0} \u306f\u65b0\u305f\u306a\u578b\u5909\u6570\u3067\u3059: +compiler.misc.where.description.typevar.1={0} \u306f\u578b\u5909\u6570\u3067\u3059: +compiler.misc.where.description.intersection.1={0} \u306f\u30a4\u30f3\u30bf\u30fc\u30bb\u30af\u30b7\u30e7\u30f3\u578b\u3067\u3059: -compiler.err.static.import.not.supported.in.source=\ - static import \u5ba3\u8a00\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(static import \u5ba3\u8a00\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001-source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) -compiler.err.enums.not.supported.in.source=\ - \u5217\u6319\u578b\u306f -source {0} \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\n\ -(\u5217\u6319\u578b\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f -source 5 \u4ee5\u964d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044) diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties index b5340810e8a..4353432c91f 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1999-2009 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 @@ -27,475 +27,284 @@ ## errors ## -compiler.err.abstract.cant.be.instantiated=\ -{0} \u662f\u62bd\u8c61\u7684\uff1b\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 -compiler.err.abstract.meth.cant.have.body=\ -\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u6709\u4e3b\u4f53 -compiler.err.already.annotated=\ -{0} {1} \u5df2\u88ab\u6ce8\u91ca -compiler.err.already.defined=\ -\u5df2\u5728 {1} \u4e2d\u5b9a\u4e49 {0} -compiler.err.already.defined.single.import=\ -\u5df2\u5728 single-type \u5bfc\u5165\u4e2d\u5b9a\u4e49 {0} -compiler.err.already.defined.static.single.import=\ -\u5df2\u5728\u9759\u6001 single-type \u5bfc\u5165\u4e2d\u5b9a\u4e49 {0} -compiler.err.already.defined.this.unit=\ -\u5df2\u5728\u8be5\u7f16\u8bd1\u5355\u5143\u4e2d\u5b9a\u4e49 {0} -compiler.err.annotation.missing.default.value=\ -\u6ce8\u91ca {0} \u7f3a\u5c11 {1} -compiler.err.annotation.not.valid.for.type=\ -\u5bf9\u4e8e\u7c7b\u578b\u4e3a {0} \u7684\u503c\uff0c\u6ce8\u91ca\u65e0\u6548 -compiler.err.annotation.type.not.applicable=\ -\u6ce8\u91ca\u7c7b\u578b\u4e0d\u9002\u7528\u4e8e\u8be5\u7c7b\u578b\u7684\u58f0\u660e -compiler.err.annotation.value.must.be.annotation=\ -\u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u6ce8\u91ca -compiler.err.annotation.value.must.be.class.literal=\ -\u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u7c7b\u5b57\u9762\u503c -compiler.err.annotation.value.must.be.name.value=\ - \u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u4ee5\u4e0b\u683c\u5f0f\uff1a\u201cname=value\u201d -compiler.err.annotation.value.not.allowable.type=\ -\u6ce8\u91ca\u503c\u4e0d\u662f\u5141\u8bb8\u7684\u7c7b\u578b -compiler.err.anon.class.impl.intf.no.args=\ -\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u6709\u53c2\u6570 -compiler.err.anon.class.impl.intf.no.typeargs=\ -\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u5177\u6709\u7c7b\u578b\u53c2\u6570 -compiler.err.anon.class.impl.intf.no.qual.for.new=\ -\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u6709\u9650\u5b9a\u7b26 - \u5bf9\u4e8e\u65b0 -compiler.err.array.and.varargs=\ -\u65e0\u6cd5\u5728 {2} \u4e2d\u540c\u65f6\u58f0\u660e {0} \u548c {1} -compiler.err.array.dimension.missing=\ -\u7f3a\u5c11\u6570\u7ec4\u7ef4\u6570 -compiler.err.array.req.but.found=\ -\u9700\u8981\u6570\u7ec4\uff0c\u4f46\u627e\u5230 {0} +compiler.err.abstract.cant.be.instantiated={0} \u662f\u62bd\u8c61\u7684\uff1b\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 +compiler.err.abstract.meth.cant.have.body=\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u6709\u4e3b\u4f53 +compiler.err.already.annotated={0} {1} \u5df2\u88ab\u6ce8\u91ca +compiler.err.already.defined=\u5df2\u5728 {1} \u4e2d\u5b9a\u4e49 {0} +compiler.err.already.defined.single.import=\u5df2\u5728 single-type \u5bfc\u5165\u4e2d\u5b9a\u4e49 {0} +compiler.err.already.defined.static.single.import=\u5df2\u5728\u9759\u6001 single-type \u5bfc\u5165\u4e2d\u5b9a\u4e49 {0} +compiler.err.already.defined.this.unit=\u5df2\u5728\u8be5\u7f16\u8bd1\u5355\u5143\u4e2d\u5b9a\u4e49 {0} +compiler.err.annotation.missing.default.value=\u6ce8\u91ca {0} \u7f3a\u5c11 {1} +compiler.err.annotation.not.valid.for.type=\u5bf9\u4e8e\u7c7b\u578b\u4e3a {0} \u7684\u503c\uff0c\u6ce8\u91ca\u65e0\u6548 +compiler.err.annotation.type.not.applicable=\u6ce8\u91ca\u7c7b\u578b\u4e0d\u9002\u7528\u4e8e\u8be5\u7c7b\u578b\u7684\u58f0\u660e +compiler.err.annotation.value.must.be.annotation=\u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u6ce8\u91ca +compiler.err.annotation.value.must.be.class.literal=\u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u7c7b\u5b57\u9762\u503c +compiler.err.annotation.value.must.be.name.value=\u6ce8\u91ca\u503c\u5fc5\u987b\u4e3a\u4ee5\u4e0b\u683c\u5f0f\uff1a\u201cname=value\u201d +compiler.err.annotation.value.not.allowable.type=\u6ce8\u91ca\u503c\u4e0d\u662f\u5141\u8bb8\u7684\u7c7b\u578b +compiler.err.anon.class.impl.intf.no.args=\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u6709\u53c2\u6570 +compiler.err.anon.class.impl.intf.no.typeargs=\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u5177\u6709\u7c7b\u578b\u53c2\u6570 +compiler.err.anon.class.impl.intf.no.qual.for.new=\u533f\u540d\u7c7b\u5b9e\u73b0\u63a5\u53e3\uff1b\u4e0d\u80fd\u6709\u9650\u5b9a\u7b26 - \u5bf9\u4e8e\u65b0 +compiler.err.array.and.varargs=\u65e0\u6cd5\u5728 {2} \u4e2d\u540c\u65f6\u58f0\u660e {0} \u548c {1} +compiler.err.array.dimension.missing=\u7f3a\u5c11\u6570\u7ec4\u7ef4\u6570 +compiler.err.array.req.but.found=\u9700\u8981\u6570\u7ec4\uff0c\u4f46\u627e\u5230 {0} -compiler.err.assignment.from.super-bound=\ -\u901a\u8fc7\u901a\u914d\u7b26 {0} \u6307\u5b9a -compiler.err.assignment.to.extends-bound=\ -\u6307\u5b9a\u7ed9\u901a\u914d\u7b26 {0} -compiler.err.attribute.value.must.be.constant=\ -\u5c5e\u6027\u503c\u5fc5\u987b\u4e3a\u5e38\u91cf +compiler.err.assignment.from.super-bound=\u901a\u8fc7\u901a\u914d\u7b26 {0} \u6307\u5b9a +compiler.err.assignment.to.extends-bound=\u6307\u5b9a\u7ed9\u901a\u914d\u7b26 {0} +compiler.err.attribute.value.must.be.constant=\u5c5e\u6027\u503c\u5fc5\u987b\u4e3a\u5e38\u91cf -compiler.err.break.outside.switch.loop=\ -\u5728 switch \u6216 loop \u5916\u90e8\u4e2d\u65ad +compiler.err.break.outside.switch.loop=\u5728 switch \u6216 loop \u5916\u90e8\u4e2d\u65ad -compiler.err.call.must.be.first.stmt.in.ctor=\ -\u5bf9 {0} \u7684\u8c03\u7528\u5fc5\u987b\u662f\u6784\u9020\u51fd\u6570\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8bed\u53e5 -compiler.err.cant.apply.symbol=\ -\u65e0\u6cd5\u5c06 {1} \u4e2d\u7684 {0} \u5e94\u7528\u4e8e {2}({3}) -compiler.err.cant.apply.symbol.1=\ -\u65e0\u6cd5\u5c06 {1} \u4e2d\u7684 {0} \u5e94\u7528\u4e8e {2}({3})\uff1b{4} -compiler.err.cant.assign.val.to.final.var=\ -\u65e0\u6cd5\u4e3a\u6700\u7ec8\u53d8\u91cf {0} \u6307\u5b9a\u503c -compiler.err.cant.deref=\ -\u65e0\u6cd5\u53d6\u6d88\u5f15\u7528 {0} -compiler.err.cant.extend.intf.annotation=\ -\u5bf9\u4e8e @interface\uff0c\u4e0d\u5141\u8bb8 "extends" -compiler.err.cant.inherit.from.final=\ -\u65e0\u6cd5\u4ece\u6700\u7ec8 {0} \u8fdb\u884c\u7ee7\u627f -compiler.err.cant.ref.before.ctor.called=\ -\u65e0\u6cd5\u5728\u8c03\u7528\u7236\u7c7b\u578b\u6784\u9020\u51fd\u6570\u4e4b\u524d\u5f15\u7528 {0} -compiler.err.cant.ret.val.from.meth.decl.void=\ -\u5bf9\u4e8e\u7ed3\u679c\u7c7b\u578b\u4e3a void \u7684\u65b9\u6cd5\uff0c\u65e0\u6cd5\u8fd4\u56de\u503c -compiler.err.cant.select.static.class.from.param.type=\ -\u65e0\u6cd5\u4ece\u53c2\u6570\u5316\u7684\u7c7b\u578b\u4e2d\u9009\u62e9\u9759\u6001\u7c7b -compiler.err.cant.inherit.diff.arg=\ -\u65e0\u6cd5\u4f7f\u7528\u4ee5\u4e0b\u4e0d\u540c\u7684\u53c2\u6570\u7ee7\u627f {0}\uff1a<{1}> \u548c <{2}> -compiler.err.catch.without.try=\ -"catch" \u4e0d\u5e26\u6709 "try" -compiler.err.clash.with.pkg.of.same.name=\ -{0} \u4e0e\u5e26\u6709\u76f8\u540c\u540d\u79f0\u7684\u8f6f\u4ef6\u5305\u51b2\u7a81 -compiler.err.const.expr.req=\ -\u9700\u8981\u5e38\u91cf\u8868\u8fbe\u5f0f -compiler.err.enum.const.req=\ -\u9700\u8981\u975e\u9650\u5b9a\u679a\u4e3e\u5e38\u91cf\u540d\u79f0 -compiler.err.cont.outside.loop=\ -continue \u5728 loop \u5916\u90e8 -compiler.err.cyclic.inheritance=\ -\u5faa\u73af\u7ee7\u627f\u6d89\u53ca {0} -compiler.err.cyclic.annotation.element=\ -\u5faa\u73af\u6ce8\u91ca\u5143\u7d20\u7c7b\u578b -compiler.err.call.to.super.not.allowed.in.enum.ctor=\ -\u5728\u679a\u4e3e\u6784\u9020\u51fd\u6570\u4e2d\u4e0d\u5141\u8bb8\u8c03\u7528\u7236\u7c7b\u578b -compiler.err.no.superclass=\ -{0} \u4e0d\u5177\u6709\u7236\u7c7b +compiler.err.call.must.be.first.stmt.in.ctor=\u5bf9 {0} \u7684\u8c03\u7528\u5fc5\u987b\u662f\u6784\u9020\u51fd\u6570\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8bed\u53e5 +compiler.err.cant.apply.symbol=\u65e0\u6cd5\u5c06 {4} {5} \u4e2d\u7684 {0} {1} \u5e94\u7528\u4e8e {2}({3}) +compiler.err.cant.apply.symbol.1=\u65e0\u6cd5\u5c06 {4} {5} \u4e2d\u7684 {0} {1} \u5e94\u7528\u4e8e {2}({3})\n\u539f\u56e0\u4e3a: {6} +compiler.err.cant.assign.val.to.final.var=\u65e0\u6cd5\u4e3a\u6700\u7ec8\u53d8\u91cf {0} \u6307\u5b9a\u503c +compiler.err.cant.deref=\u65e0\u6cd5\u53d6\u6d88\u5f15\u7528 {0} +compiler.err.cant.extend.intf.annotation=\u5bf9\u4e8e @interface\uff0c\u4e0d\u5141\u8bb8 "extends" +compiler.err.cant.inherit.from.final=\u65e0\u6cd5\u4ece\u6700\u7ec8 {0} \u8fdb\u884c\u7ee7\u627f +compiler.err.cant.ref.before.ctor.called=\u65e0\u6cd5\u5728\u8c03\u7528\u7236\u7c7b\u578b\u6784\u9020\u51fd\u6570\u4e4b\u524d\u5f15\u7528 {0} +compiler.err.cant.ret.val.from.meth.decl.void=\u5bf9\u4e8e\u7ed3\u679c\u7c7b\u578b\u4e3a void \u7684\u65b9\u6cd5\uff0c\u65e0\u6cd5\u8fd4\u56de\u503c +compiler.err.cant.select.static.class.from.param.type=\u65e0\u6cd5\u4ece\u53c2\u6570\u5316\u7684\u7c7b\u578b\u4e2d\u9009\u62e9\u9759\u6001\u7c7b +compiler.err.cant.inherit.diff.arg=\u65e0\u6cd5\u4f7f\u7528\u4ee5\u4e0b\u4e0d\u540c\u7684\u53c2\u6570\u7ee7\u627f {0}\uff1a<{1}> \u548c <{2}> +compiler.err.catch.without.try="catch" \u4e0d\u5e26\u6709 "try" +compiler.err.clash.with.pkg.of.same.name={0} \u4e0e\u5e26\u6709\u76f8\u540c\u540d\u79f0\u7684\u8f6f\u4ef6\u5305\u51b2\u7a81 +compiler.err.const.expr.req=\u9700\u8981\u5e38\u91cf\u8868\u8fbe\u5f0f +compiler.err.enum.const.req=\u9700\u8981\u975e\u9650\u5b9a\u679a\u4e3e\u5e38\u91cf\u540d\u79f0 +compiler.err.cont.outside.loop=continue \u5728 loop \u5916\u90e8 +compiler.err.cyclic.inheritance=\u5faa\u73af\u7ee7\u627f\u6d89\u53ca {0} +compiler.err.cyclic.annotation.element=\u5faa\u73af\u6ce8\u91ca\u5143\u7d20\u7c7b\u578b +compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5728\u679a\u4e3e\u6784\u9020\u51fd\u6570\u4e2d\u4e0d\u5141\u8bb8\u8c03\u7528\u7236\u7c7b\u578b +compiler.err.no.superclass={0} \u4e0d\u5177\u6709\u7236\u7c7b -compiler.err.concrete.inheritance.conflict=\ -{1} \u4e2d\u7684\u65b9\u6cd5 {0} \u548c {3} \u4e2d\u7684\u65b9\u6cd5 {2} \u662f\u4f7f\u7528\u76f8\u540c\u7684\u7b7e\u540d\u7ee7\u627f\u7684 +compiler.err.concrete.inheritance.conflict={1} \u4e2d\u7684\u65b9\u6cd5 {0} \u548c {3} \u4e2d\u7684\u65b9\u6cd5 {2} \u662f\u4f7f\u7528\u76f8\u540c\u7684\u7b7e\u540d\u7ee7\u627f\u7684 -compiler.err.default.allowed.in.intf.annotation.member=\ -\u4ec5\u5728 @interface \u6210\u5458\u4e2d\u5141\u8bb8\u4f7f\u7528\u9ed8\u8ba4\u503c -compiler.err.doesnt.exist=\ -\u8f6f\u4ef6\u5305 {0} \u4e0d\u5b58\u5728 -compiler.err.duplicate.annotation=\ -\u6ce8\u91ca\u91cd\u590d -compiler.err.duplicate.annotation.member.value=\ -{1} \u4e2d\u7684\u6ce8\u91ca\u6210\u5458\u503c {0} \u91cd\u590d -compiler.err.duplicate.class=\ -\u7c7b\u91cd\u590d\uff1a {0} -compiler.err.duplicate.case.label=\ -case \u6807\u7b7e\u91cd\u590d -compiler.err.duplicate.default.label=\ -default \u6807\u7b7e\u91cd\u590d +compiler.err.default.allowed.in.intf.annotation.member=\u4ec5\u5728 @interface \u6210\u5458\u4e2d\u5141\u8bb8\u4f7f\u7528\u9ed8\u8ba4\u503c +compiler.err.doesnt.exist=\u8f6f\u4ef6\u5305 {0} \u4e0d\u5b58\u5728 +compiler.err.duplicate.annotation=\u6ce8\u91ca\u91cd\u590d +compiler.err.duplicate.annotation.member.value={1} \u4e2d\u7684\u6ce8\u91ca\u6210\u5458\u503c {0} \u91cd\u590d +compiler.err.duplicate.class=\u7c7b\u91cd\u590d\uff1a {0} +compiler.err.duplicate.case.label=case \u6807\u7b7e\u91cd\u590d +compiler.err.duplicate.default.label=default \u6807\u7b7e\u91cd\u590d -compiler.err.else.without.if=\ -"else" \u4e0d\u5e26\u6709 "if" -compiler.err.empty.char.lit=\ -\u7a7a\u5b57\u7b26\u5b57\u9762\u503c -compiler.err.encl.class.required=\ -\u9700\u8981\u5305\u542b {0} \u7684\u5c01\u95ed\u5b9e\u4f8b -compiler.err.enum.annotation.must.be.enum.constant=\ -\u679a\u4e3e\u6ce8\u91ca\u503c\u5fc5\u987b\u662f\u679a\u4e3e\u5e38\u91cf +compiler.err.else.without.if="else" \u4e0d\u5e26\u6709 "if" +compiler.err.empty.bytecode.ident=\u7a7a\u5b57\u8282\u7801\u6807\u8bc6\u7b26 +compiler.err.empty.char.lit=\u7a7a\u5b57\u7b26\u5b57\u9762\u503c +compiler.err.encl.class.required=\u9700\u8981\u5305\u542b {0} \u7684\u5c01\u95ed\u5b9e\u4f8b +compiler.err.enum.annotation.must.be.enum.constant=\u679a\u4e3e\u6ce8\u91ca\u503c\u5fc5\u987b\u662f\u679a\u4e3e\u5e38\u91cf -compiler.err.enum.cant.be.instantiated=\ -\u65e0\u6cd5\u5b9e\u4f8b\u5316\u679a\u4e3e\u7c7b\u578b -compiler.err.enum.label.must.be.unqualified.enum=\ -\u679a\u4e3e switch case \u6807\u7b7e\u5fc5\u987b\u4e3a\u679a\u4e3e\u5e38\u91cf\u7684\u975e\u9650\u5b9a\u540d\u79f0 -compiler.err.enum.no.subclassing=\ -\u7c7b\u65e0\u6cd5\u76f4\u63a5\u7ee7\u627f java.lang.Enum -compiler.err.enum.types.not.extensible=\ -\u679a\u4e3e\u7c7b\u578b\u4e0d\u53ef\u7ee7\u627f -compiler.err.enum.no.finalize=\ -\u679a\u4e3e\u4e0d\u80fd\u6709 finalize \u65b9\u6cd5 -compiler.err.error.reading.file=\ -\u8bfb\u53d6 {0} \u65f6\u51fa\u9519\uff1b{1} -compiler.err.except.already.caught=\ -\u5df2\u6355\u6349\u5230\u5f02\u5e38 {0} -compiler.err.except.never.thrown.in.try=\ -\u5728\u76f8\u5e94\u7684 try \u8bed\u53e5\u4e3b\u4f53\u4e2d\u4e0d\u80fd\u629b\u51fa\u5f02\u5e38 {0} +compiler.err.enum.cant.be.instantiated=\u65e0\u6cd5\u5b9e\u4f8b\u5316\u679a\u4e3e\u7c7b\u578b +compiler.err.enum.label.must.be.unqualified.enum=\u679a\u4e3e switch case \u6807\u7b7e\u5fc5\u987b\u4e3a\u679a\u4e3e\u5e38\u91cf\u7684\u975e\u9650\u5b9a\u540d\u79f0 +compiler.err.enum.no.subclassing=\u7c7b\u65e0\u6cd5\u76f4\u63a5\u7ee7\u627f java.lang.Enum +compiler.err.enum.types.not.extensible=\u679a\u4e3e\u7c7b\u578b\u4e0d\u53ef\u7ee7\u627f +compiler.err.enum.no.finalize=\u679a\u4e3e\u4e0d\u80fd\u6709 finalize \u65b9\u6cd5 +compiler.err.error.reading.file=\u8bfb\u53d6 {0} \u65f6\u51fa\u9519\uff1b{1} +compiler.err.except.already.caught=\u5df2\u6355\u6349\u5230\u5f02\u5e38 {0} +compiler.err.except.never.thrown.in.try=\u5728\u76f8\u5e94\u7684 try \u8bed\u53e5\u4e3b\u4f53\u4e2d\u4e0d\u80fd\u629b\u51fa\u5f02\u5e38 {0} -compiler.err.final.parameter.may.not.be.assigned=\ -\u4e0d\u80fd\u6307\u5b9a\u6700\u7ec8\u53c2\u6570 {0} -compiler.err.finally.without.try=\ -"finally" \u4e0d\u5e26\u6709 "try" -compiler.err.foreach.not.applicable.to.type=\ -foreach \u4e0d\u9002\u7528\u4e8e\u8868\u8fbe\u5f0f\u7c7b\u578b -compiler.err.fp.number.too.large=\ -\u6d6e\u70b9\u6570\u8fc7\u5927 -compiler.err.fp.number.too.small=\ -\u6d6e\u70b9\u6570\u8fc7\u5c0f +compiler.err.final.parameter.may.not.be.assigned=\u4e0d\u80fd\u6307\u5b9a\u6700\u7ec8\u53c2\u6570 {0} +compiler.err.finally.without.try="finally" \u4e0d\u5e26\u6709 "try" +compiler.err.foreach.not.applicable.to.type=foreach \u4e0d\u9002\u7528\u4e8e\u8868\u8fbe\u5f0f\u7c7b\u578b +compiler.err.fp.number.too.large=\u6d6e\u70b9\u6570\u8fc7\u5927 +compiler.err.fp.number.too.small=\u6d6e\u70b9\u6570\u8fc7\u5c0f -compiler.err.generic.array.creation=\ -\u521b\u5efa\u6cdb\u578b\u6570\u7ec4 -compiler.err.generic.throwable=\ -\u6cdb\u578b\u7c7b\u65e0\u6cd5\u7ee7\u627f java.lang.Throwable +compiler.err.generic.array.creation=\u521b\u5efa\u6cdb\u578b\u6570\u7ec4 +compiler.err.generic.throwable=\u6cdb\u578b\u7c7b\u65e0\u6cd5\u7ee7\u627f java.lang.Throwable -compiler.err.icls.cant.have.static.decl=\ -\u5185\u90e8\u7c7b\u4e0d\u80fd\u6709\u9759\u6001\u58f0\u660e -compiler.err.illegal.char=\ -\u975e\u6cd5\u5b57\u7b26\uff1a \\{0} -compiler.err.illegal.char.for.encoding=\ -\u7f16\u7801 {0} \u7684\u4e0d\u53ef\u6620\u5c04\u5b57\u7b26 -compiler.err.illegal.combination.of.modifiers=\ -\u975e\u6cd5\u7684\u4fee\u9970\u7b26\u7ec4\u5408\uff1a{0} \u548c {1} -compiler.err.illegal.enum.static.ref=\ -\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u5bf9\u9759\u6001\u5b57\u6bb5\u7684\u5f15\u7528\u4e0d\u5408\u6cd5 -compiler.err.illegal.esc.char=\ -\u975e\u6cd5\u8f6c\u4e49\u5b57\u7b26 -compiler.err.illegal.forward.ref=\ -\u975e\u6cd5\u5411\u524d\u5f15\u7528 -compiler.warn.forward.ref=\ - \u5148\u5f15\u7528\u53d8\u91cf''{0}''\uff0c\u7136\u540e\u518d\u5bf9\u5176\u521d\u59cb\u5316 -compiler.err.illegal.generic.type.for.instof=\ -instanceof \u7684\u6cdb\u578b\u7c7b\u578b\u4e0d\u5408\u6cd5 -compiler.err.illegal.initializer.for.type=\ -{0} \u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u4e0d\u5408\u6cd5 -compiler.err.illegal.line.end.in.char.lit=\ -\u5b57\u7b26\u5b57\u9762\u503c\u7684\u884c\u7ed3\u5c3e\u4e0d\u5408\u6cd5 -compiler.err.illegal.nonascii.digit=\ -\u975e\u6cd5\u7684\u975e ASCII \u6570\u5b57 -compiler.err.illegal.qual.not.icls=\ -\u975e\u6cd5\u9650\u5b9a\u7b26\uff1b{0} \u4e0d\u662f\u5185\u90e8\u7c7b -compiler.err.illegal.start.of.expr=\ -\u975e\u6cd5\u7684\u8868\u8fbe\u5f0f\u5f00\u59cb -compiler.err.illegal.start.of.type=\ -\u975e\u6cd5\u7684\u7c7b\u578b\u5f00\u59cb -compiler.err.illegal.unicode.esc=\ -\u975e\u6cd5\u7684 Unicode \u8f6c\u4e49 -compiler.err.import.requires.canonical=\ -\u5bfc\u5165\u9700\u8981 {0} \u7684\u89c4\u8303\u540d\u79f0 -compiler.err.improperly.formed.type.param.missing=\ -\u7c7b\u578b\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u7f3a\u5c11\u67d0\u4e9b\u53c2\u6570 -compiler.err.improperly.formed.type.inner.raw.param=\ -\u7c7b\u578b\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u7ed9\u51fa\u4e86\u666e\u901a\u7c7b\u578b\u7684\u7c7b\u578b\u53c2\u6570 -compiler.err.incomparable.types=\ -\u4e0d\u53ef\u6bd4\u8f83\u7684\u7c7b\u578b\uff1a{0} \u548c {1} -compiler.err.int.number.too.large=\ -\u8fc7\u5927\u7684\u6574\u6570\uff1a {0} -compiler.err.internal.error.cant.instantiate=\ -\u5185\u90e8\u9519\u8bef\uff1b\u65e0\u6cd5\u5c06\u4f4d\u4e8e {1} \u7684 {0} \u5b9e\u4f8b\u5316\u4e3a ({2}) -compiler.err.intf.annotation.members.cant.have.params=\ -@interface \u6210\u5458\u4e0d\u80fd\u5e26\u6709\u53c2\u6570 -compiler.err.intf.annotation.cant.have.type.params=\ -@interface \u4e0d\u80fd\u5e26\u6709\u7c7b\u578b\u53c2\u6570 -compiler.err.intf.annotation.members.cant.have.type.params=\ -@interface \u6210\u5458\u4e0d\u80fd\u5e26\u6709\u7c7b\u578b\u53c2\u6570 -compiler.err.intf.annotation.member.clash=\ - @interface \u6210\u5458\u4e0e {1} \u4e2d\u7684\u65b9\u6cd5''{0}''\u51b2\u7a81 -compiler.err.intf.expected.here=\ -\u6b64\u5904\u9700\u8981\u63a5\u53e3 -compiler.err.intf.meth.cant.have.body=\ -\u63a5\u53e3\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53 -compiler.err.invalid.annotation.member.type=\ -\u6ce8\u91ca\u6210\u5458\u7684\u7c7b\u578b\u65e0\u6548 -compiler.err.invalid.hex.number=\ -\u5341\u516d\u8fdb\u5236\u6570\u5b57\u5fc5\u987b\u5305\u542b\u81f3\u5c11\u4e00\u4f4d\u5341\u516d\u8fdb\u5236\u6570 -compiler.err.invalid.meth.decl.ret.type.req=\ -\u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u8fd4\u56de\u7c7b\u578b +compiler.err.icls.cant.have.static.decl=\u5185\u90e8\u7c7b\u4e0d\u80fd\u6709\u9759\u6001\u58f0\u660e +compiler.err.illegal.bytecode.ident.char=\u975e\u6cd5\u5b57\u8282\u7801\u6807\u8bc6\u7b26\u5b57\u7b26\uff1a\\{0} +compiler.err.illegal.char=\u975e\u6cd5\u5b57\u7b26\uff1a \\{0} +compiler.err.illegal.char.for.encoding=\u7f16\u7801 {0} \u7684\u4e0d\u53ef\u6620\u5c04\u5b57\u7b26 +compiler.err.illegal.combination.of.modifiers=\u975e\u6cd5\u7684\u4fee\u9970\u7b26\u7ec4\u5408\uff1a{0} \u548c {1} +compiler.err.illegal.enum.static.ref=\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u5bf9\u9759\u6001\u5b57\u6bb5\u7684\u5f15\u7528\u4e0d\u5408\u6cd5 +compiler.err.illegal.esc.char=\u975e\u6cd5\u8f6c\u4e49\u5b57\u7b26 +compiler.err.illegal.forward.ref=\u975e\u6cd5\u5411\u524d\u5f15\u7528 +compiler.warn.forward.ref=\u5728\u53d8\u91cf\u3000''{0}'' \u521d\u59cb\u5316\u4e4b\u524d\u5bf9\u5176\u5f15\u7528 +compiler.err.illegal.self.ref=\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u81ea\u6211\u5f15\u7528 +compiler.warn.self.ref=\u5728\u53d8\u91cf\u3000''{0}''\u3000\u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u81ea\u6211\u5f15\u7528 +compiler.err.illegal.generic.type.for.instof=instanceof \u7684\u6cdb\u578b\u7c7b\u578b\u4e0d\u5408\u6cd5 +compiler.err.illegal.initializer.for.type={0} \u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u4e0d\u5408\u6cd5 +compiler.err.illegal.line.end.in.char.lit=\u5b57\u7b26\u5b57\u9762\u503c\u7684\u884c\u7ed3\u5c3e\u4e0d\u5408\u6cd5 +compiler.err.illegal.nonascii.digit=\u975e\u6cd5\u7684\u975e ASCII \u6570\u5b57 +compiler.err.illegal.underscore=\u975e\u6cd5\u4e0b\u5212\u7ebf +compiler.err.illegal.qual.not.icls=\u975e\u6cd5\u9650\u5b9a\u7b26\uff1b{0} \u4e0d\u662f\u5185\u90e8\u7c7b +compiler.err.illegal.start.of.expr=\u975e\u6cd5\u7684\u8868\u8fbe\u5f0f\u5f00\u59cb +compiler.err.illegal.start.of.type=\u975e\u6cd5\u7684\u7c7b\u578b\u5f00\u59cb +compiler.err.illegal.unicode.esc=\u975e\u6cd5\u7684 Unicode \u8f6c\u4e49 +compiler.err.import.requires.canonical=\u5bfc\u5165\u9700\u8981 {0} \u7684\u89c4\u8303\u540d\u79f0 +compiler.err.improperly.formed.type.param.missing=\u7c7b\u578b\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u7f3a\u5c11\u67d0\u4e9b\u53c2\u6570 +compiler.err.improperly.formed.type.inner.raw.param=\u7c7b\u578b\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u7ed9\u51fa\u4e86\u666e\u901a\u7c7b\u578b\u7684\u7c7b\u578b\u53c2\u6570 +compiler.err.incomparable.types=\u4e0d\u53ef\u6bd4\u8f83\u7684\u7c7b\u578b\uff1a{0} \u548c {1} +compiler.err.int.number.too.large=\u8fc7\u5927\u7684\u6574\u6570\uff1a {0} +compiler.err.internal.error.cant.instantiate=\u5185\u90e8\u9519\u8bef\uff1b\u65e0\u6cd5\u5c06\u4f4d\u4e8e {1} \u7684 {0} \u5b9e\u4f8b\u5316\u4e3a ({2}) +compiler.err.intf.annotation.members.cant.have.params=@interface \u6210\u5458\u4e0d\u80fd\u5e26\u6709\u53c2\u6570 +compiler.err.intf.annotation.cant.have.type.params=@interface \u4e0d\u80fd\u5e26\u6709\u7c7b\u578b\u53c2\u6570 +compiler.err.intf.annotation.members.cant.have.type.params=@interface \u6210\u5458\u4e0d\u80fd\u5e26\u6709\u7c7b\u578b\u53c2\u6570 +compiler.err.intf.annotation.member.clash=@interface \u6210\u5458\u4e0e {1} \u4e2d\u7684\u65b9\u6cd5''{0}''\u51b2\u7a81 +compiler.err.intf.expected.here=\u6b64\u5904\u9700\u8981\u63a5\u53e3 +compiler.err.intf.meth.cant.have.body=\u63a5\u53e3\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53 +compiler.err.invalid.annotation.member.type=\u6ce8\u91ca\u6210\u5458\u7684\u7c7b\u578b\u65e0\u6548 +compiler.err.invalid.binary.number=\u4e8c\u8fdb\u5236\u6570\u5b57\u5fc5\u987b\u5305\u542b\u81f3\u5c11\u4e00\u4f4d\u4e8c\u8fdb\u5236\u6570 +compiler.err.invalid.hex.number=\u5341\u516d\u8fdb\u5236\u6570\u5b57\u5fc5\u987b\u5305\u542b\u81f3\u5c11\u4e00\u4f4d\u5341\u516d\u8fdb\u5236\u6570 +compiler.err.invalid.meth.decl.ret.type.req=\u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u8fd4\u56de\u7c7b\u578b -compiler.err.label.already.in.use=\ -\u6807\u7b7e {0} \u5df2\u4f7f\u7528 -compiler.err.local.var.accessed.from.icls.needs.final=\ -\u4ece\u5185\u90e8\u7c7b\u4e2d\u8bbf\u95ee\u5c40\u90e8\u53d8\u91cf {0}\uff1b\u9700\u8981\u88ab\u58f0\u660e\u4e3a\u6700\u7ec8\u7c7b\u578b -compiler.err.local.enum=\ -\u679a\u4e3e\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u5730\u7c7b\u578b +compiler.err.label.already.in.use=\u6807\u7b7e {0} \u5df2\u4f7f\u7528 +compiler.err.local.var.accessed.from.icls.needs.final=\u4ece\u5185\u90e8\u7c7b\u4e2d\u8bbf\u95ee\u5c40\u90e8\u53d8\u91cf {0}\uff1b\u9700\u8981\u88ab\u58f0\u660e\u4e3a\u6700\u7ec8\u7c7b\u578b +compiler.err.local.enum=\u679a\u4e3e\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u5730\u7c7b\u578b +compiler.err.cannot.create.array.with.type.arguments=\u4e0d\u80fd\u4f7f\u7528\u7c7b\u578b\u53c2\u6570\u521b\u5efa\u6570\u7ec4 # # limits. We don't give the limits in the diagnostic because we expect # them to change, yet we want to use the same diagnostic. These are all # detected during code generation. # -compiler.err.limit.code=\ -\u4ee3\u7801\u8fc7\u957f -compiler.err.limit.code.too.large.for.try.stmt=\ -try \u8bed\u53e5\u7684\u4ee3\u7801\u8fc7\u957f -compiler.err.limit.dimensions=\ -\u6570\u7ec4\u7c7b\u578b\u7ef4\u6570\u8fc7\u591a -compiler.err.limit.locals=\ -\u5c40\u90e8\u53d8\u91cf\u8fc7\u591a -compiler.err.limit.parameters=\ -\u53c2\u6570\u8fc7\u591a -compiler.err.limit.pool=\ -\u5e38\u91cf\u8fc7\u591a -compiler.err.limit.pool.in.class=\ -\u7c7b {0} \u4e2d\u7684\u5e38\u91cf\u8fc7\u591a -compiler.err.limit.stack=\ -\u4ee3\u7801\u9700\u8981\u8fc7\u591a\u5806\u6808 -compiler.err.limit.string=\ -\u5e38\u91cf\u5b57\u7b26\u4e32\u8fc7\u957f -compiler.err.limit.string.overflow=\ -\u5bf9\u4e8e\u5e38\u91cf\u6c60\u6765\u8bf4\uff0c\u5b57\u7b26\u4e32 \"{0}...\" \u7684 UTF8 \u8868\u793a\u8fc7\u957f +compiler.err.limit.code=\u4ee3\u7801\u8fc7\u957f +compiler.err.limit.code.too.large.for.try.stmt=try \u8bed\u53e5\u7684\u4ee3\u7801\u8fc7\u957f +compiler.err.limit.dimensions=\u6570\u7ec4\u7c7b\u578b\u7ef4\u6570\u8fc7\u591a +compiler.err.limit.locals=\u5c40\u90e8\u53d8\u91cf\u8fc7\u591a +compiler.err.limit.parameters=\u53c2\u6570\u8fc7\u591a +compiler.err.limit.pool=\u5e38\u91cf\u8fc7\u591a +compiler.err.limit.pool.in.class=\u7c7b {0} \u4e2d\u7684\u5e38\u91cf\u8fc7\u591a +compiler.err.limit.stack=\u4ee3\u7801\u9700\u8981\u8fc7\u591a\u5806\u6808 +compiler.err.limit.string=\u5e38\u91cf\u5b57\u7b26\u4e32\u8fc7\u957f +compiler.err.limit.string.overflow=\u5bf9\u4e8e\u5e38\u91cf\u6c60\u6765\u8bf4\uff0c\u5b57\u7b26\u4e32 \"{0}...\" \u7684 UTF8 \u8868\u793a\u8fc7\u957f -compiler.err.malformed.fp.lit=\ -\u6d6e\u70b9\u5b57\u9762\u503c\u4e0d\u89c4\u5219 -compiler.err.method.does.not.override.superclass=\ - \u65b9\u6cd5\u4e0d\u4f1a\u8986\u76d6\u6216\u5b9e\u73b0\u8d85\u7c7b\u578b\u7684\u65b9\u6cd5 -compiler.err.missing.meth.body.or.decl.abstract=\ -\u7f3a\u5c11\u65b9\u6cd5\u4e3b\u4f53\uff0c\u6216\u58f0\u660e\u62bd\u8c61 -compiler.err.missing.ret.stmt=\ -\u7f3a\u5c11\u8fd4\u56de\u8bed\u53e5 -compiler.err.missing.ret.val=\ -\u7f3a\u5c11\u8fd4\u56de\u503c -compiler.err.mod.not.allowed.here=\ -\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528\u4fee\u9970\u7b26 {0} -compiler.err.intf.not.allowed.here=\ -\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528\u63a5\u53e3 -compiler.err.enums.must.be.static=\ -\u53ea\u6709\u5728\u9759\u6001\u4e0a\u4e0b\u6587\u4e2d\u624d\u5141\u8bb8\u4f7f\u7528\u679a\u4e3e\u58f0\u660e +compiler.err.malformed.fp.lit=\u6d6e\u70b9\u5b57\u9762\u503c\u4e0d\u89c4\u5219 +compiler.err.method.does.not.override.superclass=\u65b9\u6cd5\u4e0d\u4f1a\u8986\u76d6\u6216\u5b9e\u73b0\u8d85\u7c7b\u578b\u7684\u65b9\u6cd5 +compiler.err.missing.meth.body.or.decl.abstract=\u7f3a\u5c11\u65b9\u6cd5\u4e3b\u4f53\uff0c\u6216\u58f0\u660e\u62bd\u8c61 +compiler.err.missing.ret.stmt=\u7f3a\u5c11\u8fd4\u56de\u8bed\u53e5 +compiler.err.missing.ret.val=\u7f3a\u5c11\u8fd4\u56de\u503c +compiler.err.mod.not.allowed.here=\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528\u4fee\u9970\u7b26 {0} +compiler.err.intf.not.allowed.here=\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528\u63a5\u53e3 +compiler.err.enums.must.be.static=\u53ea\u6709\u5728\u9759\u6001\u4e0a\u4e0b\u6587\u4e2d\u624d\u5141\u8bb8\u4f7f\u7528\u679a\u4e3e\u58f0\u660e -compiler.err.name.clash.same.erasure=\ -\u540d\u79f0\u51b2\u7a81\uff1a{0} \u548c {1} \u5177\u6709\u76f8\u540c\u7591\u7b26 -compiler.err.name.clash.same.erasure.no.override=\ -\u540d\u79f0\u51b2\u7a81\uff1a{1} \u4e2d\u7684 {0} \u548c {3} \u4e2d\u7684 {2} \u5177\u6709\u76f8\u540c\u7591\u7b26\uff0c\u4f46\u4e24\u8005\u5747\u4e0d\u8986\u76d6\u5bf9\u65b9 -compiler.err.name.reserved.for.internal.use=\ -{0} \u4e3a\u5185\u90e8\u4f7f\u7528\u4fdd\u7559 -compiler.err.native.meth.cant.have.body=\ -\u672c\u673a\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53 -compiler.err.neither.conditional.subtype=\ -? \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\uff1a\u4e24\u8005\u90fd\u4e0d\u662f\u5bf9\u65b9\u7684\u5b50\u7c7b\u578b\n\ -\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\u6570\uff1a {0}\n\ -\u7b2c\u4e09\u4e2a\u64cd\u4f5c\u6570\uff1a {1} -compiler.err.new.not.allowed.in.annotation=\ -\u6ce8\u91ca\u4e2d\u4e0d\u5141\u8bb8\u4f7f\u7528 "new" -compiler.err.no.annotation.member=\ -{1} \u4e2d\u6ca1\u6709\u6ce8\u91ca\u6210\u5458 {0} -compiler.err.no.encl.instance.of.type.in.scope=\ -\u4f5c\u7528\u57df\u4e2d\u6ca1\u6709\u7c7b\u578b\u4e3a {0} \u7684\u5c01\u95ed\u5b9e\u4f8b -compiler.err.no.intf.expected.here=\ -\u6b64\u5904\u4e0d\u9700\u8981\u63a5\u53e3 -compiler.err.no.match.entry=\ -{0} \u5728 {1} \u7684\u6761\u76ee\u4e2d\u6ca1\u6709\u5339\u914d\u9879\uff1b\u9700\u8981 {2} -compiler.err.not.annotation.type=\ -{0} \u4e0d\u662f\u6ce8\u91ca\u7c7b\u578b -compiler.err.not.def.access.class.intf.cant.access=\ -{1} \u4e2d\u7684 {0} \u662f\u5728\u4e0d\u53ef\u8bbf\u95ee\u7684\u7c7b\u6216\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684 -compiler.err.not.def.public.cant.access=\ -{0} \u5728 {1} \u4e2d\u4e0d\u662f\u516c\u5171\u7684\uff1b\u65e0\u6cd5\u4ece\u5916\u90e8\u8f6f\u4ef6\u5305\u4e2d\u5bf9\u5176\u8fdb\u884c\u8bbf\u95ee -compiler.err.not.loop.label=\ -\u4e0d\u662f loop \u6807\u7b7e\uff1a {0} -compiler.err.not.stmt=\ -\u4e0d\u662f\u8bed\u53e5 -compiler.err.not.encl.class=\ -\u4e0d\u662f\u5c01\u95ed\u7c7b\uff1a {0} +compiler.err.name.clash.same.erasure=\u540d\u79f0\u51b2\u7a81\uff1a{0} \u548c {1} \u5177\u6709\u76f8\u540c\u7591\u7b26 +compiler.err.name.clash.same.erasure.no.override=\u540d\u79f0\u51b2\u7a81\uff1a{1} \u4e2d\u7684 {0} \u548c {3} \u4e2d\u7684 {2} \u5177\u6709\u76f8\u540c\u7591\u7b26\uff0c\u4f46\u4e24\u8005\u5747\u4e0d\u8986\u76d6\u5bf9\u65b9 +compiler.err.name.reserved.for.internal.use={0} \u4e3a\u5185\u90e8\u4f7f\u7528\u4fdd\u7559 +compiler.err.native.meth.cant.have.body=\u672c\u673a\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53 +compiler.err.neither.conditional.subtype=? \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\uff1a\u4e24\u8005\u90fd\u4e0d\u662f\u5bf9\u65b9\u7684\u5b50\u7c7b\u578b\n\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\u6570\uff1a {0}\n\u7b2c\u4e09\u4e2a\u64cd\u4f5c\u6570\uff1a {1} +compiler.err.new.not.allowed.in.annotation=\u6ce8\u91ca\u4e2d\u4e0d\u5141\u8bb8\u4f7f\u7528 "new" +compiler.err.no.annotation.member={1} \u4e2d\u6ca1\u6709\u6ce8\u91ca\u6210\u5458 {0} +compiler.err.no.encl.instance.of.type.in.scope=\u4f5c\u7528\u57df\u4e2d\u6ca1\u6709\u7c7b\u578b\u4e3a {0} \u7684\u5c01\u95ed\u5b9e\u4f8b +compiler.err.no.intf.expected.here=\u6b64\u5904\u4e0d\u9700\u8981\u63a5\u53e3 +compiler.err.no.match.entry={0} \u5728 {1} \u7684\u6761\u76ee\u4e2d\u6ca1\u6709\u5339\u914d\u9879\uff1b\u9700\u8981 {2} +compiler.err.not.annotation.type={0} \u4e0d\u662f\u6ce8\u91ca\u7c7b\u578b +compiler.err.not.def.access.class.intf.cant.access={1} \u4e2d\u7684 {0} \u662f\u5728\u4e0d\u53ef\u8bbf\u95ee\u7684\u7c7b\u6216\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684 +compiler.err.not.def.public.cant.access={0} \u5728 {1} \u4e2d\u4e0d\u662f\u516c\u5171\u7684\uff1b\u65e0\u6cd5\u4ece\u5916\u90e8\u8f6f\u4ef6\u5305\u4e2d\u5bf9\u5176\u8fdb\u884c\u8bbf\u95ee +compiler.err.not.loop.label=\u4e0d\u662f loop \u6807\u7b7e\uff1a {0} +compiler.err.not.stmt=\u4e0d\u662f\u8bed\u53e5 +compiler.err.not.encl.class=\u4e0d\u662f\u5c01\u95ed\u7c7b\uff1a {0} -compiler.err.operator.cant.be.applied=\ -\u8fd0\u7b97\u7b26 {0} \u4e0d\u80fd\u5e94\u7528\u4e8e {1} +compiler.err.operator.cant.be.applied=\u8fd0\u7b97\u7b26 {0} \u4e0d\u80fd\u5e94\u7528\u4e8e {1} -compiler.err.pkg.annotations.sb.in.package-info.java=\ -\u8f6f\u4ef6\u5305\u6ce8\u91ca\u5e94\u5728\u6587\u4ef6 package-info.java \u4e2d -compiler.err.pkg.clashes.with.class.of.same.name=\ -\u8f6f\u4ef6\u5305 {0} \u4e0e\u5e26\u6709\u76f8\u540c\u540d\u79f0\u7684\u7c7b\u51b2\u7a81 +compiler.err.pkg.annotations.sb.in.package-info.java=\u8f6f\u4ef6\u5305\u6ce8\u91ca\u5e94\u5728\u6587\u4ef6 package-info.java \u4e2d +compiler.err.pkg.clashes.with.class.of.same.name=\u8f6f\u4ef6\u5305 {0} \u4e0e\u5e26\u6709\u76f8\u540c\u540d\u79f0\u7684\u7c7b\u51b2\u7a81 + +compiler.err.warnings.and.werror=\u53d1\u73b0\u8b66\u544a\u5e76\u4e14\u6307\u5b9a\u4e86\u3000-Werror # Errors related to annotation processing -compiler.err.proc.cant.access=\ -\u65e0\u6cd5\u8bbf\u95ee {0}\n\ -{1}\n\ -\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n\ -{2} +compiler.err.proc.cant.access=\u65e0\u6cd5\u8bbf\u95ee {0}\n{1}\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n{2} -compiler.err.proc.cant.find.class=\ -\u627e\u4e0d\u5230\u201c{0}\u201d\u7684\u7c7b\u6587\u4ef6\u3002 +compiler.err.proc.cant.find.class=\u627e\u4e0d\u5230\u201c{0}\u201d\u7684\u7c7b\u6587\u4ef6\u3002 # Print a client-generated error message; assumed to be localized, no translation required -compiler.err.proc.messager=\ - {0} +compiler.err.proc.messager={0} -compiler.err.proc.no.explicit.annotation.processing.requested=\ -\u4ec5\u5f53\u663e\u5f0f\u8bf7\u6c42\u6ce8\u91ca\u5904\u7406\u65f6\u624d\u63a5\u53d7\u7c7b\u540d\u79f0\u201c{0}\u201d +compiler.err.proc.no.explicit.annotation.processing.requested=\u4ec5\u5f53\u663e\u5f0f\u8bf7\u6c42\u6ce8\u91ca\u5904\u7406\u65f6\u624d\u63a5\u53d7\u7c7b\u540d\u79f0\u201c{0}\u201d -compiler.err.proc.processor.bad.option.name=\ - \u5904\u7406\u5668"{1}"\u63d0\u4f9b\u7684\u9009\u9879\u540d\u79f0"{0}"\u9519\u8bef +compiler.err.proc.no.service=\u65e0\u6cd5\u627e\u5230\u670d\u52a1\u52a0\u8f7d\u5668\u7c7b\u3002\njava.util.ServiceLoader \u6216 sun.misc.Service \u5fc5\u987b\u53ef\u7528\u3002 -compiler.err.proc.processor.cant.instantiate=\ -\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d\u7684\u5b9e\u4f8b +compiler.err.proc.processor.bad.option.name=\u5904\u7406\u5668"{1}"\u63d0\u4f9b\u7684\u9009\u9879\u540d\u79f0"{0}"\u9519\u8bef -compiler.err.proc.processor.constructor.error=\ -\u6784\u9020\u5904\u7406\u7a0b\u5e8f\u5bf9\u8c61 {0} \u65f6\u629b\u51fa\u5f02\u5e38 +compiler.err.proc.processor.cant.instantiate=\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d\u7684\u5b9e\u4f8b -compiler.err.proc.processor.not.found=\ -\u672a\u627e\u5230\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d +compiler.err.proc.processor.constructor.error=\u6784\u9020\u5904\u7406\u7a0b\u5e8f\u5bf9\u8c61 {0} \u65f6\u629b\u51fa\u5f02\u5e38 -compiler.err.proc.processor.wrong.type=\ -\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d\u672a\u5b9e\u73b0 javax.annotation.processing.Processor +compiler.err.proc.processor.not.found=\u672a\u627e\u5230\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d -compiler.err.proc.bad.config.file=\ -\u670d\u52a1\u914d\u7f6e\u6587\u4ef6\u4e0d\u6b63\u786e\uff0c\u6216\u6784\u9020\u5904\u7406\u7a0b\u5e8f\u5bf9\u8c61 {0} \u65f6\u629b\u51fa\u5f02\u5e38 +compiler.err.proc.processor.wrong.type=\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u201c{0}\u201d\u672a\u5b9e\u73b0 javax.annotation.processing.Processor -compiler.err.proc.cant.create.loader=\ -\u65e0\u6cd5\u4e3a\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f {0} \u521b\u5efa\u7c7b\u52a0\u8f7d\u5668 +compiler.err.proc.service.problem=\u751f\u6210\u670d\u52a1\u52a0\u8f7d\u5668\u4ee5\u52a0\u8f7d\u5904\u7406\u5668\u65f6\u53d1\u751f\u9519\u8bef\u3002 -compiler.err.qualified.new.of.static.class=\ -\u9650\u5b9a\u7684\u65b0\u9759\u6001\u7c7b +compiler.err.proc.bad.config.file=\u670d\u52a1\u914d\u7f6e\u6587\u4ef6\u4e0d\u6b63\u786e\uff0c\u6216\u6784\u9020\u5904\u7406\u7a0b\u5e8f\u5bf9\u8c61 {0} \u65f6\u629b\u51fa\u5f02\u5e38 -compiler.err.recursive.ctor.invocation=\ -\u9012\u5f52\u6784\u9020\u51fd\u6570\u8c03\u7528 -compiler.err.ref.ambiguous=\ -\u5bf9 {0} \u7684\u5f15\u7528\u4e0d\u660e\u786e\uff0c{3} \u4e2d\u7684 {1} {2} \u548c {6} \u4e2d\u7684 {4} {5} \u90fd\u5339\u914d -compiler.err.repeated.annotation.target=\ -\u6ce8\u91ca\u76ee\u6807\u91cd\u590d -compiler.err.repeated.interface=\ -\u63a5\u53e3\u91cd\u590d -compiler.err.repeated.modifier=\ -\u4fee\u9970\u7b26\u91cd\u590d -compiler.err.report.access=\ -{0} \u53ef\u4ee5\u5728 {2} \u4e2d\u8bbf\u95ee {1} -compiler.err.ret.outside.meth=\ -\u8fd4\u56de\u5916\u90e8\u65b9\u6cd5 +compiler.err.proc.cant.create.loader=\u65e0\u6cd5\u4e3a\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f {0} \u521b\u5efa\u7c7b\u52a0\u8f7d\u5668 -compiler.err.signature.doesnt.match.supertype=\ -\u7b7e\u540d\u4e0e {0} \u4e0d\u5339\u914d\uff1b\u4e0d\u517c\u5bb9\u7684\u7236\u7c7b\u578b -compiler.err.signature.doesnt.match.intf=\ -\u7b7e\u540d\u4e0e {0} \u4e0d\u5339\u914d\uff1b\u4e0d\u517c\u5bb9\u7684\u63a5\u53e3 -compiler.err.does.not.override.abstract=\ -{0} \u4e0d\u662f\u62bd\u8c61\u7684\uff0c\u5e76\u4e14\u672a\u8986\u76d6 {2} \u4e2d\u7684\u62bd\u8c61\u65b9\u6cd5 {1} -compiler.err.source.cant.overwrite.input.file=\ -\u5199\u5165\u6e90\u65f6\u51fa\u9519\uff1b\u65e0\u6cd5\u8986\u5199\u8f93\u5165\u6587\u4ef6 {0} -compiler.err.stack.sim.error=\ -\u5185\u90e8\u9519\u8bef\uff1a{0} \u4e2d\u7684\u5806\u6808 sim \u9519\u8bef -compiler.err.static.imp.only.classes.and.interfaces=\ -\u4ec5\u4ece\u7c7b\u548c\u63a5\u53e3\u9759\u6001\u5bfc\u5165 -compiler.err.synthetic.name.conflict=\ -\u7b26\u53f7 {0} \u4e0e {1} \u4e2d\u7684 compiler-synthesized \u7b26\u53f7\u51b2\u7a81 +compiler.err.qualified.new.of.static.class=\u9650\u5b9a\u7684\u65b0\u9759\u6001\u7c7b -compiler.err.throws.not.allowed.in.intf.annotation=\ -@interface \u6210\u5458\u4e2d\u4e0d\u5141\u8bb8\u4f7f\u7528 throws \u5b50\u53e5 -compiler.err.try.without.catch.or.finally=\ -"try" \u4e0d\u5e26\u6709 "catch" \u6216 "finally" -compiler.err.type.doesnt.take.params=\ -\u7c7b\u578b {0} \u4e0d\u5e26\u6709\u53c2\u6570 -compiler.err.type.var.cant.be.deref=\ -\u65e0\u6cd5\u4ece\u7c7b\u578b\u53d8\u91cf\u4e2d\u8fdb\u884c\u9009\u62e9 -compiler.err.type.var.may.not.be.followed.by.other.bounds=\ -\u7c7b\u578b\u53d8\u91cf\u540e\u9762\u4e0d\u80fd\u5e26\u6709\u5176\u4ed6\u9650\u5236\u8303\u56f4 -compiler.err.type.var.more.than.once=\ -\u7c7b\u578b\u53d8\u91cf {0} \u5728 {1} \u7684\u7ed3\u679c\u7c7b\u578b\u4e2d\u591a\u6b21\u51fa\u73b0\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 -compiler.err.type.var.more.than.once.in.result=\ -\u7c7b\u578b\u53d8\u91cf {0} \u5728 {1} \u7684\u7c7b\u578b\u4e2d\u591a\u6b21\u51fa\u73b0\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 -compiler.err.types.incompatible.diff.ret=\ -\u7c7b\u578b {0} \u548c {1} \u4e0d\u517c\u5bb9\uff1b\u4e24\u8005\u90fd\u5b9a\u4e49\u4e86 {2}\uff0c\u4f46\u5374\u5e26\u6709\u4e0d\u76f8\u5173\u7684\u8fd4\u56de\u7c7b\u578b +compiler.err.recursive.ctor.invocation=\u9012\u5f52\u6784\u9020\u51fd\u6570\u8c03\u7528 +compiler.err.ref.ambiguous=\u5bf9 {0} \u7684\u5f15\u7528\u4e0d\u660e\u786e\uff0c{3} \u4e2d\u7684 {1} {2} \u548c {6} \u4e2d\u7684 {4} {5} \u90fd\u5339\u914d +compiler.err.repeated.annotation.target=\u6ce8\u91ca\u76ee\u6807\u91cd\u590d +compiler.err.repeated.interface=\u63a5\u53e3\u91cd\u590d +compiler.err.repeated.modifier=\u4fee\u9970\u7b26\u91cd\u590d +compiler.err.report.access={0} \u53ef\u4ee5\u5728 {2} \u4e2d\u8bbf\u95ee {1} +compiler.err.ret.outside.meth=\u8fd4\u56de\u5916\u90e8\u65b9\u6cd5 -compiler.err.unclosed.char.lit=\ -\u672a\u7ed3\u675f\u7684\u5b57\u7b26\u5b57\u9762\u503c -compiler.err.unclosed.comment=\ -\u672a\u7ed3\u675f\u7684\u6ce8\u91ca -compiler.err.unclosed.str.lit=\ -\u672a\u7ed3\u675f\u7684\u5b57\u7b26\u4e32\u5b57\u9762\u503c -compiler.err.unknown.enum.constant=\ -\u5728\u7c7b\u6587\u4ef6 {0} \u4e2d\uff1a\u672a\u77e5\u7684\u679a\u4e3e\u5e38\u91cf {1}.{2} -compiler.err.unsupported.encoding=\ -\u4e0d\u652f\u6301\u7684\u7f16\u7801\uff1a {0} -compiler.err.io.exception=\ -\u8bfb\u53d6\u6e90\u6587\u4ef6\u65f6\u51fa\u9519\uff1a {0} -compiler.err.undef.label=\ -\u672a\u5b9a\u4e49\u7684\u6807\u7b7e\uff1a {0} -compiler.err.undetermined.type=\ -\u65e0\u6cd5\u786e\u5b9a {0} \u7684\u7c7b\u578b\u53c2\u6570 -compiler.err.undetermined.type.1=\ -\u65e0\u6cd5\u786e\u5b9a {0} \u7684\u7c7b\u578b\u53c2\u6570\uff1b{1} -compiler.err.unreachable.stmt=\ -\u65e0\u6cd5\u8bbf\u95ee\u7684\u8bed\u53e5 -compiler.err.initializer.must.be.able.to.complete.normally=\ -\u521d\u59cb\u5316\u7a0b\u5e8f\u5fc5\u987b\u80fd\u591f\u6b63\u5e38\u5b8c\u6210 -compiler.err.unreported.exception.need.to.catch.or.throw=\ -\u672a\u62a5\u544a\u7684\u5f02\u5e38 {0}\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u6355\u6349\u6216\u58f0\u660e\u4ee5\u4fbf\u629b\u51fa -compiler.err.unreported.exception.default.constructor=\ -\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u4e2d\u672a\u62a5\u544a\u7684\u5f02\u5e38 {0} -compiler.err.unsupported.cross.fp.lit=\ -\u8be5 VM \u4e0d\u652f\u6301\u5341\u516d\u8fdb\u5236\u6d6e\u70b9\u5b57\u9762\u503c -compiler.err.void.not.allowed.here=\ -\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528 "void" \u7c7b\u578b +compiler.err.signature.doesnt.match.supertype=\u7b7e\u540d\u4e0e {0} \u4e0d\u5339\u914d\uff1b\u4e0d\u517c\u5bb9\u7684\u7236\u7c7b\u578b +compiler.err.signature.doesnt.match.intf=\u7b7e\u540d\u4e0e {0} \u4e0d\u5339\u914d\uff1b\u4e0d\u517c\u5bb9\u7684\u63a5\u53e3 +compiler.err.does.not.override.abstract={0} \u4e0d\u662f\u62bd\u8c61\u7684\uff0c\u5e76\u4e14\u672a\u8986\u76d6 {2} \u4e2d\u7684\u62bd\u8c61\u65b9\u6cd5 {1} +compiler.err.source.cant.overwrite.input.file=\u5199\u5165\u6e90\u65f6\u51fa\u9519\uff1b\u65e0\u6cd5\u8986\u5199\u8f93\u5165\u6587\u4ef6 {0} +compiler.err.stack.sim.error=\u5185\u90e8\u9519\u8bef\uff1a{0} \u4e2d\u7684\u5806\u6808 sim \u9519\u8bef +compiler.err.static.imp.only.classes.and.interfaces=\u4ec5\u4ece\u7c7b\u548c\u63a5\u53e3\u9759\u6001\u5bfc\u5165 +compiler.err.string.const.req=\u9700\u8981\u5e38\u91cf\u5b57\u7b26\u4e32\u8868\u8fbe\u5f0f +compiler.err.synthetic.name.conflict=\u7b26\u53f7 {0} \u4e0e {1} \u4e2d\u7684 compiler-synthesized \u7b26\u53f7\u51b2\u7a81 +compiler.warn.synthetic.name.conflict=\u7b26\u53f7 {0} \u4e0e {1} \u4e2d\u7684 compiler-synthesized \u7b26\u53f7\u51b2\u7a81 -compiler.err.wrong.number.type.args=\ -\u7c7b\u578b\u53d8\u91cf\u6570\u76ee\u9519\u8bef\uff1b\u9700\u8981 {0} +compiler.err.throws.not.allowed.in.intf.annotation=@interface \u6210\u5458\u4e2d\u4e0d\u5141\u8bb8\u4f7f\u7528 throws \u5b50\u53e5 +compiler.err.try.without.catch.or.finally="try" \u4e0d\u5e26\u6709 "catch" \u6216 "finally" +compiler.err.type.doesnt.take.params=\u7c7b\u578b {0} \u4e0d\u5e26\u6709\u53c2\u6570 +compiler.err.type.var.cant.be.deref=\u65e0\u6cd5\u4ece\u7c7b\u578b\u53d8\u91cf\u4e2d\u8fdb\u884c\u9009\u62e9 +compiler.err.type.var.may.not.be.followed.by.other.bounds=\u7c7b\u578b\u53d8\u91cf\u540e\u9762\u4e0d\u80fd\u5e26\u6709\u5176\u4ed6\u9650\u5236\u8303\u56f4 +compiler.err.type.var.more.than.once=\u7c7b\u578b\u53d8\u91cf {0} \u5728 {1} \u7684\u7ed3\u679c\u7c7b\u578b\u4e2d\u591a\u6b21\u51fa\u73b0\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 +compiler.err.type.var.more.than.once.in.result=\u7c7b\u578b\u53d8\u91cf {0} \u5728 {1} \u7684\u7c7b\u578b\u4e2d\u591a\u6b21\u51fa\u73b0\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316 +compiler.err.types.incompatible.diff.ret=\u7c7b\u578b {0} \u548c {1} \u4e0d\u517c\u5bb9\uff1b\u4e24\u8005\u90fd\u5b9a\u4e49\u4e86 {2}\uff0c\u4f46\u5374\u5e26\u6709\u4e0d\u76f8\u5173\u7684\u8fd4\u56de\u7c7b\u578b -compiler.err.var.might.already.be.assigned=\ -\u53ef\u80fd\u5df2\u6307\u5b9a\u53d8\u91cf {0} -compiler.err.var.might.not.have.been.initialized=\ -\u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u53d8\u91cf {0} -compiler.err.var.might.be.assigned.in.loop=\ -\u53ef\u80fd\u5728 loop \u4e2d\u6307\u5b9a\u4e86\u53d8\u91cf {0} +compiler.err.unclosed.bytecode.ident=\u672a\u7ed3\u675f\u7684\u5b57\u8282\u7801\u6807\u8bc6\u7b26 +compiler.err.unclosed.char.lit=\u672a\u7ed3\u675f\u7684\u5b57\u7b26\u5b57\u9762\u503c +compiler.err.unclosed.comment=\u672a\u7ed3\u675f\u7684\u6ce8\u91ca +compiler.err.unclosed.str.lit=\u672a\u7ed3\u675f\u7684\u5b57\u7b26\u4e32\u5b57\u9762\u503c +compiler.err.unknown.enum.constant=\u5728\u7c7b\u6587\u4ef6 {0} \u4e2d\uff1a\u672a\u77e5\u7684\u679a\u4e3e\u5e38\u91cf {1}.{2} +compiler.err.unsupported.encoding=\u4e0d\u652f\u6301\u7684\u7f16\u7801\uff1a {0} +compiler.err.io.exception=\u8bfb\u53d6\u6e90\u6587\u4ef6\u65f6\u51fa\u9519\uff1a {0} +compiler.err.undef.label=\u672a\u5b9a\u4e49\u7684\u6807\u7b7e\uff1a {0} +compiler.err.undetermined.type=\u65e0\u6cd5\u786e\u5b9a {0} \u7684\u7c7b\u578b\u53c2\u6570 +compiler.err.undetermined.type.1=\u65e0\u6cd5\u786e\u5b9a {0} \u7684\u7c7b\u578b\u53c2\u6570\uff1b{1} +compiler.err.invalid.inferred.types={0} \u7684\u63a8\u65ad\u7c7b\u578b\u65e0\u6548\uff1b{1} +compiler.err.unreachable.stmt=\u65e0\u6cd5\u8bbf\u95ee\u7684\u8bed\u53e5 +compiler.err.initializer.must.be.able.to.complete.normally=\u521d\u59cb\u5316\u7a0b\u5e8f\u5fc5\u987b\u80fd\u591f\u6b63\u5e38\u5b8c\u6210 +compiler.err.unreported.exception.need.to.catch.or.throw=\u672a\u62a5\u544a\u7684\u5f02\u5e38 {0}\uff1b\u5fc5\u987b\u5bf9\u5176\u8fdb\u884c\u6355\u6349\u6216\u58f0\u660e\u4ee5\u4fbf\u629b\u51fa +compiler.err.unreported.exception.default.constructor=\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u4e2d\u672a\u62a5\u544a\u7684\u5f02\u5e38 {0} +compiler.err.unsupported.cross.fp.lit=\u8be5 VM \u4e0d\u652f\u6301\u5341\u516d\u8fdb\u5236\u6d6e\u70b9\u5b57\u9762\u503c +compiler.err.void.not.allowed.here=\u6b64\u5904\u4e0d\u5141\u8bb8\u4f7f\u7528 "void" \u7c7b\u578b + +compiler.err.wrong.number.type.args=\u7c7b\u578b\u53d8\u91cf\u6570\u76ee\u9519\u8bef\uff1b\u9700\u8981 {0} + +compiler.err.var.might.already.be.assigned=\u53ef\u80fd\u5df2\u6307\u5b9a\u53d8\u91cf {0} +compiler.err.var.might.not.have.been.initialized=\u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u53d8\u91cf {0} +compiler.err.var.might.be.assigned.in.loop=\u53ef\u80fd\u5728 loop \u4e2d\u6307\u5b9a\u4e86\u53d8\u91cf {0} # In the following string, {1} will always be the detail message from # java.io.IOException. -compiler.err.class.cant.write=\ -\u5199\u5165 {0} \u65f6\u51fa\u9519\uff1a {1} +compiler.err.class.cant.write=\u5199\u5165 {0} \u65f6\u51fa\u9519\uff1a {1} # In the following string, {0} is the name of the class in the Java source. # It really should be used two times.. -compiler.err.class.public.should.be.in.file=\ -\u7c7b {0} \u662f\u516c\u5171\u7684\uff0c\u5e94\u5728\u540d\u4e3a {0}.java \u7684\u6587\u4ef6\u4e2d\u58f0\u660e +compiler.err.class.public.should.be.in.file=\u7c7b {0} \u662f\u516c\u5171\u7684\uff0c\u5e94\u5728\u540d\u4e3a {0}.java \u7684\u6587\u4ef6\u4e2d\u58f0\u660e ## All errors which do not refer to a particular line in the source code are ## preceded by this string. -compiler.err.error=\ -\u9519\u8bef\uff1a +compiler.err.error=\u9519\u8bef\uff1a # The following error messages do not refer to a line in the source code. -compiler.err.cant.read.file=\ -\u65e0\u6cd5\u8bfb\u53d6\uff1a {0} +compiler.err.cant.read.file=\u65e0\u6cd5\u8bfb\u53d6\uff1a {0} ##### # Fatal Errors -compiler.misc.fatal.err.no.java.lang=\ -\u81f4\u547d\u9519\u8bef\uff1a\u5728\u7c7b\u8def\u5f84\u6216\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e2d\u627e\u4e0d\u5230\u8f6f\u4ef6\u5305 java.lang -compiler.misc.fatal.err.cant.locate.meth=\ -\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230\u65b9\u6cd5 {0} -compiler.misc.fatal.err.cant.locate.field=\ -\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230\u5b57\u6bb5 {0} -compiler.misc.fatal.err.cant.locate.ctor=\ -\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230 {0} \u7684\u6784\u9020\u51fd\u6570 +compiler.misc.fatal.err.no.java.lang=\u81f4\u547d\u9519\u8bef\uff1a\u5728\u7c7b\u8def\u5f84\u6216\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e2d\u627e\u4e0d\u5230\u8f6f\u4ef6\u5305 java.lang +compiler.misc.fatal.err.cant.locate.meth=\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230\u65b9\u6cd5 {0} +compiler.misc.fatal.err.cant.locate.field=\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230\u5b57\u6bb5 {0} +compiler.misc.fatal.err.cant.locate.ctor=\u81f4\u547d\u9519\u8bef\uff1a\u627e\u4e0d\u5230 {0} \u7684\u6784\u9020\u51fd\u6570 ##### @@ -503,107 +312,81 @@ compiler.misc.fatal.err.cant.locate.ctor=\ ## miscellaneous strings ## -compiler.misc.source.unavailable=\ -\uff08\u6e90\u4e0d\u53ef\u7528\uff09 -compiler.misc.base.membership=\ -\u60a8\u7684\u6240\u6709\u57fa\u7c7b\u90fd\u5c5e\u4e8e\u6211\u4eec -compiler.misc.x.print.processor.info=\ - \u5904\u7406\u7a0b\u5e8f {0} \u4e0e {1} \u5339\u914d\u5e76\u8fd4\u56de {2}\u3002 -compiler.misc.x.print.rounds=\ - \u5faa\u73af {0}:\n\t\u8f93\u5165\u6587\u4ef6: {1}\n\t\u6ce8\u91ca: {2}\n\t\u6700\u540e\u4e00\u4e2a\u5faa\u73af: {3} +compiler.misc.source.unavailable=\uff08\u6e90\u4e0d\u53ef\u7528\uff09 +compiler.misc.base.membership=\u60a8\u7684\u6240\u6709\u57fa\u7c7b\u90fd\u5c5e\u4e8e\u6211\u4eec +compiler.misc.x.print.processor.info=\u5904\u7406\u7a0b\u5e8f {0} \u4e0e {1} \u5339\u914d\u5e76\u8fd4\u56de {2}\u3002 +compiler.misc.x.print.rounds=\u5faa\u73af {0}:\n\t\u8f93\u5165\u6587\u4ef6: {1}\n\t\u6ce8\u91ca: {2}\n\t\u6700\u540e\u4e00\u4e2a\u5faa\u73af: {3} ##### ## The following string will appear before all messages keyed as: ## "compiler.note". -compiler.note.note=\ -\u6ce8\u610f\uff1a +compiler.note.note=\u6ce8\u610f\uff1a -compiler.note.deprecated.filename=\ -{0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 -compiler.note.deprecated.plural=\ -\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 +compiler.note.deprecated.filename={0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 +compiler.note.deprecated.plural=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 # The following string may appear after one of the above deprecation # messages. -compiler.note.deprecated.recompile=\ -\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -Xlint:deprecation \u91cd\u65b0\u7f16\u8bd1\u3002 +compiler.note.deprecated.recompile=\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -Xlint:deprecation \u91cd\u65b0\u7f16\u8bd1\u3002 -compiler.note.deprecated.filename.additional=\ -{0} \u8fd8\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 -compiler.note.deprecated.plural.additional=\ -\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u8fd8\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 +compiler.note.deprecated.filename.additional={0} \u8fd8\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 +compiler.note.deprecated.plural.additional=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u8fd8\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002 + +compiler.note.unchecked.filename={0} \u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 +compiler.note.unchecked.plural=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 +# The following string may appear after one of the above deprecation +# messages. +compiler.note.unchecked.recompile=\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -Xlint:unchecked \u91cd\u65b0\u7f16\u8bd1\u3002 + +compiler.note.unchecked.filename.additional={0} \u8fd8\u6709\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 +compiler.note.unchecked.plural.additional=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u8fd8\u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 + +compiler.note.sunapi.filename={0} \u4f7f\u7528\u4e86\u5c06\u6765\u7248\u672c\u4e2d\u53ef\u80fd\u79fb\u9664\u7684 Sun \u4e13\u6709 API\u3002 +compiler.note.sunapi.plural=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u4f7f\u7528\u4e86\u5c06\u6765\u7248\u672c\u4e2d\u53ef\u80fd\u79fb\u9664\u7684 Sun \u4e13\u6709 API\u3002 +# The following string may appear after one of the above sunapi messages. +compiler.note.sunapi.recompile=\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -Xlint:sunapi \u91cd\u65b0\u7f16\u8bd1\u3002 + +compiler.note.sunapi.filename.additional={0} \u4f7f\u7528\u4e86\u5c06\u6765\u7248\u672c\u4e2d\u53ef\u80fd\u79fb\u9664\u7684\u9644\u52a0 Sun \u4e13\u6709 API\u3002 +compiler.note.sunapi.plural.additional=\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u989d\u5916\u4f7f\u7528\u4e86\u5c06\u6765\u7248\u672c\u4e2d\u53ef\u80fd\u79fb\u9664\u7684 Sun \u4e13\u6709 API\u3002 # Notes related to annotation processing # Print a client-generated note; assumed to be localized, no translation required -compiler.note.proc.messager=\ - {0} - -compiler.note.unchecked.filename=\ -{0} \u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 -compiler.note.unchecked.plural=\ -\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 -# The following string may appear after one of the above deprecation -# messages. -compiler.note.unchecked.recompile=\ -\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -Xlint:unchecked \u91cd\u65b0\u7f16\u8bd1\u3002 - -compiler.note.unchecked.filename.additional=\ -{0} \u8fd8\u6709\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 -compiler.note.unchecked.plural.additional=\ -\u67d0\u4e9b\u8f93\u5165\u6587\u4ef6\u8fd8\u4f7f\u7528\u4e86\u672a\u7ecf\u68c0\u67e5\u6216\u4e0d\u5b89\u5168\u7684\u64cd\u4f5c\u3002 +compiler.note.proc.messager={0} ##### -compiler.misc.count.error=\ -{0} \u9519\u8bef -compiler.misc.count.error.plural=\ -{0} \u9519\u8bef -compiler.misc.count.warn=\ -{0} \u8b66\u544a -compiler.misc.count.warn.plural=\ -{0} \u8b66\u544a +compiler.misc.count.error={0} \u9519\u8bef +compiler.misc.count.error.plural={0} \u9519\u8bef +compiler.misc.count.warn={0} \u8b66\u544a +compiler.misc.count.warn.plural={0} \u8b66\u544a ## extra output when using -verbose (JavaCompiler) -compiler.misc.verbose.checking.attribution=\ -[\u6b63\u5728\u68c0\u67e5 {0}] -compiler.misc.verbose.parsing.done=\ -[\u89e3\u6790\u5df2\u5b8c\u6210\u65f6\u95f4 {0}ms] -compiler.misc.verbose.parsing.started=\ -[\u89e3\u6790\u5f00\u59cb\u65f6\u95f4 {0}] -compiler.misc.verbose.total=\ -[\u603b\u65f6\u95f4 {0}ms] -compiler.misc.verbose.wrote.file=\ -[\u5df2\u5199\u5165 {0}] +compiler.misc.verbose.checking.attribution=[\u6b63\u5728\u68c0\u67e5 {0}] +compiler.misc.verbose.parsing.done=[\u89e3\u6790\u5df2\u5b8c\u6210\u65f6\u95f4 {0}ms] +compiler.misc.verbose.parsing.started=[\u89e3\u6790\u5f00\u59cb\u65f6\u95f4 {0}] +compiler.misc.verbose.total=[\u603b\u65f6\u95f4 {0}ms] +compiler.misc.verbose.wrote.file=[\u5df2\u5199\u5165 {0}] ## extra output when using -verbose (Retro) -compiler.misc.verbose.retro=\ -[\u6b63\u5728\u66f4\u65b0 {0}] -compiler.misc.verbose.retro.with=\ -\u6b63\u5728\u4f7f\u7528 {1} \u66f4\u65b0 {0} -compiler.misc.verbose.retro.with.list=\ -\u6b63\u5728\u4f7f\u7528\u7c7b\u578b\u53c2\u6570 {1}\u3001\u7236\u7c7b\u578b {2} \u548c\u63a5\u53e3 {3} \u66f4\u65b0 {0} +compiler.misc.verbose.retro=[\u6b63\u5728\u66f4\u65b0 {0}] +compiler.misc.verbose.retro.with=\u6b63\u5728\u4f7f\u7528 {1} \u66f4\u65b0 {0} +compiler.misc.verbose.retro.with.list=\u6b63\u5728\u4f7f\u7528\u7c7b\u578b\u53c2\u6570 {1}\u3001\u7236\u7c7b\u578b {2} \u548c\u63a5\u53e3 {3} \u66f4\u65b0 {0} ## extra output when using -verbose (code/ClassReader) -compiler.misc.verbose.loading=\ -[\u6b63\u5728\u88c5\u5165 {0}] +compiler.misc.verbose.loading=[\u6b63\u5728\u88c5\u5165 {0}] -compiler.misc.verbose.sourcepath=\ -[\u6e90\u6587\u4ef6\u7684\u641c\u7d22\u8def\u5f84\uff1a {0}] +compiler.misc.verbose.sourcepath=[\u6e90\u6587\u4ef6\u7684\u641c\u7d22\u8def\u5f84\uff1a {0}] -compiler.misc.verbose.classpath=\ -[\u7c7b\u6587\u4ef6\u7684\u641c\u7d22\u8def\u5f84\uff1a {0}] +compiler.misc.verbose.classpath=[\u7c7b\u6587\u4ef6\u7684\u641c\u7d22\u8def\u5f84\uff1a {0}] ## extra output when using -checkclassfile (code/ClassReader) -compiler.misc.ccf.found.later.version=\ -\u7c7b\u6587\u4ef6\u7684\u7248\u672c\u9ad8\u4e8e\u9884\u671f\uff1a {0} -compiler.misc.ccf.unrecognized.attribute=\ -\u65e0\u6cd5\u8bc6\u522b\u7684\u5c5e\u6027\uff1a {0} +compiler.misc.ccf.found.later.version=\u7c7b\u6587\u4ef6\u7684\u7248\u672c\u9ad8\u4e8e\u9884\u671f\uff1a {0} +compiler.misc.ccf.unrecognized.attribute=\u65e0\u6cd5\u8bc6\u522b\u7684\u5c5e\u6027\uff1a {0} ## extra output when using -prompt (util/Log) -compiler.misc.resume.abort=\ -\u7ee7\u7eed(&R), \u653e\u5f03(&A)> +compiler.misc.resume.abort=\u7ee7\u7eed(&R), \u653e\u5f03(&A)> ##### @@ -612,165 +395,109 @@ compiler.misc.resume.abort=\ ## ## All warning messages are preceded by the following string. -compiler.warn.warning=\ -\u8b66\u544a\uff1a +compiler.warn.warning=\u8b66\u544a\uff1a -compiler.warn.constant.SVUID=\ -[serial] \u5728\u7c7b {0} \u4e2d serialVersionUID \u5fc5\u987b\u4e3a\u5e38\u91cf +compiler.warn.constant.SVUID=[serial] \u5728\u7c7b {0} \u4e2d serialVersionUID \u5fc5\u987b\u4e3a\u5e38\u91cf -compiler.warn.dir.path.element.not.found=\ -[path] \u9519\u8bef\u7684\u8def\u5f84\u5143\u7d20 "{0}"\uff1a\u65e0\u6b64\u76ee\u5f55 +compiler.warn.dir.path.element.not.found=[path] \u9519\u8bef\u7684\u8def\u5f84\u5143\u7d20 "{0}"\uff1a\u65e0\u6b64\u76ee\u5f55 -compiler.warn.finally.cannot.complete=\ -[finally] \u65e0\u6cd5\u6b63\u5e38\u5b8c\u6210 finally \u5b50\u53e5 +compiler.warn.finally.cannot.complete=[finally] \u65e0\u6cd5\u6b63\u5e38\u5b8c\u6210 finally \u5b50\u53e5 -compiler.warn.has.been.deprecated=\ -[deprecation] {1} \u4e2d\u7684 {0} \u5df2\u8fc7\u65f6 +compiler.warn.has.been.deprecated=[deprecation] {1} \u4e2d\u7684 {0} \u5df2\u8fc7\u65f6 -compiler.warn.illegal.char.for.encoding=\ -\u7f16\u7801 {0} \u7684\u4e0d\u53ef\u6620\u5c04\u5b57\u7b26 -compiler.warn.improper.SVUID=\ -[serial] \u5728\u7c7b {0} \u4e2d\u5fc5\u987b\u5c06 serialVersionUID \u58f0\u660e\u4e3a\u9759\u6001\u6700\u7ec8\u7c7b\u578b +compiler.warn.sun.proprietary={0} \u662f\u3000Sun\u3000\u4e13\u6709 API\uff0c\u5728\u5c06\u6765\u7248\u672c\u4e2d\u53ef\u80fd\u88ab\u79fb\u9664 -compiler.warn.inexact.non-varargs.call=\ -\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u4f7f\u7528\u4e86\u4e0d\u51c6\u786e\u7684\u53d8\u91cf\u7c7b\u578b\u7684 varargs \u65b9\u6cd5\u7684\u975e varargs \u8c03\u7528\uff1b\n\ -\u5bf9\u4e8e varargs \u8c03\u7528\uff0c\u5e94\u4f7f\u7528 {0}\n\ -\u5bf9\u4e8e\u975e varargs \u8c03\u7528\uff0c\u5e94\u4f7f\u7528 {1}\uff0c\u8fd9\u6837\u4e5f\u53ef\u4ee5\u6291\u5236\u6b64\u8b66\u544a +compiler.warn.illegal.char.for.encoding=\u7f16\u7801 {0} \u7684\u4e0d\u53ef\u6620\u5c04\u5b57\u7b26 +compiler.warn.improper.SVUID=[serial] \u5728\u7c7b {0} \u4e2d\u5fc5\u987b\u5c06 serialVersionUID \u58f0\u660e\u4e3a\u9759\u6001\u6700\u7ec8\u7c7b\u578b -compiler.warn.long.SVUID=\ -[serial] \u5728\u7c7b {0} \u4e2d serialVersionUID \u5fc5\u987b\u4e3a\u957f\u6574\u578b +compiler.warn.inexact.non-varargs.call=\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u4f7f\u7528\u4e86\u4e0d\u51c6\u786e\u7684\u53d8\u91cf\u7c7b\u578b\u7684 varargs \u65b9\u6cd5\u7684\u975e varargs \u8c03\u7528\uff1b\n\u5bf9\u4e8e varargs \u8c03\u7528\uff0c\u5e94\u4f7f\u7528 {0}\n\u5bf9\u4e8e\u975e varargs \u8c03\u7528\uff0c\u5e94\u4f7f\u7528 {1}\uff0c\u8fd9\u6837\u4e5f\u53ef\u4ee5\u6291\u5236\u6b64\u8b66\u544a -compiler.warn.missing.SVUID=\ -[serial] \u53ef\u5e8f\u5217\u5316\u7c7b {0} \u4e2d\u6ca1\u6709 serialVersionUID \u7684\u5b9a\u4e49 +compiler.warn.long.SVUID=[serial] \u5728\u7c7b {0} \u4e2d serialVersionUID \u5fc5\u987b\u4e3a\u957f\u6574\u578b -compiler.warn.override.varargs.missing=\ -{0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u6ca1\u6709 "..." -compiler.warn.override.varargs.extra=\ -{0}\uff1b\u8986\u76d6\u7684\u65b9\u6cd5\u7f3a\u5c11 "..." -compiler.warn.override.bridge=\ -{0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a bridge \u65b9\u6cd5 +compiler.warn.missing.SVUID=[serial] \u53ef\u5e8f\u5217\u5316\u7c7b {0} \u4e2d\u6ca1\u6709 serialVersionUID \u7684\u5b9a\u4e49 -compiler.warn.pkg-info.already.seen=\ -[package-info] \u5df2\u627e\u5230\u8f6f\u4ef6\u5305 {0} \u7684 package-info.java \u6587\u4ef6 -compiler.warn.path.element.not.found=\ -[path] \u9519\u8bef\u7684\u8def\u5f84\u5143\u7d20 "{0}"\uff1a\u65e0\u6b64\u6587\u4ef6\u6216\u76ee\u5f55 -compiler.warn.possible.fall-through.into.case=\ -[fallthrough] \u53ef\u80fd\u65e0\u6cd5\u5b9e\u73b0 case +compiler.warn.override.varargs.missing={0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u6ca1\u6709 "..." +compiler.warn.override.varargs.extra={0}\uff1b\u8986\u76d6\u7684\u65b9\u6cd5\u7f3a\u5c11 "..." +compiler.warn.override.bridge={0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a bridge \u65b9\u6cd5 -compiler.warn.redundant.cast=\ -[\u8f6c\u6362] \u5411 {0} \u8f6c\u6362\u51fa\u73b0\u5197\u4f59 +compiler.warn.pkg-info.already.seen=[package-info] \u5df2\u627e\u5230\u8f6f\u4ef6\u5305 {0} \u7684 package-info.java \u6587\u4ef6 +compiler.warn.path.element.not.found=[path] \u9519\u8bef\u7684\u8def\u5f84\u5143\u7d20 "{0}"\uff1a\u65e0\u6b64\u6587\u4ef6\u6216\u76ee\u5f55 +compiler.warn.possible.fall-through.into.case=[fallthrough] \u53ef\u80fd\u65e0\u6cd5\u5b9e\u73b0 case -compiler.warn.position.overflow=\ -\u884c {0} \u5904\u7684\u4f4d\u7f6e\u7f16\u7801\u6ea2\u51fa +compiler.warn.redundant.cast=[\u8f6c\u6362] \u5411 {0} \u8f6c\u6362\u51fa\u73b0\u5197\u4f59 -compiler.warn.big.major.version=\ -{0}: \u4e3b\u7248\u672c {1} \u6bd4 {2} \u65b0\uff0c\u6b64\u7f16\u8bd1\u5668\u652f\u6301\u6700\u65b0\u7684\u4e3b\u7248\u672c\u3002\n\ -\u5efa\u8bae\u5347\u7ea7\u6b64\u7f16\u8bd1\u5668\u3002 +compiler.warn.position.overflow=\u884c {0} \u5904\u7684\u4f4d\u7f6e\u7f16\u7801\u6ea2\u51fa + +compiler.warn.big.major.version={0}: \u4e3b\u7248\u672c {1} \u6bd4 {2} \u65b0\uff0c\u6b64\u7f16\u8bd1\u5668\u652f\u6301\u6700\u65b0\u7684\u4e3b\u7248\u672c\u3002\n\u5efa\u8bae\u5347\u7ea7\u6b64\u7f16\u8bd1\u5668\u3002 # Warnings related to annotation processing -compiler.warn.proc.package.does.not.exist=\ - \u8f6f\u4ef6\u5305 {0} \u4e0d\u5b58\u5728 -compiler.warn.proc.file.reopening=\ -\u5c1d\u8bd5\u591a\u6b21\u4e3a\u201c{0}\u201d\u521b\u5efa\u6587\u4ef6 +compiler.warn.proc.package.does.not.exist=\u8f6f\u4ef6\u5305 {0} \u4e0d\u5b58\u5728 +compiler.warn.proc.file.reopening=\u5c1d\u8bd5\u591a\u6b21\u4e3a\u201c{0}\u201d\u521b\u5efa\u6587\u4ef6 -compiler.warn.proc.type.already.exists=\ - \u5177\u6709\u7c7b\u578b''{0}''\u7684\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\u4e8e\u6e90\u8def\u5f84\u6216\u7c7b\u8def\u5f84\u4e2d +compiler.warn.proc.type.already.exists=\u5177\u6709\u7c7b\u578b''{0}''\u7684\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\u4e8e\u6e90\u8def\u5f84\u6216\u7c7b\u8def\u5f84\u4e2d -compiler.warn.proc.type.recreate=\ -\u5c1d\u8bd5\u591a\u6b21\u521b\u5efa\u5177\u6709\u7c7b\u578b\u201c{0}\u201d\u7684\u6587\u4ef6 +compiler.warn.proc.type.recreate=\u5c1d\u8bd5\u591a\u6b21\u521b\u5efa\u5177\u6709\u7c7b\u578b\u201c{0}\u201d\u7684\u6587\u4ef6 -compiler.warn.proc.illegal.file.name=\ -\u65e0\u6cd5\u521b\u5efa\u5e26\u6709\u975e\u6cd5\u540d\u79f0\u201c{0}\u201d\u7684\u6587\u4ef6\u3002 +compiler.warn.proc.illegal.file.name=\u65e0\u6cd5\u521b\u5efa\u5e26\u6709\u975e\u6cd5\u540d\u79f0\u201c{0}\u201d\u7684\u6587\u4ef6\u3002 -compiler.warn.proc.file.create.last.round=\ -\u5c06\u4e0d\u5bf9\u5728\u6700\u540e\u4e00\u4e2a\u5faa\u73af\u4e2d\u521b\u5efa\u7684\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6587\u4ef6\u8fdb\u884c\u6ce8\u91ca\u5904\u7406\u3002 +compiler.warn.proc.file.create.last.round=\u5c06\u4e0d\u5bf9\u5728\u6700\u540e\u4e00\u4e2a\u5faa\u73af\u4e2d\u521b\u5efa\u7684\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6587\u4ef6\u8fdb\u884c\u6ce8\u91ca\u5904\u7406\u3002 -compiler.warn.proc.malformed.supported.string=\ -\u5904\u7406\u7a0b\u5e8f\u201c{1}\u201d\u4e3a\u652f\u6301\u7684\u6ce8\u91ca\u7c7b\u578b\u8fd4\u56de\u4e0d\u89c4\u5219\u7684\u5b57\u7b26\u4e32\u201c{0}\u201d +compiler.warn.proc.malformed.supported.string=\u5904\u7406\u7a0b\u5e8f\u201c{1}\u201d\u4e3a\u652f\u6301\u7684\u6ce8\u91ca\u7c7b\u578b\u8fd4\u56de\u4e0d\u89c4\u5219\u7684\u5b57\u7b26\u4e32\u201c{0}\u201d -compiler.warn.proc.annotations.without.processors=\ - \u6ca1\u6709\u5904\u7406\u7a0b\u5e8f\u8981\u4f7f\u7528\u4ee5\u4e0b\u4efb\u4f55\u6ce8\u91ca: {0} +compiler.warn.proc.annotations.without.processors=\u6ca1\u6709\u5904\u7406\u7a0b\u5e8f\u8981\u4f7f\u7528\u4ee5\u4e0b\u4efb\u4f55\u6ce8\u91ca: {0} -compiler.warn.proc.processor.incompatible.source.version=\ - \u6765\u81ea\u6ce8\u91ca\u5904\u7406\u5668"{1}"\u7684\u53d7\u652f\u6301 source \u7248\u672c"{0}"\u4f4e\u4e8e -source"{2}" +compiler.warn.proc.processor.incompatible.source.version=\u6765\u81ea\u6ce8\u91ca\u5904\u7406\u5668"{1}"\u7684\u53d7\u652f\u6301 source \u7248\u672c"{0}"\u4f4e\u4e8e -source"{2}" -compiler.warn.proc.proc-only.requested.no.procs=\ -\u5728\u672a\u8bf7\u6c42\u7f16\u8bd1\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u6ce8\u91ca\u5904\u7406\uff0c\u4f46\u672a\u627e\u5230\u5904\u7406\u7a0b\u5e8f\u3002 +compiler.warn.proc.proc-only.requested.no.procs=\u5728\u672a\u8bf7\u6c42\u7f16\u8bd1\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u6ce8\u91ca\u5904\u7406\uff0c\u4f46\u672a\u627e\u5230\u5904\u7406\u7a0b\u5e8f\u3002 -compiler.warn.proc.use.implicit=\ -\u6ce8\u91ca\u5904\u7406\u4e0d\u9002\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u6587\u4ef6\u3002\n\ -\u4f7f\u7528 -implicit \u6307\u5b9a\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u7b56\u7565\u3002 +compiler.warn.proc.use.implicit=\u6ce8\u91ca\u5904\u7406\u4e0d\u9002\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u6587\u4ef6\u3002\n\u4f7f\u7528 -implicit \u6307\u5b9a\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u7b56\u7565\u3002 -compiler.warn.proc.use.proc.or.implicit=\ -\u6ce8\u91ca\u5904\u7406\u4e0d\u9002\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u6587\u4ef6\u3002\n\ -\u4f7f\u7528 -proc:none \u7981\u7528\u6ce8\u91ca\u5904\u7406\u6216\u4f7f\u7528 -implicit \u6307\u5b9a\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u7b56\u7565\u3002 +compiler.warn.proc.use.proc.or.implicit=\u6ce8\u91ca\u5904\u7406\u4e0d\u9002\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u6587\u4ef6\u3002\n\u4f7f\u7528 -proc:none \u7981\u7528\u6ce8\u91ca\u5904\u7406\u6216\u4f7f\u7528 -implicit \u6307\u5b9a\u7528\u4e8e\u9690\u5f0f\u7f16\u8bd1\u7684\u7b56\u7565\u3002 # Print a client-generated warning; assumed to be localized, no translation required -compiler.warn.proc.messager=\ - {0} +compiler.warn.proc.messager={0} -compiler.warn.proc.unclosed.type.files=\ -\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6587\u4ef6\u672a\u5173\u95ed\uff1b\u5c06\u4e0d\u9488\u5bf9\u8fd9\u4e9b\u7c7b\u578b\u8fdb\u884c\u6ce8\u91ca\u5904\u7406 +compiler.warn.proc.unclosed.type.files=\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6587\u4ef6\u672a\u5173\u95ed\uff1b\u5c06\u4e0d\u9488\u5bf9\u8fd9\u4e9b\u7c7b\u578b\u8fdb\u884c\u6ce8\u91ca\u5904\u7406 -compiler.warn.proc.unmatched.processor.options=\ - \u4ee5\u4e0b\u9009\u9879\u672a\u88ab\u4efb\u4f55\u5904\u7406\u5668\u8bc6\u522b\uff1a"{0}" +compiler.warn.proc.unmatched.processor.options=\u4ee5\u4e0b\u9009\u9879\u672a\u88ab\u4efb\u4f55\u5904\u7406\u5668\u8bc6\u522b\uff1a"{0}" -compiler.warn.unchecked.assign=\ -[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u6307\u5b9a\uff1a\u5c06 {0} \u6307\u5b9a\u7ed9 {1} -compiler.warn.unchecked.assign.to.var=\ -[unchecked] \u5bf9\u4f5c\u4e3a\u666e\u901a\u7c7b\u578b {1} \u7684\u6210\u5458\u7684\u53d8\u91cf {0} \u7684\u6307\u5b9a\u672a\u7ecf\u68c0\u67e5 -compiler.warn.unchecked.call.mbr.of.raw.type=\ -[unchecked] \u5bf9\u4f5c\u4e3a\u666e\u901a\u7c7b\u578b {1} \u7684\u6210\u5458\u7684 {0} \u7684\u8c03\u7528\u672a\u7ecf\u68c0\u67e5 -compiler.warn.unchecked.cast.to.type=\ -[unchecked] \u5bf9\u7c7b\u578b {0} \u7684\u4f7f\u7528\u672a\u7ecf\u68c0\u67e5 -compiler.warn.unchecked.meth.invocation.applied=\ -[unchecked] \u65b9\u6cd5\u8c03\u7528\u672a\u7ecf\u68c0\u67e5\uff1a{1} \u4e2d\u7684 {0} \u88ab\u5e94\u7528\u4e8e {2}({3}) -compiler.warn.unchecked.generic.array.creation=\ -[unchecked] \u5bf9\u4e8e varargs \u53c2\u6570\uff0c\u7c7b\u578b {0} \u7684\u6cdb\u578b\u6570\u7ec4\u521b\u5efa\u672a\u7ecf\u68c0\u67e5 +compiler.warn.unchecked.assign=[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u6307\u5b9a\uff1a\u5c06 {0} \u6307\u5b9a\u7ed9 {1} +compiler.warn.unchecked.assign.to.var=[unchecked] \u5bf9\u4f5c\u4e3a\u666e\u901a\u7c7b\u578b {1} \u7684\u6210\u5458\u7684\u53d8\u91cf {0} \u7684\u6307\u5b9a\u672a\u7ecf\u68c0\u67e5 +compiler.warn.unchecked.call.mbr.of.raw.type=[unchecked] \u5bf9\u4f5c\u4e3a\u666e\u901a\u7c7b\u578b {1} \u7684\u6210\u5458\u7684 {0} \u7684\u8c03\u7528\u672a\u7ecf\u68c0\u67e5 +compiler.warn.unchecked.cast.to.type=[unchecked] \u5bf9\u7c7b\u578b {0} \u7684\u4f7f\u7528\u672a\u7ecf\u68c0\u67e5 +compiler.warn.unchecked.meth.invocation.applied=[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u65b9\u6cd5\u8c03\u7528: {4} {5}\u3000\u4e2d\u7684\u3000{0} {1}\u3000\u4f7f\u7528\u4e8e\u7ed9\u5b9a\u7684\u7c7b\u578b\n\u9700\u8981: {2}\n\u53d1\u73b0: {3} -compiler.warn.missing.deprecated.annotation=\ -[dep-ann] \u672a\u4f7f\u7528 @Deprecated \u5bf9\u5df2\u8fc7\u65f6\u7684\u9879\u76ee\u8fdb\u884c\u6ce8\u91ca +compiler.warn.unchecked.generic.array.creation=[unchecked] \u7c7b\u578b {0} \u7684 varargs \u53c2\u6570\u7684\u6cdb\u578b\u6570\u7ec4\u521b\u5efa\u672a\u7ecf\u68c0\u67e5 -compiler.warn.invalid.archive.file=\ -[path] \u4ee5\u4e0b\u8def\u5f84\u4e2d\u5b58\u5728\u610f\u5916\u7684\u6587\u4ef6: {0} +compiler.warn.missing.deprecated.annotation=[dep-ann] \u672a\u4f7f\u7528 @Deprecated \u5bf9\u5df2\u8fc7\u65f6\u7684\u9879\u76ee\u8fdb\u884c\u6ce8\u91ca -compiler.warn.unexpected.archive.file=\ -[path] \u4ee5\u4e0b\u5f52\u6863\u6587\u4ef6\u5b58\u5728\u610f\u5916\u7684\u6269\u5c55\u540d: {0} +compiler.warn.invalid.archive.file=[path] \u4ee5\u4e0b\u8def\u5f84\u4e2d\u5b58\u5728\u610f\u5916\u7684\u6587\u4ef6: {0} -compiler.warn.div.zero=\ -[divzero] \u9664\u6570\u4e3a\u96f6 +compiler.warn.unexpected.archive.file=[path] \u4ee5\u4e0b\u5f52\u6863\u6587\u4ef6\u5b58\u5728\u610f\u5916\u7684\u6269\u5c55\u540d: {0} -compiler.warn.empty.if=\ -[\u7a7a] if \u4e4b\u540e\u6ca1\u6709\u8bed\u53e5 +compiler.warn.div.zero=[divzero] \u9664\u6570\u4e3a\u96f6 -compiler.warn.annotation.method.not.found=\ -\u65e0\u6cd5\u627e\u5230\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6ce8\u91ca\u65b9\u6cd5\u201c{1}()\u201d +compiler.warn.empty.if=[\u7a7a] if \u4e4b\u540e\u6ca1\u6709\u8bed\u53e5 -compiler.warn.annotation.method.not.found.reason=\ -\u65e0\u6cd5\u627e\u5230\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6ce8\u91ca\u65b9\u6cd5\u201c{1}()\u201d: {2} +compiler.warn.annotation.method.not.found=\u65e0\u6cd5\u627e\u5230\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6ce8\u91ca\u65b9\u6cd5\u201c{1}()\u201d + +compiler.warn.annotation.method.not.found.reason=\u65e0\u6cd5\u627e\u5230\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u6ce8\u91ca\u65b9\u6cd5\u201c{1}()\u201d: {2} + +compiler.warn.raw.class.use=[rawtypes] \u53d1\u73b0\u539f\u578b(raw type): {0}\n\u6cdb\u578b\u7c7b\u7f3a\u5c11\u7c7b\u578b\u53c2\u6570 {1} ##### ## The following are tokens which are non-terminals in the language. They should ## be named as JLS3 calls them when translated to the appropriate language. -compiler.misc.token.identifier=\ -<\u6807\u8bc6\u7b26> -compiler.misc.token.character=\ -<\u5b57\u7b26> -compiler.misc.token.string=\ -<\u5b57\u7b26\u4e32> -compiler.misc.token.integer=\ -<\u6574\u578b> -compiler.misc.token.long-integer=\ -<\u957f\u6574\u578b> -compiler.misc.token.float=\ -<\u6d6e\u70b9\u578b> -compiler.misc.token.double=\ -<\u53cc\u7cbe\u5ea6\u578b> -compiler.misc.token.bad-symbol=\ -<\u9519\u8bef\u7b26\u53f7> -compiler.misc.token.end-of-input=\ -<\u8f93\u5165\u7ed3\u675f> +compiler.misc.token.identifier=<\u6807\u8bc6\u7b26> +compiler.misc.token.character=<\u5b57\u7b26> +compiler.misc.token.string=<\u5b57\u7b26\u4e32> +compiler.misc.token.integer=<\u6574\u578b> +compiler.misc.token.long-integer=<\u957f\u6574\u578b> +compiler.misc.token.float=<\u6d6e\u70b9\u578b> +compiler.misc.token.double=<\u53cc\u7cbe\u5ea6\u578b> +compiler.misc.token.bad-symbol=<\u9519\u8bef\u7b26\u53f7> +compiler.misc.token.end-of-input=<\u8f93\u5165\u7ed3\u675f> ## The argument to the following string will always be one of the following: ## 1. one of the above non-terminals @@ -781,78 +508,59 @@ compiler.misc.token.end-of-input=\ ## 6. an operator (JLS3.12) ## ## This is the only place these tokens will be used. -compiler.err.expected=\ -\u9700\u8981 {0} -compiler.err.expected2=\ -\u9700\u8981\u4e3a {0} \u6216 {1} -compiler.err.expected3=\ -\u9700\u8981\u4e3a {0}\u3001{1} \u6216 {2} +compiler.err.expected=\u9700\u8981 {0} +compiler.err.expected2=\u9700\u8981\u4e3a {0} \u6216 {1} +compiler.err.expected3=\u9700\u8981\u4e3a {0}\u3001{1} \u6216 {2} -compiler.err.premature.eof=\ -\u8fdb\u884c\u8bed\u6cd5\u89e3\u6790\u65f6\u5df2\u5230\u8fbe\u6587\u4ef6\u7ed3\u5c3e +compiler.err.premature.eof=\u8fdb\u884c\u8bed\u6cd5\u89e3\u6790\u65f6\u5df2\u5230\u8fbe\u6587\u4ef6\u7ed3\u5c3e ## The following are related in form, but do not easily fit the above paradigm. -compiler.err.dot.class.expected=\ -\u9700\u8981 ".class" +compiler.err.dot.class.expected=\u9700\u8981 ".class" ## The argument to this string will always be either 'case' or 'default'. -compiler.err.orphaned=\ -\u5355\u4e2a {0}\uff1a +compiler.err.orphaned=\u5355\u4e2a {0}\uff1a -compiler.misc.anonymous.class=\ -<\u533f\u540d {0}> +compiler.misc.anonymous.class=<\u533f\u540d {0}> + +compiler.misc.type.captureof=\u6355\u83b7 {1} \u4e2d\u7684 #{0} + +compiler.misc.type.captureof.1=\u6355\u83b7 #{0} + +compiler.misc.type.none= + +compiler.misc.unnamed.package=\u672a\u547d\u540d\u5305 ##### -compiler.err.cant.access=\ -\u65e0\u6cd5\u8bbf\u95ee {0}\n\ -{1} +compiler.err.cant.access=\u65e0\u6cd5\u8bbf\u95ee {0}\n{1} -compiler.misc.bad.class.file.header=\ -\u9519\u8bef\u7684\u7c7b\u6587\u4ef6\uff1a {0}\n\ -{1}\n\ -\u8bf7\u5220\u9664\u8be5\u6587\u4ef6\u6216\u786e\u4fdd\u8be5\u6587\u4ef6\u4f4d\u4e8e\u6b63\u786e\u7684\u7c7b\u8def\u5f84\u5b50\u76ee\u5f55\u4e2d\u3002 +compiler.misc.bad.class.file.header=\u9519\u8bef\u7684\u7c7b\u6587\u4ef6\uff1a {0}\n{1}\n\u8bf7\u5220\u9664\u8be5\u6587\u4ef6\u6216\u786e\u4fdd\u8be5\u6587\u4ef6\u4f4d\u4e8e\u6b63\u786e\u7684\u7c7b\u8def\u5f84\u5b50\u76ee\u5f55\u4e2d\u3002 +compiler.misc.bad.source.file.header=\u9519\u8bef\u7684\u6e90\u6587\u4ef6\uff1a\u3000{0}\n{1}\n\u8bf7\u5220\u9664\u8be5\u6587\u4ef6\u6216\u786e\u4fdd\u8be5\u6587\u4ef6\u4f4d\u4e8e\u6b63\u786e\u7684\u6e90\u6587\u4ef6\u8def\u5f84\u5b50\u76ee\u5f55\u4e2d\u3002 ## The following are all possible strings for the second argument ({1}) of the ## above strings. -compiler.misc.bad.class.signature=\ -\u9519\u8bef\u7684\u7c7b\u7b7e\u540d\uff1a {0} -compiler.misc.bad.enclosing.method=\ -\u95ed\u5408\u65b9\u6cd5\u5c5e\u6027 {0} \u65f6\u51fa\u9519 -compiler.misc.bad.runtime.invisible.param.annotations=\ - RuntimeInvisibleParameterAnnotations \u5c5e\u6027\u9519\u8bef: {0} -compiler.misc.bad.const.pool.tag=\ -\u9519\u8bef\u7684\u5e38\u91cf\u6c60\u6807\u8bb0\uff1a {0} -compiler.misc.bad.const.pool.tag.at=\ -\u9519\u8bef\u7684\u5e38\u91cf\u6c60\u6807\u8bb0\uff1a{0}\uff0c\u4f4d\u4e8e {1} -compiler.misc.bad.signature=\ -\u9519\u8bef\u7684\u7b7e\u540d\uff1a {0} -compiler.misc.class.file.wrong.class=\ -\u7c7b\u6587\u4ef6\u5305\u542b\u9519\u8bef\u7684\u7c7b\uff1a {0} -compiler.misc.class.file.not.found=\ -\u672a\u627e\u5230 {0} \u7684\u7c7b\u6587\u4ef6 -compiler.misc.file.doesnt.contain.class=\ -\u6587\u4ef6\u4e0d\u5305\u542b\u7c7b {0} -compiler.misc.file.does.not.contain.package=\ - \u6587\u4ef6\u4e0d\u5305\u542b\u8f6f\u4ef6\u5305 {0} -compiler.misc.illegal.start.of.class.file=\ -\u975e\u6cd5\u7684\u7c7b\u6587\u4ef6\u5f00\u59cb -compiler.misc.unable.to.access.file=\ -\u65e0\u6cd5\u8bbf\u95ee\u6587\u4ef6\uff1a {0} -compiler.misc.unicode.str.not.supported=\ -\u4e0d\u652f\u6301\u7c7b\u6587\u4ef6\u4e2d\u7684 Unicode \u5b57\u7b26\u4e32 -compiler.misc.undecl.type.var=\ -\u672a\u58f0\u660e\u7684\u7c7b\u578b\u53d8\u91cf\uff1a {0} -compiler.misc.wrong.version=\ -\u7c7b\u6587\u4ef6\u5177\u6709\u9519\u8bef\u7684\u7248\u672c {0}.{1}\uff0c\u5e94\u4e3a {2}.{3} +compiler.misc.bad.class.signature=\u9519\u8bef\u7684\u7c7b\u7b7e\u540d\uff1a {0} +compiler.misc.bad.enclosing.method=\u95ed\u5408\u65b9\u6cd5\u5c5e\u6027 {0} \u65f6\u51fa\u9519 +compiler.misc.bad.runtime.invisible.param.annotations=RuntimeInvisibleParameterAnnotations \u5c5e\u6027\u9519\u8bef: {0} +compiler.misc.bad.const.pool.tag=\u9519\u8bef\u7684\u5e38\u91cf\u6c60\u6807\u8bb0\uff1a {0} +compiler.misc.bad.const.pool.tag.at=\u9519\u8bef\u7684\u5e38\u91cf\u6c60\u6807\u8bb0\uff1a{0}\uff0c\u4f4d\u4e8e {1} +compiler.misc.bad.signature=\u9519\u8bef\u7684\u7b7e\u540d\uff1a {0} +compiler.misc.bad.type.annotation.value=\u9519\u8bef\u7c7b\u578b\u6ce8\u91ca\u76ee\u6807\u7c7b\u578b\u503c\uff1a{0} +compiler.misc.class.file.wrong.class=\u7c7b\u6587\u4ef6\u5305\u542b\u9519\u8bef\u7684\u7c7b\uff1a {0} +compiler.misc.class.file.not.found=\u672a\u627e\u5230 {0} \u7684\u7c7b\u6587\u4ef6 +compiler.misc.file.doesnt.contain.class=\u6587\u4ef6\u4e0d\u5305\u542b\u7c7b {0} +compiler.misc.file.does.not.contain.package=\u6587\u4ef6\u4e0d\u5305\u542b\u8f6f\u4ef6\u5305 {0} +compiler.misc.illegal.start.of.class.file=\u975e\u6cd5\u7684\u7c7b\u6587\u4ef6\u5f00\u59cb +compiler.misc.unable.to.access.file=\u65e0\u6cd5\u8bbf\u95ee\u6587\u4ef6\uff1a {0} +compiler.misc.unicode.str.not.supported=\u4e0d\u652f\u6301\u7c7b\u6587\u4ef6\u4e2d\u7684 Unicode \u5b57\u7b26\u4e32 +compiler.misc.undecl.type.var=\u672a\u58f0\u660e\u7684\u7c7b\u578b\u53d8\u91cf\uff1a {0} +compiler.misc.wrong.version=\u7c7b\u6587\u4ef6\u5177\u6709\u9519\u8bef\u7684\u7248\u672c {0}.{1}\uff0c\u5e94\u4e3a {2}.{3} ##### -compiler.err.not.within.bounds=\ -\u7c7b\u578b\u53c2\u6570 {0} \u4e0d\u5728\u5176\u9650\u5236\u8303\u56f4\u4e4b\u5185 +compiler.err.not.within.bounds=\u7c7b\u578b\u53c2\u6570 {0} \u4e0d\u5728\u5176\u9650\u5236\u8303\u56f4\u4e4b\u5185 -compiler.err.not.within.bounds.explain=\ -\u7c7b\u578b\u53c2\u6570 {0} \u4e0d\u5728\u5176\u9650\u5236\u8303\u56f4\u4e4b\u5185\uff1b{1} +compiler.err.not.within.bounds.explain=\u7c7b\u578b\u53c2\u6570 {0} \u4e0d\u5728\u5176\u9650\u5236\u8303\u56f4\u4e4b\u5185\uff1b{1} ## The following are all possible strings for the second argument ({1}) of the ## above string. @@ -861,43 +569,26 @@ compiler.err.not.within.bounds.explain=\ ##### -compiler.err.prob.found.req=\ -{0}\n\ -\u627e\u5230\uff1a {1}\n\ -\u9700\u8981\uff1a {2} -compiler.warn.prob.found.req=\ -{0}\n\ -\u627e\u5230\uff1a {1}\n\ -\u9700\u8981\uff1a {2} -compiler.err.prob.found.req.1=\ -{0} {3}\n\ -\u627e\u5230\uff1a {1}\n\ -\u9700\u8981\uff1a {2} +compiler.err.prob.found.req={0}\n\u8981\u6c42\uff1a{2}\n\u53d1\u73b0\uff1a {1} +compiler.warn.prob.found.req={0}\n\u8981\u6c42\uff1a{2}\n\u53d1\u73b0\uff1a {1} +compiler.err.prob.found.req.1={0} {3}\n\u8981\u6c42\uff1a{2}\n\u53d1\u73b0\uff1a {1} ## The following are all possible strings for the first argument ({0}) of the ## above strings. -compiler.misc.incompatible.types=\ -\u4e0d\u517c\u5bb9\u7684\u7c7b\u578b -compiler.misc.incompatible.types.1=\ -\u4e0d\u517c\u5bb9\u7684\u7c7b\u578b\uff1b{0} -compiler.misc.inconvertible.types=\ -\u4e0d\u53ef\u8f6c\u6362\u7684\u7c7b\u578b -compiler.misc.possible.loss.of.precision=\ -\u53ef\u80fd\u635f\u5931\u7cbe\u5ea6 +compiler.misc.incompatible.types=\u4e0d\u517c\u5bb9\u7684\u7c7b\u578b +compiler.misc.incompatible.types.1=\u4e0d\u517c\u5bb9\u7684\u7c7b\u578b\uff1b{0} +compiler.misc.inconvertible.types=\u4e0d\u53ef\u8f6c\u6362\u7684\u7c7b\u578b +compiler.misc.possible.loss.of.precision=\u53ef\u80fd\u635f\u5931\u7cbe\u5ea6 -compiler.misc.unchecked.assign=\ -[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u8f6c\u6362 +compiler.misc.unchecked.assign=[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u8f6c\u6362 # compiler.misc.storecheck=\ # [unchecked] assignment might cause later store checks to fail # compiler.misc.unchecked=\ # [unchecked] assigned array cannot dynamically check its stores -compiler.misc.unchecked.cast.to.type=\ -[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u7c7b\u578b\u4f7f\u7528 +compiler.misc.unchecked.cast.to.type=[unchecked] \u672a\u7ecf\u68c0\u67e5\u7684\u7c7b\u578b\u4f7f\u7528 -compiler.misc.assignment.from.super-bound=\ -\u4ece super-bound \u7c7b\u578b {0} \u6307\u5b9a -compiler.misc.assignment.to.extends-bound=\ -\u5bf9 extends-bound \u7c7b\u578b {0} \u8fdb\u884c\u6307\u5b9a +compiler.misc.assignment.from.super-bound=\u4ece super-bound \u7c7b\u578b {0} \u6307\u5b9a +compiler.misc.assignment.to.extends-bound=\u5bf9 extends-bound \u7c7b\u578b {0} \u8fdb\u884c\u6307\u5b9a # compiler.err.star.expected=\ # ''*'' expected # compiler.err.no.elem.type=\ @@ -905,221 +596,187 @@ compiler.misc.assignment.to.extends-bound=\ ##### -compiler.err.type.found.req=\ -\u610f\u5916\u7684\u7c7b\u578b\n\ -\u627e\u5230\uff1a {0}\n\ -\u9700\u8981\uff1a {1} +compiler.err.type.found.req=\u4ee5\u5916\u7c7b\u578b\n\u8981\u6c42\uff1a {1}\n\u53d1\u73b0\uff1a {0} ## The following are all possible strings for the first argument ({0}) of the ## above string. -compiler.misc.type.req.class=\ -\u7c7b -compiler.misc.type.req.class.array=\ -\u7c7b\u6216\u6570\u7ec4 -compiler.misc.type.req.ref=\ -\u5f15\u7528 -compiler.misc.type.req.exact=\ -\u4e0d\u5e26\u9650\u5236\u8303\u56f4\u7684\u7c7b\u6216\u63a5\u53e3 -compiler.misc.type.parameter=\ -\u7c7b\u578b\u53c2\u6570 {0} +compiler.misc.type.req.class=\u7c7b +compiler.misc.type.req.class.array=\u7c7b\u6216\u6570\u7ec4 +compiler.misc.type.req.ref=\u5f15\u7528 +compiler.misc.type.req.exact=\u4e0d\u5e26\u9650\u5236\u8303\u56f4\u7684\u7c7b\u6216\u63a5\u53e3 +compiler.misc.type.parameter=\u7c7b\u578b\u53c2\u6570 {0} ##### ## The following are all possible strings for the last argument of all those ## diagnostics whose key ends in ".1" -compiler.misc.undetermined.type=\ -\u672a\u786e\u5b9a\u7684\u7c7b\u578b -ncompiler.misc.type.variable.has.undetermined.type=\ -\u7c7b\u578b\u53d8\u91cf {0} \u5e26\u6709\u672a\u786e\u5b9a\u7684\u7c7b\u578b -compiler.misc.no.unique.maximal.instance.exists=\ -\u5bf9\u4e8e\u4e0a\u9650\u4e3a {1} \u7684\u7c7b\u578b\u53d8\u91cf {0}\uff0c\u4e0d\u5b58\u5728\u552f\u4e00\u6700\u5927\u5b9e\u4f8b -compiler.misc.no.unique.minimal.instance.exists=\ -\u5bf9\u4e8e\u4e0b\u9650\u4e3a {1} \u7684\u7c7b\u578b\u53d8\u91cf {0}\uff0c\u4e0d\u5b58\u5728\u552f\u4e00\u6700\u5c0f\u5b9e\u4f8b -compiler.misc.no.conforming.instance.exists=\ -\u4e0d\u5b58\u5728\u7c7b\u578b\u53d8\u91cf {0} \u7684\u5b9e\u4f8b\uff0c\u4ee5\u4f7f {1} \u4e0e {2} \u4e00\u81f4 -compiler.misc.no.conforming.assignment.exists=\ -\u4e0d\u5b58\u5728\u7c7b\u578b\u53d8\u91cf {0} \u7684\u5b9e\u4f8b\uff0c\u4ee5\u4f7f\u53c2\u6570\u7c7b\u578b {1} \u4e0e\u5f62\u5f0f\u53c2\u6570\u7c7b\u578b {2} \u4e00\u81f4 -compiler.misc.arg.length.mismatch=\ -\u65e0\u6cd5\u4ece\u53c2\u6570\u8fdb\u884c\u5b9e\u4f8b\u5316\uff0c\u56e0\u4e3a\u5b9e\u9645\u53c2\u6570\u5217\u8868\u548c\u5f62\u5f0f\u53c2\u6570\u5217\u8868\u957f\u5ea6\u4e0d\u540c -compiler.misc.inferred.do.not.conform.to.bounds=\ -\u63a8\u7406\u7c7b\u578b\u53c2\u6570 {0} \u4e0d\u7b26\u5408\u7c7b\u578b\u53d8\u91cf {1} \u7684\u9650\u5236\u8303\u56f4 +compiler.misc.undetermined.type=\u672a\u786e\u5b9a\u7684\u7c7b\u578b +ncompiler.misc.type.variable.has.undetermined.type=\u7c7b\u578b\u53d8\u91cf {0} \u5e26\u6709\u672a\u786e\u5b9a\u7684\u7c7b\u578b +compiler.misc.no.unique.maximal.instance.exists=\u5bf9\u4e8e\u4e0a\u9650\u4e3a {1} \u7684\u7c7b\u578b\u53d8\u91cf {0}\uff0c\u4e0d\u5b58\u5728\u552f\u4e00\u6700\u5927\u5b9e\u4f8b +compiler.misc.no.unique.minimal.instance.exists=\u5bf9\u4e8e\u4e0b\u9650\u4e3a {1} \u7684\u7c7b\u578b\u53d8\u91cf {0}\uff0c\u4e0d\u5b58\u5728\u552f\u4e00\u6700\u5c0f\u5b9e\u4f8b +compiler.misc.no.conforming.instance.exists=\u4e0d\u5b58\u5728\u7c7b\u578b\u53d8\u91cf {0} \u7684\u5b9e\u4f8b\uff0c\u4ee5\u4f7f {1} \u4e0e {2} \u4e00\u81f4 +compiler.misc.no.conforming.assignment.exists=\u4e0d\u5b58\u5728\u7c7b\u578b\u53d8\u91cf {0} \u7684\u5b9e\u4f8b\uff0c\u4ee5\u4f7f\u53c2\u6570\u7c7b\u578b {1} \u4e0e\u5f62\u5f0f\u53c2\u6570\u7c7b\u578b {2} \u4e00\u81f4 +compiler.misc.arg.length.mismatch=\u65e0\u6cd5\u4ece\u53c2\u6570\u8fdb\u884c\u5b9e\u4f8b\u5316\uff0c\u56e0\u4e3a\u5b9e\u9645\u53c2\u6570\u5217\u8868\u548c\u5f62\u5f0f\u53c2\u6570\u5217\u8868\u957f\u5ea6\u4e0d\u540c +compiler.misc.inferred.do.not.conform.to.bounds=\u63a8\u65ad\u7c7b\u578b\u4e0d\u7b26\u5408\u58f0\u660e\u7684\u9650\u5236\u8303\u56f4\n\u63a8\u65ad\uff1a{0}\n\u9650\u5236\u8303\u56f4\uff1a{1} +compiler.misc.inferred.do.not.conform.to.params=\u5b9e\u9645\u53c2\u6570\u4e0d\u7b26\u5408\u63a8\u65ad\u5f62\u5f0f\u53c2\u6570\n\u9700\u8981\uff1a{0}\n\u627e\u5230: {1} ##### ## The first argument ({0}) is a "kindname". -compiler.err.abstract.cant.be.accessed.directly=\ -\u65e0\u6cd5\u76f4\u63a5\u8bbf\u95ee {2} \u4e2d\u7684\u62bd\u8c61 {0} {1} +compiler.err.abstract.cant.be.accessed.directly=\u65e0\u6cd5\u76f4\u63a5\u8bbf\u95ee {2} \u4e2d\u7684\u62bd\u8c61 {0} {1} ## The first argument ({0}) is a "kindname". -compiler.err.non-static.cant.be.ref=\ -\u65e0\u6cd5\u4ece\u9759\u6001\u4e0a\u4e0b\u6587\u4e2d\u5f15\u7528\u975e\u9759\u6001 {0} {1} +compiler.err.non-static.cant.be.ref=\u65e0\u6cd5\u4ece\u9759\u6001\u4e0a\u4e0b\u6587\u4e2d\u5f15\u7528\u975e\u9759\u6001 {0} {1} ## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list ## of kindnames (the list should be identical to that provided in source. -compiler.err.unexpected.type=\ -\u610f\u5916\u7684\u7c7b\u578b\n\ -\u9700\u8981\uff1a {0}\n\ -\u627e\u5230\uff1a {1} +compiler.err.unexpected.type=\u610f\u5916\u7684\u7c7b\u578b\n\u9700\u8981\uff1a {0}\n\u627e\u5230\uff1a {1} -## The first argument ({0}) is a "kindname". -compiler.err.cant.resolve=\ -\u627e\u4e0d\u5230\u7b26\u53f7\n\ -\u7b26\u53f7\uff1a {0} {3}{1}{2} +## The first argument {0} is a "kindname" (e.g. 'constructor', 'field', etc.) +## The second argument {1} is the non-resolved symbol +## The third argument {2} is a list of type parameters (non-empty if {1} is a method) +## The fourth argument {3} is a list of argument types (non-empty if {1} is a method) +compiler.err.cant.resolve=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} {3}{1}{2} -## The first argument ({0}) and fifth argument ({4}) are "kindname"s. -compiler.err.cant.resolve.location=\ -\u627e\u4e0d\u5230\u7b26\u53f7\n\ -\u7b26\u53f7\uff1a {0} {3}{1}{2}\n\ -\u4f4d\u7f6e\uff1a {4} {5} +compiler.err.cant.resolve.args=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} {1}({3}) + +compiler.err.cant.resolve.args.params=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} <{2}>{1}({3}) + +## arguments from {0} to {3} have the same meaning as above +## The fifth argument {4} is the location "kindname" (e.g. 'constructor', 'field', etc.) +## The sixth argument {5} is the location type +compiler.err.cant.resolve.location=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} {3}{1}{2}\n\u4f4d\u7f6e\uff1a {4} {5} + +compiler.err.cant.resolve.location.args=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} {1}({3})\nlocation: {4} {5} + +compiler.err.cant.resolve.location.args.params=\u627e\u4e0d\u5230\u7b26\u53f7\n\u7b26\u53f7\uff1a {0} <{2}>{1}({3})\n\u4f4d\u7f6e\uff1a {4} {5} + +compiler.err.cant.apply.diamond=\u83f1\u5f62\u8fd0\u7b97\u7b26\u65e0\u6cd5\u63a8\u65ad {0} \u7684\u7c7b\u578b\uff1b\n\u539f\u56e0: {1} ## The following are all possible string for "kindname". ## They should be called whatever the JLS calls them after it been translated ## to the appropriate language. # compiler.misc.kindname.constructor=\ # static member -compiler.misc.kindname.annotation=\ -@interface -compiler.misc.kindname.constructor=\ -\u6784\u9020\u51fd\u6570 -compiler.misc.kindname.interface=\ -\u63a5\u53e3 -compiler.misc.kindname.static=\ -\u9759\u6001 -compiler.misc.kindname.type.variable=\ -\u7c7b\u578b\u53d8\u91cf\u7684\u9650\u5236\u8303\u56f4 -compiler.misc.kindname=\ -\u6807\u8bc6\u7b26 ({0}) -compiler.misc.kindname.variable=\ -\u53d8\u91cf -compiler.misc.kindname.value=\ -\u503c -compiler.misc.kindname.method=\ -\u65b9\u6cd5 -compiler.misc.kindname.variable.method=\ -\u53d8\u91cf\u3001\u65b9\u6cd5 -compiler.misc.kindname.value.method=\ -\u503c\u3001\u65b9\u6cd5 -compiler.misc.kindname.class=\ -\u7c7b -compiler.misc.kindname.variable.class=\ -\u53d8\u91cf\u3001\u7c7b -compiler.misc.kindname.value.class=\ -\u503c\u3001\u7c7b -compiler.misc.kindname.method.class=\ -\u65b9\u6cd5\u3001\u7c7b -compiler.misc.kindname.variable.method.class=\ -\u53d8\u91cf\u3001\u65b9\u6cd5\u3001\u7c7b -compiler.misc.kindname.value.method.class=\ -\u503c\u3001\u65b9\u6cd5\u3001\u7c7b -compiler.misc.kindname.package=\ -\u8f6f\u4ef6\u5305 -compiler.misc.kindname.variable.package=\ -\u53d8\u91cf\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.value.package=\ -\u503c\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.method.package=\ -\u65b9\u6cd5\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.variable.method.package=\ -\u53d8\u91cf\u3001\u65b9\u6cd5\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.value.method.package=\ -\u503c\u3001\u65b9\u6cd5\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.class.package=\ -\u7c7b\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.variable.class.package=\ -\u53d8\u91cf\u3001\u7c7b\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.value.class.package=\ -\u503c\u3001\u7c7b\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.method.class.package=\ -\u65b9\u6cd5\u3001\u7c7b\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.variable.method.class.package=\ -\u53d8\u91cf\u3001\u65b9\u6cd5\u3001\u7c7b\u3001\u8f6f\u4ef6\u5305 -compiler.misc.kindname.value.method.class.package=\ -\u503c\u3001\u65b9\u6cd5\u3001\u7c7b\u3001\u8f6f\u4ef6\u5305 - +compiler.misc.kindname.annotation=@interface +compiler.misc.kindname.constructor=\u6784\u9020\u51fd\u6570 +compiler.misc.kindname.interface=\u63a5\u53e3 +compiler.misc.kindname.static=\u9759\u6001 +compiler.misc.kindname.type.variable=\u7c7b\u578b\u53d8\u91cf +compiler.misc.kindname.type.variable.bound=\u7c7b\u578b\u53d8\u91cf\u7684\u9650\u5236\u8303\u56f4 +compiler.misc.kindname.variable=\u53d8\u91cf +compiler.misc.kindname.value=\u503c +compiler.misc.kindname.method=\u65b9\u6cd5 +compiler.misc.kindname.class=\u7c7b +compiler.misc.kindname.package=\u8f6f\u4ef6\u5305 ##### -compiler.err.override.static=\ -{0}\uff1b\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a\u9759\u6001 -compiler.err.override.meth=\ -{0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a {1} +compiler.misc.no.args=\u6ca1\u6709\u53c2\u6570 -compiler.err.override.meth.doesnt.throw=\ -{0}\uff1b\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e0d\u629b\u51fa {1} +compiler.err.override.static={0}\n\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a\u9759\u6001 +compiler.err.override.meth={0}\n\u8986\u76d6\u7684\u65b9\u6cd5\u4e3a {1} + +compiler.err.override.meth.doesnt.throw={0}\n\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e0d\u629b\u51fa {1} # In the following string {1} is a space separated list of Java Keywords, as # they would have been declared in the source code -compiler.err.override.weaker.access=\ -{0}\uff1b\u6b63\u5728\u5c1d\u8bd5\u6307\u5b9a\u66f4\u4f4e\u7684\u8bbf\u95ee\u6743\u9650\uff1b\u4e3a {1} +compiler.err.override.weaker.access={0}\n\u6b63\u5728\u5c1d\u8bd5\u6307\u5b9a\u66f4\u4f4e\u7684\u8bbf\u95ee\u6743\u9650\uff1b\u4e3a {1} -compiler.misc.override.incompatible.ret=\ -{0}\uff1b\u6b63\u5728\u5c1d\u8bd5\u4f7f\u7528\u4e0d\u517c\u5bb9\u7684\u8fd4\u56de\u7c7b\u578b +compiler.err.override.incompatible.ret={0}\n\u8fd4\u56de\u7c7b\u578b {1} \u4e0e {2} \u4e0d\u517c\u5bb9 -compiler.misc.override.unchecked.ret=\ -{0}\uff1b\u8fd4\u56de\u7c7b\u578b\u9700\u8981\u672a\u7ecf\u68c0\u67e5\u7684\u8f6c\u6362 +compiler.warn.override.unchecked.ret=[unchecked] {0}\n\u8fd4\u56de\u7c7b\u578b\u9700\u8981\u4ece {1} \u5230 {2} \u7684\u672a\u7ecf\u68c0\u67e5\u8f6c\u6362 + +compiler.warn.override.unchecked.thrown=[unchecked] {0}\n\u88ab\u8986\u76d6\u7684\u65b9\u6cd5\u4e0d\u629b\u51fa {1} ## The following are all possible strings for the first argument ({0}) of the ## above strings. -compiler.misc.cant.override=\ -{1} \u4e2d\u7684 {0} \u65e0\u6cd5\u8986\u76d6 {3} \u4e2d\u7684 {2} -compiler.misc.cant.implement=\ -{1} \u4e2d\u7684 {0} \u65e0\u6cd5\u5b9e\u73b0 {3} \u4e2d\u7684 {2} -compiler.misc.clashes.with=\ -{1} \u4e2d\u7684 {0} \u4e0e {3} \u4e2d\u7684 {2} \u51b2\u7a81 -compiler.misc.unchecked.override=\ -{1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} -compiler.misc.unchecked.implement=\ -{1} \u4e2d\u7684 {0} \u5b9e\u73b0\u4e86 {3} \u4e2d\u7684 {2} -compiler.misc.unchecked.clash.with=\ -{1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} -compiler.misc.varargs.override=\ -{1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} -compiler.misc.varargs.implement=\ -{1} \u4e2d\u7684 {0} \u5b9e\u73b0\u4e86 {3} \u4e2d\u7684 {2} -compiler.misc.varargs.clash.with=\ -{1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.cant.override={1} \u4e2d\u7684 {0} \u65e0\u6cd5\u8986\u76d6 {3} \u4e2d\u7684 {2} +compiler.misc.cant.implement={1} \u4e2d\u7684 {0} \u65e0\u6cd5\u5b9e\u73b0 {3} \u4e2d\u7684 {2} +compiler.misc.clashes.with={1} \u4e2d\u7684 {0} \u4e0e {3} \u4e2d\u7684 {2} \u51b2\u7a81 +compiler.misc.unchecked.override={1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.unchecked.implement={1} \u4e2d\u7684 {0} \u5b9e\u73b0\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.unchecked.clash.with={1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.varargs.override={1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.varargs.implement={1} \u4e2d\u7684 {0} \u5b9e\u73b0\u4e86 {3} \u4e2d\u7684 {2} +compiler.misc.varargs.clash.with={1} \u4e2d\u7684 {0} \u8986\u76d6\u4e86 {3} \u4e2d\u7684 {2} ######################################## # Diagnostics for language feature changes ######################################## -compiler.err.unsupported.fp.lit=\ -\u5728 -source 5 \u4e4b\u524d\uff0c\u4e0d\u652f\u6301\u5341\u516d\u8fdb\u5236\u6d6e\u70b9\u5b57\u9762\u503c +compiler.err.unsupported.fp.lit=-source {0} \u4e2d\u4e0d\u652f\u6301\u5341\u516d\u8fdb\u5236\u6d6e\u70b9\u5b57\u9762\u503c\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u5341\u516d\u8fdb\u5236\u6d6e\u70b9\u5b57\u9762\u503c\uff09 -compiler.warn.enum.as.identifier=\ -\u4ece\u53d1\u884c\u7248 5 \u5f00\u59cb\uff0c"enum" \u4e3a\u5173\u952e\u5b57\uff0c\u800c\u4e0d\u7528\u4f5c\u6807\u8bc6\u7b26\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u5c06 "enum"' \u7528\u4f5c\u5173\u952e\u5b57\uff09 +compiler.err.unsupported.binary.lit=-source {0} \u4e2d\u4e0d\u652f\u6301\u4e8c\u8fdb\u5236\u5b57\u9762\u503c\n\uff08\u8bf7\u4f7f\u7528 -source 7 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u4e8c\u8fdb\u5236\u5b57\u9762\u503c\uff09 -compiler.warn.assert.as.identifier=\ -\u4ece\u7248\u672c 1.4 \u5f00\u59cb\uff0c''assert'' \u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u4f46\u4e0d\u80fd\u7528\u4f5c\u6807\u8bc6\u7b26\n\ -\uff08\u8bf7\u4f7f\u7528 -source 1.4 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u4fbf\u5c06 ''assert'' \u7528\u4f5c\u5173\u952e\u5b57\uff09 +compiler.err.unsupported.underscore.lit=-source {0} \u4e2d\u4e0d\u652f\u6301\u5b57\u9762\u503c\u4f7f\u7528\u4e0b\u5212\u7ebf\n\uff08\u8bf7\u4f7f\u7528 -source 7 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u5141\u8bb8\u5b57\u9762\u503c\u4f7f\u7528\u4e0b\u5212\u7ebf\uff09 -compiler.err.enum.as.identifier=\ -\u4ece\u53d1\u884c\u7248 5 \u5f00\u59cb\uff0c"enum" \u4e3a\u5173\u952e\u5b57\uff0c\u800c\u4e0d\u7528\u4f5c\u6807\u8bc6\u7b26\n\ -\uff08\u8bf7\u4f7f\u7528 -source 1.4 \u6216\u66f4\u4f4e\u7248\u672c\u4ee5\u5c06 "enum" \u7528\u4f5c\u6807\u8bc6\u7b26\uff09 +compiler.warn.enum.as.identifier=\u4ece\u53d1\u884c\u7248 5 \u5f00\u59cb\uff0c"enum" \u4e3a\u5173\u952e\u5b57\uff0c\u800c\u4e0d\u7528\u4f5c\u6807\u8bc6\u7b26\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u5c06 "enum"' \u7528\u4f5c\u5173\u952e\u5b57\uff09 -compiler.err.assert.as.identifier=\ -\u4ece\u7248\u672c 1.4 \u5f00\u59cb\uff0c''assert'' \u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u4f46\u4e0d\u80fd\u7528\u4f5c\u6807\u8bc6\u7b26\n\ -\uff08\u8bf7\u4f7f\u7528 -source 1.3 \u6216\u66f4\u4f4e\u7248\u672c\u4ee5\u4fbf\u5c06 ''assert'' \u7528\u4f5c\u6807\u8bc6\u7b26\uff09 +compiler.warn.assert.as.identifier=\u4ece\u7248\u672c 1.4 \u5f00\u59cb\uff0c''assert'' \u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u4f46\u4e0d\u80fd\u7528\u4f5c\u6807\u8bc6\u7b26\n\uff08\u8bf7\u4f7f\u7528 -source 1.4 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u4fbf\u5c06 ''assert'' \u7528\u4f5c\u5173\u952e\u5b57\uff09 -compiler.err.generics.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301\u6cdb\u578b\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u6cdb\u578b\uff09 +compiler.err.enum.as.identifier=\u4ece\u53d1\u884c\u7248 5 \u5f00\u59cb\uff0c"enum" \u4e3a\u5173\u952e\u5b57\uff0c\u800c\u4e0d\u7528\u4f5c\u6807\u8bc6\u7b26\n\uff08\u8bf7\u4f7f\u7528 -source 1.4 \u6216\u66f4\u4f4e\u7248\u672c\u4ee5\u5c06 "enum" \u7528\u4f5c\u6807\u8bc6\u7b26\uff09 -compiler.err.varargs.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301 variable-arity \u65b9\u6cd5\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528 variable-arity \u65b9\u6cd5\uff09 +compiler.err.assert.as.identifier=\u4ece\u7248\u672c 1.4 \u5f00\u59cb\uff0c''assert'' \u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u4f46\u4e0d\u80fd\u7528\u4f5c\u6807\u8bc6\u7b26\n\uff08\u8bf7\u4f7f\u7528 -source 1.3 \u6216\u66f4\u4f4e\u7248\u672c\u4ee5\u4fbf\u5c06 ''assert'' \u7528\u4f5c\u6807\u8bc6\u7b26\uff09 -compiler.err.annotations.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301\u6ce8\u91ca\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u6ce8\u91ca\uff09 +compiler.err.generics.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u6cdb\u578b\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u6cdb\u578b\uff09 -compiler.err.foreach.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301 for-each \u5faa\u73af\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528 for-each \u5faa\u73af\uff09 +compiler.err.varargs.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301 variable-arity \u65b9\u6cd5\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528 variable-arity \u65b9\u6cd5\uff09 + +compiler.err.annotations.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u6ce8\u91ca\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u6ce8\u91ca\uff09 + +compiler.err.type.annotations.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u7c7b\u578b\u6ce8\u91ca\n\uff08\u8bf7\u4f7f\u7528 -source 7 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u7c7b\u578b\u6ce8\u91ca\uff09 + +compiler.err.foreach.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301 for-each \u5faa\u73af\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528 for-each \u5faa\u73af\uff09 + +compiler.err.static.import.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u9759\u6001\u5bfc\u5165\u58f0\u660e\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u9759\u6001\u5bfc\u5165\u58f0\u660e\uff09 + +compiler.err.enums.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u679a\u4e3e\n\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u679a\u4e3e\uff09 + +compiler.err.diamond.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301\u83f1\u5f62\u8fd0\u7b97\u7b26\n\uff08\u8bf7\u4f7f\u7528 -source 7 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u83f1\u5f62\u8fd0\u7b97\u7b26\uff09 + +compiler.err.string.switch.not.supported.in.source=-source {0} \u4e2d\u4e0d\u652f\u6301 switch \u4f7f\u7528\u5b57\u7b26\u4e32\n\uff08\u8bf7\u4f7f\u7528 -source 7 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u5141\u8bb8 switch \u4f7f\u7528\u5b57\u7b26\u4e32\uff09 + +######################################## +# Diagnostics for where clause implementation +# used by the RichDiagnosticFormatter. +######################################## + +compiler.misc.type.null= + +# X#n (where n is an int id) is disambiguated tvar name +compiler.misc.type.var={0}#{1} + +# CAP#n (where n is an int id) is an abbreviation for 'captured type' +compiler.misc.captured.type=CAP#{0} + +# (where n is an int id) is an abbreviation for 'intersection type' +compiler.misc.intersection.type=INT#{0} + +# where clause for captured type: contains upper ('extends {1}') and lower +# ('super {2}') bound along with the wildcard that generated this captured type ({3}) +compiler.misc.where.captured={0} \u901a\u8fc7\u6355\u83b7 {3} \u6269\u5c55 {1} \u8d85\u7ea7\u7c7b\u578b\uff1a{2} + +# compact where clause for captured type: contains upper ('extends {1}') along +# with the wildcard that generated this captured type ({3}) +compiler.misc.where.captured.1={0} \u901a\u8fc7\u6355\u83b7 {3} \u6269\u5c55 {1} + +# where clause for type variable: contains upper bound(s) ('extends {1}') along with +# the kindname ({2}) and location ({3}) in which the typevar has been declared +compiler.misc.where.typevar={0} \u6269\u5c55 {2} {3} \u4e2d\u58f0\u660e\u7684 {1} + +# compact where clause for type variable: contains the kindname ({2}) and location ({3}) +# in which the typevar has been declared +compiler.misc.where.typevar.1={2} {3} \u4e2d\u58f0\u660e\u7684 {0} + +# where clause for type variable: contains all the upper bound(s) ('extends {1}') +# of this intersection type +compiler.misc.where.intersection={0} \u6269\u5c55 {1} + +### Where clause headers ### +compiler.misc.where.description.captured=\u5176\u4e2d {0} \u662f\u4e00\u4e2a\u65b0\u7684\u7c7b\u578b\u53d8\u91cf\uff1a +compiler.misc.where.description.typevar=\u5176\u4e2d {0} \u662f\u4e00\u4e2a\u7c7b\u578b\u53d8\u91cf\uff1a +compiler.misc.where.description.intersection=\u5176\u4e2d {0} \u662f\u4ea4\u96c6\u7c7b\u578b\uff1a +compiler.misc.where.description.captured.1=\u5176\u4e2d {0} \u662f\u65b0\u7684\u7c7b\u578b\u53d8\u91cf\uff1a +compiler.misc.where.description.typevar.1=\u5176\u4e2d {0} \u662f\u7c7b\u578b\u53d8\u91cf\uff1a +compiler.misc.where.description.intersection.1=\u5176\u4e2d {0} \u662f\u4ea4\u96c6\u7c7b\u578b\uff1a -compiler.err.static.import.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301\u9759\u6001\u5bfc\u5165\u58f0\u660e\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u9759\u6001\u5bfc\u5165\u58f0\u660e\uff09 -compiler.err.enums.not.supported.in.source=\ --source {0} \u4e2d\u4e0d\u652f\u6301\u679a\u4e3e\n\ -\uff08\u8bf7\u4f7f\u7528 -source 5 \u6216\u66f4\u9ad8\u7248\u672c\u4ee5\u542f\u7528\u679a\u4e3e\uff09 diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties index 85164f408d6..3e4235376cc 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties @@ -1,5 +1,5 @@ # -# Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1999-2009 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 @@ -25,184 +25,100 @@ ## standard options -javac.opt.g=\ - \u3059\u3079\u3066\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b -javac.opt.g.none=\ - \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3057\u306a\u3044 -javac.opt.g.lines.vars.source=\ - \u3044\u304f\u3064\u304b\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3060\u3051\u3092\u751f\u6210\u3059\u308b -javac.opt.nowarn=\ - \u8b66\u544a\u3092\u767a\u751f\u3055\u305b\u306a\u3044 -javac.opt.verbose=\ - \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u3064\u3044\u3066\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b -javac.opt.deprecation=\ - \u63a8\u5968\u3055\u308c\u306a\u3044 API \u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30bd\u30fc\u30b9\u306e\u4f4d\u7f6e\u3092\u51fa\u529b\u3059\u308b -javac.opt.classpath=\ - \u30e6\u30fc\u30b6\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -javac.opt.sourcepath=\ - \u5165\u529b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -javac.opt.bootclasspath=\ - \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b -javac.opt.Xbootclasspath.p=\ - \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306b\u4ed8\u52a0\u3059\u308b -javac.opt.Xbootclasspath.a=\ - \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306b\u8ffd\u52a0\u3059\u308b -javac.opt.endorseddirs=\ - \u63a8\u5968\u898f\u683c\u30d1\u30b9\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b -javac.opt.extdirs=\ - \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u62e1\u5f35\u6a5f\u80fd\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b -javac.opt.processorpath=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -javac.opt.processor=\ - \u5b9f\u884c\u3059\u308b\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u540d\u524d\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u691c\u51fa\u51e6\u7406\u3092\u30d0\u30a4\u30d1\u30b9 -javac.opt.proc.none.only=\ - \u6ce8\u91c8\u51e6\u7406\u3084\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u5b9f\u884c\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002 -javac.opt.d=\ - \u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b -javac.opt.sourceDest=\ - \u751f\u6210\u3055\u308c\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b -javac.opt.J=\ - \u3092\u5b9f\u884c\u30b7\u30b9\u30c6\u30e0\u306b\u76f4\u63a5\u6e21\u3059 -javac.opt.encoding=\ - \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u7528\u3059\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b -javac.opt.target=\ - \u7279\u5b9a\u306e VM \u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b -javac.opt.source=\ - \u6307\u5b9a\u3055\u308c\u305f\u30ea\u30ea\u30fc\u30b9\u3068\u30bd\u30fc\u30b9\u306e\u4e92\u63db\u6027\u3092\u4fdd\u3064 -javac.opt.A=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u6e21\u3055\u308c\u308b\u30aa\u30d7\u30b7\u30e7\u30f3 -javac.opt.implicit=\ - \u6697\u9ed9\u7684\u306b\u53c2\u7167\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6307\u5b9a\u3059\u308b -javac.opt.arg.class=\ - -javac.opt.arg.class.list=\ - [,,...] -javac.opt.arg.flag=\ - -javac.opt.arg.key.equals.value=\ - key[=value] -javac.opt.arg.path=\ - -javac.opt.arg.dirs=\ - -javac.opt.arg.directory=\ - -javac.opt.arg.encoding=\ - -javac.opt.arg.release=\ - -javac.opt.arg.number=\ - +javac.opt.g=\u3059\u3079\u3066\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b +javac.opt.g.none=\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3057\u306a\u3044 +javac.opt.g.lines.vars.source=\u3044\u304f\u3064\u304b\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3060\u3051\u3092\u751f\u6210\u3059\u308b +javac.opt.nowarn=\u8b66\u544a\u3092\u767a\u751f\u3055\u305b\u306a\u3044 +javac.opt.verbose=\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u3064\u3044\u3066\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b +javac.opt.deprecation=\u63a8\u5968\u3055\u308c\u306a\u3044 API \u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30bd\u30fc\u30b9\u306e\u4f4d\u7f6e\u3092\u51fa\u529b\u3059\u308b +javac.opt.classpath=\u30e6\u30fc\u30b6\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +javac.opt.sourcepath=\u5165\u529b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +javac.opt.bootclasspath=\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b +javac.opt.Xbootclasspath.p=\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306b\u4ed8\u52a0\u3059\u308b +javac.opt.Xbootclasspath.a=\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u306b\u8ffd\u52a0\u3059\u308b +javac.opt.endorseddirs=\u63a8\u5968\u898f\u683c\u30d1\u30b9\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b +javac.opt.extdirs=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u62e1\u5f35\u6a5f\u80fd\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b +javac.opt.processorpath=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +javac.opt.processor=\u5b9f\u884c\u3059\u308b\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u540d\u524d\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u691c\u51fa\u51e6\u7406\u3092\u30d0\u30a4\u30d1\u30b9 +javac.opt.proc.none.only=\u6ce8\u91c8\u51e6\u7406\u3084\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u5b9f\u884c\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002 +javac.opt.d=\u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b +javac.opt.sourceDest=\u751f\u6210\u3055\u308c\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b +javac.opt.J= \u3092\u5b9f\u884c\u30b7\u30b9\u30c6\u30e0\u306b\u76f4\u63a5\u6e21\u3059 +javac.opt.encoding=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u7528\u3059\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b +javac.opt.target=\u7279\u5b9a\u306e VM \u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b +javac.opt.source=\u6307\u5b9a\u3055\u308c\u305f\u30ea\u30ea\u30fc\u30b9\u3068\u30bd\u30fc\u30b9\u306e\u4e92\u63db\u6027\u3092\u4fdd\u3064 +javac.opt.Werror=\u8b66\u544a\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u7d42\u4e86\u3059\u308b +javac.opt.A=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u6e21\u3055\u308c\u308b\u30aa\u30d7\u30b7\u30e7\u30f3 +javac.opt.implicit=\u6697\u9ed9\u7684\u306b\u53c2\u7167\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6307\u5b9a\u3059\u308b +javac.opt.arg.class= +javac.opt.arg.class.list=[,,...] +javac.opt.arg.flag= +javac.opt.arg.key.equals.value=key[=value] +javac.opt.arg.path= +javac.opt.arg.dirs= +javac.opt.arg.directory= +javac.opt.arg.encoding= +javac.opt.arg.release= +javac.opt.arg.number= ## extended options -javac.opt.maxerrs=\ - \u51fa\u529b\u3059\u308b\u30a8\u30e9\u30fc\u306e\u6700\u5927\u6570\u3092\u8a2d\u5b9a\u3059\u308b -javac.opt.maxwarns=\ - \u51fa\u529b\u3059\u308b\u8b66\u544a\u306e\u6700\u5927\u6570\u3092\u8a2d\u5b9a\u3059\u308b -javac.opt.nogj=\ - \u8a00\u8a9e\u306e\u6c4e\u7528\u6027\u3092\u53d7\u3051\u4ed8\u3051\u306a\u3044 -javac.opt.moreinfo=\ - \u578b\u5909\u6570\u306e\u62e1\u5f35\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b -javac.opt.printflat=\ - \u5185\u90e8\u30af\u30e9\u30b9\u306e\u5909\u63db\u5f8c\u306b\u62bd\u8c61\u69cb\u6587\u30c4\u30ea\u30fc\u3092\u51fa\u529b\u3059\u308b -javac.opt.printsearch=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u4f4d\u7f6e\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b -javac.opt.prompt=\ - \u5404\u30a8\u30e9\u30fc\u3067\u505c\u6b62\u3059\u308b -javac.opt.retrofit=\ - \u65e2\u5b58\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u6c4e\u7528\u578b\u3067\u7d44\u307f\u66ff\u3048\u308b -javac.opt.s=\ - \u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4ee3\u308f\u308a\u306b java \u30bd\u30fc\u30b9\u3092\u767a\u884c\u3059\u308b -javac.opt.scramble=\ - \u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306e private \u8b58\u5225\u5b50\u306b\u30b9\u30af\u30e9\u30f3\u30d6\u30eb\u3092\u304b\u3051\u308b -javac.opt.scrambleall=\ - \u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306e package \u53ef\u8996\u8b58\u5225\u5b50\u306b\u30b9\u30af\u30e9\u30f3\u30d6\u30eb\u3092\u304b\u3051\u308b -javac.opt.version=\ - \u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831 -javac.opt.arg.pathname=\ - -javac.opt.arg.file=\ - -javac.opt.Xlint=\ - \u63a8\u5968\u306e\u8b66\u544a\u3092\u6709\u52b9\u306b\u3059\u308b -javac.opt.Xlint.suboptlist=\ - \u7279\u5b9a\u306e\u8b66\u544a\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b -javac.opt.Xstdout=\ - \u6a19\u6e96\u51fa\u529b\u3092\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b -javac.opt.X=\ - \u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b -javac.opt.help=\ - \u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b -javac.opt.print=\ - \u6307\u5b9a\u3057\u305f\u578b\u306e\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3092\u51fa\u529b\u3059\u308b -javac.opt.printRounds=\ - \u6ce8\u91c8\u51e6\u7406\u306e\u5f80\u5fa9\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b -javac.opt.printProcessorInfo=\ - \u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u51e6\u7406\u3092\u4f9d\u983c\u3055\u308c\u308b\u6ce8\u91c8\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b -javac.opt.prefer=\ - \u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u308b\u30af\u30e9\u30b9\u306b\u3064\u3044\u3066\u3001\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3068\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4e21\u65b9\u304c\u898b\u3064\u304b\u3063\u305f\u969b\u3069\u3061\u3089\u3092\u8aad\u307f\u8fbc\u3080\u304b\u6307\u5b9a\u3059\u308b +javac.opt.maxerrs=\u51fa\u529b\u3059\u308b\u30a8\u30e9\u30fc\u306e\u6700\u5927\u6570\u3092\u8a2d\u5b9a\u3059\u308b +javac.opt.maxwarns=\u51fa\u529b\u3059\u308b\u8b66\u544a\u306e\u6700\u5927\u6570\u3092\u8a2d\u5b9a\u3059\u308b +javac.opt.nogj=\u8a00\u8a9e\u306e\u6c4e\u7528\u6027\u3092\u53d7\u3051\u4ed8\u3051\u306a\u3044 +javac.opt.moreinfo=\u578b\u5909\u6570\u306e\u62e1\u5f35\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b +javac.opt.printflat=\u5185\u90e8\u30af\u30e9\u30b9\u306e\u5909\u63db\u5f8c\u306b\u62bd\u8c61\u69cb\u6587\u30c4\u30ea\u30fc\u3092\u51fa\u529b\u3059\u308b +javac.opt.printsearch=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u4f4d\u7f6e\u60c5\u5831\u3092\u51fa\u529b\u3059\u308b +javac.opt.prompt=\u5404\u30a8\u30e9\u30fc\u3067\u505c\u6b62\u3059\u308b +javac.opt.retrofit=\u65e2\u5b58\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u6c4e\u7528\u578b\u3067\u7d44\u307f\u66ff\u3048\u308b +javac.opt.s=\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4ee3\u308f\u308a\u306b java \u30bd\u30fc\u30b9\u3092\u767a\u884c\u3059\u308b +javac.opt.scramble=\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306e private \u8b58\u5225\u5b50\u306b\u30b9\u30af\u30e9\u30f3\u30d6\u30eb\u3092\u304b\u3051\u308b +javac.opt.scrambleall=\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306e package \u53ef\u8996\u8b58\u5225\u5b50\u306b\u30b9\u30af\u30e9\u30f3\u30d6\u30eb\u3092\u304b\u3051\u308b +javac.opt.version=\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831 +javac.opt.arg.pathname= +javac.opt.arg.file= +javac.opt.Xlint=\u63a8\u5968\u306e\u8b66\u544a\u3092\u6709\u52b9\u306b\u3059\u308b +javac.opt.Xlint.suboptlist=\u7279\u5b9a\u306e\u8b66\u544a\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b +javac.opt.Xstdout=\u6a19\u6e96\u51fa\u529b\u3092\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b +javac.opt.X=\u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b +javac.opt.help=\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u6982\u8981\u3092\u51fa\u529b\u3059\u308b +javac.opt.print=\u6307\u5b9a\u3057\u305f\u578b\u306e\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3092\u51fa\u529b\u3059\u308b +javac.opt.printRounds=\u6ce8\u91c8\u51e6\u7406\u306e\u5f80\u5fa9\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b +javac.opt.printProcessorInfo=\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u51e6\u7406\u3092\u4f9d\u983c\u3055\u308c\u308b\u6ce8\u91c8\u306b\u3064\u3044\u3066\u306e\u60c5\u5831\u3092\u5370\u5237\u3059\u308b +javac.opt.prefer=\u6697\u9ed9\u7684\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u308b\u30af\u30e9\u30b9\u306b\u3064\u3044\u3066\u3001\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3068\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4e21\u65b9\u304c\u898b\u3064\u304b\u3063\u305f\u969b\u3069\u3061\u3089\u3092\u8aad\u307f\u8fbc\u3080\u304b\u6307\u5b9a\u3059\u308b ## errors -javac.err.empty.A.argument=\ - -A \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002''-Akey'' \u307e\u305f\u306f ''-Akey=value'' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 -javac.err.invalid.arg=\ - {0} \u306f\u7121\u52b9\u306a\u5f15\u6570\u3067\u3059\u3002 -javac.err.invalid.A.key=\ - \u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d7\u30b7\u30e7\u30f3 ''{0}'' \u306e\u30ad\u30fc\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u4e00\u9023\u306e\u8b58\u5225\u5b50\u304c\u3001\u30c9\u30c3\u30c8\u3067\u533a\u5207\u3089\u308c\u3066\u3044\u307e\u305b\u3093 -javac.err.invalid.flag=\ - {0} \u306f\u7121\u52b9\u306a\u30d5\u30e9\u30b0\u3067\u3059\u3002 -javac.err.invalid.target=\ - {0} \u306f\u7121\u52b9\u306a VM \u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002 -javac.err.no.source.files=\ - \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -javac.err.req.arg=\ - {0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059 -javac.err.invalid.source=\ - {0} \u306f\u7121\u52b9\u306a\u30bd\u30fc\u30b9\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002 -javac.err.error.writing.file=\ - {0} \u306e\u66f8\u304d\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002{1} -javac.warn.source.target.conflict=\ - \u30ea\u30ea\u30fc\u30b9 {0} \u306e\u30bd\u30fc\u30b9\u306b\u306f\u30ea\u30ea\u30fc\u30b9 {1} \u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002 -javac.warn.target.default.source.conflict=\ - \u30bf\u30fc\u30b2\u30c3\u30c8\u30ea\u30ea\u30fc\u30b9 {0} \u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bd\u30fc\u30b9\u30ea\u30ea\u30fc\u30b9 {1} \u3068\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002 -javac.err.file.not.found=\ - \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} -javac.err.file.not.directory=\ - \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} -javac.err.file.not.file=\ - \u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} +javac.err.empty.A.argument=-A \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002''-Akey'' \u307e\u305f\u306f ''-Akey=value'' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 +javac.err.invalid.arg={0} \u306f\u7121\u52b9\u306a\u5f15\u6570\u3067\u3059\u3002 +javac.err.invalid.A.key=\u6ce8\u91c8\u30d7\u30ed\u30bb\u30c3\u30b5\u30aa\u30d7\u30b7\u30e7\u30f3 ''{0}'' \u306e\u30ad\u30fc\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u4e00\u9023\u306e\u8b58\u5225\u5b50\u304c\u3001\u30c9\u30c3\u30c8\u3067\u533a\u5207\u3089\u308c\u3066\u3044\u307e\u305b\u3093 +javac.err.invalid.flag={0} \u306f\u7121\u52b9\u306a\u30d5\u30e9\u30b0\u3067\u3059\u3002 +javac.err.invalid.target={0} \u306f\u7121\u52b9\u306a VM \u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002 +javac.err.no.source.files=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +javac.err.req.arg={0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059 +javac.err.invalid.source={0} \u306f\u7121\u52b9\u306a\u30bd\u30fc\u30b9\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002 +javac.err.error.writing.file={0} \u306e\u66f8\u304d\u8fbc\u307f\u30a8\u30e9\u30fc\u3067\u3059\u3002{1} +javac.warn.source.target.conflict=\u30ea\u30ea\u30fc\u30b9 {0} \u306e\u30bd\u30fc\u30b9\u306b\u306f\u30ea\u30ea\u30fc\u30b9 {1} \u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002 +javac.warn.target.default.source.conflict=\u30bf\u30fc\u30b2\u30c3\u30c8\u30ea\u30ea\u30fc\u30b9 {0} \u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bd\u30fc\u30b9\u30ea\u30ea\u30fc\u30b9 {1} \u3068\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002 +javac.err.dir.not.found=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u3042\u308a\u307e\u305b\u3093: {0} +javac.err.file.not.found=\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} +javac.err.file.not.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} +javac.err.file.not.file=\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} ## messages -javac.msg.usage.header=\ -\u4f7f\u3044\u65b9: {0} \n\ -\u4f7f\u7528\u53ef\u80fd\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002 +javac.msg.usage.header=\u4f7f\u3044\u65b9: {0} \n\u4f7f\u7528\u53ef\u80fd\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002 -javac.msg.usage=\ - \u4f7f\u3044\u65b9: {0} \n\ - \u4f7f\u7528\u53ef\u80fd\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001-help \u3092\u4f7f\u7528\u3057\u307e\u3059 +javac.msg.usage=\u4f7f\u3044\u65b9: {0} \n\u4f7f\u7528\u53ef\u80fd\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001-help \u3092\u4f7f\u7528\u3057\u307e\u3059 -javac.msg.usage.nonstandard.footer=\ -\u3053\u308c\u3089\u306f\u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3042\u308a\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +javac.msg.usage.nonstandard.footer=\u3053\u308c\u3089\u306f\u975e\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3042\u308a\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 -javac.msg.bug=\ -\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f ({0})\u3002\ -Bug Parade \u306b\u540c\u3058\u30d0\u30b0\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u3054\u78ba\u8a8d\u306e\u4e0a\u3001Java Developer Connection \ -(http://java.sun.com/webapps/bugreport) \u306b\u3066\u30d0\u30b0\u306e\u767b\u9332\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002\ -\u30ec\u30dd\u30fc\u30c8\u306b\u306f\u3001\u305d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u4e0b\u8a18\u306e\u8a3a\u65ad\u5185\u5bb9\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3054\u5354\u529b\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002 +javac.msg.bug=\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f ({0})\u3002Bug Parade \u306b\u540c\u3058\u30d0\u30b0\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u3054\u78ba\u8a8d\u306e\u4e0a\u3001Java Developer Connection (http://java.sun.com/webapps/bugreport) \u306b\u3066\u30d0\u30b0\u306e\u767b\u9332\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002\u30ec\u30dd\u30fc\u30c8\u306b\u306f\u3001\u305d\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u4e0b\u8a18\u306e\u8a3a\u65ad\u5185\u5bb9\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3054\u5354\u529b\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002 -javac.msg.io=\ -\n\n\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\n\ -\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n +javac.msg.io=\n\n\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\n\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n -javac.msg.proc.annotation.uncaught.exception=\ -\n\n\u6ce8\u91c8\u51e6\u7406\u3067\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u306a\u3044\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002\n\ -\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n +javac.msg.proc.annotation.uncaught.exception=\n\n\u6ce8\u91c8\u51e6\u7406\u3067\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u306a\u3044\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002\n\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n -javac.msg.resource=\ -\n\n\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002\n\ -\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n +javac.msg.resource=\n\n\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002\n\u8a73\u7d30\u306f\u6b21\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3067\u8abf\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n javac.version={0} {1} javac.fullVersion={0} \u30d5\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3 "{1}" diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties index 61c51012151..cefb0a8158e 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1999-2009 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 @@ -25,184 +25,100 @@ ## standard options -javac.opt.g=\ -\u751f\u6210\u6240\u6709\u8c03\u8bd5\u4fe1\u606f -javac.opt.g.none=\ -\u4e0d\u751f\u6210\u4efb\u4f55\u8c03\u8bd5\u4fe1\u606f -javac.opt.g.lines.vars.source=\ -\u53ea\u751f\u6210\u67d0\u4e9b\u8c03\u8bd5\u4fe1\u606f -javac.opt.nowarn=\ -\u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a -javac.opt.verbose=\ -\u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f -javac.opt.deprecation=\ -\u8f93\u51fa\u4f7f\u7528\u5df2\u8fc7\u65f6\u7684 API \u7684\u6e90\u4f4d\u7f6e -javac.opt.classpath=\ -\u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u548c\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u4f4d\u7f6e -javac.opt.sourcepath=\ -\u6307\u5b9a\u67e5\u627e\u8f93\u5165\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e -javac.opt.bootclasspath=\ -\u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e -javac.opt.Xbootclasspath.p=\ -\u7f6e\u4e8e\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e4b\u524d -javac.opt.Xbootclasspath.a=\ -\u7f6e\u4e8e\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e4b\u540e -javac.opt.endorseddirs=\ -\u8986\u76d6\u7b7e\u540d\u7684\u6807\u51c6\u8def\u5f84\u7684\u4f4d\u7f6e -javac.opt.extdirs=\ -\u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e -javac.opt.processorpath=\ -\u6307\u5b9a\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u4f4d\u7f6e -javac.opt.processor=\ -\u8981\u8fd0\u884c\u7684\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u540d\u79f0\uff1b\u7ed5\u8fc7\u9ed8\u8ba4\u7684\u641c\u7d22\u8fdb\u7a0b -javac.opt.proc.none.only=\ -\u63a7\u5236\u662f\u5426\u6267\u884c\u6ce8\u91ca\u5904\u7406\u548c/\u6216\u7f16\u8bd1\u3002 -javac.opt.d=\ -\u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e -javac.opt.sourceDest=\ -\u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e -javac.opt.J=\ -\u76f4\u63a5\u5c06 <\u6807\u5fd7> \u4f20\u9012\u7ed9\u8fd0\u884c\u65f6\u7cfb\u7edf -javac.opt.encoding=\ -\u6307\u5b9a\u6e90\u6587\u4ef6\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801 -javac.opt.target=\ -\u751f\u6210\u7279\u5b9a VM \u7248\u672c\u7684\u7c7b\u6587\u4ef6 -javac.opt.source=\ -\u63d0\u4f9b\u4e0e\u6307\u5b9a\u7248\u672c\u7684\u6e90\u517c\u5bb9\u6027 -javac.opt.A=\ -\u4f20\u9012\u7ed9\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u9009\u9879 -javac.opt.implicit=\ - \u6307\u5b9a\u662f\u5426\u4e3a\u9690\u5f0f\u5f15\u7528\u6587\u4ef6\u751f\u6210\u7c7b\u6587\u4ef6 -javac.opt.arg.class=\ - -javac.opt.arg.class.list=\ -[,,...] -javac.opt.arg.flag=\ -<\u6807\u5fd7> -javac.opt.arg.key.equals.value=\ - key[=value] -javac.opt.arg.path=\ -<\u8def\u5f84> -javac.opt.arg.dirs=\ -<\u76ee\u5f55> -javac.opt.arg.directory=\ -<\u76ee\u5f55> -javac.opt.arg.encoding=\ -<\u7f16\u7801> -javac.opt.arg.release=\ -<\u7248\u672c> -javac.opt.arg.number=\ -<\u7f16\u53f7> +javac.opt.g=\u751f\u6210\u6240\u6709\u8c03\u8bd5\u4fe1\u606f +javac.opt.g.none=\u4e0d\u751f\u6210\u4efb\u4f55\u8c03\u8bd5\u4fe1\u606f +javac.opt.g.lines.vars.source=\u53ea\u751f\u6210\u67d0\u4e9b\u8c03\u8bd5\u4fe1\u606f +javac.opt.nowarn=\u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a +javac.opt.verbose=\u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f +javac.opt.deprecation=\u8f93\u51fa\u4f7f\u7528\u5df2\u8fc7\u65f6\u7684 API \u7684\u6e90\u4f4d\u7f6e +javac.opt.classpath=\u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u548c\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u4f4d\u7f6e +javac.opt.sourcepath=\u6307\u5b9a\u67e5\u627e\u8f93\u5165\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e +javac.opt.bootclasspath=\u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e +javac.opt.Xbootclasspath.p=\u7f6e\u4e8e\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e4b\u524d +javac.opt.Xbootclasspath.a=\u7f6e\u4e8e\u5f15\u5bfc\u7c7b\u8def\u5f84\u4e4b\u540e +javac.opt.endorseddirs=\u8986\u76d6\u7b7e\u540d\u7684\u6807\u51c6\u8def\u5f84\u7684\u4f4d\u7f6e +javac.opt.extdirs=\u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e +javac.opt.processorpath=\u6307\u5b9a\u67e5\u627e\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u4f4d\u7f6e +javac.opt.processor=\u8981\u8fd0\u884c\u7684\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u540d\u79f0\uff1b\u7ed5\u8fc7\u9ed8\u8ba4\u7684\u641c\u7d22\u8fdb\u7a0b +javac.opt.proc.none.only=\u63a7\u5236\u662f\u5426\u6267\u884c\u6ce8\u91ca\u5904\u7406\u548c/\u6216\u7f16\u8bd1\u3002 +javac.opt.d=\u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e +javac.opt.sourceDest=\u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e +javac.opt.J=\u76f4\u63a5\u5c06 <\u6807\u5fd7> \u4f20\u9012\u7ed9\u8fd0\u884c\u65f6\u7cfb\u7edf +javac.opt.encoding=\u6307\u5b9a\u6e90\u6587\u4ef6\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801 +javac.opt.target=\u751f\u6210\u7279\u5b9a VM \u7248\u672c\u7684\u7c7b\u6587\u4ef6 +javac.opt.source=\u63d0\u4f9b\u4e0e\u6307\u5b9a\u7248\u672c\u7684\u6e90\u517c\u5bb9\u6027 +javac.opt.Werror=\u51fa\u73b0\u8b66\u544a\u5219\u4e2d\u6b62\u7f16\u8bd1 +javac.opt.A=\u4f20\u9012\u7ed9\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u7684\u9009\u9879 +javac.opt.implicit=\u6307\u5b9a\u662f\u5426\u4e3a\u9690\u5f0f\u5f15\u7528\u6587\u4ef6\u751f\u6210\u7c7b\u6587\u4ef6 +javac.opt.arg.class= +javac.opt.arg.class.list=[,,...] +javac.opt.arg.flag=<\u6807\u5fd7> +javac.opt.arg.key.equals.value=key[=value] +javac.opt.arg.path=<\u8def\u5f84> +javac.opt.arg.dirs=<\u76ee\u5f55> +javac.opt.arg.directory=<\u76ee\u5f55> +javac.opt.arg.encoding=<\u7f16\u7801> +javac.opt.arg.release=<\u7248\u672c> +javac.opt.arg.number=<\u7f16\u53f7> ## extended options -javac.opt.maxerrs=\ -\u8bbe\u7f6e\u8981\u8f93\u51fa\u7684\u9519\u8bef\u7684\u6700\u5927\u6570\u76ee -javac.opt.maxwarns=\ -\u8bbe\u7f6e\u8981\u8f93\u51fa\u7684\u8b66\u544a\u7684\u6700\u5927\u6570\u76ee -javac.opt.nogj=\ -\u8bed\u8a00\u4e2d\u4e0d\u63a5\u53d7\u6cdb\u578b -javac.opt.moreinfo=\ -\u8f93\u51fa\u7c7b\u578b\u53d8\u91cf\u7684\u6269\u5c55\u4fe1\u606f -javac.opt.printflat=\ -\u5728\u5185\u90e8\u7c7b\u8f6c\u6362\u4e4b\u540e\u8f93\u51fa\u62bd\u8c61\u8bed\u6cd5\u6811 -javac.opt.printsearch=\ -\u8f93\u51fa\u6709\u5173\u641c\u7d22\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\u7684\u4fe1\u606f -javac.opt.prompt=\ -\u5728\u6bcf\u6b21\u51fa\u9519\u540e\u505c\u6b62 -javac.opt.retrofit=\ -\u66f4\u65b0\u4f7f\u7528\u6cdb\u578b\u7684\u73b0\u6709\u7c7b\u6587\u4ef6 -javac.opt.s=\ -\u53d1\u51fa java \u6e90\u800c\u4e0d\u662f\u7c7b\u6587\u4ef6 -javac.opt.scramble=\ -\u5728\u5b57\u8282\u7801\u4e2d\u6df7\u6dc6\u4e13\u7528\u6807\u8bc6\u7b26 -javac.opt.scrambleall=\ -\u5728\u5b57\u8282\u7801\u4e2d\u6df7\u6dc6\u8f6f\u4ef6\u5305\u53ef\u89c1\u6807\u8bc6\u7b26 -javac.opt.version=\ -\u7248\u672c\u4fe1\u606f -javac.opt.arg.pathname=\ -<\u8def\u5f84\u540d> -javac.opt.arg.file=\ -<\u6587\u4ef6\u540d> -javac.opt.Xlint=\ -\u542f\u7528\u5efa\u8bae\u7684\u8b66\u544a -javac.opt.Xlint.suboptlist=\ -\u542f\u7528\u6216\u7981\u7528\u7279\u5b9a\u7684\u8b66\u544a -javac.opt.Xstdout=\ -\u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa -javac.opt.X=\ -\u8f93\u51fa\u975e\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981 -javac.opt.help=\ -\u8f93\u51fa\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981 -javac.opt.print=\ -\u8f93\u51fa\u6307\u5b9a\u7c7b\u578b\u7684\u6587\u672c\u8868\u793a -javac.opt.printRounds=\ -\u8f93\u51fa\u6709\u5173\u6ce8\u91ca\u5904\u7406\u5faa\u73af\u7684\u4fe1\u606f -javac.opt.printProcessorInfo=\ -\u8f93\u51fa\u6709\u5173\u8bf7\u6c42\u5904\u7406\u7a0b\u5e8f\u5904\u7406\u54ea\u4e9b\u6ce8\u91ca\u7684\u4fe1\u606f -javac.opt.prefer=\ - \u6307\u5b9a\u8bfb\u53d6\u6587\u4ef6\uff0c\u5f53\u540c\u65f6\u627e\u5230\u9690\u5f0f\u7f16\u8bd1\u7c7b\u7684\u6e90\u6587\u4ef6\u548c\u7c7b\u6587\u4ef6\u65f6 +javac.opt.maxerrs=\u8bbe\u7f6e\u8981\u8f93\u51fa\u7684\u9519\u8bef\u7684\u6700\u5927\u6570\u76ee +javac.opt.maxwarns=\u8bbe\u7f6e\u8981\u8f93\u51fa\u7684\u8b66\u544a\u7684\u6700\u5927\u6570\u76ee +javac.opt.nogj=\u8bed\u8a00\u4e2d\u4e0d\u63a5\u53d7\u6cdb\u578b +javac.opt.moreinfo=\u8f93\u51fa\u7c7b\u578b\u53d8\u91cf\u7684\u6269\u5c55\u4fe1\u606f +javac.opt.printflat=\u5728\u5185\u90e8\u7c7b\u8f6c\u6362\u4e4b\u540e\u8f93\u51fa\u62bd\u8c61\u8bed\u6cd5\u6811 +javac.opt.printsearch=\u8f93\u51fa\u6709\u5173\u641c\u7d22\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\u7684\u4fe1\u606f +javac.opt.prompt=\u5728\u6bcf\u6b21\u51fa\u9519\u540e\u505c\u6b62 +javac.opt.retrofit=\u66f4\u65b0\u4f7f\u7528\u6cdb\u578b\u7684\u73b0\u6709\u7c7b\u6587\u4ef6 +javac.opt.s=\u53d1\u51fa java \u6e90\u800c\u4e0d\u662f\u7c7b\u6587\u4ef6 +javac.opt.scramble=\u5728\u5b57\u8282\u7801\u4e2d\u6df7\u6dc6\u4e13\u7528\u6807\u8bc6\u7b26 +javac.opt.scrambleall=\u5728\u5b57\u8282\u7801\u4e2d\u6df7\u6dc6\u8f6f\u4ef6\u5305\u53ef\u89c1\u6807\u8bc6\u7b26 +javac.opt.version=\u7248\u672c\u4fe1\u606f +javac.opt.arg.pathname=<\u8def\u5f84\u540d> +javac.opt.arg.file=<\u6587\u4ef6\u540d> +javac.opt.Xlint=\u542f\u7528\u5efa\u8bae\u7684\u8b66\u544a +javac.opt.Xlint.suboptlist=\u542f\u7528\u6216\u7981\u7528\u7279\u5b9a\u7684\u8b66\u544a +javac.opt.Xstdout=\u91cd\u5b9a\u5411\u6807\u51c6\u8f93\u51fa +javac.opt.X=\u8f93\u51fa\u975e\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981 +javac.opt.help=\u8f93\u51fa\u6807\u51c6\u9009\u9879\u7684\u63d0\u8981 +javac.opt.print=\u8f93\u51fa\u6307\u5b9a\u7c7b\u578b\u7684\u6587\u672c\u8868\u793a +javac.opt.printRounds=\u8f93\u51fa\u6709\u5173\u6ce8\u91ca\u5904\u7406\u5faa\u73af\u7684\u4fe1\u606f +javac.opt.printProcessorInfo=\u8f93\u51fa\u6709\u5173\u8bf7\u6c42\u5904\u7406\u7a0b\u5e8f\u5904\u7406\u54ea\u4e9b\u6ce8\u91ca\u7684\u4fe1\u606f +javac.opt.prefer=\u6307\u5b9a\u8bfb\u53d6\u6587\u4ef6\uff0c\u5f53\u540c\u65f6\u627e\u5230\u9690\u5f0f\u7f16\u8bd1\u7c7b\u7684\u6e90\u6587\u4ef6\u548c\u7c7b\u6587\u4ef6\u65f6 ## errors -javac.err.empty.A.argument=\ - -A \u9700\u8981\u4e00\u4e2a\u53c2\u6570\uff1b\u4f7f\u7528 ''-Akey'' \u6216 ''-Akey=value'' -javac.err.invalid.arg=\ -\u65e0\u6548\u7684\u53c2\u6570\uff1a {0} -javac.err.invalid.A.key=\ - \u6ce8\u91ca\u5904\u7406\u5668\u9009\u9879"{0}"\u4e2d\u7684\u5173\u952e\u5b57\u4e0d\u662f\u4ee5\u70b9\u5206\u9694\u7684\u6807\u8bc6\u7b26\u5e8f\u5217 -javac.err.invalid.flag=\ -\u65e0\u6548\u7684\u6807\u5fd7\uff1a {0} -javac.err.invalid.target=\ -\u65e0\u6548\u7684\u76ee\u6807\u7248\u672c\uff1a {0} -javac.err.no.source.files=\ -\u65e0\u6e90\u6587\u4ef6 -javac.err.req.arg=\ -{0} \u9700\u8981\u53c2\u6570 -javac.err.invalid.source=\ -\u65e0\u6548\u7684\u6e90\u7248\u672c\uff1a {0} -javac.err.error.writing.file=\ -\u5199\u5165 {0} \u65f6\u51fa\u9519\uff1b{1} -javac.warn.source.target.conflict=\ -\u6e90\u7248\u672c {0} \u9700\u8981\u76ee\u6807\u7248\u672c {1} -javac.warn.target.default.source.conflict=\ -\u76ee\u6807\u7248\u672c {0} \u4e0e\u9ed8\u8ba4\u7684\u6e90\u7248\u672c {1} \u51b2\u7a81 -javac.err.file.not.found=\ -\u627e\u4e0d\u5230\u6587\u4ef6\uff1a {0} -javac.err.file.not.directory=\ - \u4e0d\u662f\u76ee\u5f55: {0} -javac.err.file.not.file=\ - \u4e0d\u662f\u6587\u4ef6: {0} +javac.err.empty.A.argument=-A \u9700\u8981\u4e00\u4e2a\u53c2\u6570\uff1b\u4f7f\u7528 ''-Akey'' \u6216 ''-Akey=value'' +javac.err.invalid.arg=\u65e0\u6548\u7684\u53c2\u6570\uff1a {0} +javac.err.invalid.A.key=\u6ce8\u91ca\u5904\u7406\u5668\u9009\u9879"{0}"\u4e2d\u7684\u5173\u952e\u5b57\u4e0d\u662f\u4ee5\u70b9\u5206\u9694\u7684\u6807\u8bc6\u7b26\u5e8f\u5217 +javac.err.invalid.flag=\u65e0\u6548\u7684\u6807\u5fd7\uff1a {0} +javac.err.invalid.target=\u65e0\u6548\u7684\u76ee\u6807\u7248\u672c\uff1a {0} +javac.err.no.source.files=\u65e0\u6e90\u6587\u4ef6 +javac.err.req.arg={0} \u9700\u8981\u53c2\u6570 +javac.err.invalid.source=\u65e0\u6548\u7684\u6e90\u7248\u672c\uff1a {0} +javac.err.error.writing.file=\u5199\u5165 {0} \u65f6\u51fa\u9519\uff1b{1} +javac.warn.source.target.conflict=\u6e90\u7248\u672c {0} \u9700\u8981\u76ee\u6807\u7248\u672c {1} +javac.warn.target.default.source.conflict=\u76ee\u6807\u7248\u672c {0} \u4e0e\u9ed8\u8ba4\u7684\u6e90\u7248\u672c {1} \u51b2\u7a81 +javac.err.dir.not.found=\u627e\u4e0d\u5230\u76ee\u5f55: {0} +javac.err.file.not.found=\u627e\u4e0d\u5230\u6587\u4ef6\uff1a {0} +javac.err.file.not.directory=\u4e0d\u662f\u76ee\u5f55: {0} +javac.err.file.not.file=\u4e0d\u662f\u6587\u4ef6: {0} ## messages -javac.msg.usage.header=\ -\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u6e90\u6587\u4ef6>\n\ -\u5176\u4e2d\uff0c\u53ef\u80fd\u7684\u9009\u9879\u5305\u62ec\uff1a +javac.msg.usage.header=\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u6e90\u6587\u4ef6>\n\u5176\u4e2d\uff0c\u53ef\u80fd\u7684\u9009\u9879\u5305\u62ec\uff1a -javac.msg.usage=\ - \u7528\u6cd5: {0} \n\ - -help \u7528\u4e8e\u5217\u51fa\u53ef\u80fd\u7684\u9009\u9879 +javac.msg.usage=\u7528\u6cd5: {0} \n-help \u7528\u4e8e\u5217\u51fa\u53ef\u80fd\u7684\u9009\u9879 -javac.msg.usage.nonstandard.footer=\ -\u8fd9\u4e9b\u9009\u9879\u90fd\u662f\u975e\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002 +javac.msg.usage.nonstandard.footer=\u8fd9\u4e9b\u9009\u9879\u90fd\u662f\u975e\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002 -javac.msg.bug=\ -\u7f16\u8bd1\u5668 ({0}) \u4e2d\u51fa\u73b0\u5f02\u5e38\u3002 \ -\u5982\u679c\u5728 Bug Parade \u4e2d\u6ca1\u6709\u627e\u5230\u8be5\u9519\u8bef\uff0c\u8bf7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \ -\u5bf9\u8be5\u9519\u8bef\u8fdb\u884c\u5f52\u6863\u3002 \ -\u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u60a8\u7684\u7a0b\u5e8f\u548c\u4ee5\u4e0b\u8bca\u65ad\u4fe1\u606f\u3002\u8c22\u8c22\u60a8\u7684\u5408\u4f5c\u3002 +javac.msg.bug=\u7f16\u8bd1\u5668 ({0}) \u4e2d\u51fa\u73b0\u5f02\u5e38\u3002 \u5982\u679c\u5728 Bug Parade \u4e2d\u6ca1\u6709\u627e\u5230\u8be5\u9519\u8bef\uff0c\u8bf7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \u5bf9\u8be5\u9519\u8bef\u8fdb\u884c\u5f52\u6863\u3002 \u8bf7\u5728\u62a5\u544a\u4e2d\u9644\u4e0a\u60a8\u7684\u7a0b\u5e8f\u548c\u4ee5\u4e0b\u8bca\u65ad\u4fe1\u606f\u3002\u8c22\u8c22\u60a8\u7684\u5408\u4f5c\u3002 -javac.msg.io=\ -\n\n\u53d1\u751f\u8f93\u5165/\u8f93\u51fa\u9519\u8bef\u3002\n\ -\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n +javac.msg.io=\n\n\u53d1\u751f\u8f93\u5165/\u8f93\u51fa\u9519\u8bef\u3002\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n -javac.msg.proc.annotation.uncaught.exception=\ -\n\n\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u629b\u51fa\u672a\u6355\u83b7\u7684\u5f02\u5e38\u3002\n\ -\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n +javac.msg.proc.annotation.uncaught.exception=\n\n\u6ce8\u91ca\u5904\u7406\u7a0b\u5e8f\u629b\u51fa\u672a\u6355\u83b7\u7684\u5f02\u5e38\u3002\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n -javac.msg.resource=\ -\n\n\u7cfb\u7edf\u8d44\u6e90\u4e0d\u8db3\u3002\n\ -\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n +javac.msg.resource=\n\n\u7cfb\u7edf\u8d44\u6e90\u4e0d\u8db3\u3002\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0b\u5806\u6808\u8ffd\u8e2a\u3002\n javac.version={0} {1} javac.fullVersion={0} \u5b8c\u6574\u7248\u672c "{1}" From 795261fbaaec7d03dcbb036155e72bb8c658659f Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Mon, 12 Apr 2010 10:57:07 -0700 Subject: [PATCH 10/64] 6942707: nwe Big5.map for HKSCS2008 missed 5 codepoints Updated the Big5.map table to add 5 entries Reviewed-by: okutsu --- jdk/make/tools/CharsetMapping/Big5.c2b | 8 -------- jdk/make/tools/CharsetMapping/Big5.map | 13 +++++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) delete mode 100644 jdk/make/tools/CharsetMapping/Big5.c2b diff --git a/jdk/make/tools/CharsetMapping/Big5.c2b b/jdk/make/tools/CharsetMapping/Big5.c2b deleted file mode 100644 index a4ed3176312..00000000000 --- a/jdk/make/tools/CharsetMapping/Big5.c2b +++ /dev/null @@ -1,8 +0,0 @@ -#Add the following 5 characters which are duplicated -#or have conflicts with other characters. -0xA1C4 0xFF3F #REGWARN Fallback 0xA1C4 SPACING UNDERSCORE -0xA2AC 0x2571 #REGWARN Fallback 0xA2AC LT DIAG UP RIGHT TO LOW LEFT -0xA2AD 0x2572 #REGWARN Fallback 0xA2AD LT DIAG UP LEFT TO LOW RIGHT -0xA451 0x5341 #REGWARN Fallback 0xA451 HANGZHOU NUMERAL TEN -0xA4CA 0x5345 #REGWARN Fallback 0xA4CA HANGZHOU NUMERAL THIRTY -# diff --git a/jdk/make/tools/CharsetMapping/Big5.map b/jdk/make/tools/CharsetMapping/Big5.map index dcfa244c310..93242f1ebaa 100644 --- a/jdk/make/tools/CharsetMapping/Big5.map +++ b/jdk/make/tools/CharsetMapping/Big5.map @@ -13830,8 +13830,21 @@ 0xF9D4 0x9F49 # 0xF9D5 0x9F98 # # +# from Big5.b2c-irreversible +# 0xA15A 0xFF3F #SPACING UNDERSCORE 0xA1FE 0x2571 #LT DIAG UP RIGHT TO LOW LEFT 0xA240 0x2572 #LT DIAG UP LEFT TO LOW RIGHTG 0xA2CC 0x5341 #HANGHZOU NUMERAL TEN 0xA2CE 0x5345 #HANGZHOU NUMERAL THIRTY +# +# Add the following 5 characters from Big5.c2b-irreversible +# It appears these 5 should be here to be the round-trip +# for these 5 characters. Above 5 are the b->c only nrt. +# +0xA1C4 0xFF3F +0xA2AC 0x2571 +0xA2AD 0x2572 +0xA451 0x5341 +0xA4CA 0x5345 +# From 2790d3b818716d15bbc576278c03b663281198fe Mon Sep 17 00:00:00 2001 From: Yuka Kamiya Date: Tue, 13 Apr 2010 13:47:54 +0900 Subject: [PATCH 11/64] 6709938: RFE: Support more scripts in JDK logical fonts using new fonts in Windows XP and later Reviewed-by: okutsu --- jdk/src/windows/classes/sun/awt/windows/fontconfig.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties b/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties index b3aef483fd4..a380ec57e1b 100644 --- a/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties +++ b/jdk/src/windows/classes/sun/awt/windows/fontconfig.properties @@ -41,6 +41,7 @@ allfonts.dingbats=Wingdings allfonts.lucida=Lucida Sans Regular allfonts.symbol=Symbol allfonts.thai=Lucida Sans Regular +allfonts.georgian=Sylfaen serif.plain.alphabetic=Times New Roman serif.plain.chinese-ms950=MingLiU @@ -231,7 +232,7 @@ sequence.allfonts.x-windows-874=alphabetic,thai,dingbats,symbol sequence.fallback=lucida,\ chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\ - japanese,korean,chinese-ms950-extb,chinese-ms936-extb + japanese,korean,chinese-ms950-extb,chinese-ms936-extb,georgian # Exclusion Ranges @@ -290,3 +291,4 @@ filename.Mangal=MANGAL.TTF filename.Symbol=SYMBOL.TTF filename.Wingdings=WINGDING.TTF +filename.Sylfaen=sylfaen.ttf From 87fe7a43767feb90ae074d518fea86d214fa8b69 Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Tue, 13 Apr 2010 12:02:06 +0100 Subject: [PATCH 12/64] 6706251: api/java_net/NetworkInterface/index.html#misc: getDisplayName() returned non null but empty String Reviewed-by: alanb, michaelm, andrew --- jdk/src/share/classes/java/net/NetworkInterface.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/java/net/NetworkInterface.java b/jdk/src/share/classes/java/net/NetworkInterface.java index 07941b062fd..eb332713985 100644 --- a/jdk/src/share/classes/java/net/NetworkInterface.java +++ b/jdk/src/share/classes/java/net/NetworkInterface.java @@ -221,11 +221,12 @@ public final class NetworkInterface { * A display name is a human readable String describing the network * device. * - * @return the display name of this network interface, - * or null if no display name is available. + * @return a non-empty string representing the display name of this network + * interface, or null if no display name is available. */ public String getDisplayName() { - return displayName; + /* strict TCK conformance */ + return "".equals(displayName) ? null : displayName; } /** From 6cfd12db8540790288ea7947bf13f94704cb9253 Mon Sep 17 00:00:00 2001 From: Masayoshi Okutsu Date: Wed, 14 Apr 2010 13:53:17 +0900 Subject: [PATCH 13/64] 6941948: NumaricShaper.shape() doesn't work with NumericShaper.Range.EASTERN_ARABIC Reviewed-by: peytoia --- .../classes/java/awt/font/NumericShaper.java | 111 +++++++++------- .../font/NumericShaper/EasternArabicTest.java | 118 ++++++++++++++++++ 2 files changed, 184 insertions(+), 45 deletions(-) create mode 100644 jdk/test/java/awt/font/NumericShaper/EasternArabicTest.java diff --git a/jdk/src/share/classes/java/awt/font/NumericShaper.java b/jdk/src/share/classes/java/awt/font/NumericShaper.java index 435b60213f0..75f4dbad751 100644 --- a/jdk/src/share/classes/java/awt/font/NumericShaper.java +++ b/jdk/src/share/classes/java/awt/font/NumericShaper.java @@ -129,6 +129,8 @@ public final class NumericShaper implements java.io.Serializable { * @since 1.7 */ public static enum Range { + // The order of EUROPEAN to MOGOLIAN must be consistent + // with the bitmask-based constants. /** * The Latin (European) range with the Latin (ASCII) digits. */ @@ -210,6 +212,9 @@ public final class NumericShaper implements java.io.Serializable { * The Mongolian range with the Mongolian digits. */ MONGOLIAN ('\u1810', '\u1800', '\u1900'), + // The order of EUROPEAN to MOGOLIAN must be consistent + // with the bitmask-based constants. + /** * The N'Ko range with the N'Ko digits. */ @@ -259,17 +264,6 @@ public final class NumericShaper implements java.io.Serializable { */ CHAM ('\uaa50', '\uaa00', '\uaa60'); - private static final Range[] ranges = Range.class.getEnumConstants(); - static { - // sort ranges[] by base for binary search - Arrays.sort(ranges, - new Comparator() { - public int compare(Range s1, Range s2) { - return s1.base > s2.base ? 1 : s1.base == s2.base ? 0 : -1; - } - }); - } - private static int toRangeIndex(Range script) { int index = script.ordinal(); return index < NUM_KEYS ? index : -1; @@ -346,11 +340,20 @@ public final class NumericShaper implements java.io.Serializable { /** * {@code Set} indicating which Unicode ranges to * shape. {@code null} for the bit mask-based API. - * - * @since 1.7 */ private transient Set rangeSet; + /** + * rangeSet.toArray() value. Sorted by Range.base when the number + * of elements is greater then BSEARCH_THRESHOLD. + */ + private transient Range[] rangeArray; + + /** + * If more than BSEARCH_THRESHOLD ranges are specified, binary search is used. + */ + private static final int BSEARCH_THRESHOLD = 3; + private static final long serialVersionUID = -8022764705923730308L; /** Identifies the Latin-1 (European) and extended range, and @@ -513,25 +516,32 @@ public final class NumericShaper implements java.io.Serializable { // cache for the NumericShaper.Range version private transient volatile Range currentRange = Range.EUROPEAN; - private Range rangeForCodePoint(int codepoint) { - Range range = currentRange; - if (range.inRange(codepoint)) { - return range; + private Range rangeForCodePoint(final int codepoint) { + if (currentRange.inRange(codepoint)) { + return currentRange; } - final Range[] ranges = Range.ranges; - int lo = 0; - int hi = ranges.length - 1; - while (lo <= hi) { - int mid = (lo + hi) / 2; - range = ranges[mid]; - if (codepoint < range.start) { - hi = mid - 1; - } else if (codepoint >= range.end) { - lo = mid + 1; - } else { - currentRange = range; - return range; + final Range[] ranges = rangeArray; + if (ranges.length > BSEARCH_THRESHOLD) { + int lo = 0; + int hi = ranges.length - 1; + while (lo <= hi) { + int mid = (lo + hi) / 2; + Range range = ranges[mid]; + if (codepoint < range.start) { + hi = mid - 1; + } else if (codepoint >= range.end) { + lo = mid + 1; + } else { + currentRange = range; + return range; + } + } + } else { + for (int i = 0; i < ranges.length; i++) { + if (ranges[i].inRange(codepoint)) { + return ranges[i]; + } } } return Range.EUROPEAN; @@ -928,8 +938,25 @@ public final class NumericShaper implements java.io.Serializable { } private NumericShaper(Range defaultContext, Set ranges) { - this.shapingRange = defaultContext; - this.rangeSet = EnumSet.copyOf(ranges); // throws NPE if ranges is null. + shapingRange = defaultContext; + rangeSet = EnumSet.copyOf(ranges); // throws NPE if ranges is null. + + // Give precedance to EASTERN_ARABIC if both ARABIC and + // EASTERN_ARABIC are specified. + if (rangeSet.contains(Range.EASTERN_ARABIC) + && rangeSet.contains(Range.ARABIC)) { + rangeSet.remove(Range.ARABIC); + } + rangeArray = rangeSet.toArray(new Range[rangeSet.size()]); + if (rangeArray.length > BSEARCH_THRESHOLD) { + // sort rangeArray for binary search + Arrays.sort(rangeArray, + new Comparator() { + public int compare(Range s1, Range s2) { + return s1.base > s2.base ? 1 : s1.base == s2.base ? 0 : -1; + } + }); + } } /** @@ -1152,31 +1179,25 @@ public final class NumericShaper implements java.io.Serializable { } private void shapeContextually(char[] text, int start, int count, Range ctxKey) { - if (ctxKey == null) { + // if we don't support the specified context, then don't shape. + if (ctxKey == null || !rangeSet.contains(ctxKey)) { ctxKey = Range.EUROPEAN; } Range lastKey = ctxKey; int base = ctxKey.getDigitBase(); char minDigit = (char)('0' + ctxKey.getNumericBase()); - for (int i = start, end = start + count; i < end; ++i) { + final int end = start + count; + for (int i = start; i < end; ++i) { char c = text[i]; if (c >= minDigit && c <= '9') { text[i] = (char)(c + base); continue; } if (isStrongDirectional(c)) { - Range newKey = rangeForCodePoint(c); - if (newKey != lastKey) { - lastKey = newKey; - ctxKey = newKey; - if (rangeSet.contains(Range.EUROPEAN) - && (ctxKey == Range.ARABIC || ctxKey == Range.EASTERN_ARABIC)) { - ctxKey = Range.EASTERN_ARABIC; - } else if (!rangeSet.contains(ctxKey)) { - ctxKey = Range.EUROPEAN; - } - + ctxKey = rangeForCodePoint(c); + if (ctxKey != lastKey) { + lastKey = ctxKey; base = ctxKey.getDigitBase(); minDigit = (char)('0' + ctxKey.getNumericBase()); } diff --git a/jdk/test/java/awt/font/NumericShaper/EasternArabicTest.java b/jdk/test/java/awt/font/NumericShaper/EasternArabicTest.java new file mode 100644 index 00000000000..0e57b0e58df --- /dev/null +++ b/jdk/test/java/awt/font/NumericShaper/EasternArabicTest.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6941948 + * @summary Make sure that EASTERN_ARABIC works with the enum interface. + */ + +import java.awt.font.NumericShaper; +import java.util.EnumSet; +import static java.awt.font.NumericShaper.*; + +public class EasternArabicTest { + static NumericShaper ns_old, ns_new; + static boolean err = false; + + static String[][] testData = { + // Arabic "October 10" + {"\u0623\u0643\u062a\u0648\u0628\u0631 10", + "\u0623\u0643\u062a\u0648\u0628\u0631 \u06f1\u06f0"}, // EASTERN_ARABIC digits + + // Tamil "Year 2009" + {"\u0b86\u0ba3\u0bcd\u0b9f\u0bc1 2009", + "\u0b86\u0ba3\u0bcd\u0b9f\u0bc1 \u0be8\u0be6\u0be6\u0bef"}, + // "\u0be800\u0bef is returned by pre-JDK7 because Tamil zero was not + // included in Unicode 4.0.0. + + // Ethiopic "Syllable 2009" + {"\u1200 2009", + "\u1200 \u136a00\u1371"}, + // Ethiopic zero doesn't exist even in Unicode 5.1.0. + }; + + public static void main(String[] args) { + ns_old = getContextualShaper(TAMIL|ETHIOPIC|EASTERN_ARABIC|ARABIC|THAI|LAO, + EUROPEAN); + ns_new = getContextualShaper(EnumSet.of(Range.THAI, + Range.TAMIL, + Range.ETHIOPIC, + Range.EASTERN_ARABIC, + Range.ARABIC, + Range.LAO), + Range.EUROPEAN); + + + StringBuilder cData = new StringBuilder(); + StringBuilder cExpected = new StringBuilder(); + for (int i = 0; i < testData.length; i++) { + String data = testData[i][0]; + String expected = testData[i][1]; + test(data, expected); + cData.append(data).append(' '); + cExpected.append(expected).append(' '); + } + test(cData.toString(), cExpected.toString()); + + if (err) { + throw new RuntimeException("shape() returned unexpected value."); + } + } + + private static void test(String data, String expected) { + char[] text = data.toCharArray(); + ns_old.shape(text, 0, text.length); + String got = new String(text); + + if (!expected.equals(got)) { + err = true; + System.err.println("Error with traditional range."); + System.err.println(" text = " + data); + System.err.println(" got = " + got); + System.err.println(" expected = " + expected); + } else { + System.err.println("OK with traditional range."); + System.err.println(" text = " + data); + System.err.println(" got = " + got); + System.err.println(" expected = " + expected); + } + + text = data.toCharArray(); + ns_new.shape(text, 0, text.length); + got = new String(text); + + if (!expected.equals(got)) { + err = true; + System.err.println("Error with new Enum range."); + System.err.println(" text = " + data); + System.err.println(" got = " + got); + System.err.println(" expected = " + expected); + } else { + System.err.println("OK with new Enum range."); + System.err.println(" text = " + data); + System.err.println(" got = " + got); + System.err.println(" expected = " + expected); + } + } +} From 965595d38b48f88a78184b5e8d18638574d9b1cb Mon Sep 17 00:00:00 2001 From: Maurizio Cimadamore Date: Wed, 14 Apr 2010 12:23:29 +0100 Subject: [PATCH 14/64] 6939618: Revert 'simple' diamond implementation Backout changeset for 6840638 Reviewed-by: jjg --- .../com/sun/tools/javac/code/Source.java | 3 - .../com/sun/tools/javac/comp/Attr.java | 49 ++-------- .../com/sun/tools/javac/comp/Check.java | 78 +++++----------- .../sun/tools/javac/parser/JavacParser.java | 22 +---- .../tools/javac/resources/compiler.properties | 8 -- .../com/sun/tools/javac/tree/TreeInfo.java | 9 -- .../javac/generics/diamond/neg/Neg01.java | 38 -------- .../javac/generics/diamond/neg/Neg01.out | 31 ------- .../javac/generics/diamond/neg/Neg02.java | 61 ------------- .../javac/generics/diamond/neg/Neg02.out | 61 ------------- .../javac/generics/diamond/neg/Neg03.java | 83 ----------------- .../javac/generics/diamond/neg/Neg03.out | 91 ------------------- .../javac/generics/diamond/neg/Neg04.java | 38 -------- .../javac/generics/diamond/neg/Neg04.out | 31 ------- .../javac/generics/diamond/neg/Neg05.java | 61 ------------- .../javac/generics/diamond/neg/Neg05.out | 33 ------- .../javac/generics/diamond/pos/Pos01.java | 44 --------- .../javac/generics/diamond/pos/Pos02.java | 67 -------------- .../javac/generics/diamond/pos/Pos03.java | 91 ------------------- .../javac/generics/diamond/pos/Pos04.java | 44 --------- .../round/TestElementsAnnotatedWith.java | 2 +- .../model/element/TestAnonClassNames.java | 6 +- 22 files changed, 36 insertions(+), 915 deletions(-) delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg01.java delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg01.out delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg02.java delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg02.out delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg03.java delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg03.out delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg04.java delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg04.out delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg05.java delete mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg05.out delete mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos01.java delete mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos02.java delete mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos03.java delete mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos04.java diff --git a/langtools/src/share/classes/com/sun/tools/javac/code/Source.java b/langtools/src/share/classes/com/sun/tools/javac/code/Source.java index 4809565d855..a2127564b4a 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/code/Source.java +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Source.java @@ -122,9 +122,6 @@ public enum Source { public boolean allowGenerics() { return compareTo(JDK1_5) >= 0; } - public boolean allowDiamond() { - return compareTo(JDK1_7) >= 0; - } public boolean allowEnums() { return compareTo(JDK1_5) >= 0; } diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java index b5d2c16d20f..1e0fda5290d 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java @@ -207,21 +207,6 @@ public class Attr extends JCTree.Visitor { return owntype; } - Type checkReturn(JCTree tree, Type owntype, int ownkind, int pkind, Type pt) { - if (owntype.tag != ERROR && pt.tag != METHOD && pt.tag != FORALL) { - if ((ownkind & ~pkind) == 0) { - owntype = chk.checkReturnType(tree.pos(), owntype, pt); - } else { - log.error(tree.pos(), "unexpected.type", - kindNames(pkind), - kindName(ownkind)); - owntype = types.createErrorType(owntype); - } - } - tree.type = owntype; - return owntype; - } - /** Is given blank final variable assignable, i.e. in a scope where it * may be assigned to even though it is final? * @param v The blank final variable. @@ -440,14 +425,7 @@ public class Attr extends JCTree.Visitor { /** Derived visitor method: attribute a type tree. */ Type attribType(JCTree tree, Env env) { - Type result = attribType(tree, env, Type.noType); - return result; - } - - /** Derived visitor method: attribute a type tree. - */ - Type attribType(JCTree tree, Env env, Type pt) { - Type result = attribTree(tree, env, TYP, pt); + Type result = attribTree(tree, env, TYP, Type.noType); return result; } @@ -1400,7 +1378,7 @@ public class Attr extends JCTree.Visitor { // Check that value of resulting type is admissible in the // current context. Also, capture the return type - result = checkReturn(tree, capture(restype), VAL, pkind, pt); + result = check(tree, capture(restype), VAL, pkind, pt); } chk.validate(tree.typeargs, localEnv); } @@ -1475,9 +1453,9 @@ public class Attr extends JCTree.Visitor { // Attribute clazz expression and store // symbol + type back into the attributed tree. - Type clazztype = attribType(clazz, env); + Type clazztype = chk.checkClassType( + tree.clazz.pos(), attribType(clazz, env), true); chk.validate(clazz, localEnv); - clazztype = chk.checkNewClassType(clazz.pos(), clazztype, true, pt); if (tree.encl != null) { // We have to work in this case to store // symbol + type back into the attributed tree. @@ -1582,9 +1560,7 @@ public class Attr extends JCTree.Visitor { // ... // } if (Resolve.isStatic(env)) cdef.mods.flags |= STATIC; - clazz = TreeInfo.isDiamond(tree) ? - make.Type(clazztype) - : clazz; + if (clazztype.tsym.isInterface()) { cdef.implementing = List.of(clazz); } else { @@ -2571,7 +2547,7 @@ public class Attr extends JCTree.Visitor { if (clazztype.tag == CLASS) { List formals = clazztype.tsym.type.getTypeArguments(); - if (actuals.length() == formals.length() || actuals.isEmpty()) { + if (actuals.length() == formals.length()) { List a = actuals; List f = formals; while (a.nonEmpty()) { @@ -2597,18 +2573,7 @@ public class Attr extends JCTree.Visitor { clazzOuter = site; } } - if (actuals.nonEmpty()) { - owntype = new ClassType(clazzOuter, actuals, clazztype.tsym); - } - else if (TreeInfo.isDiamond(tree)) { - //a type apply with no explicit type arguments - diamond operator - //the result type is a forall F where F's tvars are the type-variables - //that will be inferred when F is checked against the expected type - List ftvars = clazztype.tsym.type.getTypeArguments(); - List new_tvars = types.newInstances(ftvars); - clazztype = new ClassType(clazzOuter, new_tvars, clazztype.tsym); - owntype = new ForAll(new_tvars, clazztype); - } + owntype = new ClassType(clazzOuter, actuals, clazztype.tsym); } else { if (formals.length() != 0) { log.error(tree.pos(), "wrong.number.type.args", diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java index bfaba9f4c4d..c55b1934092 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java @@ -375,6 +375,8 @@ public class Check { Type checkType(DiagnosticPosition pos, Type found, Type req) { if (req.tag == ERROR) return req; + if (found.tag == FORALL) + return instantiatePoly(pos, (ForAll)found, req, convertWarner(pos, found, req)); if (req.tag == NONE) return found; if (types.isAssignable(found, req, convertWarner(pos, found, req))) @@ -392,33 +394,6 @@ public class Check { return typeError(pos, diags.fragment("incompatible.types"), found, req); } - Type checkReturnType(DiagnosticPosition pos, Type found, Type req) { - if (found.tag == FORALL) { - try { - return instantiatePoly(pos, (ForAll) found, req, convertWarner(pos, found, req)); - } catch (Infer.NoInstanceException ex) { - if (ex.isAmbiguous) { - JCDiagnostic d = ex.getDiagnostic(); - log.error(pos, - "undetermined.type" + (d != null ? ".1" : ""), - found, d); - return types.createErrorType(req); - } else { - JCDiagnostic d = ex.getDiagnostic(); - return typeError(pos, - diags.fragment("incompatible.types" + (d != null ? ".1" : ""), d), - found, req); - } - } catch (Infer.InvalidInstanceException ex) { - JCDiagnostic d = ex.getDiagnostic(); - log.error(pos, "invalid.inferred.types", ((ForAll)found).tvars, d); - return types.createErrorType(req); - } - } else { - return checkType(pos, found, req); - } - } - /** Instantiate polymorphic type to some prototype, unless * prototype is `anyPoly' in which case polymorphic type * is returned unchanged. @@ -432,9 +407,28 @@ public class Check { } else if (pt.tag == ERROR) { return pt; } else { - return infer.instantiateExpr(t, pt, warn); + try { + return infer.instantiateExpr(t, pt, warn); + } catch (Infer.NoInstanceException ex) { + if (ex.isAmbiguous) { + JCDiagnostic d = ex.getDiagnostic(); + log.error(pos, + "undetermined.type" + (d!=null ? ".1" : ""), + t, d); + return types.createErrorType(pt); + } else { + JCDiagnostic d = ex.getDiagnostic(); + return typeError(pos, + diags.fragment("incompatible.types" + (d!=null ? ".1" : ""), d), + t, pt); + } + } catch (Infer.InvalidInstanceException ex) { + JCDiagnostic d = ex.getDiagnostic(); + log.error(pos, "invalid.inferred.types", t.tvars, d); + return types.createErrorType(pt); + } } - } + } /** Check that a given type can be cast to a given target type. * Return the result of the cast. @@ -557,29 +551,6 @@ public class Check { return t; } - /** Check that type is a valid type for a new expression. If the type contains - * some uninferred type variables, instantiate them exploiting the expected - * type. - * - * @param pos Position to be used for error reporting. - * @param t The type to be checked. - * @param noBounds True if type bounds are illegal here. - * @param pt Expected type (used with diamond operator) - */ - Type checkNewClassType(DiagnosticPosition pos, Type t, boolean noBounds, Type pt) { - if (t.tag == FORALL) { - try { - t = instantiatePoly(pos, (ForAll)t, pt, Warner.noWarnings); - } - catch (Infer.NoInstanceException ex) { - JCDiagnostic d = ex.getDiagnostic(); - log.error(pos, "cant.apply.diamond", t.getTypeArguments(), d); - return types.createErrorType(pt); - } - } - return checkClassType(pos, t, noBounds); - } - /** Check that type is a reifiable class, interface or array type. * @param pos Position to be used for error reporting. * @param t The type to be checked. @@ -936,8 +907,7 @@ public class Check { } checkCapture(tree); - } - if (tree.type.tag == CLASS || tree.type.tag == FORALL) { + // Check that this type is either fully parameterized, or // not parameterized at all. if (tree.type.getEnclosingType().isRaw()) diff --git a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java index 3816c93e176..a426f4a896a 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java +++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java @@ -131,7 +131,6 @@ public class JavacParser implements Parser { this.allowForeach = source.allowForeach(); this.allowStaticImport = source.allowStaticImport(); this.allowAnnotations = source.allowAnnotations(); - this.allowDiamond = source.allowDiamond(); this.allowTypeAnnotations = source.allowTypeAnnotations(); this.keepDocComments = keepDocComments; if (keepDocComments) @@ -149,10 +148,6 @@ public class JavacParser implements Parser { */ boolean allowGenerics; - /** Switch: Should diamond operator be recognized? - */ - boolean allowDiamond; - /** Switch: Should varargs be recognized? */ boolean allowVarargs; @@ -199,7 +194,6 @@ public class JavacParser implements Parser { static final int TYPE = 2; static final int NOPARAMS = 4; static final int TYPEARG = 8; - static final int DIAMOND = 16; /** The current mode. */ @@ -1349,11 +1343,6 @@ public class JavacParser implements Parser { ListBuffer args = lb(); if (S.token() == LT) { S.nextToken(); - if (S.token() == GT && (mode & DIAMOND) != 0) { - checkDiamond(); - S.nextToken(); - return List.nil(); - } args.append(((mode & EXPR) == 0) ? typeArgument() : parseType()); while (S.token() == COMMA) { S.nextToken(); @@ -1527,7 +1516,7 @@ public class JavacParser implements Parser { t = F.AnnotatedType(newAnnotations, t); int oldmode = mode; - mode = TYPE | DIAMOND; + mode = TYPE; if (S.token() == LT) { checkGenerics(); t = typeArguments(t); @@ -1580,11 +1569,8 @@ public class JavacParser implements Parser { JCExpression innerCreator(int newpos, List typeArgs, JCExpression encl) { JCExpression t = toP(F.at(S.pos()).Ident(ident())); if (S.token() == LT) { - int oldmode = mode; - mode |= DIAMOND; checkGenerics(); t = typeArguments(t); - mode = oldmode; } return classCreatorRest(newpos, encl, typeArgs, t); } @@ -3151,12 +3137,6 @@ public class JavacParser implements Parser { } } - void checkDiamond() { - if (!allowDiamond) { - log.error(S.pos(), "diamond.not.supported.in.source", source.name); - allowDiamond = true; - } - } void checkGenerics() { if (!allowGenerics) { log.error(S.pos(), "generics.not.supported.in.source", source.name); diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties index 23d7fc38353..dc99f0ec35d 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties @@ -1082,10 +1082,6 @@ compiler.err.cant.resolve.location.args.params=\ symbol: {0} <{2}>{1}({3})\n\ location: {4} {5} -compiler.err.cant.apply.diamond=\ - diamond operator cannot infer types for {0};\n\ - reason: {1} - ## The following are all possible string for "kindname". ## They should be called whatever the JLS calls them after it been translated ## to the appropriate language. @@ -1227,10 +1223,6 @@ compiler.err.enums.not.supported.in.source=\ enums are not supported in -source {0}\n\ (use -source 5 or higher to enable enums) -compiler.err.diamond.not.supported.in.source=\ - diamond operator is not supported in -source {0}\n\ -(use -source 7 or higher to enable diamond operator) - compiler.err.string.switch.not.supported.in.source=\ strings in switch are not supported in -source {0}\n\ (use -source 7 or higher to enable strings in switch) diff --git a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java index 12f25312e6e..b42586a978a 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java @@ -204,15 +204,6 @@ public class TreeInfo { return (JCMethodInvocation)exec.expr; } - /** Return true if a tree represents a diamond new expr. */ - public static boolean isDiamond(JCTree tree) { - switch(tree.getTag()) { - case JCTree.TYPEAPPLY: return ((JCTypeApply)tree).getTypeArguments().isEmpty(); - case JCTree.NEWCLASS: return isDiamond(((JCNewClass)tree).clazz); - default: return false; - } - } - /** Return true if a tree represents the null literal. */ public static boolean isNull(JCTree tree) { if (tree.getTag() != JCTree.LITERAL) diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg01.java b/langtools/test/tools/javac/generics/diamond/neg/Neg01.java deleted file mode 100644 index 8b23e491391..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg01.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile/fail/ref=Neg01.out Neg01.java -source 1.7 -XDrawDiagnostics - * - */ - -class Neg01 { - - Neg01(X x) {} - - Neg01(X x, Z z) {} - - void test() { - Neg01 n1 = new Neg01<>(""); //new Foo created - Neg01 n2 = new Neg01<>(""); //new Foo created - Neg01 n3 = new Neg01<>(""); //new Foo created - Neg01 n4 = new Neg01<>(""); //new Foo created - - Neg01 n5 = new Neg01<>(""){}; //new Foo created - Neg01 n6 = new Neg01<>(""){}; //new Foo created - Neg01 n7 = new Neg01<>(""){}; //new Foo created - Neg01 n8 = new Neg01<>(""){}; //new Foo created - - Neg01 n9 = new Neg01<>("", ""); //new Foo created - Neg01 n10 = new Neg01<>("", ""); //new Foo created - Neg01 n11 = new Neg01<>("", ""); //new Foo created - Foo n12 = new Neg01<>("", ""); //new Foo created - - Neg01 n13 = new Neg01<>("", ""){}; //new Foo created - Neg01 n14 = new Neg01<>("", ""){}; //new Foo created - Neg01 n15 = new Neg01<>("", ""){}; //new Foo created - Neg01 n16 = new Neg01<>("", ""){}; //new Foo created - } -} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg01.out b/langtools/test/tools/javac/generics/diamond/neg/Neg01.out deleted file mode 100644 index 83078458123..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg01.out +++ /dev/null @@ -1,31 +0,0 @@ -Neg01.java:18:15: compiler.err.not.within.bounds: java.lang.String -Neg01.java:18:37: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:19:15: compiler.err.not.within.bounds: ? extends java.lang.String -Neg01.java:19:47: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg01.java:20:23: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , java.lang.String, kindname.class, Neg01 -Neg01.java:21:15: compiler.err.not.within.bounds: ? super java.lang.String -Neg01.java:21:45: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:23:15: compiler.err.not.within.bounds: java.lang.String -Neg01.java:23:37: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:24:15: compiler.err.not.within.bounds: ? extends java.lang.String -Neg01.java:24:47: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg01.java:25:23: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , java.lang.String, kindname.class, Neg01 -Neg01.java:25:38: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , , kindname.class, Neg01 -Neg01.java:26:15: compiler.err.not.within.bounds: ? super java.lang.String -Neg01.java:26:45: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:28:15: compiler.err.not.within.bounds: java.lang.String -Neg01.java:28:37: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:29:15: compiler.err.not.within.bounds: ? extends java.lang.String -Neg01.java:29:48: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg01.java:30:24: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , java.lang.String,java.lang.String, kindname.class, Neg01 -Neg01.java:31:9: compiler.err.cant.resolve.location: kindname.class, Foo, , , kindname.class, Neg01 -Neg01.java:31:35: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , java.lang.String,java.lang.String, kindname.class, Neg01 -Neg01.java:33:15: compiler.err.not.within.bounds: java.lang.String -Neg01.java:33:38: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -Neg01.java:34:15: compiler.err.not.within.bounds: ? extends java.lang.String -Neg01.java:34:48: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg01.java:35:24: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , java.lang.String,java.lang.String, kindname.class, Neg01 -Neg01.java:35:43: compiler.err.cant.resolve.location.args: kindname.constructor, Neg01, , , kindname.class, Neg01 -Neg01.java:36:15: compiler.err.not.within.bounds: ? super java.lang.String -Neg01.java:36:46: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg01, Neg01) -30 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg02.java b/langtools/test/tools/javac/generics/diamond/neg/Neg02.java deleted file mode 100644 index b732ce12164..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg02.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile/fail/ref=Neg02.out Neg02.java -source 1.7 -XDrawDiagnostics - * - */ - -class Neg02 { - - static class Foo { - Foo(X x) {} - Foo(X x, Z z) {} - } - - void testSimple() { - Foo f1 = new Foo<>(""); //new Foo created - Foo f2 = new Foo<>(""); //new Foo created - Foo f3 = new Foo<>(""); //new Foo created - Foo f4 = new Foo<>(""); //new Foo created - - Foo f5 = new Foo<>(""){}; //new Foo created - Foo f6 = new Foo<>(""){}; //new Foo created - Foo f7 = new Foo<>(""){}; //new Foo created - Foo f8 = new Foo<>(""){}; //new Foo created - - Foo f9 = new Foo<>("", ""); //new Foo created - Foo f10 = new Foo<>("", ""); //new Foo created - Foo f11 = new Foo<>("", ""); //new Foo created - Foo f12 = new Foo<>("", ""); //new Foo created - - Foo f13 = new Foo<>("", ""){}; //new Foo created - Foo f14 = new Foo<>("", ""){}; //new Foo created - Foo f15 = new Foo<>("", ""){}; //new Foo created - Foo f16 = new Foo<>("", ""){}; //new Foo created - } - - void testQualified() { - Foo f1 = new Neg02.Foo<>(""); //new Foo created - Foo f2 = new Neg02.Foo<>(""); //new Foo created - Foo f3 = new Neg02.Foo<>(""); //new Foo created - Foo f4 = new Neg02.Foo<>(""); //new Foo created - - Foo f5 = new Neg02.Foo<>(""){}; //new Foo created - Foo f6 = new Neg02.Foo<>(""){}; //new Foo created - Foo f7 = new Neg02.Foo<>(""){}; //new Foo created - Foo f8 = new Neg02.Foo<>(""){}; //new Foo created - - Foo f9 = new Neg02.Foo<>("", ""); //new Foo created - Foo f10 = new Neg02.Foo<>("", ""); //new Foo created - Foo f11 = new Neg02.Foo<>("", ""); //new Foo created - Foo f12 = new Neg02.Foo<>("", ""); //new Foo created - - Foo f13 = new Neg02.Foo<>("", ""){}; //new Foo created - Foo f14 = new Neg02.Foo<>("", ""){}; //new Foo created - Foo f15 = new Neg02.Foo<>("", ""){}; //new Foo created - Foo f16 = new Neg02.Foo<>("", ""){}; //new Foo created - } -} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg02.out b/langtools/test/tools/javac/generics/diamond/neg/Neg02.out deleted file mode 100644 index 27d7cb097f0..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg02.out +++ /dev/null @@ -1,61 +0,0 @@ -Neg02.java:19:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:19:33: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:20:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:20:43: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:21:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg02.Foo -Neg02.java:22:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:22:41: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:24:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:24:33: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:25:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:25:43: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:26:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg02.Foo -Neg02.java:26:34: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg02.Foo -Neg02.java:27:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:27:41: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:29:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:29:33: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:30:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:30:44: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:31:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg02.Foo -Neg02.java:32:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:32:42: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:34:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:34:34: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:35:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:35:44: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:36:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg02.Foo -Neg02.java:36:39: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg02.Foo -Neg02.java:37:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:37:42: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:41:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:41:39: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:42:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:42:49: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:43:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg02.Foo -Neg02.java:44:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:44:47: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:46:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:46:39: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:47:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:47:49: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:48:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg02.Foo -Neg02.java:48:40: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg02.Foo -Neg02.java:49:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:49:47: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:51:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:51:39: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:52:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:52:50: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:53:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg02.Foo -Neg02.java:54:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:54:48: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:56:13: compiler.err.not.within.bounds: java.lang.String -Neg02.java:56:40: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -Neg02.java:57:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg02.java:57:50: compiler.err.cant.apply.diamond: X, (compiler.misc.no.unique.maximal.instance.exists: X, java.lang.String,java.lang.Number) -Neg02.java:58:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg02.Foo -Neg02.java:58:45: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg02.Foo -Neg02.java:59:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg02.java:59:48: compiler.err.cant.apply.diamond: X, (compiler.misc.no.conforming.instance.exists: X, Neg02.Foo, Neg02.Foo) -60 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg03.java b/langtools/test/tools/javac/generics/diamond/neg/Neg03.java deleted file mode 100644 index 0e594b80a04..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg03.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile/fail/ref=Neg03.out Neg03.java -source 1.7 -XDrawDiagnostics - * - */ - -class Neg03 { - - class Foo { - Foo(V x) {} - Foo(V x, Z z) {} - } - - void testSimple() { - Foo f1 = new Foo<>(""); //new Foo created - Foo f2 = new Foo<>(""); //new Foo created - Foo f3 = new Foo<>(""); //new Foo created - Foo f4 = new Foo<>(""); //new Foo created - - Foo f5 = new Foo<>(""){}; //new Foo created - Foo f6 = new Foo<>(""){}; //new Foo created - Foo f7 = new Foo<>(""){}; //new Foo created - Foo f8 = new Foo<>(""){}; //new Foo created - - Foo f9 = new Foo<>("", ""); //new Foo created - Foo f10 = new Foo<>("", ""); //new Foo created - Foo f11 = new Foo<>("", ""); //new Foo created - Foo f12 = new Foo<>("", ""); //new Foo created - - Foo f13 = new Foo<>("", ""){}; //new Foo created - Foo f14 = new Foo<>("", ""){}; //new Foo created - Foo f15 = new Foo<>("", ""){}; //new Foo created - Foo f16 = new Foo<>("", ""){}; //new Foo created - } - - void testQualified_1() { - Foo f1 = new Neg03.Foo<>(""); //new Foo created - Foo f2 = new Neg03.Foo<>(""); //new Foo created - Foo f3 = new Neg03.Foo<>(""); //new Foo created - Foo f4 = new Neg03.Foo<>(""); //new Foo created - - Foo f5 = new Neg03.Foo<>(""){}; //new Foo created - Foo f6 = new Neg03.Foo<>(""){}; //new Foo created - Foo f7 = new Neg03.Foo<>(""){}; //new Foo created - Foo f8 = new Neg03.Foo<>(""){}; //new Foo created - - Foo f9 = new Neg03.Foo<>("", ""); //new Foo created - Foo f10 = new Neg03.Foo<>("", ""); //new Foo created - Foo f11 = new Neg03.Foo<>("", ""); //new Foo created - Foo f12 = new Neg03.Foo<>("", ""); //new Foo created - - Foo f13 = new Neg03.Foo<>("", ""){}; //new Foo created - Foo f14 = new Neg03.Foo<>("", ""){}; //new Foo created - Foo f15 = new Neg03.Foo<>("", ""){}; //new Foo created - Foo f16 = new Neg03.Foo<>("", ""){}; //new Foo created - } - - void testQualified_2(Neg03 n) { - Foo f1 = n.new Foo<>(""); //new Foo created - Foo f2 = n.new Foo<>(""); //new Foo created - Foo f3 = n.new Foo<>(""); //new Foo created - Foo f4 = n.new Foo<>(""); //new Foo created - - Foo f5 = n.new Foo<>(""){}; //new Foo created - Foo f6 = n.new Foo<>(""){}; //new Foo created - Foo f7 = n.new Foo<>(""){}; //new Foo created - Foo f8 = n.new Foo<>(""){}; //new Foo created - - Foo f9 = n.new Foo<>("", ""); //new Foo created - Foo f10 = n.new Foo<>("", ""); //new Foo created - Foo f11 = n.new Foo<>("", ""); //new Foo created - Foo f12 = n.new Foo<>("", ""); //new Foo created - - Foo f13 = n.new Foo<>("", ""){}; //new Foo created - Foo f14 = n.new Foo<>("", ""){}; //new Foo created - Foo f15 = n.new Foo<>("", ""){}; //new Foo created - Foo f16 = n.new Foo<>("", ""){}; //new Foo created - } -} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg03.out b/langtools/test/tools/javac/generics/diamond/neg/Neg03.out deleted file mode 100644 index 287df896e0b..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg03.out +++ /dev/null @@ -1,91 +0,0 @@ -Neg03.java:19:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:19:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:20:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:20:43: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:21:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:22:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:22:41: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:24:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:24:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:25:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:25:43: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:26:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:26:34: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:27:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:27:41: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:29:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:29:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:30:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:30:44: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:31:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:32:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:32:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:34:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:34:34: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:35:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:35:44: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:36:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:36:39: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:37:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:37:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:41:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:41:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:42:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:42:52: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:43:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:44:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:44:50: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:46:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:46:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:47:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:47:52: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:48:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:48:43: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:49:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:49:50: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:51:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:51:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:52:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:52:53: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:53:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:54:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:54:51: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:56:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:56:43: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:57:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:57:53: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:58:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:58:48: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:59:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:59:51: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:63:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:63:28: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:64:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:64:38: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:65:23: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:66:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:66:36: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:68:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:68:28: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:69:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:69:38: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:70:23: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Neg03.Foo -Neg03.java:70:36: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:71:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:71:36: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:73:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:73:28: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:74:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:74:39: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:75:24: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:76:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:76:37: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:78:13: compiler.err.not.within.bounds: java.lang.String -Neg03.java:78:29: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -Neg03.java:79:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg03.java:79:39: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg03.java:80:24: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Neg03.Foo -Neg03.java:80:41: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Neg03.Foo -Neg03.java:81:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg03.java:81:37: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Neg03.Foo, Neg03.Foo) -90 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg04.java b/langtools/test/tools/javac/generics/diamond/neg/Neg04.java deleted file mode 100644 index d04d93059ce..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg04.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile/fail/ref=Neg04.out Neg04.java -source 1.7 -XDrawDiagnostics - * - */ - -class Neg04 { - - void test() { - class Foo { - Foo(V x) {} - Foo(V x, Z z) {} - } - Foo n1 = new Foo<>(""); //new Foo created - Foo n2 = new Foo<>(""); //new Foo created - Foo n3 = new Foo<>(""); //new Foo created - Foo n4 = new Foo<>(""); //new Foo created - - Foo n5 = new Foo<>(""){}; //new Foo created - Foo n6 = new Foo<>(""){}; //new Foo created - Foo n7 = new Foo<>(""){}; //new Foo created - Foo n8 = new Foo<>(""){}; //new Foo created - - Foo n9 = new Foo<>("", ""); //new Foo created - Foo n10 = new Foo<>("", ""); //new Foo created - Foo n11 = new Foo<>("", ""); //new Foo created - Foo n12 = new Foo<>("", ""); //new Foo created - - Foo n13 = new Foo<>("", ""){}; //new Foo created - Foo n14 = new Foo<>("", ""){}; //new Foo created - Foo n15 = new Foo<>("", ""){}; //new Foo created - Foo n16 = new Foo<>("", ""){}; //new Foo created - } -} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg04.out b/langtools/test/tools/javac/generics/diamond/neg/Neg04.out deleted file mode 100644 index f3bf0c79000..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg04.out +++ /dev/null @@ -1,31 +0,0 @@ -Neg04.java:18:13: compiler.err.not.within.bounds: java.lang.String -Neg04.java:18:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:19:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg04.java:19:43: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg04.java:20:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Foo -Neg04.java:21:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg04.java:21:41: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:23:13: compiler.err.not.within.bounds: java.lang.String -Neg04.java:23:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:24:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg04.java:24:43: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg04.java:25:21: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String, kindname.class, Foo -Neg04.java:25:34: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Foo -Neg04.java:26:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg04.java:26:41: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:28:13: compiler.err.not.within.bounds: java.lang.String -Neg04.java:28:33: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:29:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg04.java:29:44: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg04.java:30:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Foo -Neg04.java:31:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg04.java:31:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:33:13: compiler.err.not.within.bounds: java.lang.String -Neg04.java:33:34: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -Neg04.java:34:13: compiler.err.not.within.bounds: ? extends java.lang.String -Neg04.java:34:44: compiler.err.cant.apply.diamond: V, (compiler.misc.no.unique.maximal.instance.exists: V, java.lang.String,java.lang.Number) -Neg04.java:35:22: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , java.lang.String,java.lang.String, kindname.class, Foo -Neg04.java:35:39: compiler.err.cant.resolve.location.args: kindname.constructor, Foo, , , kindname.class, Foo -Neg04.java:36:13: compiler.err.not.within.bounds: ? super java.lang.String -Neg04.java:36:42: compiler.err.cant.apply.diamond: V, (compiler.misc.no.conforming.instance.exists: V, Foo, Foo) -30 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg05.java b/langtools/test/tools/javac/generics/diamond/neg/Neg05.java deleted file mode 100644 index d287ec59aa1..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg05.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile/fail/ref=Neg05.out Neg05.java -source 1.7 -XDrawDiagnostics - * - */ - -class Neg05 { - - class Foo { - Foo(V x) {} - Foo(V x, Z z) {} - } - - void testRare_1() { - Neg05.Foo f1 = new Neg05.Foo<>(""); //new Foo created - Neg05.Foo f2 = new Neg05.Foo<>(""); //new Foo created - Neg05.Foo f3 = new Neg05.Foo<>(""); //new Foo created - Neg05.Foo f4 = new Neg05.Foo<>(""); //new Foo created - - Neg05.Foo f5 = new Neg05.Foo<>(""){}; //new Foo created - Neg05.Foo f6 = new Neg05.Foo<>(""){}; //new Foo created - Neg05.Foo f7 = new Neg05.Foo<>(""){}; //new Foo created - Neg05.Foo f8 = new Neg05.Foo<>(""){}; //new Foo created - - Neg05.Foo f9 = new Neg05.Foo<>("", ""); //new Foo created - Neg05.Foo f10 = new Neg05.Foo<>("", ""); //new Foo created - Neg05.Foo f11 = new Neg05.Foo<>("", ""); //new Foo created - Neg05.Foo f12 = new Neg05.Foo<>("", ""); //new Foo created - - Neg05.Foo f13 = new Neg05.Foo<>("", ""){}; //new Foo created - Neg05.Foo f14 = new Neg05.Foo<>("", ""){}; //new Foo created - Neg05.Foo f15 = new Neg05.Foo<>("", ""){}; //new Foo created - Neg05.Foo f16 = new Neg05.Foo<>("", ""){}; //new Foo created - } - - void testRare_2(Neg05 n) { - Neg05.Foo f1 = n.new Foo<>(""); //new Foo created - Neg05.Foo f2 = n.new Foo<>(""); //new Foo created - Neg05.Foo f3 = n.new Foo<>(""); //new Foo created - Neg05.Foo f4 = n.new Foo<>(""); //new Foo created - - Neg05.Foo f5 = n.new Foo<>(""){}; //new Foo created - Neg05.Foo f6 = n.new Foo<>(""){}; //new Foo created - Neg05.Foo f7 = n.new Foo<>(""){}; //new Foo created - Neg05.Foo f8 = n.new Foo<>(""){}; //new Foo created - - Neg05.Foo f9 = n.new Foo<>("", ""); //new Foo created - Neg05.Foo f10 = n.new Foo<>("", ""); //new Foo created - Neg05.Foo f11 = n.new Foo<>("", ""); //new Foo created - Neg05.Foo f12 = n.new Foo<>("", ""); //new Foo created - - Neg05.Foo f13 = n.new Foo<>("", ""){}; //new Foo created - Neg05.Foo f14 = n.new Foo<>("", ""){}; //new Foo created - Neg05.Foo f15 = n.new Foo<>("", ""){}; //new Foo created - Neg05.Foo f16 = n.new Foo<>("", ""){}; //new Foo created - } -} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg05.out b/langtools/test/tools/javac/generics/diamond/neg/Neg05.out deleted file mode 100644 index 582e83baca4..00000000000 --- a/langtools/test/tools/javac/generics/diamond/neg/Neg05.out +++ /dev/null @@ -1,33 +0,0 @@ -Neg05.java:19:48: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:20:58: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:21:43: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:22:56: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:24:48: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:25:58: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:26:43: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:27:56: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:29:48: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:30:59: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:31:44: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:32:57: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:34:49: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:35:59: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:36:44: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:37:57: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:41:37: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:42:47: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:43:32: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:44:45: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:46:37: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:47:47: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:48:32: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:49:45: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:51:37: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:52:48: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:53:33: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:54:46: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:56:38: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:57:48: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:58:33: compiler.err.improperly.formed.type.inner.raw.param -Neg05.java:59:46: compiler.err.improperly.formed.type.inner.raw.param -32 errors diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos01.java b/langtools/test/tools/javac/generics/diamond/pos/Pos01.java deleted file mode 100644 index 6d3a6d46b3f..00000000000 --- a/langtools/test/tools/javac/generics/diamond/pos/Pos01.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile Pos01.java -source 1.7 - * @run main Pos01 - * - */ - -public class Pos01 { - - Pos01(X x) {} - - Pos01(X x, Z z) {} - - void test() { - Pos01 p1 = new Pos01<>(1); //new Foo created - Pos01 p2 = new Pos01<>(1); //new Foo created - Pos01 p3 = new Pos01<>(1); //new Foo created - Pos01 p4 = new Pos01<>(1); //new Foo created - - Pos01 p5 = new Pos01<>(1){}; //new Foo created - Pos01 p6 = new Pos01<>(1){}; //new Foo created - Pos01 p7 = new Pos01<>(1){}; //new Foo created - Pos01 p8 = new Pos01<>(1){}; //new Foo created - - Pos01 p9 = new Pos01<>(1, ""); //new Foo created - Pos01 p10 = new Pos01<>(1, ""); //new Foo created - Pos01 p11 = new Pos01<>(1, ""); //new Foo created - Pos01 p12 = new Pos01<>(1, ""); //new Foo created - - Pos01 p13 = new Pos01<>(1, ""){}; //new Foo created - Pos01 p14= new Pos01<>(1, ""){}; //new Foo created - Pos01 p15 = new Pos01<>(1, ""){}; //new Foo created - Pos01 p16 = new Pos01<>(1, ""){}; //new Foo created - } - - public static void main(String[] args) { - Pos01 p1 = new Pos01<>(""); - p1.test(); - } -} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos02.java b/langtools/test/tools/javac/generics/diamond/pos/Pos02.java deleted file mode 100644 index 4b2e34c5a05..00000000000 --- a/langtools/test/tools/javac/generics/diamond/pos/Pos02.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile Pos02.java -source 1.7 - * @run main Pos02 - */ - -public class Pos02 { - - static class Foo { - Foo(X x) {} - Foo(X x, Z z) {} - } - - void testSimple() { - Foo f1 = new Foo<>(1); //new Foo created - Foo f2 = new Foo<>(1); //new Foo created - Foo f3 = new Foo<>(1); //new Foo created - Foo f4 = new Foo<>(1); //new Foo created - - Foo f5 = new Foo<>(1){}; //new Foo created - Foo f6 = new Foo<>(1){}; //new Foo created - Foo f7 = new Foo<>(1){}; //new Foo created - Foo f8 = new Foo<>(1){}; //new Foo created - - Foo f9 = new Foo<>(1, ""); //new Foo created - Foo f10 = new Foo<>(1, ""); //new Foo created - Foo f11 = new Foo<>(1, ""); //new Foo created - Foo f12 = new Foo<>(1, ""); //new Foo created - - Foo f13 = new Foo<>(1, ""){}; //new Foo created - Foo f14 = new Foo<>(1, ""){}; //new Foo created - Foo f15 = new Foo<>(1, ""){}; //new Foo created - Foo f16 = new Foo<>(1, ""){}; //new Foo created - } - - void testQualified() { - Foo f1 = new Pos02.Foo<>(1); //new Foo created - Foo f2 = new Pos02.Foo<>(1); //new Foo created - Foo f3 = new Pos02.Foo<>(1); //new Foo created - Foo f4 = new Pos02.Foo<>(1); //new Foo created - - Foo f5 = new Pos02.Foo<>(1){}; //new Foo created - Foo f6 = new Pos02.Foo<>(1){}; //new Foo created - Foo f7 = new Pos02.Foo<>(1){}; //new Foo created - Foo f8 = new Pos02.Foo<>(1){}; //new Foo created - - Foo f9 = new Pos02.Foo<>(1, ""); //new Foo created - Foo f10 = new Pos02.Foo<>(1, ""); //new Foo created - Foo f11 = new Pos02.Foo<>(1, ""); //new Foo created - Foo f12 = new Pos02.Foo<>(1, ""); //new Foo created - - Foo f13 = new Pos02.Foo<>(1, ""){}; //new Foo created - Foo f14 = new Pos02.Foo<>(1, ""){}; //new Foo created - Foo f15 = new Pos02.Foo<>(1, ""){}; //new Foo created - Foo f16 = new Pos02.Foo<>(1, ""){}; //new Foo created - } - - public static void main(String[] args) { - Pos02 p2 = new Pos02(); - p2.testSimple(); - p2.testQualified(); - } -} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos03.java b/langtools/test/tools/javac/generics/diamond/pos/Pos03.java deleted file mode 100644 index 0f8a32148c5..00000000000 --- a/langtools/test/tools/javac/generics/diamond/pos/Pos03.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile Pos03.java -source 1.7 - * @run main Pos03 - * - */ - -public class Pos03 { - - class Foo { - Foo(V x) {} - Foo(V x, Z z) {} - } - - void testSimple() { - Foo f1 = new Foo<>(1); //new Foo created - Foo f2 = new Foo<>(1); //new Foo created - Foo f3 = new Foo<>(1); //new Foo created - Foo f4 = new Foo<>(1); //new Foo created - - Foo f5 = new Foo<>(1){}; //new Foo created - Foo f6 = new Foo<>(1){}; //new Foo created - Foo f7 = new Foo<>(1){}; //new Foo created - Foo f8 = new Foo<>(1){}; //new Foo created - - Foo f9 = new Foo<>(1, ""); //new Foo created - Foo f10 = new Foo<>(1, ""); //new Foo created - Foo f11 = new Foo<>(1, ""); //new Foo created - Foo f12 = new Foo<>(1, ""); //new Foo created - - Foo f13 = new Foo<>(1, ""){}; //new Foo created - Foo f14 = new Foo<>(1, ""){}; //new Foo created - Foo f15 = new Foo<>(1, ""){}; //new Foo created - Foo f16 = new Foo<>(1, ""){}; //new Foo created - } - - void testQualified_1() { - Foo f1 = new Pos03.Foo<>(1); //new Foo created - Foo f2 = new Pos03.Foo<>(1); //new Foo created - Foo f3 = new Pos03.Foo<>(1); //new Foo created - Foo f4 = new Pos03.Foo<>(1); //new Foo created - - Foo f5 = new Pos03.Foo<>(1){}; //new Foo created - Foo f6 = new Pos03.Foo<>(1){}; //new Foo created - Foo f7 = new Pos03.Foo<>(1){}; //new Foo created - Foo f8 = new Pos03.Foo<>(1){}; //new Foo created - - Foo f9 = new Pos03.Foo<>(1, ""); //new Foo created - Foo f10 = new Pos03.Foo<>(1, ""); //new Foo created - Foo f11 = new Pos03.Foo<>(1, ""); //new Foo created - Foo f12 = new Pos03.Foo<>(1, ""); //new Foo created - - Foo f13 = new Pos03.Foo<>(1, ""){}; //new Foo created - Foo f14 = new Pos03.Foo<>(1, ""){}; //new Foo created - Foo f15 = new Pos03.Foo<>(1, ""){}; //new Foo created - Foo f16 = new Pos03.Foo<>(1, ""){}; //new Foo created - } - - void testQualified_2(Pos03 p) { - Foo f1 = p.new Foo<>(1); //new Foo created - Foo f2 = p.new Foo<>(1); //new Foo created - Foo f3 = p.new Foo<>(1); //new Foo created - Foo f4 = p.new Foo<>(1); //new Foo created - - Foo f5 = p.new Foo<>(1){}; //new Foo created - Foo f6 = p.new Foo<>(1){}; //new Foo created - Foo f7 = p.new Foo<>(1){}; //new Foo created - Foo f8 = p.new Foo<>(1){}; //new Foo created - - Foo f9 = p.new Foo<>(1, ""); //new Foo created - Foo f10 = p.new Foo<>(1, ""); //new Foo created - Foo f11 = p.new Foo<>(1, ""); //new Foo created - Foo f12 = p.new Foo<>(1, ""); //new Foo created - - Foo f13 = p.new Foo<>(1, ""){}; //new Foo created - Foo f14 = p.new Foo<>(1, ""){}; //new Foo created - Foo f15 = p.new Foo<>(1, ""){}; //new Foo created - Foo f16 = p.new Foo<>(1, ""){}; //new Foo created - } - - public static void main(String[] args) { - Pos03 p3 = new Pos03<>(); - p3.testSimple(); - p3.testQualified_1(); - p3.testQualified_2(p3); - } -} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos04.java b/langtools/test/tools/javac/generics/diamond/pos/Pos04.java deleted file mode 100644 index fae82a53eb5..00000000000 --- a/langtools/test/tools/javac/generics/diamond/pos/Pos04.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * @test /nodynamiccopyright/ - * @bug 6840638 - * - * @summary Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') - * @author mcimadamore - * @compile Pos04.java -source 1.7 - * @run main Pos04 - * - */ - -public class Pos04 { - - void test() { - class Foo { - Foo(V x) {} - Foo(V x, Z z) {} - } - Foo p1 = new Foo<>(1); //new Foo created - Foo p2 = new Foo<>(1); //new Foo created - Foo p3 = new Foo<>(1); //new Foo created - Foo p4 = new Foo<>(1); //new Foo created - - Foo p5 = new Foo<>(1){}; //new Foo created - Foo p6 = new Foo<>(1){}; //new Foo created - Foo p7 = new Foo<>(1){}; //new Foo created - Foo p8 = new Foo<>(1){}; //new Foo created - - Foo p9 = new Foo<>(1, ""); //new Foo created - Foo p10 = new Foo<>(1, ""); //new Foo created - Foo p11 = new Foo<>(1, ""); //new Foo created - Foo p12 = new Foo<>(1, ""); //new Foo created - - Foo p13 = new Foo<>(1, ""){}; //new Foo created - Foo p14 = new Foo<>(1, ""){}; //new Foo created - Foo p15 = new Foo<>(1, ""){}; //new Foo created - Foo p16 = new Foo<>(1, ""){}; //new Foo created - } - - public static void main(String[] args) { - Pos04 p4 = new Pos04<>(); - p4.test(); - } -} diff --git a/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java b/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java index ca7804f89e0..48463413833 100644 --- a/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java +++ b/langtools/test/tools/javac/processing/environment/round/TestElementsAnnotatedWith.java @@ -89,7 +89,7 @@ public class TestElementsAnnotatedWith extends AbstractProcessor { // Verify that the annotation information is as // expected. - Set expectedNames = new HashSet<>(Arrays.asList(annotatedElementInfo.names())); + Set expectedNames = new HashSet(Arrays.asList(annotatedElementInfo.names())); resultsMeta = roundEnvironment. diff --git a/langtools/test/tools/javac/processing/model/element/TestAnonClassNames.java b/langtools/test/tools/javac/processing/model/element/TestAnonClassNames.java index 59f16b1da62..d6066cfb942 100644 --- a/langtools/test/tools/javac/processing/model/element/TestAnonClassNames.java +++ b/langtools/test/tools/javac/processing/model/element/TestAnonClassNames.java @@ -113,10 +113,10 @@ public class TestAnonClassNames { */ static void testClassName(String className) { JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); - List classNames = new ArrayList<>(); + List classNames = new ArrayList(); classNames.add(className); - List options = new ArrayList<>(); + List options = new ArrayList(); options.add("-proc:only"); options.add("-classpath"); options.add(System.getProperty("test.classes")); @@ -128,7 +128,7 @@ public class TestAnonClassNames { options, classNames, null); // Sources - List processors = new ArrayList<>(); + List processors = new ArrayList(); processors.add(new ClassNameProber()); compileTask.setProcessors(processors); Boolean goodResult = compileTask.call(); From b984132c1652fb50547dec644499e7a31f58cdf4 Mon Sep 17 00:00:00 2001 From: Alexey Utkin Date: Wed, 14 Apr 2010 15:28:37 +0400 Subject: [PATCH 15/64] 6920842: Wheel events do not bubbling to the browser if they was not treated in applet Reviewed-by: art, anthony, peterz --- jdk/src/share/classes/java/awt/Component.java | 6 +++++- jdk/src/share/classes/java/awt/Container.java | 11 ++++++++++- .../javax/swing/plaf/basic/BasicScrollPaneUI.java | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/java/awt/Component.java b/jdk/src/share/classes/java/awt/Component.java index 702d81b8f9b..6fd49ce1ad6 100644 --- a/jdk/src/share/classes/java/awt/Component.java +++ b/jdk/src/share/classes/java/awt/Component.java @@ -4941,9 +4941,13 @@ public abstract class Component implements ImageObserver, MenuContainer, // If we dispatch the event to toplevel ancestor, // this could encolse the loop: 6480024. anc.dispatchEventToSelf(newMWE); + if (newMWE.isConsumed()) { + e.consume(); + } + return true; } } - return true; + return false; } boolean checkWindowClosingException() { diff --git a/jdk/src/share/classes/java/awt/Container.java b/jdk/src/share/classes/java/awt/Container.java index 94273ade4cb..5a8e3a22dfc 100644 --- a/jdk/src/share/classes/java/awt/Container.java +++ b/jdk/src/share/classes/java/awt/Container.java @@ -4492,7 +4492,10 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { retargetMouseEvent(mouseOver, id, e); break; } - e.consume(); + //Consuming of wheel events is implemented in "retargetMouseEvent". + if (id != MouseEvent.MOUSE_WHEEL) { + e.consume(); + } } return e.isConsumed(); } @@ -4800,6 +4803,12 @@ class LightweightDispatcher implements java.io.Serializable, AWTEventListener { target.dispatchEvent(retargeted); } } + if (id == MouseEvent.MOUSE_WHEEL && retargeted.isConsumed()) { + //An exception for wheel bubbling to the native system. + //In "processMouseEvent" total event consuming for wheel events is skipped. + //Protection from bubbling of Java-accepted wheel events. + e.consume(); + } } } diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java index ec33129c346..e1e81861c2f 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java @@ -870,6 +870,8 @@ public class BasicScrollPaneUI orientation = SwingConstants.HORIZONTAL; } + e.consume(); + if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) { JViewport vp = scrollpane.getViewport(); if (vp == null) { return; } From d3fa7f79ad1b4a8f23c85750ec29b80dcdb8ea46 Mon Sep 17 00:00:00 2001 From: Maurizio Cimadamore Date: Wed, 14 Apr 2010 12:31:55 +0100 Subject: [PATCH 16/64] 6939620: Switch to 'complex' diamond inference scheme Implement new inference scheme for diamond operator that takes into account type of actual arguments supplied to constructor Reviewed-by: jjg, darcy --- .../com/sun/tools/javac/code/Source.java | 3 + .../com/sun/tools/javac/code/Symbol.java | 7 + .../com/sun/tools/javac/comp/Attr.java | 183 ++++++++++++++++-- .../com/sun/tools/javac/comp/Check.java | 37 ++++ .../com/sun/tools/javac/comp/Resolve.java | 44 +++++ .../sun/tools/javac/parser/JavacParser.java | 30 ++- .../tools/javac/resources/compiler.properties | 14 +- .../com/sun/tools/javac/tree/TreeInfo.java | 9 + .../test/tools/javac/6840059/T6840059.out | 4 +- .../javac/generics/diamond/neg/Neg01.java | 38 ++++ .../javac/generics/diamond/neg/Neg01.out | 29 +++ .../javac/generics/diamond/neg/Neg02.java | 61 ++++++ .../javac/generics/diamond/neg/Neg02.out | 57 ++++++ .../javac/generics/diamond/neg/Neg03.java | 83 ++++++++ .../javac/generics/diamond/neg/Neg03.out | 85 ++++++++ .../javac/generics/diamond/neg/Neg04.java | 38 ++++ .../javac/generics/diamond/neg/Neg04.out | 29 +++ .../javac/generics/diamond/neg/Neg05.java | 61 ++++++ .../javac/generics/diamond/neg/Neg05.out | 49 +++++ .../javac/generics/diamond/neg/Neg06.java | 21 ++ .../javac/generics/diamond/neg/Neg06.out | 4 + .../javac/generics/diamond/neg/Neg07.java | 19 ++ .../javac/generics/diamond/neg/Neg07.out | 3 + .../javac/generics/diamond/neg/Neg08.java | 30 +++ .../javac/generics/diamond/neg/Neg08.out | 4 + .../javac/generics/diamond/neg/Neg09.java | 22 +++ .../javac/generics/diamond/neg/Neg09.out | 4 + .../javac/generics/diamond/neg/Neg10.java | 17 ++ .../javac/generics/diamond/neg/Neg10.out | 2 + .../javac/generics/diamond/neg/Neg11.java | 18 ++ .../javac/generics/diamond/neg/Neg11.out | 3 + .../javac/generics/diamond/pos/Pos01.java | 67 +++++++ .../javac/generics/diamond/pos/Pos02.java | 90 +++++++++ .../javac/generics/diamond/pos/Pos03.java | 114 +++++++++++ .../javac/generics/diamond/pos/Pos04.java | 67 +++++++ .../javac/generics/diamond/pos/Pos05.java | 45 +++++ 36 files changed, 1368 insertions(+), 23 deletions(-) create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg01.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg01.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg02.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg02.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg03.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg03.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg04.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg04.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg05.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg05.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg06.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg06.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg07.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg07.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg08.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg08.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg09.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg09.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg10.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg10.out create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg11.java create mode 100644 langtools/test/tools/javac/generics/diamond/neg/Neg11.out create mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos01.java create mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos02.java create mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos03.java create mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos04.java create mode 100644 langtools/test/tools/javac/generics/diamond/pos/Pos05.java diff --git a/langtools/src/share/classes/com/sun/tools/javac/code/Source.java b/langtools/src/share/classes/com/sun/tools/javac/code/Source.java index a2127564b4a..4809565d855 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/code/Source.java +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Source.java @@ -122,6 +122,9 @@ public enum Source { public boolean allowGenerics() { return compareTo(JDK1_5) >= 0; } + public boolean allowDiamond() { + return compareTo(JDK1_7) >= 0; + } public boolean allowEnums() { return compareTo(JDK1_5) >= 0; } diff --git a/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java index 85f7b7d420e..bc354c8c666 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java @@ -225,6 +225,13 @@ public abstract class Symbol implements Element { (owner.kind == TYP && owner.isLocal()); } + /** Has this symbol an empty name? This includes anonymous + * inner classses. + */ + public boolean isAnonymous() { + return name.isEmpty(); + } + /** Is this symbol a constructor? */ public boolean isConstructor() { diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java index 1e0fda5290d..214a9723003 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java @@ -72,6 +72,7 @@ public class Attr extends JCTree.Visitor { final Log log; final Symtab syms; final Resolve rs; + final Infer infer; final Check chk; final MemberEnter memberEnter; final TreeMaker make; @@ -100,6 +101,7 @@ public class Attr extends JCTree.Visitor { memberEnter = MemberEnter.instance(context); make = TreeMaker.instance(context); enter = Enter.instance(context); + infer = Infer.instance(context); cfolder = ConstFold.instance(context); target = Target.instance(context); types = Types.instance(context); @@ -425,7 +427,14 @@ public class Attr extends JCTree.Visitor { /** Derived visitor method: attribute a type tree. */ Type attribType(JCTree tree, Env env) { - Type result = attribTree(tree, env, TYP, Type.noType); + Type result = attribType(tree, env, Type.noType); + return result; + } + + /** Derived visitor method: attribute a type tree. + */ + Type attribType(JCTree tree, Env env, Type pt) { + Type result = attribTree(tree, env, TYP, pt); return result; } @@ -532,6 +541,7 @@ public class Attr extends JCTree.Visitor { } /** Attribute type reference in an `extends' or `implements' clause. + * Supertypes of anonymous inner classes are usually already attributed. * * @param tree The tree making up the type reference. * @param env The environment current at the reference. @@ -543,7 +553,9 @@ public class Attr extends JCTree.Visitor { boolean classExpected, boolean interfaceExpected, boolean checkExtensible) { - Type t = attribType(tree, env); + Type t = tree.type != null ? + tree.type : + attribType(tree, env); return checkBase(t, tree, env, classExpected, interfaceExpected, checkExtensible); } Type checkBase(Type t, @@ -1448,13 +1460,16 @@ public class Attr extends JCTree.Visitor { ((JCTypeApply) clazz).arguments); else clazz = clazzid1; -// System.out.println(clazz + " generated.");//DEBUG } // Attribute clazz expression and store // symbol + type back into the attributed tree. - Type clazztype = chk.checkClassType( - tree.clazz.pos(), attribType(clazz, env), true); + Type clazztype = attribType(clazz, env); + Pair mapping = getSyntheticScopeMapping((ClassType)clazztype); + if (!TreeInfo.isDiamond(tree)) { + clazztype = chk.checkClassType( + tree.clazz.pos(), clazztype, true); + } chk.validate(clazz, localEnv); if (tree.encl != null) { // We have to work in this case to store @@ -1479,6 +1494,11 @@ public class Attr extends JCTree.Visitor { List argtypes = attribArgs(tree.args, localEnv); List typeargtypes = attribTypes(tree.typeargs, localEnv); + if (TreeInfo.isDiamond(tree)) { + clazztype = attribDiamond(localEnv, tree, clazztype, mapping, argtypes, typeargtypes, true); + clazz.type = clazztype; + } + // If we have made no mistakes in the class type... if (clazztype.tag == CLASS) { // Enums may not be instantiated except implicitly @@ -1516,12 +1536,12 @@ public class Attr extends JCTree.Visitor { tree.constructor = rs.resolveConstructor( tree.pos(), localEnv, clazztype, argtypes, typeargtypes); tree.constructorType = checkMethod(clazztype, - tree.constructor, - localEnv, - tree.args, - argtypes, - typeargtypes, - localEnv.info.varArgs); + tree.constructor, + localEnv, + tree.args, + argtypes, + typeargtypes, + localEnv.info.varArgs); if (localEnv.info.varArgs) assert tree.constructorType.isErroneous() || tree.varargsElement != null; } @@ -1606,6 +1626,136 @@ public class Attr extends JCTree.Visitor { chk.validate(tree.typeargs, localEnv); } + Type attribDiamond(Env env, + JCNewClass tree, + Type clazztype, + Pair mapping, + List argtypes, + List typeargtypes, + boolean reportErrors) { + if (clazztype.isErroneous()) { + //if the type of the instance creation expression is erroneous + //return the erroneous type itself + return clazztype; + } + else if (clazztype.isInterface()) { + //if the type of the instance creation expression is an interface + //skip the method resolution step (JLS 15.12.2.7). The type to be + //inferred is of the kind C + clazztype = new ForAll(clazztype.tsym.type.allparams(), + clazztype.tsym.type); + } else { + //if the type of the instance creation expression is a class type + //apply method resolution inference (JLS 15.12.2.7). The return type + //of the resolved constructor will be a partially instantiated type + ((ClassSymbol) clazztype.tsym).members_field = mapping.snd; + Symbol constructor; + try { + constructor = rs.resolveDiamond(tree.pos(), + env, + clazztype.tsym.type, + argtypes, + typeargtypes, reportErrors); + } finally { + ((ClassSymbol) clazztype.tsym).members_field = mapping.fst; + } + if (constructor.kind == MTH) { + ClassType ct = new ClassType(clazztype.getEnclosingType(), + clazztype.tsym.type.getTypeArguments(), + clazztype.tsym); + clazztype = checkMethod(ct, + constructor, + env, + tree.args, + argtypes, + typeargtypes, + env.info.varArgs).getReturnType(); + } else { + clazztype = syms.errType; + } + } + if (clazztype.tag == FORALL && !pt.isErroneous()) { + //if the resolved constructor's return type has some uninferred + //type-variables, infer them using the expected type and declared + //bounds (JLS 15.12.2.8). + try { + clazztype = infer.instantiateExpr((ForAll) clazztype, + pt.tag == NONE ? syms.objectType : pt, + Warner.noWarnings); + } catch (Infer.InferenceException ex) { + //an error occurred while inferring uninstantiated type-variables + //we need to optionally report an error + if (reportErrors) { + log.error(tree.clazz.pos(), + "cant.apply.diamond.1", + diags.fragment("diamond", clazztype.tsym), + ex.diagnostic); + } + } + } + if (reportErrors) { + clazztype = chk.checkClassType(tree.clazz.pos(), + clazztype, + true); + if (clazztype.tag == CLASS) { + List invalidDiamondArgs = chk.checkDiamond((ClassType)clazztype); + if (!clazztype.isErroneous() && invalidDiamondArgs.nonEmpty()) { + //one or more types inferred in the previous steps is either a + //captured type or an intersection type --- we need to report an error. + String subkey = invalidDiamondArgs.size() > 1 ? + "diamond.invalid.args" : + "diamond.invalid.arg"; + //The error message is of the kind: + // + //cannot infer type arguments for {clazztype}<>; + //reason: {subkey} + // + //where subkey is a fragment of the kind: + // + //type argument(s) {invalidDiamondArgs} inferred for {clazztype}<> is not allowed in this context + log.error(tree.clazz.pos(), + "cant.apply.diamond.1", + diags.fragment("diamond", clazztype.tsym), + diags.fragment(subkey, + invalidDiamondArgs, + diags.fragment("diamond", clazztype.tsym))); + } + } + } + return clazztype; + } + + /** Creates a synthetic scope containing fake generic constructors. + * Assuming that the original scope contains a constructor of the kind: + * Foo(X x, Y y), where X,Y are class type-variables declared in Foo, + * the synthetic scope is added a generic constructor of the kind: + * Foo(X x, Y y). This is crucial in order to enable diamond + * inference. The inferred return type of the synthetic constructor IS + * the inferred type for the diamond operator. + */ + private Pair getSyntheticScopeMapping(ClassType ctype) { + Pair mapping = + new Pair(ctype.tsym.members(), new Scope(ctype.tsym)); + List typevars = ctype.tsym.type.getTypeArguments(); + for (Scope.Entry e = mapping.fst.lookup(names.init); + e.scope != null; + e = e.next()) { + MethodSymbol newConstr = (MethodSymbol) e.sym.clone(ctype.tsym); + newConstr.name = names.init; + List oldTypeargs = List.nil(); + if (newConstr.type.tag == FORALL) { + oldTypeargs = ((ForAll) newConstr.type).tvars; + } + newConstr.type = new MethodType(newConstr.type.getParameterTypes(), + new ClassType(ctype.getEnclosingType(), ctype.tsym.type.getTypeArguments(), ctype.tsym), + newConstr.type.getThrownTypes(), + syms.methodClass); + newConstr.type = new ForAll(typevars.prependList(oldTypeargs), newConstr.type); + mapping.snd.enter(newConstr); + } + return mapping; + } + /** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { @@ -2547,7 +2697,7 @@ public class Attr extends JCTree.Visitor { if (clazztype.tag == CLASS) { List formals = clazztype.tsym.type.getTypeArguments(); - if (actuals.length() == formals.length()) { + if (actuals.length() == formals.length() || actuals.length() == 0) { List a = actuals; List f = formals; while (a.nonEmpty()) { @@ -2788,9 +2938,12 @@ public class Attr extends JCTree.Visitor { // Validate type parameters, supertype and interfaces. attribBounds(tree.typarams); - chk.validate(tree.typarams, env); - chk.validate(tree.extending, env); - chk.validate(tree.implementing, env); + if (!c.isAnonymous()) { + //already checked if anonymous + chk.validate(tree.typarams, env); + chk.validate(tree.extending, env); + chk.validate(tree.implementing, env); + } // If this is a non-abstract class, check that it has no abstract // methods or unimplemented methods of an implemented interface. diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java index c55b1934092..44cf6a6e717 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java @@ -640,6 +640,43 @@ public class Check { return true; } + /** Check that the type inferred using the diamond operator does not contain + * non-denotable types such as captured types or intersection types. + * @param t the type inferred using the diamond operator + */ + List checkDiamond(ClassType t) { + DiamondTypeChecker dtc = new DiamondTypeChecker(); + ListBuffer buf = ListBuffer.lb(); + for (Type arg : t.getTypeArguments()) { + if (!dtc.visit(arg, null)) { + buf.append(arg); + } + } + return buf.toList(); + } + + static class DiamondTypeChecker extends Types.SimpleVisitor { + public Boolean visitType(Type t, Void s) { + return true; + } + @Override + public Boolean visitClassType(ClassType t, Void s) { + if (t.isCompound()) { + return false; + } + for (Type targ : t.getTypeArguments()) { + if (!visit(targ, s)) { + return false; + } + } + return true; + } + @Override + public Boolean visitCapturedType(CapturedType t, Void s) { + return false; + } + } + /** Check that given modifiers are legal for given symbol and * return modifiers together with any implicit modififiers for that symbol. * Warning: we can't use flags() here since this method diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java index 808fd9959ef..c7a23e782ea 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java @@ -788,6 +788,8 @@ public class Resolve { operator); } } + if (name == names.init) + break; //- System.out.println(" - " + bestSoFar); if (abstractok) { Symbol concrete = methodNotFound; @@ -1409,6 +1411,48 @@ public class Resolve { return sym; } + /** Resolve constructor using diamond inference. + * @param pos The position to use for error reporting. + * @param env The environment current at the constructor invocation. + * @param site The type of class for which a constructor is searched. + * The scope of this class has been touched in attribution. + * @param argtypes The types of the constructor invocation's value + * arguments. + * @param typeargtypes The types of the constructor invocation's type + * arguments. + */ + Symbol resolveDiamond(DiagnosticPosition pos, + Env env, + Type site, + List argtypes, + List typeargtypes, boolean reportErrors) { + Symbol sym = methodNotFound; + JCDiagnostic explanation = null; + List steps = methodResolutionSteps; + while (steps.nonEmpty() && + steps.head.isApplicable(boxingEnabled, varargsEnabled) && + sym.kind >= ERRONEOUS) { + sym = resolveConstructor(pos, env, site, argtypes, typeargtypes, + steps.head.isBoxingRequired(), + env.info.varArgs = steps.head.isVarargsRequired()); + methodResolutionCache.put(steps.head, sym); + if (sym.kind == WRONG_MTH && + ((InapplicableSymbolError)sym).explanation != null) { + //if the symbol is an inapplicable method symbol, then the + //explanation contains the reason for which inference failed + explanation = ((InapplicableSymbolError)sym).explanation; + } + steps = steps.tail; + } + if (sym.kind >= AMBIGUOUS && reportErrors) { + String key = explanation == null ? + "cant.apply.diamond" : + "cant.apply.diamond.1"; + log.error(pos, key, diags.fragment("diamond", site.tsym), explanation); + } + return sym; + } + /** Resolve constructor. * @param pos The position to use for error reporting. * @param env The environment current at the constructor invocation. diff --git a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java index a426f4a896a..63914e315e6 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java +++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java @@ -131,6 +131,7 @@ public class JavacParser implements Parser { this.allowForeach = source.allowForeach(); this.allowStaticImport = source.allowStaticImport(); this.allowAnnotations = source.allowAnnotations(); + this.allowDiamond = source.allowDiamond(); this.allowTypeAnnotations = source.allowTypeAnnotations(); this.keepDocComments = keepDocComments; if (keepDocComments) @@ -148,6 +149,10 @@ public class JavacParser implements Parser { */ boolean allowGenerics; + /** Switch: Should diamond operator be recognized? + */ + boolean allowDiamond; + /** Switch: Should varargs be recognized? */ boolean allowVarargs; @@ -190,10 +195,11 @@ public class JavacParser implements Parser { * mode = NOPARAMS : no parameters allowed for type * mode = TYPEARG : type argument */ - static final int EXPR = 1; - static final int TYPE = 2; - static final int NOPARAMS = 4; - static final int TYPEARG = 8; + static final int EXPR = 0x1; + static final int TYPE = 0x2; + static final int NOPARAMS = 0x4; + static final int TYPEARG = 0x8; + static final int DIAMOND = 0x10; /** The current mode. */ @@ -1343,6 +1349,11 @@ public class JavacParser implements Parser { ListBuffer args = lb(); if (S.token() == LT) { S.nextToken(); + if (S.token() == GT && (mode & DIAMOND) != 0) { + checkDiamond(); + S.nextToken(); + return List.nil(); + } args.append(((mode & EXPR) == 0) ? typeArgument() : parseType()); while (S.token() == COMMA) { S.nextToken(); @@ -1516,7 +1527,7 @@ public class JavacParser implements Parser { t = F.AnnotatedType(newAnnotations, t); int oldmode = mode; - mode = TYPE; + mode = TYPE | DIAMOND; if (S.token() == LT) { checkGenerics(); t = typeArguments(t); @@ -1569,8 +1580,11 @@ public class JavacParser implements Parser { JCExpression innerCreator(int newpos, List typeArgs, JCExpression encl) { JCExpression t = toP(F.at(S.pos()).Ident(ident())); if (S.token() == LT) { + int oldmode = mode; + mode |= DIAMOND; checkGenerics(); t = typeArguments(t); + mode = oldmode; } return classCreatorRest(newpos, encl, typeArgs, t); } @@ -3173,4 +3187,10 @@ public class JavacParser implements Parser { allowTypeAnnotations = true; } } + void checkDiamond() { + if (!allowDiamond) { + log.error(S.pos(), "diamond.not.supported.in.source", source.name); + allowDiamond = true; + } + } } diff --git a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties index dc99f0ec35d..9de74667229 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties +++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties @@ -479,6 +479,11 @@ compiler.err.undetermined.type.1=\ type parameters of {0} cannot be determined; {1} compiler.err.invalid.inferred.types=\ invalid inferred types for {0}; {1} +compiler.err.cant.apply.diamond=\ + cannot infer type arguments for {0} +compiler.err.cant.apply.diamond.1=\ + cannot infer type arguments for {0};\n\ + reason: {1} compiler.err.unreachable.stmt=\ unreachable statement compiler.err.initializer.must.be.able.to.complete.normally=\ @@ -1030,7 +1035,12 @@ compiler.misc.inferred.do.not.conform.to.params=\ actual arguments do not conform to inferred formal arguments\n\ required: {0}\n\ found: {1} - +compiler.misc.diamond=\ + {0}<> +compiler.misc.diamond.invalid.arg=\ + type argument {0} inferred for {1} is not allowed in this context +compiler.misc.diamond.invalid.args=\ + type arguments {0} inferred for {1} are not allowed in this context ##### ## The first argument ({0}) is a "kindname". @@ -1163,6 +1173,8 @@ compiler.misc.varargs.implement=\ {0} in {1} implements {2} in {3} compiler.misc.varargs.clash.with=\ {0} in {1} overrides {2} in {3} +compiler.misc.non.denotable.type=\ + Non-denotable type {0} not allowed here ######################################## # Diagnostics for language feature changes diff --git a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java index b42586a978a..12f25312e6e 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java @@ -204,6 +204,15 @@ public class TreeInfo { return (JCMethodInvocation)exec.expr; } + /** Return true if a tree represents a diamond new expr. */ + public static boolean isDiamond(JCTree tree) { + switch(tree.getTag()) { + case JCTree.TYPEAPPLY: return ((JCTypeApply)tree).getTypeArguments().isEmpty(); + case JCTree.NEWCLASS: return isDiamond(((JCNewClass)tree).clazz); + default: return false; + } + } + /** Return true if a tree represents the null literal. */ public static boolean isNull(JCTree tree) { if (tree.getTag() != JCTree.LITERAL) diff --git a/langtools/test/tools/javac/6840059/T6840059.out b/langtools/test/tools/javac/6840059/T6840059.out index d23d3e33838..a93cdf688a4 100644 --- a/langtools/test/tools/javac/6840059/T6840059.out +++ b/langtools/test/tools/javac/6840059/T6840059.out @@ -1,3 +1,3 @@ -T6840059.java:15:9: compiler.err.cant.resolve.location.args: kindname.constructor, T6840059, , java.lang.String, kindname.class, T6840059 -T6840059.java:15:25: compiler.err.cant.resolve.location.args: kindname.constructor, T6840059, , , kindname.class, T6840059 +T6840059.java:15:9: compiler.err.cant.apply.symbol: kindname.constructor, T6840059, java.lang.Integer, java.lang.String, kindname.class, T6840059, null +T6840059.java:15:25: compiler.err.cant.apply.symbol: kindname.constructor, T6840059, java.lang.Integer, compiler.misc.no.args, kindname.class, T6840059, null 2 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg01.java b/langtools/test/tools/javac/generics/diamond/neg/Neg01.java new file mode 100644 index 00000000000..ca73e00d479 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg01.java @@ -0,0 +1,38 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg01.out Neg01.java -XDrawDiagnostics + * + */ + +class Neg01 { + + Neg01(X x) {} + + Neg01(X x, Z z) {} + + void test() { + Neg01 n1 = new Neg01<>(""); + Neg01 n2 = new Neg01<>(""); + Neg01 n3 = new Neg01<>(""); + Neg01 n4 = new Neg01<>(""); + + Neg01 n5 = new Neg01<>(""){}; + Neg01 n6 = new Neg01<>(""){}; + Neg01 n7 = new Neg01<>(""){}; + Neg01 n8 = new Neg01<>(""){}; + + Neg01 n9 = new Neg01<>("", ""); + Neg01 n10 = new Neg01<>("", ""); + Neg01 n11 = new Neg01<>("", ""); + Foo n12 = new Neg01<>("", ""); + + Neg01 n13 = new Neg01<>("", ""){}; + Neg01 n14 = new Neg01<>("", ""){}; + Neg01 n15 = new Neg01<>("", ""){}; + Neg01 n16 = new Neg01<>("", ""){}; + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg01.out b/langtools/test/tools/javac/generics/diamond/neg/Neg01.out new file mode 100644 index 00000000000..1c53707ce8b --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg01.out @@ -0,0 +1,29 @@ +Neg01.java:18:15: compiler.err.not.within.bounds: java.lang.String +Neg01.java:18:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:19:15: compiler.err.not.within.bounds: ? extends java.lang.String +Neg01.java:19:38: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:20:23: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:21:15: compiler.err.not.within.bounds: ? super java.lang.String +Neg01.java:21:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:23:15: compiler.err.not.within.bounds: java.lang.String +Neg01.java:23:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:24:15: compiler.err.not.within.bounds: ? extends java.lang.String +Neg01.java:24:38: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:25:23: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:26:15: compiler.err.not.within.bounds: ? super java.lang.String +Neg01.java:26:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:28:15: compiler.err.not.within.bounds: java.lang.String +Neg01.java:28:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:29:15: compiler.err.not.within.bounds: ? extends java.lang.String +Neg01.java:29:39: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:30:24: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:31:9: compiler.err.cant.resolve.location: kindname.class, Foo, , , kindname.class, Neg01 +Neg01.java:31:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:33:15: compiler.err.not.within.bounds: java.lang.String +Neg01.java:33:29: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:34:15: compiler.err.not.within.bounds: ? extends java.lang.String +Neg01.java:34:39: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:35:24: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +Neg01.java:36:15: compiler.err.not.within.bounds: ? super java.lang.String +Neg01.java:36:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg01), null +28 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg02.java b/langtools/test/tools/javac/generics/diamond/neg/Neg02.java new file mode 100644 index 00000000000..26e0e4359fc --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg02.java @@ -0,0 +1,61 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg02.out Neg02.java -XDrawDiagnostics + * + */ + +class Neg02 { + + static class Foo { + Foo(X x) {} + Foo(X x, Z z) {} + } + + void testSimple() { + Foo f1 = new Foo<>(""); + Foo f2 = new Foo<>(""); + Foo f3 = new Foo<>(""); + Foo f4 = new Foo<>(""); + + Foo f5 = new Foo<>(""){}; + Foo f6 = new Foo<>(""){}; + Foo f7 = new Foo<>(""){}; + Foo f8 = new Foo<>(""){}; + + Foo f9 = new Foo<>("", ""); + Foo f10 = new Foo<>("", ""); + Foo f11 = new Foo<>("", ""); + Foo f12 = new Foo<>("", ""); + + Foo f13 = new Foo<>("", ""){}; + Foo f14 = new Foo<>("", ""){}; + Foo f15 = new Foo<>("", ""){}; + Foo f16 = new Foo<>("", ""){}; + } + + void testQualified() { + Foo f1 = new Neg02.Foo<>(""); + Foo f2 = new Neg02.Foo<>(""); + Foo f3 = new Neg02.Foo<>(""); + Foo f4 = new Neg02.Foo<>(""); + + Foo f5 = new Neg02.Foo<>(""){}; + Foo f6 = new Neg02.Foo<>(""){}; + Foo f7 = new Neg02.Foo<>(""){}; + Foo f8 = new Neg02.Foo<>(""){}; + + Foo f9 = new Neg02.Foo<>("", ""); + Foo f10 = new Neg02.Foo<>("", ""); + Foo f11 = new Neg02.Foo<>("", ""); + Foo f12 = new Neg02.Foo<>("", ""); + + Foo f13 = new Neg02.Foo<>("", ""){}; + Foo f14 = new Neg02.Foo<>("", ""){}; + Foo f15 = new Neg02.Foo<>("", ""){}; + Foo f16 = new Neg02.Foo<>("", ""){}; + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg02.out b/langtools/test/tools/javac/generics/diamond/neg/Neg02.out new file mode 100644 index 00000000000..c4d7228e440 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg02.out @@ -0,0 +1,57 @@ +Neg02.java:19:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:19:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:20:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:20:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:21:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:22:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:22:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:24:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:24:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:25:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:25:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:26:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:27:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:27:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:29:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:29:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:30:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:30:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:31:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:32:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:32:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:34:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:34:27: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:35:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:35:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:36:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:37:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:37:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:41:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:41:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:42:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:42:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:43:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:44:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:44:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:46:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:46:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:47:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:47:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:48:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:49:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:49:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:51:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:51:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:52:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:52:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:53:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:54:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:54:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:56:13: compiler.err.not.within.bounds: java.lang.String +Neg02.java:56:27: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:57:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg02.java:57:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:58:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +Neg02.java:59:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg02.java:59:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg02.Foo), null +56 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg03.java b/langtools/test/tools/javac/generics/diamond/neg/Neg03.java new file mode 100644 index 00000000000..29a1a18a2a8 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg03.java @@ -0,0 +1,83 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg03.out Neg03.java -XDrawDiagnostics + * + */ + +class Neg03 { + + class Foo { + Foo(V x) {} + Foo(V x, Z z) {} + } + + void testSimple() { + Foo f1 = new Foo<>(""); + Foo f2 = new Foo<>(""); + Foo f3 = new Foo<>(""); + Foo f4 = new Foo<>(""); + + Foo f5 = new Foo<>(""){}; + Foo f6 = new Foo<>(""){}; + Foo f7 = new Foo<>(""){}; + Foo f8 = new Foo<>(""){}; + + Foo f9 = new Foo<>("", ""); + Foo f10 = new Foo<>("", ""); + Foo f11 = new Foo<>("", ""); + Foo f12 = new Foo<>("", ""); + + Foo f13 = new Foo<>("", ""){}; + Foo f14 = new Foo<>("", ""){}; + Foo f15 = new Foo<>("", ""){}; + Foo f16 = new Foo<>("", ""){}; + } + + void testQualified_1() { + Foo f1 = new Neg03.Foo<>(""); + Foo f2 = new Neg03.Foo<>(""); + Foo f3 = new Neg03.Foo<>(""); + Foo f4 = new Neg03.Foo<>(""); + + Foo f5 = new Neg03.Foo<>(""){}; + Foo f6 = new Neg03.Foo<>(""){}; + Foo f7 = new Neg03.Foo<>(""){}; + Foo f8 = new Neg03.Foo<>(""){}; + + Foo f9 = new Neg03.Foo<>("", ""); + Foo f10 = new Neg03.Foo<>("", ""); + Foo f11 = new Neg03.Foo<>("", ""); + Foo f12 = new Neg03.Foo<>("", ""); + + Foo f13 = new Neg03.Foo<>("", ""){}; + Foo f14 = new Neg03.Foo<>("", ""){}; + Foo f15 = new Neg03.Foo<>("", ""){}; + Foo f16 = new Neg03.Foo<>("", ""){}; + } + + void testQualified_2(Neg03 n) { + Foo f1 = n.new Foo<>(""); + Foo f2 = n.new Foo<>(""); + Foo f3 = n.new Foo<>(""); + Foo f4 = n.new Foo<>(""); + + Foo f5 = n.new Foo<>(""){}; + Foo f6 = n.new Foo<>(""){}; + Foo f7 = n.new Foo<>(""){}; + Foo f8 = n.new Foo<>(""){}; + + Foo f9 = n.new Foo<>("", ""); + Foo f10 = n.new Foo<>("", ""); + Foo f11 = n.new Foo<>("", ""); + Foo f12 = n.new Foo<>("", ""); + + Foo f13 = n.new Foo<>("", ""){}; + Foo f14 = n.new Foo<>("", ""){}; + Foo f15 = n.new Foo<>("", ""){}; + Foo f16 = n.new Foo<>("", ""){}; + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg03.out b/langtools/test/tools/javac/generics/diamond/neg/Neg03.out new file mode 100644 index 00000000000..60a16bd7984 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg03.out @@ -0,0 +1,85 @@ +Neg03.java:19:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:19:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:20:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:20:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:21:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:22:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:22:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:24:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:24:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:25:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:25:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:26:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:27:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:27:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:29:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:29:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:30:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:30:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:31:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:32:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:32:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:34:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:34:27: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:35:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:35:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:36:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:37:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:37:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:41:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:41:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:42:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:42:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:43:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:44:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:44:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:46:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:46:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:47:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:47:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:48:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:49:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:49:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:51:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:51:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:52:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:52:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:53:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:54:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:54:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:56:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:56:27: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:57:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:57:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:58:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:59:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:59:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:63:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:63:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:64:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:64:38: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:65:23: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:66:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:66:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:68:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:68:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:69:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:69:38: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:70:23: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:71:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:71:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:73:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:73:28: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:74:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:74:39: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:75:24: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:76:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:76:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:78:13: compiler.err.not.within.bounds: java.lang.String +Neg03.java:78:29: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:79:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg03.java:79:39: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:80:24: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +Neg03.java:81:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg03.java:81:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Neg03.Foo), null +84 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg04.java b/langtools/test/tools/javac/generics/diamond/neg/Neg04.java new file mode 100644 index 00000000000..43af1f4b9b2 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg04.java @@ -0,0 +1,38 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg04.out Neg04.java -XDrawDiagnostics + * + */ + +class Neg04 { + + void test() { + class Foo { + Foo(V x) {} + Foo(V x, Z z) {} + } + Foo n1 = new Foo<>(""); + Foo n2 = new Foo<>(""); + Foo n3 = new Foo<>(""); + Foo n4 = new Foo<>(""); + + Foo n5 = new Foo<>(""){}; + Foo n6 = new Foo<>(""){}; + Foo n7 = new Foo<>(""){}; + Foo n8 = new Foo<>(""){}; + + Foo n9 = new Foo<>("", ""); + Foo n10 = new Foo<>("", ""); + Foo n11 = new Foo<>("", ""); + Foo n12 = new Foo<>("", ""); + + Foo n13 = new Foo<>("", ""){}; + Foo n14 = new Foo<>("", ""){}; + Foo n15 = new Foo<>("", ""){}; + Foo n16 = new Foo<>("", ""){}; + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg04.out b/langtools/test/tools/javac/generics/diamond/neg/Neg04.out new file mode 100644 index 00000000000..723b6da0cbd --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg04.out @@ -0,0 +1,29 @@ +Neg04.java:18:13: compiler.err.not.within.bounds: java.lang.String +Neg04.java:18:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:19:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg04.java:19:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:20:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:21:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg04.java:21:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:23:13: compiler.err.not.within.bounds: java.lang.String +Neg04.java:23:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:24:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg04.java:24:36: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:25:21: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:26:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg04.java:26:34: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:28:13: compiler.err.not.within.bounds: java.lang.String +Neg04.java:28:26: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:29:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg04.java:29:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:30:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:31:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg04.java:31:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:33:13: compiler.err.not.within.bounds: java.lang.String +Neg04.java:33:27: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:34:13: compiler.err.not.within.bounds: ? extends java.lang.String +Neg04.java:34:37: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:35:22: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +Neg04.java:36:13: compiler.err.not.within.bounds: ? super java.lang.String +Neg04.java:36:35: compiler.err.cant.apply.diamond: (compiler.misc.diamond: Foo), null +28 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg05.java b/langtools/test/tools/javac/generics/diamond/neg/Neg05.java new file mode 100644 index 00000000000..c2e7ce7ed12 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg05.java @@ -0,0 +1,61 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg05.out Neg05.java -XDrawDiagnostics + * + */ + +class Neg05 { + + class Foo { + Foo(V x) {} + Foo(V x, Z z) {} + } + + void testRare_1() { + Neg05.Foo f1 = new Neg05.Foo<>(""); + Neg05.Foo f2 = new Neg05.Foo<>(""); + Neg05.Foo f3 = new Neg05.Foo<>(""); + Neg05.Foo f4 = new Neg05.Foo<>(""); + + Neg05.Foo f5 = new Neg05.Foo<>(""){}; + Neg05.Foo f6 = new Neg05.Foo<>(""){}; + Neg05.Foo f7 = new Neg05.Foo<>(""){}; + Neg05.Foo f8 = new Neg05.Foo<>(""){}; + + Neg05.Foo f9 = new Neg05.Foo<>("", ""); + Neg05.Foo f10 = new Neg05.Foo<>("", ""); + Neg05.Foo f11 = new Neg05.Foo<>("", ""); + Neg05.Foo f12 = new Neg05.Foo<>("", ""); + + Neg05.Foo f13 = new Neg05.Foo<>("", ""){}; + Neg05.Foo f14 = new Neg05.Foo<>("", ""){}; + Neg05.Foo f15 = new Neg05.Foo<>("", ""){}; + Neg05.Foo f16 = new Neg05.Foo<>("", ""){}; + } + + void testRare_2(Neg05 n) { + Neg05.Foo f1 = n.new Foo<>(""); + Neg05.Foo f2 = n.new Foo<>(""); + Neg05.Foo f3 = n.new Foo<>(""); + Neg05.Foo f4 = n.new Foo<>(""); + + Neg05.Foo f5 = n.new Foo<>(""){}; + Neg05.Foo f6 = n.new Foo<>(""){}; + Neg05.Foo f7 = n.new Foo<>(""){}; + Neg05.Foo f8 = n.new Foo<>(""){}; + + Neg05.Foo f9 = n.new Foo<>("", ""); + Neg05.Foo f10 = n.new Foo<>("", ""); + Neg05.Foo f11 = n.new Foo<>("", ""); + Neg05.Foo f12 = n.new Foo<>("", ""); + + Neg05.Foo f13 = n.new Foo<>("", ""){}; + Neg05.Foo f14 = n.new Foo<>("", ""){}; + Neg05.Foo f15 = n.new Foo<>("", ""){}; + Neg05.Foo f16 = n.new Foo<>("", ""){}; + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg05.out b/langtools/test/tools/javac/generics/diamond/neg/Neg05.out new file mode 100644 index 00000000000..4fc4a8d0b53 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg05.out @@ -0,0 +1,49 @@ +Neg05.java:19:48: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:19:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:20:58: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:20:45: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:21:43: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:21:30: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:22:56: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:22:43: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:24:48: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:24:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:25:58: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:25:45: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:26:43: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:26:30: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:27:56: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:27:43: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:29:48: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:29:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:30:59: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:30:46: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:31:44: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:31:31: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:32:57: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:32:44: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo, Neg05.Foo +Neg05.java:34:49: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:34:36: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:35:59: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:35:46: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:36:44: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:36:31: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:37:57: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:37:44: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.anonymous.class: Neg05.Foo, Neg05.Foo +Neg05.java:41:37: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:42:47: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:43:32: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:44:45: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:46:37: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:47:47: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:48:32: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:49:45: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:51:37: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:52:48: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:53:33: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:54:46: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:56:38: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:57:48: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:58:33: compiler.err.improperly.formed.type.inner.raw.param +Neg05.java:59:46: compiler.err.improperly.formed.type.inner.raw.param +48 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg06.java b/langtools/test/tools/javac/generics/diamond/neg/Neg06.java new file mode 100644 index 00000000000..e58cfd3a580 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg06.java @@ -0,0 +1,21 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg06.out Neg06.java -XDrawDiagnostics + * + */ + +class Neg06 { + interface ISuperFoo {} + interface IFoo extends ISuperFoo {} + + static class CSuperFoo {} + static class CFoo extends CSuperFoo {} + + ISuperFoo isf = new IFoo<>() {}; + CSuperFoo csf1 = new CFoo<>(); + CSuperFoo csf2 = new CFoo<>() {}; +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg06.out b/langtools/test/tools/javac/generics/diamond/neg/Neg06.out new file mode 100644 index 00000000000..eaf8633c51f --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg06.out @@ -0,0 +1,4 @@ +Neg06.java:18:36: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.IFoo), (compiler.misc.no.conforming.instance.exists: X, Neg06.IFoo, Neg06.ISuperFoo) +Neg06.java:19:37: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.no.conforming.instance.exists: X, Neg06.CFoo, Neg06.CSuperFoo) +Neg06.java:20:37: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.no.conforming.instance.exists: X, Neg06.CFoo, Neg06.CSuperFoo) +3 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg07.java b/langtools/test/tools/javac/generics/diamond/neg/Neg07.java new file mode 100644 index 00000000000..b7e61fe897d --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg07.java @@ -0,0 +1,19 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg07.out Neg07.java -XDrawDiagnostics + * + */ + +class Neg07 { + static class SuperFoo {} + static class Foo extends SuperFoo { + Foo(X x) {} + } + + SuperFoo sf1 = new Foo<>(""); + SuperFoo sf2 = new Foo<>("") {}; +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg07.out b/langtools/test/tools/javac/generics/diamond/neg/Neg07.out new file mode 100644 index 00000000000..f141ff099b8 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg07.out @@ -0,0 +1,3 @@ +Neg07.java:17:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.inferred.do.not.conform.to.bounds: java.lang.String, java.lang.Number) +Neg07.java:18:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.inferred.do.not.conform.to.bounds: java.lang.String, java.lang.Number) +2 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg08.java b/langtools/test/tools/javac/generics/diamond/neg/Neg08.java new file mode 100644 index 00000000000..7ebb9875591 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg08.java @@ -0,0 +1,30 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 6894753 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg08.out Neg08.java -XDrawDiagnostics + * + */ + +class Neg08 { + static class Foo { + Foo(X x) { } + } + + static class DoubleFoo { + DoubleFoo(X x,Y y) { } + } + + static class TripleFoo { + TripleFoo(X x,Y y,Z z) { } + } + + Foo fi = new Foo<>(1); + Foo fw = new Foo<>(fi); + Foo fd = new Foo<>(3.0); + DoubleFoo dw = new DoubleFoo<>(fi,fd); + Foo fs = new Foo<>("one"); + TripleFoo tw = new TripleFoo<>(fi,fd,fs); +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg08.out b/langtools/test/tools/javac/generics/diamond/neg/Neg08.out new file mode 100644 index 00000000000..6a7a7fbe808 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg08.out @@ -0,0 +1,4 @@ +Neg08.java:25:24: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg08.Foo), (compiler.misc.diamond.invalid.arg: Neg08.Foo, (compiler.misc.diamond: Neg08.Foo)) +Neg08.java:27:38: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg08.DoubleFoo), (compiler.misc.diamond.invalid.args: Neg08.Foo,Neg08.Foo, (compiler.misc.diamond: Neg08.DoubleFoo)) +Neg08.java:29:40: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg08.TripleFoo), (compiler.misc.diamond.invalid.args: Neg08.Foo,Neg08.Foo, (compiler.misc.diamond: Neg08.TripleFoo)) +3 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg09.java b/langtools/test/tools/javac/generics/diamond/neg/Neg09.java new file mode 100644 index 00000000000..a424864df0e --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg09.java @@ -0,0 +1,22 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 6894753 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg09.out Neg09.java -XDrawDiagnostics + * + */ + +class Neg09 { + static class Foo> {} + static class DoubleFoo, + Y extends Number & Comparable> {} + static class TripleFoo, + Y extends Number & Comparable, + Z> {} + + Foo fw = new Foo<>(); + DoubleFoo dw = new DoubleFoo<>(); + TripleFoo tw = new TripleFoo<>(); +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg09.out b/langtools/test/tools/javac/generics/diamond/neg/Neg09.out new file mode 100644 index 00000000000..c6df94c5554 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg09.out @@ -0,0 +1,4 @@ +Neg09.java:19:24: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg09.Foo), (compiler.misc.diamond.invalid.arg: java.lang.Number&java.lang.Comparable, (compiler.misc.diamond: Neg09.Foo)) +Neg09.java:20:38: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg09.DoubleFoo), (compiler.misc.diamond.invalid.args: java.lang.Number&java.lang.Comparable,java.lang.Number&java.lang.Comparable, (compiler.misc.diamond: Neg09.DoubleFoo)) +Neg09.java:21:40: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg09.TripleFoo), (compiler.misc.diamond.invalid.args: java.lang.Number&java.lang.Comparable,java.lang.Number&java.lang.Comparable, (compiler.misc.diamond: Neg09.TripleFoo)) +3 errors diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg10.java b/langtools/test/tools/javac/generics/diamond/neg/Neg10.java new file mode 100644 index 00000000000..0d6de69adef --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg10.java @@ -0,0 +1,17 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg10.out Neg10.java -XDrawDiagnostics + * + */ + +class Neg10 { + static class Foo { + Foo(X x) {} + } + + Foo fw = new Foo<>(1); +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg10.out b/langtools/test/tools/javac/generics/diamond/neg/Neg10.out new file mode 100644 index 00000000000..8205ae51895 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg10.out @@ -0,0 +1,2 @@ +Neg10.java:16:22: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg10.Foo, Neg10.Foo +1 error diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg11.java b/langtools/test/tools/javac/generics/diamond/neg/Neg11.java new file mode 100644 index 00000000000..2e62f1742c0 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg11.java @@ -0,0 +1,18 @@ +/* + * @test /nodynamiccopyright/ + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile/fail/ref=Neg11.out Neg11.java -XDrawDiagnostics + * + */ + +class Neg11 { + + void test() { + class Foo { } + Foo f1 = new UndeclaredName<>(); //this is deliberate: aim is to test erroneous path + Foo f2 = new UndeclaredName<>() {}; //this is deliberate: aim is to test erroneous path + } +} diff --git a/langtools/test/tools/javac/generics/diamond/neg/Neg11.out b/langtools/test/tools/javac/generics/diamond/neg/Neg11.out new file mode 100644 index 00000000000..6661531225a --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/neg/Neg11.out @@ -0,0 +1,3 @@ +Neg11.java:15:25: compiler.err.cant.resolve.location: kindname.class, UndeclaredName, , , kindname.class, Neg11 +Neg11.java:16:25: compiler.err.cant.resolve.location: kindname.class, UndeclaredName, , , kindname.class, Neg11 +2 errors diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos01.java b/langtools/test/tools/javac/generics/diamond/pos/Pos01.java new file mode 100644 index 00000000000..c32b7d5c2c9 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/pos/Pos01.java @@ -0,0 +1,67 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile Pos01.java + * @run main Pos01 + * + */ + +public class Pos01 { + + Pos01(X x) {} + + Pos01(X x, Z z) {} + + void test() { + Pos01 p1 = new Pos01<>(1); + Pos01 p2 = new Pos01<>(1); + Pos01 p3 = new Pos01<>(1); + Pos01 p4 = new Pos01<>(1); + + Pos01 p5 = new Pos01<>(1){}; + Pos01 p6 = new Pos01<>(1){}; + Pos01 p7 = new Pos01<>(1){}; + Pos01 p8 = new Pos01<>(1){}; + + Pos01 p9 = new Pos01<>(1, ""); + Pos01 p10 = new Pos01<>(1, ""); + Pos01 p11 = new Pos01<>(1, ""); + Pos01 p12 = new Pos01<>(1, ""); + + Pos01 p13 = new Pos01<>(1, ""){}; + Pos01 p14= new Pos01<>(1, ""){}; + Pos01 p15 = new Pos01<>(1, ""){}; + Pos01 p16 = new Pos01<>(1, ""){}; + } + + public static void main(String[] args) { + Pos01 p1 = new Pos01<>(""); + p1.test(); + } +} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos02.java b/langtools/test/tools/javac/generics/diamond/pos/Pos02.java new file mode 100644 index 00000000000..c20e9dbaf0d --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/pos/Pos02.java @@ -0,0 +1,90 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile Pos02.java + * @run main Pos02 + */ + +public class Pos02 { + + static class Foo { + Foo(X x) {} + Foo(X x, Z z) {} + } + + void testSimple() { + Foo f1 = new Foo<>(1); + Foo f2 = new Foo<>(1); + Foo f3 = new Foo<>(1); + Foo f4 = new Foo<>(1); + + Foo f5 = new Foo<>(1){}; + Foo f6 = new Foo<>(1){}; + Foo f7 = new Foo<>(1){}; + Foo f8 = new Foo<>(1){}; + + Foo f9 = new Foo<>(1, ""); + Foo f10 = new Foo<>(1, ""); + Foo f11 = new Foo<>(1, ""); + Foo f12 = new Foo<>(1, ""); + + Foo f13 = new Foo<>(1, ""){}; + Foo f14 = new Foo<>(1, ""){}; + Foo f15 = new Foo<>(1, ""){}; + Foo f16 = new Foo<>(1, ""){}; + } + + void testQualified() { + Foo f1 = new Pos02.Foo<>(1); + Foo f2 = new Pos02.Foo<>(1); + Foo f3 = new Pos02.Foo<>(1); + Foo f4 = new Pos02.Foo<>(1); + + Foo f5 = new Pos02.Foo<>(1){}; + Foo f6 = new Pos02.Foo<>(1){}; + Foo f7 = new Pos02.Foo<>(1){}; + Foo f8 = new Pos02.Foo<>(1){}; + + Foo f9 = new Pos02.Foo<>(1, ""); + Foo f10 = new Pos02.Foo<>(1, ""); + Foo f11 = new Pos02.Foo<>(1, ""); + Foo f12 = new Pos02.Foo<>(1, ""); + + Foo f13 = new Pos02.Foo<>(1, ""){}; + Foo f14 = new Pos02.Foo<>(1, ""){}; + Foo f15 = new Pos02.Foo<>(1, ""){}; + Foo f16 = new Pos02.Foo<>(1, ""){}; + } + + public static void main(String[] args) { + Pos02 p2 = new Pos02(); + p2.testSimple(); + p2.testQualified(); + } +} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos03.java b/langtools/test/tools/javac/generics/diamond/pos/Pos03.java new file mode 100644 index 00000000000..65b798da072 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/pos/Pos03.java @@ -0,0 +1,114 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile Pos03.java + * @run main Pos03 + * + */ + +public class Pos03 { + + class Foo { + Foo(V x) {} + Foo(V x, Z z) {} + } + + void testSimple() { + Foo f1 = new Foo<>(1); + Foo f2 = new Foo<>(1); + Foo f3 = new Foo<>(1); + Foo f4 = new Foo<>(1); + + Foo f5 = new Foo<>(1){}; + Foo f6 = new Foo<>(1){}; + Foo f7 = new Foo<>(1){}; + Foo f8 = new Foo<>(1){}; + + Foo f9 = new Foo<>(1, ""); + Foo f10 = new Foo<>(1, ""); + Foo f11 = new Foo<>(1, ""); + Foo f12 = new Foo<>(1, ""); + + Foo f13 = new Foo<>(1, ""){}; + Foo f14 = new Foo<>(1, ""){}; + Foo f15 = new Foo<>(1, ""){}; + Foo f16 = new Foo<>(1, ""){}; + } + + void testQualified_1() { + Foo f1 = new Pos03.Foo<>(1); + Foo f2 = new Pos03.Foo<>(1); + Foo f3 = new Pos03.Foo<>(1); + Foo f4 = new Pos03.Foo<>(1); + + Foo f5 = new Pos03.Foo<>(1){}; + Foo f6 = new Pos03.Foo<>(1){}; + Foo f7 = new Pos03.Foo<>(1){}; + Foo f8 = new Pos03.Foo<>(1){}; + + Foo f9 = new Pos03.Foo<>(1, ""); + Foo f10 = new Pos03.Foo<>(1, ""); + Foo f11 = new Pos03.Foo<>(1, ""); + Foo f12 = new Pos03.Foo<>(1, ""); + + Foo f13 = new Pos03.Foo<>(1, ""){}; + Foo f14 = new Pos03.Foo<>(1, ""){}; + Foo f15 = new Pos03.Foo<>(1, ""){}; + Foo f16 = new Pos03.Foo<>(1, ""){}; + } + + void testQualified_2(Pos03 p) { + Foo f1 = p.new Foo<>(1); + Foo f2 = p.new Foo<>(1); + Foo f3 = p.new Foo<>(1); + Foo f4 = p.new Foo<>(1); + + Foo f5 = p.new Foo<>(1){}; + Foo f6 = p.new Foo<>(1){}; + Foo f7 = p.new Foo<>(1){}; + Foo f8 = p.new Foo<>(1){}; + + Foo f9 = p.new Foo<>(1, ""); + Foo f10 = p.new Foo<>(1, ""); + Foo f11 = p.new Foo<>(1, ""); + Foo f12 = p.new Foo<>(1, ""); + + Foo f13 = p.new Foo<>(1, ""){}; + Foo f14 = p.new Foo<>(1, ""){}; + Foo f15 = p.new Foo<>(1, ""){}; + Foo f16 = p.new Foo<>(1, ""){}; + } + + public static void main(String[] args) { + Pos03 p3 = new Pos03<>(); + p3.testSimple(); + p3.testQualified_1(); + p3.testQualified_2(p3); + } +} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos04.java b/langtools/test/tools/javac/generics/diamond/pos/Pos04.java new file mode 100644 index 00000000000..a799c3a4967 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/pos/Pos04.java @@ -0,0 +1,67 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile Pos04.java + * @run main Pos04 + * + */ + +public class Pos04 { + + void test() { + class Foo { + Foo(V x) {} + Foo(V x, Z z) {} + } + Foo p1 = new Foo<>(1); + Foo p2 = new Foo<>(1); + Foo p3 = new Foo<>(1); + Foo p4 = new Foo<>(1); + + Foo p5 = new Foo<>(1){}; + Foo p6 = new Foo<>(1){}; + Foo p7 = new Foo<>(1){}; + Foo p8 = new Foo<>(1){}; + + Foo p9 = new Foo<>(1, ""); + Foo p10 = new Foo<>(1, ""); + Foo p11 = new Foo<>(1, ""); + Foo p12 = new Foo<>(1, ""); + + Foo p13 = new Foo<>(1, ""){}; + Foo p14 = new Foo<>(1, ""){}; + Foo p15 = new Foo<>(1, ""){}; + Foo p16 = new Foo<>(1, ""){}; + } + + public static void main(String[] args) { + Pos04 p4 = new Pos04<>(); + p4.test(); + } +} diff --git a/langtools/test/tools/javac/generics/diamond/pos/Pos05.java b/langtools/test/tools/javac/generics/diamond/pos/Pos05.java new file mode 100644 index 00000000000..8eeed315dc8 --- /dev/null +++ b/langtools/test/tools/javac/generics/diamond/pos/Pos05.java @@ -0,0 +1,45 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6939620 + * + * @summary Switch to 'complex' diamond inference scheme + * @author mcimadamore + * @compile Pos05.java + * + */ + +public class Pos05 { + + static class Foo { + Foo(X x) {} + } + + void m(Foo fi) {} + + void test() { + m(new Foo<>(1)); + } +} From 61ab8e5bfdf093fc96661a0da5ef030ac7d04301 Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Thu, 15 Apr 2010 16:37:16 +0100 Subject: [PATCH 17/64] 6943219: test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java fail in linux Reviewed-by: andrew --- .../www/protocol/https/HttpsURLConnection/DNSIdentities.java | 3 --- .../https/HttpsURLConnection/IPAddressDNSIdentities.java | 3 --- .../https/HttpsURLConnection/IPAddressIPIdentities.java | 3 --- .../www/protocol/https/HttpsURLConnection/IPIdentities.java | 3 --- .../net/www/protocol/https/HttpsURLConnection/Identities.java | 3 --- 5 files changed, 15 deletions(-) diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java index eddbd29e190..4ad52df30ae 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java @@ -657,9 +657,6 @@ public class DNSIdentities { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); sslSocket.setNeedClientAuth(true); - if (sslSocket instanceof SSLSocketImpl) { - ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); - } PrintStream out = new PrintStream(sslSocket.getOutputStream()); diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java index 4cc3a0f0554..21827a28ce1 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java @@ -657,9 +657,6 @@ public class IPAddressDNSIdentities { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); sslSocket.setNeedClientAuth(true); - if (sslSocket instanceof SSLSocketImpl) { - ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); - } PrintStream out = new PrintStream(sslSocket.getOutputStream()); diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java index d30efd81ebf..6e54fc39631 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java @@ -658,9 +658,6 @@ public class IPAddressIPIdentities { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); sslSocket.setNeedClientAuth(true); - if (sslSocket instanceof SSLSocketImpl) { - ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); - } PrintStream out = new PrintStream(sslSocket.getOutputStream()); diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java index 10dc8d8301a..369022c4416 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java @@ -658,9 +658,6 @@ public class IPIdentities { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); sslSocket.setNeedClientAuth(true); - if (sslSocket instanceof SSLSocketImpl) { - ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); - } PrintStream out = new PrintStream(sslSocket.getOutputStream()); diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java index 79224b0ac70..861518141de 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java @@ -657,9 +657,6 @@ public class Identities { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); sslSocket.setNeedClientAuth(true); - if (sslSocket instanceof SSLSocketImpl) { - ((SSLSocketImpl)sslSocket).trySetHostnameVerification("HTTPS"); - } PrintStream out = new PrintStream(sslSocket.getOutputStream()); From d0a7eafe8d7a5b2b7f5310b6532526a5386333a7 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Thu, 15 Apr 2010 17:00:55 -0700 Subject: [PATCH 18/64] 6931676: TEST_BUG: wrong value for bugid in comments Update to the correct bugid Reviewed-by: martin --- jdk/test/java/util/regex/RegExTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/test/java/util/regex/RegExTest.java b/jdk/test/java/util/regex/RegExTest.java index c2748f071c4..bc5ad65aa86 100644 --- a/jdk/test/java/util/regex/RegExTest.java +++ b/jdk/test/java/util/regex/RegExTest.java @@ -32,7 +32,7 @@ * 4872664 4803179 4892980 4900747 4945394 4938995 4979006 4994840 4997476 * 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940 * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133 - * 6350801 6676425 6878475 6919132 + * 6350801 6676425 6878475 6919132 6931676 */ import java.util.regex.*; @@ -3515,7 +3515,7 @@ public class RegExTest { report("NamedGroupCapture"); } - // This is for bug 6969132 + // This is for bug 6919132 private static void nonBmpClassComplementTest() throws Exception { Pattern p = Pattern.compile("\\P{Lu}"); Matcher m = p.matcher(new String(new int[] {0x1d400}, 0, 1)); From 7afbc895a8268795ce2f9086af6abf9ce7f7aa89 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Fri, 16 Apr 2010 10:06:07 +0800 Subject: [PATCH 19/64] 6937978: let keytool -gencert generate the chain Reviewed-by: mullan --- .../classes/sun/security/tools/KeyTool.java | 107 ++++++++++-------- .../sun/security/tools/keytool/selfissued.sh | 28 ++--- 2 files changed, 72 insertions(+), 63 deletions(-) diff --git a/jdk/src/share/classes/sun/security/tools/KeyTool.java b/jdk/src/share/classes/sun/security/tools/KeyTool.java index 3f6eca93218..bd03c696e0e 100644 --- a/jdk/src/share/classes/sun/security/tools/KeyTool.java +++ b/jdk/src/share/classes/sun/security/tools/KeyTool.java @@ -1211,6 +1211,14 @@ public final class KeyTool { X509CertImpl cert = new X509CertImpl(info); cert.sign(privateKey, sigAlgName); dumpCert(cert, out); + for (Certificate ca: keyStore.getCertificateChain(alias)) { + if (ca instanceof X509Certificate) { + X509Certificate xca = (X509Certificate)ca; + if (!isSelfSigned(xca)) { + dumpCert(xca, out); + } + } + } } /** @@ -2640,19 +2648,33 @@ public final class KeyTool { } /** - * Returns true if the given certificate is trusted, false otherwise. + * Locates a signer for a given certificate from a given keystore and + * returns the signer's certificate. + * @param cert the certificate whose signer is searched, not null + * @param ks the keystore to search with, not null + * @return cert itself if it's already inside ks, + * or a certificate inside ks who signs cert, + * or null otherwise. */ - private boolean isTrusted(Certificate cert) - throws Exception - { - if (keyStore.getCertificateAlias(cert) != null) { - return true; // found in own keystore + private static Certificate getTrustedSigner(Certificate cert, KeyStore ks) + throws Exception { + if (ks.getCertificateAlias(cert) != null) { + return cert; } - if (trustcacerts && (caks != null) && - (caks.getCertificateAlias(cert) != null)) { - return true; // found in CA keystore + for (Enumeration aliases = ks.aliases(); + aliases.hasMoreElements(); ) { + String name = aliases.nextElement(); + Certificate trustedCert = ks.getCertificate(name); + if (trustedCert != null) { + try { + cert.verify(trustedCert.getPublicKey()); + return trustedCert; + } catch (Exception e) { + // Not verified, skip to the next one + } + } } - return false; + return null; } /** @@ -2985,48 +3007,33 @@ public final class KeyTool { return replyCerts; } - // do we trust the (root) cert at the top? + // do we trust the cert at the top? Certificate topCert = replyCerts[replyCerts.length-1]; - if (!isTrusted(topCert)) { - boolean verified = false; - Certificate rootCert = null; - if (trustcacerts && (caks!= null)) { - for (Enumeration aliases = caks.aliases(); - aliases.hasMoreElements(); ) { - String name = aliases.nextElement(); - rootCert = caks.getCertificate(name); - if (rootCert != null) { - try { - topCert.verify(rootCert.getPublicKey()); - verified = true; - break; - } catch (Exception e) { - } - } - } + Certificate root = getTrustedSigner(topCert, keyStore); + if (root == null && trustcacerts && caks != null) { + root = getTrustedSigner(topCert, caks); + } + if (root == null) { + System.err.println(); + System.err.println + (rb.getString("Top-level certificate in reply:\n")); + printX509Cert((X509Certificate)topCert, System.out); + System.err.println(); + System.err.print(rb.getString("... is not trusted. ")); + String reply = getYesNoReply + (rb.getString("Install reply anyway? [no]: ")); + if ("NO".equals(reply)) { + return null; } - if (!verified) { - System.err.println(); - System.err.println - (rb.getString("Top-level certificate in reply:\n")); - printX509Cert((X509Certificate)topCert, System.out); - System.err.println(); - System.err.print(rb.getString("... is not trusted. ")); - String reply = getYesNoReply - (rb.getString("Install reply anyway? [no]: ")); - if ("NO".equals(reply)) { - return null; - } - } else { - if (!isSelfSigned((X509Certificate)topCert)) { - // append the (self-signed) root CA cert to the chain - Certificate[] tmpCerts = - new Certificate[replyCerts.length+1]; - System.arraycopy(replyCerts, 0, tmpCerts, 0, - replyCerts.length); - tmpCerts[tmpCerts.length-1] = rootCert; - replyCerts = tmpCerts; - } + } else { + if (root != topCert) { + // append the root CA cert to the chain + Certificate[] tmpCerts = + new Certificate[replyCerts.length+1]; + System.arraycopy(replyCerts, 0, tmpCerts, 0, + replyCerts.length); + tmpCerts[tmpCerts.length-1] = root; + replyCerts = tmpCerts; } } diff --git a/jdk/test/sun/security/tools/keytool/selfissued.sh b/jdk/test/sun/security/tools/keytool/selfissued.sh index e6e06c040b3..ec27a98a6d4 100644 --- a/jdk/test/sun/security/tools/keytool/selfissued.sh +++ b/jdk/test/sun/security/tools/keytool/selfissued.sh @@ -1,5 +1,5 @@ # -# Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2009-2010 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 @@ -22,8 +22,8 @@ # # @test -# @bug 6825352 -# @summary support self-issued certificate in keytool +# @bug 6825352 6937978 +# @summary support self-issued certificate in keytool and let -gencert generate the chain # # @run shell selfissued.sh # @@ -50,20 +50,22 @@ KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit -keystor rm $KS $KT -alias ca -dname CN=CA -genkeypair -$KT -alias me -dname CN=CA -genkeypair +$KT -alias ca1 -dname CN=CA -genkeypair +$KT -alias ca2 -dname CN=CA -genkeypair $KT -alias e1 -dname CN=E1 -genkeypair -$KT -alias e2 -dname CN=E2 -genkeypair -# me signed by ca, self-issued -$KT -alias me -certreq | $KT -alias ca -gencert | $KT -alias me -importcert +# ca signs ca1, ca1 signs ca2, all self-issued +$KT -alias ca1 -certreq | $KT -alias ca -gencert -ext san=dns:ca1 \ + | $KT -alias ca1 -importcert +$KT -alias ca2 -certreq | $KT -alias ca1 -gencert -ext san=dns:ca2 \ + | $KT -alias ca2 -importcert -# Import e1 signed by me, should add me and ca -$KT -alias e1 -certreq | $KT -alias me -gencert | $KT -alias e1 -importcert +# Import e1 signed by ca2, should add ca2 and ca1, at least 3 certs in the chain +$KT -alias e1 -certreq | $KT -alias ca2 -gencert > e1.cert +$KT -alias ca1 -delete +$KT -alias ca2 -delete +cat e1.cert | $KT -alias e1 -importcert $KT -alias e1 -list -v | grep '\[3\]' || { echo Bad E1; exit 1; } -# Import (e2 signed by me,ca,me), should reorder to (e2,me,ca) -( $KT -alias e2 -certreq | $KT -alias me -gencert; $KT -exportcert -alias ca; $KT -exportcert -alias me ) | $KT -alias e2 -importcert -$KT -alias e2 -list -v | grep '\[3\]' || { echo Bad E2; exit 1; } - echo Good From 592e8de4e14bc05ac2e93d0e690bc74c5bce2c3e Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Fri, 16 Apr 2010 10:13:23 +0800 Subject: [PATCH 20/64] 6939248: Jarsigner can't extract Extended Key Usage from Timestamp Reply correctly Reviewed-by: xuelei, mullan --- .../sun/security/tools/TimestampedSigner.java | 45 ++- .../tools/jarsigner/TimestampCheck.java | 294 ++++++++++++++++++ jdk/test/sun/security/tools/jarsigner/ts.sh | 91 ++++++ 3 files changed, 406 insertions(+), 24 deletions(-) create mode 100644 jdk/test/sun/security/tools/jarsigner/TimestampCheck.java create mode 100644 jdk/test/sun/security/tools/jarsigner/ts.sh diff --git a/jdk/src/share/classes/sun/security/tools/TimestampedSigner.java b/jdk/src/share/classes/sun/security/tools/TimestampedSigner.java index 549ed8ea210..a77f2878d1f 100644 --- a/jdk/src/share/classes/sun/security/tools/TimestampedSigner.java +++ b/jdk/src/share/classes/sun/security/tools/TimestampedSigner.java @@ -81,6 +81,11 @@ public final class TimestampedSigner extends ContentSigner { */ private static final String KP_TIMESTAMPING_OID = "1.3.6.1.5.5.7.3.8"; + /* + * Object identifier for extendedKeyUsage extension + */ + private static final String EXTENDED_KEY_USAGE_OID = "2.5.29.37"; + /* * Object identifier for the timestamping access descriptors. */ @@ -357,34 +362,26 @@ public final class TimestampedSigner extends ContentSigner { } // Examine the TSA's certificate (if present) - List keyPurposes = null; - X509Certificate[] certs = tsToken.getCertificates(); - if (certs != null && certs.length > 0) { - // Use certficate from the TSP reply - // Pick out the cert for the TS server, which is the end-entity - // one inside the chain. - for (X509Certificate cert: certs) { - boolean isSigner = false; - for (X509Certificate cert2: certs) { - if (cert != cert2) { - if (cert.getSubjectDN().equals(cert2.getIssuerDN())) { - isSigner = true; - break; - } - } + for (SignerInfo si: tsToken.getSignerInfos()) { + X509Certificate cert = si.getCertificate(tsToken); + if (cert == null) { + // Error, we've already set tsRequestCertificate = true + throw new CertificateException( + "Certificate not included in timestamp token"); + } else { + if (!cert.getCriticalExtensionOIDs().contains( + EXTENDED_KEY_USAGE_OID)) { + throw new CertificateException( + "Certificate is not valid for timestamping"); } - if (!isSigner) { - keyPurposes = cert.getExtendedKeyUsage(); - if (keyPurposes == null || - ! keyPurposes.contains(KP_TIMESTAMPING_OID)) { - throw new CertificateException( - "Certificate is not valid for timestamping"); - } - break; + List keyPurposes = cert.getExtendedKeyUsage(); + if (keyPurposes == null || + ! keyPurposes.contains(KP_TIMESTAMPING_OID)) { + throw new CertificateException( + "Certificate is not valid for timestamping"); } } } - return tsReply.getEncodedToken(); } } diff --git a/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java b/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java new file mode 100644 index 00000000000..18dec0dc726 --- /dev/null +++ b/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java @@ -0,0 +1,294 @@ +/* + * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +import com.sun.net.httpserver.*; +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.math.BigInteger; +import java.net.InetSocketAddress; +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.Signature; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; +import java.util.Calendar; +import sun.security.pkcs.ContentInfo; +import sun.security.pkcs.PKCS7; +import sun.security.pkcs.SignerInfo; +import sun.security.util.DerOutputStream; +import sun.security.util.DerValue; +import sun.security.util.ObjectIdentifier; +import sun.security.x509.AlgorithmId; +import sun.security.x509.X500Name; + +public class TimestampCheck { + static final String TSKS = "tsks"; + static final String JAR = "old.jar"; + + static class Handler implements HttpHandler { + public void handle(HttpExchange t) throws IOException { + int len = 0; + for (String h: t.getRequestHeaders().keySet()) { + if (h.equalsIgnoreCase("Content-length")) { + len = Integer.valueOf(t.getRequestHeaders().get(h).get(0)); + } + } + byte[] input = new byte[len]; + t.getRequestBody().read(input); + + try { + int path = 0; + if (t.getRequestURI().getPath().length() > 1) { + path = Integer.parseInt( + t.getRequestURI().getPath().substring(1)); + } + byte[] output = sign(input, path); + Headers out = t.getResponseHeaders(); + out.set("Content-Type", "application/timestamp-reply"); + + t.sendResponseHeaders(200, output.length); + OutputStream os = t.getResponseBody(); + os.write(output); + } catch (Exception e) { + e.printStackTrace(); + t.sendResponseHeaders(500, 0); + } + t.close(); + } + + /** + * @param input The data to sign + * @param path different cases to simulate, impl on URL path + * 0: normal + * 1: Missing nonce + * 2: Different nonce + * 3: Bad digets octets in messageImprint + * 4: Different algorithmId in messageImprint + * 5: whole chain in cert set + * 6: extension is missing + * 7: extension is non-critical + * 8: extension does not have timestamping + * @returns the signed + */ + byte[] sign(byte[] input, int path) throws Exception { + // Read TSRequest + DerValue value = new DerValue(input); + System.err.println("\nIncoming Request\n==================="); + System.err.println("Version: " + value.data.getInteger()); + DerValue messageImprint = value.data.getDerValue(); + AlgorithmId aid = AlgorithmId.parse( + messageImprint.data.getDerValue()); + System.err.println("AlgorithmId: " + aid); + + BigInteger nonce = null; + while (value.data.available() > 0) { + DerValue v = value.data.getDerValue(); + if (v.tag == DerValue.tag_Integer) { + nonce = v.getBigInteger(); + System.err.println("nonce: " + nonce); + } else if (v.tag == DerValue.tag_Boolean) { + System.err.println("certReq: " + v.getBoolean()); + } + } + + // Write TSResponse + System.err.println("\nResponse\n==================="); + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(new FileInputStream(TSKS), "changeit".toCharArray()); + + String alias = "ts"; + if (path == 6) alias = "tsbad1"; + if (path == 7) alias = "tsbad2"; + if (path == 8) alias = "tsbad3"; + + DerOutputStream statusInfo = new DerOutputStream(); + statusInfo.putInteger(0); + + DerOutputStream token = new DerOutputStream(); + AlgorithmId[] algorithms = {aid}; + Certificate[] chain = ks.getCertificateChain(alias); + X509Certificate[] signerCertificateChain = null; + X509Certificate signer = (X509Certificate)chain[0]; + if (path == 5) { // Only case 5 uses full chain + signerCertificateChain = new X509Certificate[chain.length]; + for (int i=0; i A +rm old.jar +$JAR cvf old.jar A + +# ca is CA +# old is signer for code +# ts is signer for timestamp +# tsbad1 has no extendedKeyUsage +# tsbad2's extendedKeyUsage is non-critical +# tsbad3's extendedKeyUsage has no timestamping + +$KT -alias ca -genkeypair -ext bc -dname CN=CA +$KT -alias old -genkeypair -dname CN=old +$KT -alias ts -genkeypair -dname CN=ts +$KT -alias tsbad1 -genkeypair -dname CN=tsbad1 +$KT -alias tsbad2 -genkeypair -dname CN=tsbad2 +$KT -alias tsbad3 -genkeypair -dname CN=tsbad3 +$KT -alias ts -certreq | \ + $KT -alias ca -gencert -ext eku:critical=ts | \ + $KT -alias ts -importcert +$KT -alias tsbad1 -certreq | \ + $KT -alias ca -gencert | \ + $KT -alias tsbad1 -importcert +$KT -alias tsbad2 -certreq | \ + $KT -alias ca -gencert -ext eku=ts | \ + $KT -alias tsbad2 -importcert +$KT -alias tsbad3 -certreq | \ + $KT -alias ca -gencert -ext eku:critical=cs | \ + $KT -alias tsbad3 -importcert + +$JAVAC -d . ${TESTSRC}/TimestampCheck.java +$JAVA TimestampCheck + From 471633a591151cf8d65d4f95bab2020c8e9ff858 Mon Sep 17 00:00:00 2001 From: Masayoshi Okutsu Date: Fri, 16 Apr 2010 15:53:18 +0900 Subject: [PATCH 21/64] 6609675: [Fmt-Da] DateFormat.parse() on a timezone changes its calendar's timezone Reviewed-by: peytoia --- .../share/classes/java/text/DateFormat.java | 112 +++++++++++++----- .../classes/java/text/SimpleDateFormat.java | 14 +++ 2 files changed, 94 insertions(+), 32 deletions(-) diff --git a/jdk/src/share/classes/java/text/DateFormat.java b/jdk/src/share/classes/java/text/DateFormat.java index 51a43435638..5445678d8dc 100644 --- a/jdk/src/share/classes/java/text/DateFormat.java +++ b/jdk/src/share/classes/java/text/DateFormat.java @@ -53,20 +53,20 @@ import java.util.spi.LocaleServiceProvider; import sun.util.LocaleServiceProviderPool; /** - * DateFormat is an abstract class for date/time formatting subclasses which + * {@code DateFormat} is an abstract class for date/time formatting subclasses which * formats and parses dates or time in a language-independent manner. - * The date/time formatting subclass, such as SimpleDateFormat, allows for + * The date/time formatting subclass, such as {@link SimpleDateFormat}, allows for * formatting (i.e., date -> text), parsing (text -> date), and * normalization. The date is represented as a Date object or * as the milliseconds since January 1, 1970, 00:00:00 GMT. * - *

DateFormat provides many class methods for obtaining default date/time + *

{@code DateFormat} provides many class methods for obtaining default date/time * formatters based on the default or a given locale and a number of formatting - * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More + * styles. The formatting styles include {@link #FULL}, {@link #LONG}, {@link #MEDIUM}, and {@link #SHORT}. More * detail and examples of using these styles are provided in the method * descriptions. * - *

DateFormat helps you to format and parse dates for any locale. + *

{@code DateFormat} helps you to format and parse dates for any locale. * Your code can be completely independent of the locale conventions for * months, days of the week, or even the calendar format: lunar vs. solar. * @@ -86,7 +86,7 @@ import sun.util.LocaleServiceProviderPool; * } * *

To format a date for a different Locale, specify it in the - * call to getDateInstance(). + * call to {@link #getDateInstance(int, Locale) getDateInstance()}. *

  *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
  * 
@@ -94,30 +94,30 @@ import sun.util.LocaleServiceProviderPool; *
  *  myDate = df.parse(myString);
  * 
- *

Use getDateInstance to get the normal date format for that country. + *

Use {@code getDateInstance} to get the normal date format for that country. * There are other static factory methods available. - * Use getTimeInstance to get the time format for that country. - * Use getDateTimeInstance to get a date and time format. You can pass in + * Use {@code getTimeInstance} to get the time format for that country. + * Use {@code getDateTimeInstance} to get a date and time format. You can pass in * different options to these factory methods to control the length of the - * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends + * result; from {@link #SHORT} to {@link #MEDIUM} to {@link #LONG} to {@link #FULL}. The exact result depends * on the locale, but generally: - *

  • SHORT is completely numeric, such as 12.13.52 or 3:30pm - *
  • MEDIUM is longer, such as Jan 12, 1952 - *
  • LONG is longer, such as January 12, 1952 or 3:30:32pm - *
  • FULL is pretty completely specified, such as - * Tuesday, April 12, 1952 AD or 3:30:42pm PST. + *
    • {@link #SHORT} is completely numeric, such as {@code 12.13.52} or {@code 3:30pm} + *
    • {@link #MEDIUM} is longer, such as {@code Jan 12, 1952} + *
    • {@link #LONG} is longer, such as {@code January 12, 1952} or {@code 3:30:32pm} + *
    • {@link #FULL} is pretty completely specified, such as + * {@code Tuesday, April 12, 1952 AD or 3:30:42pm PST}. *
    * *

    You can also set the time zone on the format if you wish. * If you want even more control over the format or parsing, * (or want to give your users more control), - * you can try casting the DateFormat you get from the factory methods - * to a SimpleDateFormat. This will work for the majority - * of countries; just remember to put it in a try block in case you + * you can try casting the {@code DateFormat} you get from the factory methods + * to a {@link SimpleDateFormat}. This will work for the majority + * of countries; just remember to put it in a {@code try} block in case you * encounter an unusual one. * *

    You can also use forms of the parse and format methods with - * ParsePosition and FieldPosition to + * {@link ParsePosition} and {@link FieldPosition} to * allow you to *

    • progressively parse through pieces of a string. *
    • align any particular field, or find out where it is for selection @@ -143,10 +143,13 @@ import sun.util.LocaleServiceProviderPool; public abstract class DateFormat extends Format { /** - * The calendar that DateFormat uses to produce the time field - * values needed to implement date and time formatting. Subclasses should - * initialize this to a calendar appropriate for the locale associated with - * this DateFormat. + * The {@link Calendar} instance used for calculating the date-time fields + * and the instant of time. This field is used for both formatting and + * parsing. + * + *

      Subclasses should initialize this field to a {@link Calendar} + * appropriate for the {@link Locale} associated with this + * DateFormat. * @serial */ protected Calendar calendar; @@ -358,15 +361,21 @@ public abstract class DateFormat extends Format { /** * Parse a date/time string according to the given parse position. For - * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date - * that is equivalent to Date(837039928046). + * example, a time text {@code "07/10/96 4:5 PM, PDT"} will be parsed into a {@code Date} + * that is equivalent to {@code Date(837039900000L)}. * *

      By default, parsing is lenient: If the input is not in the form used * by this object's format method but can still be parsed as a date, then * the parse succeeds. Clients may insist on strict adherence to the - * format by calling setLenient(false). + * format by calling {@link #setLenient(boolean) setLenient(false)}. * - * @see java.text.DateFormat#setLenient(boolean) + *

      This parsing operation uses the {@link #calendar} to produce + * a {@code Date}. As a result, the {@code calendar}'s date-time + * fields and the {@code TimeZone} value may have been + * overwritten, depending on subclass implementations. Any {@code + * TimeZone} value that has previously been set by a call to + * {@link #setTimeZone(java.util.TimeZone) setTimeZone} may need + * to be restored for further operations. * * @param source The date/time string to be parsed * @@ -374,7 +383,7 @@ public abstract class DateFormat extends Format { * output, the position at which parsing terminated, or the * start position if the parse failed. * - * @return A Date, or null if the input could not be parsed + * @return A {@code Date}, or {@code null} if the input could not be parsed */ public abstract Date parse(String source, ParsePosition pos); @@ -569,7 +578,12 @@ public abstract class DateFormat extends Format { /** * Set the calendar to be used by this date format. Initially, the default * calendar for the specified or default locale is used. - * @param newCalendar the new Calendar to be used by the date format + * + *

      Any {@link java.util.TimeZone TimeZone} and {@linkplain + * #isLenient() leniency} values that have previously been set are + * overwritten by {@code newCalendar}'s values. + * + * @param newCalendar the new {@code Calendar} to be used by the date format */ public void setCalendar(Calendar newCalendar) { @@ -578,6 +592,7 @@ public abstract class DateFormat extends Format { /** * Gets the calendar associated with this date/time formatter. + * * @return the calendar associated with this date/time formatter. */ public Calendar getCalendar() @@ -605,7 +620,18 @@ public abstract class DateFormat extends Format { } /** - * Sets the time zone for the calendar of this DateFormat object. + * Sets the time zone for the calendar of this {@code DateFormat} object. + * This method is equivalent to the following call. + *

      +     *  getCalendar().setTimeZone(zone)
      +     * 
      + * + *

      The {@code TimeZone} set by this method is overwritten by a + * {@link #setCalendar(java.util.Calendar) setCalendar} call. + * + *

      The {@code TimeZone} set by this method may be overwritten as + * a result of a call to the parse method. + * * @param zone the given new time zone. */ public void setTimeZone(TimeZone zone) @@ -615,6 +641,11 @@ public abstract class DateFormat extends Format { /** * Gets the time zone. + * This method is equivalent to the following call. + *

      +     *  getCalendar().getTimeZone()
      +     * 
      + * * @return the time zone associated with the calendar of DateFormat. */ public TimeZone getTimeZone() @@ -627,8 +658,17 @@ public abstract class DateFormat extends Format { * lenient parsing, the parser may use heuristics to interpret inputs that * do not precisely match this object's format. With strict parsing, * inputs must match this object's format. - * @param lenient when true, parsing is lenient - * @see java.util.Calendar#setLenient + * + *

      This method is equivalent to the following call. + *

      +     *  getCalendar().setLenient(lenient)
      +     * 
      + * + *

      This leniency value is overwritten by a call to {@link + * #setCalendar(java.util.Calendar) setCalendar()}. + * + * @param lenient when {@code true}, parsing is lenient + * @see java.util.Calendar#setLenient(boolean) */ public void setLenient(boolean lenient) { @@ -637,6 +677,14 @@ public abstract class DateFormat extends Format { /** * Tell whether date/time parsing is to be lenient. + * This method is equivalent to the following call. + *

      +     *  getCalendar().isLenient()
      +     * 
      + * + * @return {@code true} if the {@link #calendar} is lenient; + * {@code false} otherwise. + * @see java.util.Calendar#isLenient() */ public boolean isLenient() { diff --git a/jdk/src/share/classes/java/text/SimpleDateFormat.java b/jdk/src/share/classes/java/text/SimpleDateFormat.java index 1dfa42ea5f2..eacfbddfe6b 100644 --- a/jdk/src/share/classes/java/text/SimpleDateFormat.java +++ b/jdk/src/share/classes/java/text/SimpleDateFormat.java @@ -1235,6 +1235,20 @@ public class SimpleDateFormat extends DateFormat { * changed, the error index of pos is set to the index of * the character where the error occurred, and null is returned. * + *

      This parsing operation uses the {@link DateFormat#calendar + * calendar} to produce a {@code Date}. All of the {@code + * calendar}'s date-time fields are {@linkplain Calendar#clear() + * cleared} before parsing, and the {@code calendar}'s default + * values of the date-time fields are used for any missing + * date-time information. For example, the year value of the + * parsed {@code Date} is 1970 with {@link GregorianCalendar} if + * no year value is given from the parsing operation. The {@code + * TimeZone} value may be overwritten, depending on the given + * pattern and the time zone value in {@code text}. Any {@code + * TimeZone} value that has previously been set by a call to + * {@link #setTimeZone(java.util.TimeZone) setTimeZone} may need + * to be restored for further operations. + * * @param text A String, part of which should be parsed. * @param pos A ParsePosition object with index and error * index information as described above. From 41515b3a35f4ef7ffb2c60f4818c4930b010e041 Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Fri, 16 Apr 2010 09:54:13 +0100 Subject: [PATCH 22/64] 6944361: Missing CKR_ values in PKCS11Exception Allow native NSS errors to be observed and correctly reported Reviewed-by: wetmore, valeriep --- .../classes/sun/security/pkcs11/wrapper/PKCS11Exception.java | 4 ++++ jdk/src/share/classes/sun/security/x509/X509Key.java | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java b/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java index b66e23a73de..4d00cf88ec5 100644 --- a/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java +++ b/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java @@ -148,6 +148,7 @@ public class PKCS11Exception extends Exception { 0x00000115, 0x00000120, 0x00000121, + 0x00000130, 0x00000150, 0x00000160, 0x00000170, @@ -156,6 +157,7 @@ public class PKCS11Exception extends Exception { 0x00000191, 0x000001A0, 0x000001A1, + 0x00000200, 0x80000000, }; String[] errorMessages = new String[] { @@ -234,6 +236,7 @@ public class PKCS11Exception extends Exception { "CKR_WRAPPING_KEY_TYPE_INCONSISTENT", "CKR_RANDOM_SEED_NOT_SUPPORTED", "CKR_RANDOM_NO_RNG", + "CKR_DOMAIN_PARAMS_INVALID", "CKR_BUFFER_TOO_SMALL", "CKR_SAVED_STATE_INVALID", "CKR_INFORMATION_SENSITIVE", @@ -242,6 +245,7 @@ public class PKCS11Exception extends Exception { "CKR_CRYPTOKI_ALREADY_INITIALIZED", "CKR_MUTEX_BAD", "CKR_MUTEX_NOT_LOCKED", + "CKR_FUNCTION_REJECTED", "CKR_VENDOR_DEFINED", }; errorMap = new HashMap(); diff --git a/jdk/src/share/classes/sun/security/x509/X509Key.java b/jdk/src/share/classes/sun/security/x509/X509Key.java index 04855b19b57..3db634e5f03 100644 --- a/jdk/src/share/classes/sun/security/x509/X509Key.java +++ b/jdk/src/share/classes/sun/security/x509/X509Key.java @@ -171,7 +171,7 @@ public class X509Key implements PublicKey { in.data.getUnalignedBitString()); } catch (InvalidKeyException e) { - throw new IOException("subject key, " + e.getMessage()); + throw new IOException("subject key, " + e.getMessage(), e); } if (in.data.available() != 0) @@ -224,7 +224,7 @@ public class X509Key implements PublicKey { } catch (NoSuchAlgorithmException e) { // Return generic X509Key with opaque key data (see below) } catch (InvalidKeySpecException e) { - throw new InvalidKeyException(e.getMessage()); + throw new InvalidKeyException(e.getMessage(), e); } /* From 3157c37cf5fd78800f9495ba5b6f7fc99bb9734a Mon Sep 17 00:00:00 2001 From: Pavel Porvatov Date: Fri, 16 Apr 2010 13:05:14 +0400 Subject: [PATCH 23/64] 6922179: SynthTextPaneUI.installUI() doesn't set component to opaque as specified Reviewed-by: alexp --- .../share/classes/javax/swing/plaf/basic/BasicTextUI.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java index 7d564eeccb5..8d029110362 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java @@ -756,9 +756,8 @@ public abstract class BasicTextUI extends TextUI implements ViewFactory { * things. *

        *
      1. - * Sets the associated component to opaque (can be changed - * easily by a subclass or on JTextComponent directly), - * which is the most common case. This will cause the + * Sets the associated component to opaque if the opaque property + * has not already been set by the client program. This will cause the * component's background color to be painted. *
      2. * Installs the default caret and highlighter into the From 4d2c11649f535beac9c37bc17432a4b5edf559e3 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Mon, 19 Apr 2010 14:48:46 -0700 Subject: [PATCH 24/64] 6943941: Rebranding issues with some tests in jdk/test/java/util Reviewed-by: ohair --- jdk/test/java/util/Locale/Bug4175998Test.java | 10 ---------- jdk/test/java/util/ResourceBundle/Bug4083270Test.java | 10 ---------- jdk/test/java/util/ResourceBundle/Bug4165815Test.java | 10 ---------- jdk/test/java/util/ResourceBundle/Bug4168625Class.java | 10 ---------- .../java/util/ResourceBundle/Bug4168625Getter.java | 10 ---------- .../java/util/ResourceBundle/Bug4168625Resource.java | 10 ---------- .../java/util/ResourceBundle/Bug4168625Resource2.java | 10 ---------- .../util/ResourceBundle/Bug4168625Resource2_en_US.java | 10 ---------- .../java/util/ResourceBundle/Bug4168625Resource3.java | 10 ---------- .../util/ResourceBundle/Bug4168625Resource3_en.java | 10 ---------- .../util/ResourceBundle/Bug4168625Resource3_en_CA.java | 10 ---------- .../util/ResourceBundle/Bug4168625Resource3_en_IE.java | 10 ---------- .../util/ResourceBundle/Bug4168625Resource3_en_US.java | 10 ---------- jdk/test/java/util/ResourceBundle/Bug4177489Test.java | 10 ---------- .../java/util/ResourceBundle/Bug4177489_Resource.java | 10 ---------- .../util/ResourceBundle/Bug4177489_Resource_jf.java | 10 ---------- 16 files changed, 160 deletions(-) diff --git a/jdk/test/java/util/Locale/Bug4175998Test.java b/jdk/test/java/util/Locale/Bug4175998Test.java index 37ebee4860e..329a3bfa733 100644 --- a/jdk/test/java/util/Locale/Bug4175998Test.java +++ b/jdk/test/java/util/Locale/Bug4175998Test.java @@ -32,16 +32,6 @@ * * (C) Copyright IBM Corp. 1998 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4083270Test.java b/jdk/test/java/util/ResourceBundle/Bug4083270Test.java index e6a7337d799..be5e29a44e2 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4083270Test.java +++ b/jdk/test/java/util/ResourceBundle/Bug4083270Test.java @@ -31,16 +31,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4165815Test.java b/jdk/test/java/util/ResourceBundle/Bug4165815Test.java index ec21bdab361..a6add0df273 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4165815Test.java +++ b/jdk/test/java/util/ResourceBundle/Bug4165815Test.java @@ -34,16 +34,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Class.java b/jdk/test/java/util/ResourceBundle/Bug4168625Class.java index dcb8996117f..5484c66f5e8 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Class.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Class.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java b/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java index 77ddae197d6..4c16445c197 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java index a035e6c98ce..0c367f1b0ab 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java index 9aac1c4e808..c7c08df65b9 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java index cc0c10dd657..9da86c653e1 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java index d98c3cc9181..a9ba771419d 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java index d8ea44e0171..0afaace2a62 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java index b560f5f93b6..cbdf3cdb052 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java index 85d744f81e0..6a584240fb3 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java index 5c264c49a89..270d35df0ae 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java +++ b/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4177489Test.java b/jdk/test/java/util/ResourceBundle/Bug4177489Test.java index 93c9683e75d..98c3a48967f 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4177489Test.java +++ b/jdk/test/java/util/ResourceBundle/Bug4177489Test.java @@ -32,16 +32,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java b/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java index bf9833a6d4b..35112f4effd 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java +++ b/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. diff --git a/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java b/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java index 9bfce2bb21c..e0f9f497369 100644 --- a/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java +++ b/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java @@ -25,16 +25,6 @@ * * (C) Copyright IBM Corp. 1999 - All Rights Reserved * - * Portions Copyright 2007 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - * * The original version of this source code and documentation is * copyrighted and owned by IBM. These materials are provided * under terms of a License Agreement between IBM and Sun. From 50654ebc2b33d3bd8cfa460f88c0beac19aad8dd Mon Sep 17 00:00:00 2001 From: Andreas Kohn Date: Mon, 19 Apr 2010 18:58:31 -0400 Subject: [PATCH 25/64] 6944822: Fix for 6938627 exposes problem with hard-coded buffer sizes Make tmpdir buffer sizes MAX_PATH+1 Reviewed-by: dholmes, coleenp --- hotspot/src/os/linux/vm/attachListener_linux.cpp | 2 +- hotspot/src/os/linux/vm/os_linux.cpp | 2 +- hotspot/src/os/solaris/vm/attachListener_solaris.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hotspot/src/os/linux/vm/attachListener_linux.cpp b/hotspot/src/os/linux/vm/attachListener_linux.cpp index 93a85678688..7999828fa74 100644 --- a/hotspot/src/os/linux/vm/attachListener_linux.cpp +++ b/hotspot/src/os/linux/vm/attachListener_linux.cpp @@ -461,7 +461,7 @@ bool AttachListener::is_init_trigger() { if (init_at_startup() || is_initialized()) { return false; // initialized at startup or already initialized } - char fn[128]; + char fn[PATH_MAX+1]; sprintf(fn, ".attach_pid%d", os::current_process_id()); int ret; struct stat64 st; diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp index d38f3866c72..b7d609e315f 100644 --- a/hotspot/src/os/linux/vm/os_linux.cpp +++ b/hotspot/src/os/linux/vm/os_linux.cpp @@ -2305,7 +2305,7 @@ void linux_wrap_code(char* base, size_t size) { return; } - char buf[40]; + char buf[PATH_MAX+1]; int num = Atomic::add(1, &cnt); snprintf(buf, sizeof(buf), "%s/hs-vm-%d-%d", diff --git a/hotspot/src/os/solaris/vm/attachListener_solaris.cpp b/hotspot/src/os/solaris/vm/attachListener_solaris.cpp index c3f73da353c..6ba1a897dff 100644 --- a/hotspot/src/os/solaris/vm/attachListener_solaris.cpp +++ b/hotspot/src/os/solaris/vm/attachListener_solaris.cpp @@ -592,7 +592,7 @@ bool AttachListener::is_init_trigger() { if (init_at_startup() || is_initialized()) { return false; // initialized at startup or already initialized } - char fn[128]; + char fn[PATH_MAX+1]; sprintf(fn, ".attach_pid%d", os::current_process_id()); int ret; struct stat64 st; From 8f45ed22995f09ce62f70f8ac9f9fc7703908528 Mon Sep 17 00:00:00 2001 From: Yuka Kamiya Date: Tue, 20 Apr 2010 15:01:31 +0900 Subject: [PATCH 26/64] 6945238: (tz) Support tzdata2010i Reviewed-by: okutsu --- jdk/make/sun/javazic/tzdata/VERSION | 2 +- jdk/make/sun/javazic/tzdata/africa | 38 ++++++++++++++++- jdk/make/sun/javazic/tzdata/asia | 53 ++++++++++++++++++++++-- jdk/make/sun/javazic/tzdata/southamerica | 25 ++++++++++- 4 files changed, 109 insertions(+), 9 deletions(-) diff --git a/jdk/make/sun/javazic/tzdata/VERSION b/jdk/make/sun/javazic/tzdata/VERSION index 5575f59019b..cf8117c57a2 100644 --- a/jdk/make/sun/javazic/tzdata/VERSION +++ b/jdk/make/sun/javazic/tzdata/VERSION @@ -21,4 +21,4 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # -tzdata2010g +tzdata2010i diff --git a/jdk/make/sun/javazic/tzdata/africa b/jdk/make/sun/javazic/tzdata/africa index 2032f3862d7..ca7ccd3e269 100644 --- a/jdk/make/sun/javazic/tzdata/africa +++ b/jdk/make/sun/javazic/tzdata/africa @@ -702,6 +702,21 @@ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou # http://www.worldtimezone.com/dst_news/dst_news_morocco03.html # +# From Steffen Thorsen (2010-04-13): +# Several news media in Morocco report that the Ministry of Modernization +# of Public Sectors has announced that Morocco will have DST from +# 2010-05-02 to 2010-08-08. +# +# Example: +# +# http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html +# +# (French) +# Our page: +# +# http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html +# + # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Morocco 1939 only - Sep 12 0:00 1:00 S @@ -723,6 +738,8 @@ Rule Morocco 2008 only - Jun 1 0:00 1:00 S Rule Morocco 2008 only - Sep 1 0:00 0 - Rule Morocco 2009 only - Jun 1 0:00 1:00 S Rule Morocco 2009 only - Aug 21 0:00 0 - +Rule Morocco 2010 only - May 2 0:00 1:00 S +Rule Morocco 2010 only - Aug 8 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26 0:00 Morocco WE%sT 1984 Mar 16 @@ -964,6 +981,24 @@ Zone Africa/Lome 0:04:52 - LMT 1893 # Therefore, the standard time will be kept unchanged the whole year long." # So foregoing DST seems to be an exception (albeit one that may be repeated in the future). +# From Alexander Krivenyshev (2010-03-27): +# According to some news reports Tunis confirmed not to use DST in 2010 +# +# (translation): +# "The Tunisian government has decided to abandon DST, which was scheduled on +# Sunday... +# Tunisian authorities had suspended the DST for the first time last year also +# coincided with the month of Ramadan..." +# +# (in Arabic) +# +# http://www.moheet.com/show_news.aspx?nid=358861&pg=1 +# +# http://www.almadenahnews.com/newss/news.php?c=118&id=38036 +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S Rule Tunisia 1939 only - Nov 18 23:00s 0 - @@ -990,8 +1025,7 @@ Rule Tunisia 2005 only - May 1 0:00s 1:00 S Rule Tunisia 2005 only - Sep 30 1:00s 0 - Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 - -Rule Tunisia 2010 max - Mar lastSun 2:00s 1:00 S -Rule Tunisia 2010 max - Oct lastSun 2:00s 0 - + # Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's # more precise 0:09:21. # Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11. diff --git a/jdk/make/sun/javazic/tzdata/asia b/jdk/make/sun/javazic/tzdata/asia index 54051000939..3b378b419a6 100644 --- a/jdk/make/sun/javazic/tzdata/asia +++ b/jdk/make/sun/javazic/tzdata/asia @@ -588,6 +588,28 @@ Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30 # was still controlled by Japan. This is hard to believe, but we don't # have any other information. +# From smallufo (2010-04-03): +# According to Taiwan's CWB, +# +# http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm +# +# Taipei has DST in 1979 between July 1st and Sep 30. + +# From Arthur David Olson (2010-04-07): +# Here's Google's translation of the table at the bottom of the "summert.htm" page: +# Decade Name Start and end date +# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time May 1 to September 30 +# 41 years of the Republic of China (AD 1952) Daylight Saving Time March 1 to October 31 +# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time April 1 to October 31 +# In the 44 years to 45 years (AD 1955-1956 years) Daylight Saving Time April 1 to September 30 +# Republic of China 46 years to 48 years (AD 1957-1959) Summer Time April 1 to September 30 +# Republic of China 49 years to 50 years (AD 1960-1961) Summer Time June 1 to September 30 +# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time +# Republic of China 63 years to 64 years (1974-1975 AD) Daylight Saving Time April 1 to September 30 +# Republic of China 65 years to 67 years (1976-1978 AD) Stop Daylight Saving Time +# Republic of China 68 years (AD 1979) Daylight Saving Time July 1 to September 30 +# Republic of China since 69 years (AD 1980) Stop Daylight Saving Time + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Taiwan 1945 1951 - May 1 0:00 1:00 D Rule Taiwan 1945 1951 - Oct 1 0:00 0 S @@ -598,8 +620,9 @@ Rule Taiwan 1955 1961 - Oct 1 0:00 0 S Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 D Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 D Rule Taiwan 1974 1975 - Oct 1 0:00 0 S -Rule Taiwan 1980 only - Jun 30 0:00 1:00 D -Rule Taiwan 1980 only - Sep 30 0:00 0 S +Rule Taiwan 1979 only - Jun 30 0:00 1:00 D +Rule Taiwan 1979 only - Sep 30 0:00 0 S + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Taipei 8:06:00 - LMT 1896 # or Taibei or T'ai-pei 8:00 Taiwan C%sT @@ -1934,13 +1957,35 @@ Zone Asia/Muscat 3:54:20 - LMT 1920 # [T]he German Consulate General in Karachi reported me today that Pakistan # will go back to standard time on 1st of November. +# From Steffen Thorsen (2010-03-26): +# Steffen Thorsen wrote: +# > On Thursday (2010-03-25) it was announced that DST would start in +# > Pakistan on 2010-04-01. +# > +# > Then today, the president said that they might have to revert the +# > decision if it is not supported by the parliament. So at the time +# > being, it seems unclear if DST will be actually observed or not - but +# > April 1 could be a more likely date than April 15. +# Now, it seems that the decision to not observe DST in final: +# +# "Govt Withdraws Plan To Advance Clocks" +# +# http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041 +# +# +# "People laud PM's announcement to end DST" +# +# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2 +# + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 - Rule Pakistan 2008 only - Jun 1 0:00 1:00 S Rule Pakistan 2008 only - Nov 1 0:00 0 - -Rule Pakistan 2009 max - Apr 15 0:00 1:00 S -Rule Pakistan 2009 max - Nov 1 0:00 0 - +Rule Pakistan 2009 only - Apr 15 0:00 1:00 S +Rule Pakistan 2009 only - Nov 1 0:00 0 - + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Karachi 4:28:12 - LMT 1907 5:30 - IST 1942 Sep diff --git a/jdk/make/sun/javazic/tzdata/southamerica b/jdk/make/sun/javazic/tzdata/southamerica index 76f1acaf005..44eecceeae8 100644 --- a/jdk/make/sun/javazic/tzdata/southamerica +++ b/jdk/make/sun/javazic/tzdata/southamerica @@ -459,6 +459,27 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # of the country calls it "ART". # ... +# From Alexander Krivenyshev (2010-04-09): +# According to news reports from El Diario de la Republica Province San +# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time +# after April 11, 2010--will continue to have same time as rest of +# Argentina (UTC-3) (no DST). +# +# Confirmaron la prórroga del huso horario de verano (Spanish) +# +# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9 +# +# or (some English translation): +# +# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html +# + +# From Mariano Absatz (2010-04-12): +# yes...I can confirm this...and given that San Luis keeps calling +# UTC-03:00 "summer time", we should't just let San Luis go back to "Arg" +# rules...San Luis is still using "Western ARgentina Time" and it got +# stuck on Summer daylight savings time even though the summer is over. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] # # Buenos Aires (BA), Capital Federal (CF), @@ -592,8 +613,8 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 # # San Luis (SL) -Rule SanLuis 2008 max - Mar Sun>=8 0:00 0 - -Rule SanLuis 2007 max - Oct Sun>=8 0:00 1:00 S +Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - +Rule SanLuis 2007 2009 - Oct Sun>=8 0:00 1:00 S Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May From 8403ec67a34f0c530596cc74453353901338690d Mon Sep 17 00:00:00 2001 From: Andrew Brygin Date: Tue, 20 Apr 2010 11:06:47 +0400 Subject: [PATCH 27/64] 6936389: FontManager.fileCloser may cause memory leak in applets Reviewed-by: igor, prr, ant --- .../classes/sun/font/SunFontManager.java | 1 + .../share/classes/sun/java2d/Disposer.java | 1 + .../sun/java2d/loops/GraphicsPrimitive.java | 4 +- .../solaris/classes/sun/awt/X11/XToolkit.java | 41 ++-- .../classes/sun/awt/X11GraphicsDevice.java | 31 ++- .../classes/sun/awt/motif/MToolkit.java | 38 +-- .../classes/sun/awt/windows/WToolkit.java | 36 ++- .../java2d/d3d/D3DScreenUpdateManager.java | 18 +- .../sun/awt/font/ClassLoaderLeakTest.java | 220 ++++++++++++++++++ 9 files changed, 319 insertions(+), 71 deletions(-) create mode 100644 jdk/test/sun/awt/font/ClassLoaderLeakTest.java diff --git a/jdk/src/share/classes/sun/font/SunFontManager.java b/jdk/src/share/classes/sun/font/SunFontManager.java index 923f1cc475b..197397a1bbf 100644 --- a/jdk/src/share/classes/sun/font/SunFontManager.java +++ b/jdk/src/share/classes/sun/font/SunFontManager.java @@ -2310,6 +2310,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { tgn != null; tg = tgn, tgn = tg.getParent()); fileCloser = new Thread(tg, fileCloserRunnable); + fileCloser.setContextClassLoader(null); Runtime.getRuntime().addShutdownHook(fileCloser); return null; } diff --git a/jdk/src/share/classes/sun/java2d/Disposer.java b/jdk/src/share/classes/sun/java2d/Disposer.java index 4433a278d5d..5bca4609e74 100644 --- a/jdk/src/share/classes/sun/java2d/Disposer.java +++ b/jdk/src/share/classes/sun/java2d/Disposer.java @@ -84,6 +84,7 @@ public class Disposer implements Runnable { tg = tgn, tgn = tg.getParent()); Thread t = new Thread(tg, disposerInstance, "Java2D Disposer"); + t.setContextClassLoader(null); t.setDaemon(true); t.setPriority(Thread.MAX_PRIORITY); t.start(); diff --git a/jdk/src/share/classes/sun/java2d/loops/GraphicsPrimitive.java b/jdk/src/share/classes/sun/java2d/loops/GraphicsPrimitive.java index adc3fda4862..31cccc58c5c 100644 --- a/jdk/src/share/classes/sun/java2d/loops/GraphicsPrimitive.java +++ b/jdk/src/share/classes/sun/java2d/loops/GraphicsPrimitive.java @@ -417,7 +417,9 @@ public abstract class GraphicsPrimitive { public static void setShutdownHook() { AccessController.doPrivileged(new PrivilegedAction() { public Object run() { - Runtime.getRuntime().addShutdownHook(new TraceReporter()); + TraceReporter t = new TraceReporter(); + t.setContextClassLoader(null); + Runtime.getRuntime().addShutdownHook(t); return null; } }); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java index 8676c6affb9..710d8ac8a10 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -307,22 +307,35 @@ public final class XToolkit extends UNIXToolkit implements Runnable { } finally { awtUnlock(); } - - Runtime.getRuntime().addShutdownHook(new Thread() { - public void run() { - XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); - if (peer != null) { - peer.dispose(); - } - if (xs != null) { - ((XAWTXSettings)xs).dispose(); - } - freeXKB(); - if (log.isLoggable(PlatformLogger.FINE)) { - dumpPeers(); + PrivilegedAction a = new PrivilegedAction() { + public Void run() { + ThreadGroup mainTG = Thread.currentThread().getThreadGroup(); + ThreadGroup parentTG = mainTG.getParent(); + while (parentTG != null) { + mainTG = parentTG; + parentTG = mainTG.getParent(); } + Thread shutdownThread = new Thread(mainTG, "XToolkt-Shutdown-Thread") { + public void run() { + XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); + if (peer != null) { + peer.dispose(); + } + if (xs != null) { + ((XAWTXSettings)xs).dispose(); + } + freeXKB(); + if (log.isLoggable(PlatformLogger.FINE)) { + dumpPeers(); + } + } + }; + shutdownThread.setContextClassLoader(null); + Runtime.getRuntime().addShutdownHook(shutdownThread); + return null; } - }); + }; + AccessController.doPrivileged(a); } static String getCorrectXIDString(String val) { diff --git a/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java b/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java index 115320bb056..cd4763033ba 100644 --- a/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java +++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java @@ -32,6 +32,8 @@ import java.awt.GraphicsDevice; import java.awt.GraphicsConfiguration; import java.awt.Rectangle; import java.awt.Window; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.HashSet; import java.util.HashMap; @@ -402,17 +404,30 @@ public class X11GraphicsDevice // is already in the original DisplayMode at that time, this // hook will have no effect) shutdownHookRegistered = true; - Runnable r = new Runnable() { - public void run() { - Window old = getFullScreenWindow(); - if (old != null) { - exitFullScreenExclusive(old); - setDisplayMode(origDisplayMode); + PrivilegedAction a = new PrivilegedAction() { + public Void run() { + ThreadGroup mainTG = Thread.currentThread().getThreadGroup(); + ThreadGroup parentTG = mainTG.getParent(); + while (parentTG != null) { + mainTG = parentTG; + parentTG = mainTG.getParent(); } + Runnable r = new Runnable() { + public void run() { + Window old = getFullScreenWindow(); + if (old != null) { + exitFullScreenExclusive(old); + setDisplayMode(origDisplayMode); + } + } + }; + Thread t = new Thread(mainTG, r,"Display-Change-Shutdown-Thread-"+screen); + t.setContextClassLoader(null); + Runtime.getRuntime().addShutdownHook(t); + return null; } }; - Thread t = new Thread(r,"Display-Change-Shutdown-Thread-"+screen); - Runtime.getRuntime().addShutdownHook(t); + AccessController.doPrivileged(a); } // switch to the new DisplayMode diff --git a/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java b/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java index 318897a4466..1c48f57b3e4 100644 --- a/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/motif/MToolkit.java @@ -156,27 +156,27 @@ public class MToolkit extends UNIXToolkit implements Runnable { Thread toolkitThread = new Thread(this, "AWT-Motif"); toolkitThread.setPriority(Thread.NORM_PRIORITY + 1); toolkitThread.setDaemon(true); - ThreadGroup mainTG = (ThreadGroup)AccessController.doPrivileged( - new PrivilegedAction() { - public Object run() { - ThreadGroup currentTG = - Thread.currentThread().getThreadGroup(); - ThreadGroup parentTG = currentTG.getParent(); - while (parentTG != null) { - currentTG = parentTG; - parentTG = currentTG.getParent(); - } - return currentTG; - } - }); - Runtime.getRuntime().addShutdownHook( - new Thread(mainTG, new Runnable() { - public void run() { - shutdown(); + PrivilegedAction a = new PrivilegedAction() { + public Void run() { + ThreadGroup mainTG = Thread.currentThread().getThreadGroup(); + ThreadGroup parentTG = mainTG.getParent(); + + while (parentTG != null) { + mainTG = parentTG; + parentTG = mainTG.getParent(); } - }, "Shutdown-Thread") - ); + Thread shutdownThread = new Thread(mainTG, new Runnable() { + public void run() { + shutdown(); + } + }, "Shutdown-Thread"); + shutdownThread.setContextClassLoader(null); + Runtime.getRuntime().addShutdownHook(shutdownThread); + return null; + } + }; + AccessController.doPrivileged(a); /* * Fix for 4701990. diff --git a/jdk/src/windows/classes/sun/awt/windows/WToolkit.java b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java index b822cf654d2..002da43e74a 100644 --- a/jdk/src/windows/classes/sun/awt/windows/WToolkit.java +++ b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java @@ -266,27 +266,25 @@ public class WToolkit extends SunToolkit implements Runnable { boolean startPump = init(); if (startPump) { - ThreadGroup mainTG = (ThreadGroup)AccessController.doPrivileged( - new PrivilegedAction() { - public Object run() { - ThreadGroup currentTG = - Thread.currentThread().getThreadGroup(); - ThreadGroup parentTG = currentTG.getParent(); - while (parentTG != null) { - currentTG = parentTG; - parentTG = currentTG.getParent(); - } - return currentTG; + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ThreadGroup currentTG = + Thread.currentThread().getThreadGroup(); + ThreadGroup parentTG = currentTG.getParent(); + while (parentTG != null) { + currentTG = parentTG; + parentTG = currentTG.getParent(); } + Thread shutdown = new Thread(currentTG, new Runnable() { + public void run() { + shutdown(); + } + }); + shutdown.setContextClassLoader(null); + Runtime.getRuntime().addShutdownHook(shutdown); + return null; + } }); - - Runtime.getRuntime().addShutdownHook( - new Thread(mainTG, new Runnable() { - public void run() { - shutdown(); - } - }) - ); } synchronized(this) { diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java index 53ae895ddfe..db506b49dd5 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java @@ -101,17 +101,15 @@ public class D3DScreenUpdateManager extends ScreenUpdateManager currentTG = parentTG; parentTG = currentTG.getParent(); } + Thread shutdown = new Thread(currentTG, new Runnable() { + public void run() { + done = true; + wakeUpUpdateThread(); + } + }); + shutdown.setContextClassLoader(null); try { - Runtime.getRuntime().addShutdownHook( - new Thread(currentTG, - new Runnable() { - public void run() { - done = true; - wakeUpUpdateThread(); - } - } - ) - ); + Runtime.getRuntime().addShutdownHook(shutdown); } catch (Exception e) { done = true; } diff --git a/jdk/test/sun/awt/font/ClassLoaderLeakTest.java b/jdk/test/sun/awt/font/ClassLoaderLeakTest.java new file mode 100644 index 00000000000..9696b56e350 --- /dev/null +++ b/jdk/test/sun/awt/font/ClassLoaderLeakTest.java @@ -0,0 +1,220 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ +/** + * @test + * @bug 6936389 + * + * @summary Test verifes that LogManager shutdown hook does not cause + * an application classloader leaks. + * + * @run main/othervm ClassLoaderLeakTest FontManagerTest + */ + +import java.awt.Font; +import java.awt.Graphics; +import java.io.File; +import java.lang.ref.WeakReference; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.concurrent.CountDownLatch; + +public class ClassLoaderLeakTest { + + private static CountDownLatch doneSignal; + private static CountDownLatch launchSignal; + private static Throwable launchFailure = null; + + public static void main(String[] args) { + doneSignal = new CountDownLatch(1); + launchSignal = new CountDownLatch(1); + + String testcase = "FontManagerTest"; + + if (args.length > 0) { + testcase = args[0]; + } + + /* prepare test class loader */ + URL pwd = null; + try { + + pwd = new File(System.getProperty("test.classes", ".")).toURL(); + } catch (MalformedURLException e) { + throw new RuntimeException("Test failed.", e); + } + System.out.println("PWD: " + pwd); + URL[] urls = new URL[]{pwd}; + + MyClassLoader appClassLoader = new MyClassLoader(urls, "test0"); + WeakReference ref = + new WeakReference(appClassLoader); + + ThreadGroup appsThreadGroup = new ThreadGroup("MyAppsThreadGroup"); + + Runnable launcher = new TestLauncher(testcase); + + Thread appThread = new Thread(appsThreadGroup, launcher, "AppThread-0"); + appThread.setContextClassLoader(appClassLoader); + + appThread.start(); + appsThreadGroup = null; + appClassLoader = null; + launcher = null; + appThread = null; + + /* wait for laucnh completion */ + try { + launchSignal.await(); + } catch (InterruptedException e) { + } + + /* check if launch failed */ + if (launchFailure != null) { + throw new RuntimeException("Test failed.", launchFailure); + } + + /* wait for test app excution completion */ + try { + doneSignal.await(); + } catch (InterruptedException e) { + } + + /* give a chance to GC */ + waitAndGC(9); + + if (ref.get() != null) { + throw new RuntimeException("Test failed: classloader is still alive"); + } + + + System.out.println("Test passed."); + } + + private static class TestLauncher implements Runnable { + + private String className; + + public TestLauncher(String name) { + className = name; + } + + public void run() { + try { + ClassLoader cl = + Thread.currentThread().getContextClassLoader(); + Class appMain = cl.loadClass(className); + Method launch = + appMain.getMethod("launch", doneSignal.getClass()); + + Constructor c = appMain.getConstructor(); + + Object o = c.newInstance(); + + launch.invoke(o, doneSignal); + + } catch (Throwable e) { + launchFailure = e; + } finally { + launchSignal.countDown(); + } + } + } + + private static class MyClassLoader extends URLClassLoader { + + private static boolean verbose = + Boolean.getBoolean("verboseClassLoading"); + private String uniqClassName; + + public MyClassLoader(URL[] urls, String uniq) { + super(urls); + + uniqClassName = uniq; + } + + public Class loadClass(String name) throws ClassNotFoundException { + if (verbose) { + System.out.printf("%s: load class %s\n", uniqClassName, name); + } + if (uniqClassName.equals(name)) { + return Object.class; + } + return super.loadClass(name); + } + + public String toString() { + return "MyClassLoader(" + uniqClassName + ")"; + } + } + + private static void waitAndGC(int sec) { + int cnt = sec; + System.out.print("Wait "); + while (cnt-- > 0) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + // do GC every 3 seconds + if (cnt % 3 == 2) { + System.gc(); + System.out.print("+"); + } else { + System.out.print("."); + } + //checkErrors(); + } + System.out.println(""); + } +} + +abstract class AppTest { + + public AppTest() { + } + + protected abstract void doTest(); + + public void launch(CountDownLatch done) { + System.out.println("Testcase: " + this.getClass().getName()); + try { + doTest(); + } finally { + done.countDown(); + } + } +} + +class FontManagerTest extends AppTest { + + public FontManagerTest() { + } + + protected void doTest() { + Font f = new Font(Font.SANS_SERIF, Font.ITALIC, 24); + f.getNumGlyphs(); + } +} From 5d137e0d2f9bbf85a059db4670f0a87d48e0c833 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Tue, 20 Apr 2010 19:30:31 +0800 Subject: [PATCH 28/64] 6944847: native gss lib names on linux Reviewed-by: valeriep --- .../jgss/wrapper/SunNativeProvider.java | 38 ++++--- .../sun/security/krb5/Krb5NameEquals.java | 78 +++++++++++++ jdk/test/sun/security/krb5/runNameEquals.sh | 106 ++++++++++++++++++ 3 files changed, 207 insertions(+), 15 deletions(-) create mode 100644 jdk/test/sun/security/krb5/Krb5NameEquals.java create mode 100644 jdk/test/sun/security/krb5/runNameEquals.sh diff --git a/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java b/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java index e212da7d5c3..5a71cdfaaa5 100644 --- a/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java +++ b/jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2010 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 @@ -77,26 +77,34 @@ public final class SunNativeProvider extends Provider { if (DEBUG) err.printStackTrace(); return null; } - String gssLib = System.getProperty(LIB_PROP); - if (gssLib == null || gssLib.trim().equals("")) { + String gssLibs[] = new String[0]; + String defaultLib = System.getProperty(LIB_PROP); + if (defaultLib == null || defaultLib.trim().equals("")) { String osname = System.getProperty("os.name"); if (osname.startsWith("SunOS")) { - gssLib = "libgss.so"; + gssLibs = new String[]{ "libgss.so" }; } else if (osname.startsWith("Linux")) { - gssLib = "libgssapi.so"; + gssLibs = new String[]{ + "libgssapi.so", + "libgssapi_krb5.so", + }; } + } else { + gssLibs = new String[]{ defaultLib }; } - if (GSSLibStub.init(gssLib)) { - debug("Loaded GSS library: " + gssLib); - Oid[] mechs = GSSLibStub.indicateMechs(); - HashMap map = - new HashMap(); - for (int i = 0; i < mechs.length; i++) { - debug("Native MF for " + mechs[i]); - map.put("GssApiMechanism." + mechs[i], - MF_CLASS); + for (String libName: gssLibs) { + if (GSSLibStub.init(libName)) { + debug("Loaded GSS library: " + libName); + Oid[] mechs = GSSLibStub.indicateMechs(); + HashMap map = + new HashMap(); + for (int i = 0; i < mechs.length; i++) { + debug("Native MF for " + mechs[i]); + map.put("GssApiMechanism." + mechs[i], + MF_CLASS); + } + return map; } - return map; } return null; } diff --git a/jdk/test/sun/security/krb5/Krb5NameEquals.java b/jdk/test/sun/security/krb5/Krb5NameEquals.java new file mode 100644 index 00000000000..d319fb5dcde --- /dev/null +++ b/jdk/test/sun/security/krb5/Krb5NameEquals.java @@ -0,0 +1,78 @@ +/* + * Copyright 2007-2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @bug 4634392 + * @summary JDK code doesn't respect contract for equals and hashCode + * @author Andrew Fan + */ + +import org.ietf.jgss.*; + +public class Krb5NameEquals { + + private static String NAME_STR1 = "service@host"; + private static String NAME_STR2 = "service@host2"; + private static final Oid MECH; + + static { + Oid temp = null; + try { + temp = new Oid("1.2.840.113554.1.2.2"); // KRB5 + } catch (Exception e) { + // should never happen + } + MECH = temp; + } + + public static void main(String[] argv) throws Exception { + GSSManager mgr = GSSManager.getInstance(); + + boolean result = true; + // Create GSSName and check their equals(), hashCode() impl + GSSName name1 = mgr.createName(NAME_STR1, + GSSName.NT_HOSTBASED_SERVICE, MECH); + GSSName name2 = mgr.createName(NAME_STR2, + GSSName.NT_HOSTBASED_SERVICE, MECH); + GSSName name3 = mgr.createName(NAME_STR1, + GSSName.NT_HOSTBASED_SERVICE, MECH); + + if (!name1.equals(name3) || !name1.equals(name3) || + !name1.equals((Object) name1) || + !name1.equals((Object) name3)) { + System.out.println("Error: should be the same name"); + result = false; + } else if (name1.hashCode() != name3.hashCode()) { + System.out.println("Error: should have same hash"); + result = false; + } + + if (name1.equals(name2) || name1.equals((Object) name2)) { + System.out.println("Error: should be different names"); + result = false; + } + if (result) { + System.out.println("Done"); + } else System.exit(1); + } +} diff --git a/jdk/test/sun/security/krb5/runNameEquals.sh b/jdk/test/sun/security/krb5/runNameEquals.sh new file mode 100644 index 00000000000..cddba722cb0 --- /dev/null +++ b/jdk/test/sun/security/krb5/runNameEquals.sh @@ -0,0 +1,106 @@ +# +# Copyright 2009-2010 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# @test +# @bug 6317711 6944847 +# @summary Ensure the GSSName has the correct impl which respects +# the contract for equals and hashCode across different configurations. + +# set a few environment variables so that the shell-script can run stand-alone +# in the source directory + +if [ "${TESTSRC}" = "" ] ; then + TESTSRC="." +fi + +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES="." +fi + +if [ "${TESTJAVA}" = "" ] ; then + echo "TESTJAVA not set. Test cannot execute." + echo "FAILED!!!" + exit 1 +fi + +NATIVE=false + +# set platform-dependent variables +OS=`uname -s` +case "$OS" in + SunOS ) + PATHSEP=":" + FILESEP="/" + NATIVE=true + ;; + Linux ) + PATHSEP=":" + FILESEP="/" + NATIVE=true + ;; + CYGWIN* ) + PATHSEP=";" + FILESEP="/" + ;; + Windows* ) + PATHSEP=";" + FILESEP="\\" + ;; + * ) + echo "Unrecognized system!" + exit 1; + ;; +esac + +TEST=Krb5NameEquals + +${TESTJAVA}${FILESEP}bin${FILESEP}javac \ + -d ${TESTCLASSES}${FILESEP} \ + ${TESTSRC}${FILESEP}${TEST}.java + +EXIT_STATUS=0 + +if [ "${NATIVE}" = "true" ] ; then + echo "Testing native provider" + ${TESTJAVA}${FILESEP}bin${FILESEP}java \ + -classpath ${TESTCLASSES} \ + -Dsun.security.jgss.native=true \ + ${TEST} + if [ $? != 0 ] ; then + echo "Native provider fails" + EXIT_STATUS=1 + fi +fi + +echo "Testing java provider" +${TESTJAVA}${FILESEP}bin${FILESEP}java \ + -classpath ${TESTCLASSES} \ + -Djava.security.krb5.realm=R \ + -Djava.security.krb5.kdc=127.0.0.1 \ + ${TEST} +if [ $? != 0 ] ; then + echo "Java provider fails" + EXIT_STATUS=1 +fi + +exit ${EXIT_STATUS} From 09ae7d4842be0a9569e3573be0fe99507eb0ccd0 Mon Sep 17 00:00:00 2001 From: Bradford Wetmore Date: Tue, 20 Apr 2010 14:24:06 -0700 Subject: [PATCH 29/64] 6945604: wrong error message in CardImpl.java Reviewed-by: mullan --- jdk/src/share/classes/sun/security/smartcardio/CardImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java b/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java index e865ff8f9e1..c72103b70fe 100644 --- a/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java +++ b/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2010 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 @@ -214,7 +214,7 @@ final class CardImpl extends Card { SCardEndTransaction(cardId, SCARD_LEAVE_CARD); } catch (PCSCException e) { handleError(e); - throw new CardException("beginExclusive() failed", e); + throw new CardException("endExclusive() failed", e); } finally { exclusiveThread = null; } From 7105f7c9c3b10e98a5851908979511434c994540 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:18 -0700 Subject: [PATCH 30/64] Added tag jdk7-b90 for changeset ffbb10639cc8 --- .hgtags-top-repo | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags-top-repo b/.hgtags-top-repo index 5abe6bf24de..56347c8d156 100644 --- a/.hgtags-top-repo +++ b/.hgtags-top-repo @@ -64,3 +64,4 @@ cf26288a114be67c39f2758959ce50b60f5ae330 jdk7-b85 6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87 82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88 7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89 +425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90 From 6b237fafac229a5a2015215c516dda44a88e1ac6 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:19 -0700 Subject: [PATCH 31/64] Added tag jdk7-b90 for changeset 637841d87234 --- corba/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/corba/.hgtags b/corba/.hgtags index 97e7794b2b6..405a05a6939 100644 --- a/corba/.hgtags +++ b/corba/.hgtags @@ -64,3 +64,4 @@ c67a9df7bc0ca291f08f9a9cc05cb78ea15d25e6 jdk7-b85 09a41111a401d327f65e453384d976a10154d9ea jdk7-b87 39e14d2da687c7e592142137517aaf689544820f jdk7-b88 bb4424c5e778b842c064a8b1aa902b35f4397654 jdk7-b89 +56ce07b0eb47b93a98a72adef0f21e602c460623 jdk7-b90 From f0c93107d37b38ff420472635470e0a99899ff56 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:23 -0700 Subject: [PATCH 32/64] Added tag jdk7-b90 for changeset f1a81d71d1c6 --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 4b0784bf932..a47a270d5e8 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -89,3 +89,4 @@ e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b jdk7-b88 15836273ac2494f36ef62088bc1cb6f3f011f565 jdk7-b89 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02 +605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90 From 1c77657b60762a1173bbfc1306b65d7935cec4ce Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:28 -0700 Subject: [PATCH 33/64] Added tag jdk7-b90 for changeset 785ad20ceb84 --- jaxp/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jaxp/.hgtags b/jaxp/.hgtags index 24f93501115..906fcdd5f09 100644 --- a/jaxp/.hgtags +++ b/jaxp/.hgtags @@ -64,3 +64,4 @@ c876ad22e4bf9d3c6460080db7ace478e29a3ff9 jdk7-b82 8b493f1aa136d86de0885fcba15262c4fa2b1412 jdk7-b87 d8ebd15910034f2ba50b2f129f959f86cca01419 jdk7-b88 d2818fd2b036f3b3154a9a7de41afcf4ac679c1b jdk7-b89 +c5d932ee326d6f7fd4634b11c7185ea82d184df2 jdk7-b90 From 4eb5d78bbefa43b917fde5c214ba728442ca65ff Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:28 -0700 Subject: [PATCH 34/64] Added tag jdk7-b90 for changeset ab2911ce6db7 --- jaxws/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jaxws/.hgtags b/jaxws/.hgtags index a929154499b..d988da222a4 100644 --- a/jaxws/.hgtags +++ b/jaxws/.hgtags @@ -64,3 +64,4 @@ f051045fe94a48fae1097f90cbd9227e6aae6b7e jdk7-b81 3febd6fab2ac8ffddbaf7bed00d11290262af153 jdk7-b87 8c666f8f3565974e301ccb58b7538912551a6e26 jdk7-b88 bf3675aa7f20fc6f241ce95760005aef2a30ff41 jdk7-b89 +ead7c4566a0017bcb44b468b3ac03b60dc5333ce jdk7-b90 From 68bf3a5f3774c50f611d557085f89dad09d3812c Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:34 -0700 Subject: [PATCH 35/64] Added tag jdk7-b90 for changeset 89baf99a5e06 --- jdk/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/.hgtags b/jdk/.hgtags index 83aac469273..95bdf2ea44c 100644 --- a/jdk/.hgtags +++ b/jdk/.hgtags @@ -64,3 +64,4 @@ eae6e9ab26064d9ba0e7665dd646a1fd2506fcc1 jdk7-b86 2cafbbe9825e911a6ca6c17d9a18eb1f0bf0873c jdk7-b87 b3c69282f6d3c90ec21056cd1ab70dc0c895b069 jdk7-b88 4a6abb7e224cc8d9a583c23c5782e4668739a119 jdk7-b89 +7f90d0b9dbb7ab4c60d0b0233e4e77fb4fac597c jdk7-b90 From 24bf601cb1f1120252a97dfd60e5aa75638afc3f Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 22 Apr 2010 16:54:44 -0700 Subject: [PATCH 36/64] Added tag jdk7-b90 for changeset e04dfc23e480 --- langtools/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/langtools/.hgtags b/langtools/.hgtags index b143649c02c..c855c6e4256 100644 --- a/langtools/.hgtags +++ b/langtools/.hgtags @@ -64,3 +64,4 @@ ef07347428f2198ae6b8144ac0b9086bbe39fd16 jdk7-b86 409db93d19c002333980df5b797c6b965150c7a0 jdk7-b87 f9b5d4867a26f8c4b90ad37fe2c345b721e93d6b jdk7-b88 6cea9a143208bc1185ced046942c0f4e45dbeba5 jdk7-b89 +71c2c23a7c35b2896c87004023b9743b6d1b7758 jdk7-b90 From 6d2a896bcd40da725fe544696e4f038a0e293b3d Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Thu, 29 Apr 2010 06:30:25 -0700 Subject: [PATCH 37/64] 6829193: JSR 292 needs to support SPARC There are unimplemented portions of the hotspot code for method handles and invokedynamic specific to SPARC. Reviewed-by: kvn, never, jrose --- hotspot/src/cpu/sparc/vm/assembler_sparc.cpp | 189 +++- hotspot/src/cpu/sparc/vm/assembler_sparc.hpp | 58 +- .../cpu/sparc/vm/assembler_sparc.inline.hpp | 9 +- .../src/cpu/sparc/vm/interp_masm_sparc.cpp | 45 +- .../src/cpu/sparc/vm/interp_masm_sparc.hpp | 7 +- .../src/cpu/sparc/vm/interpreter_sparc.cpp | 6 +- .../src/cpu/sparc/vm/methodHandles_sparc.cpp | 875 +++++++++++++++++- .../src/cpu/sparc/vm/stubGenerator_sparc.cpp | 10 + .../sparc/vm/templateInterpreter_sparc.cpp | 30 +- .../src/cpu/sparc/vm/templateTable_sparc.cpp | 69 +- hotspot/src/cpu/x86/vm/assembler_x86.cpp | 24 +- hotspot/src/cpu/x86/vm/assembler_x86.hpp | 4 +- hotspot/src/cpu/x86/vm/methodHandles_x86.cpp | 6 +- hotspot/src/share/vm/prims/methodHandles.hpp | 4 +- 14 files changed, 1210 insertions(+), 126 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp index e4799550fd8..00fa5f4a629 100644 --- a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -2333,6 +2333,18 @@ void MacroAssembler::lcmp( Register Ra, Register Rb, Register Rresult) { #endif +void MacroAssembler::load_sized_value(Address src, Register dst, + size_t size_in_bytes, bool is_signed) { + switch (size_in_bytes) { + case 8: ldx(src, dst); break; + case 4: ld( src, dst); break; + case 2: is_signed ? ldsh(src, dst) : lduh(src, dst); break; + case 1: is_signed ? ldsb(src, dst) : ldub(src, dst); break; + default: ShouldNotReachHere(); + } +} + + void MacroAssembler::float_cmp( bool is_float, int unordered_result, FloatRegister Fa, FloatRegister Fb, Register Rresult) { @@ -2625,40 +2637,103 @@ RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_ad } -void MacroAssembler::regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { - assert(dest.register_or_noreg() != G0, "lost side effect"); - if ((src.is_constant() && src.as_constant() == 0) || - (src.is_register() && src.as_register() == G0)) { - // do nothing - } else if (dest.is_register()) { - add(dest.as_register(), ensure_simm13_or_reg(src, temp), dest.as_register()); - } else if (src.is_constant()) { - intptr_t res = dest.as_constant() + src.as_constant(); - dest = RegisterOrConstant(res); // side effect seen by caller +RegisterOrConstant MacroAssembler::regcon_andn_ptr(RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp) { + assert(d.register_or_noreg() != G0, "lost side effect"); + if ((s2.is_constant() && s2.as_constant() == 0) || + (s2.is_register() && s2.as_register() == G0)) { + // Do nothing, just move value. + if (s1.is_register()) { + if (d.is_constant()) d = temp; + mov(s1.as_register(), d.as_register()); + return d; + } else { + return s1; + } + } + + if (s1.is_register()) { + assert_different_registers(s1.as_register(), temp); + if (d.is_constant()) d = temp; + andn(s1.as_register(), ensure_simm13_or_reg(s2, temp), d.as_register()); + return d; } else { - assert(temp != noreg, "cannot handle constant += register"); - add(src.as_register(), ensure_simm13_or_reg(dest, temp), temp); - dest = RegisterOrConstant(temp); // side effect seen by caller + if (s2.is_register()) { + assert_different_registers(s2.as_register(), temp); + if (d.is_constant()) d = temp; + set(s1.as_constant(), temp); + andn(temp, s2.as_register(), d.as_register()); + return d; + } else { + intptr_t res = s1.as_constant() & ~s2.as_constant(); + return res; + } } } -void MacroAssembler::regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src, Register temp ) { - assert(dest.register_or_noreg() != G0, "lost side effect"); - if (!is_simm13(src.constant_or_zero())) - src = (src.as_constant() & 0xFF); - if ((src.is_constant() && src.as_constant() == 0) || - (src.is_register() && src.as_register() == G0)) { - // do nothing - } else if (dest.is_register()) { - sll_ptr(dest.as_register(), src, dest.as_register()); - } else if (src.is_constant()) { - intptr_t res = dest.as_constant() << src.as_constant(); - dest = RegisterOrConstant(res); // side effect seen by caller +RegisterOrConstant MacroAssembler::regcon_inc_ptr(RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp) { + assert(d.register_or_noreg() != G0, "lost side effect"); + if ((s2.is_constant() && s2.as_constant() == 0) || + (s2.is_register() && s2.as_register() == G0)) { + // Do nothing, just move value. + if (s1.is_register()) { + if (d.is_constant()) d = temp; + mov(s1.as_register(), d.as_register()); + return d; + } else { + return s1; + } + } + + if (s1.is_register()) { + assert_different_registers(s1.as_register(), temp); + if (d.is_constant()) d = temp; + add(s1.as_register(), ensure_simm13_or_reg(s2, temp), d.as_register()); + return d; } else { - assert(temp != noreg, "cannot handle constant <<= register"); - set(dest.as_constant(), temp); - sll_ptr(temp, src, temp); - dest = RegisterOrConstant(temp); // side effect seen by caller + if (s2.is_register()) { + assert_different_registers(s2.as_register(), temp); + if (d.is_constant()) d = temp; + add(s2.as_register(), ensure_simm13_or_reg(s1, temp), d.as_register()); + return d; + } else { + intptr_t res = s1.as_constant() + s2.as_constant(); + return res; + } + } +} + +RegisterOrConstant MacroAssembler::regcon_sll_ptr(RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp) { + assert(d.register_or_noreg() != G0, "lost side effect"); + if (!is_simm13(s2.constant_or_zero())) + s2 = (s2.as_constant() & 0xFF); + if ((s2.is_constant() && s2.as_constant() == 0) || + (s2.is_register() && s2.as_register() == G0)) { + // Do nothing, just move value. + if (s1.is_register()) { + if (d.is_constant()) d = temp; + mov(s1.as_register(), d.as_register()); + return d; + } else { + return s1; + } + } + + if (s1.is_register()) { + assert_different_registers(s1.as_register(), temp); + if (d.is_constant()) d = temp; + sll_ptr(s1.as_register(), ensure_simm13_or_reg(s2, temp), d.as_register()); + return d; + } else { + if (s2.is_register()) { + assert_different_registers(s2.as_register(), temp); + if (d.is_constant()) d = temp; + set(s1.as_constant(), temp); + sll_ptr(temp, s2.as_register(), d.as_register()); + return d; + } else { + intptr_t res = s1.as_constant() << s2.as_constant(); + return res; + } } } @@ -2708,8 +2783,8 @@ void MacroAssembler::lookup_interface_method(Register recv_klass, // Adjust recv_klass by scaled itable_index, so we can free itable_index. RegisterOrConstant itable_offset = itable_index; - regcon_sll_ptr(itable_offset, exact_log2(itableMethodEntry::size() * wordSize)); - regcon_inc_ptr(itable_offset, itableMethodEntry::method_offset_in_bytes()); + itable_offset = regcon_sll_ptr(itable_index, exact_log2(itableMethodEntry::size() * wordSize), itable_offset); + itable_offset = regcon_inc_ptr(itable_offset, itableMethodEntry::method_offset_in_bytes(), itable_offset); add(recv_klass, ensure_simm13_or_reg(itable_offset, sethi_temp), recv_klass); // for (scan = klass->itable(); scan->interface() != NULL; scan += scan_step) { @@ -2805,7 +2880,7 @@ void MacroAssembler::check_klass_subtype_fast_path(Register sub_klass, assert_different_registers(sub_klass, super_klass, temp_reg); if (super_check_offset.is_register()) { - assert_different_registers(sub_klass, super_klass, + assert_different_registers(sub_klass, super_klass, temp_reg, super_check_offset.as_register()); } else if (must_load_sco) { assert(temp2_reg != noreg, "supply either a temp or a register offset"); @@ -2855,6 +2930,8 @@ void MacroAssembler::check_klass_subtype_fast_path(Register sub_klass, // The super check offset is always positive... lduw(super_klass, sco_offset, temp2_reg); super_check_offset = RegisterOrConstant(temp2_reg); + // super_check_offset is register. + assert_different_registers(sub_klass, super_klass, temp_reg, super_check_offset.as_register()); } ld_ptr(sub_klass, super_check_offset, temp_reg); cmp(super_klass, temp_reg); @@ -3014,11 +3091,10 @@ void MacroAssembler::check_klass_subtype_slow_path(Register sub_klass, } - - void MacroAssembler::check_method_handle_type(Register mtype_reg, Register mh_reg, Register temp_reg, Label& wrong_method_type) { + if (UseCompressedOops) unimplemented("coop"); // field accesses must decode assert_different_registers(mtype_reg, mh_reg, temp_reg); // compare method type against that of the receiver RegisterOrConstant mhtype_offset = delayed_value(java_dyn_MethodHandle::type_offset_in_bytes, temp_reg); @@ -3029,10 +3105,33 @@ void MacroAssembler::check_method_handle_type(Register mtype_reg, Register mh_re } -void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_reg) { +// A method handle has a "vmslots" field which gives the size of its +// argument list in JVM stack slots. This field is either located directly +// in every method handle, or else is indirectly accessed through the +// method handle's MethodType. This macro hides the distinction. +void MacroAssembler::load_method_handle_vmslots(Register vmslots_reg, Register mh_reg, + Register temp_reg) { + assert_different_registers(vmslots_reg, mh_reg, temp_reg); + if (UseCompressedOops) unimplemented("coop"); // field accesses must decode + // load mh.type.form.vmslots + if (java_dyn_MethodHandle::vmslots_offset_in_bytes() != 0) { + // hoist vmslots into every mh to avoid dependent load chain + ld( Address(mh_reg, delayed_value(java_dyn_MethodHandle::vmslots_offset_in_bytes, temp_reg)), vmslots_reg); + } else { + Register temp2_reg = vmslots_reg; + ld_ptr(Address(mh_reg, delayed_value(java_dyn_MethodHandle::type_offset_in_bytes, temp_reg)), temp2_reg); + ld_ptr(Address(temp2_reg, delayed_value(java_dyn_MethodType::form_offset_in_bytes, temp_reg)), temp2_reg); + ld( Address(temp2_reg, delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, temp_reg)), vmslots_reg); + } +} + + +void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_reg, bool emit_delayed_nop) { assert(mh_reg == G3_method_handle, "caller must put MH object in G3"); assert_different_registers(mh_reg, temp_reg); + if (UseCompressedOops) unimplemented("coop"); // field accesses must decode + // pick out the interpreted side of the handler ld_ptr(mh_reg, delayed_value(java_dyn_MethodHandle::vmentry_offset_in_bytes, temp_reg), temp_reg); @@ -3043,17 +3142,18 @@ void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_ // for the various stubs which take control at this point, // see MethodHandles::generate_method_handle_stub - // (Can any caller use this delay slot? If so, add an option for supression.) - delayed()->nop(); + // Some callers can fill the delay slot. + if (emit_delayed_nop) { + delayed()->nop(); + } } + RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot, int extra_slot_offset) { // cf. TemplateTable::prepare_invoke(), if (load_receiver). - int stackElementSize = Interpreter::stackElementWords() * wordSize; - int offset = Interpreter::expr_offset_in_bytes(extra_slot_offset+0); - int offset1 = Interpreter::expr_offset_in_bytes(extra_slot_offset+1); - assert(offset1 - offset == stackElementSize, "correct arithmetic"); + int stackElementSize = Interpreter::stackElementSize(); + int offset = extra_slot_offset * stackElementSize; if (arg_slot.is_constant()) { offset += arg_slot.as_constant() * stackElementSize; return offset; @@ -3067,6 +3167,11 @@ RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot, } +Address MacroAssembler::argument_address(RegisterOrConstant arg_slot, + int extra_slot_offset) { + return Address(Gargs, argument_offset(arg_slot, extra_slot_offset)); +} + void MacroAssembler::biased_locking_enter(Register obj_reg, Register mark_reg, Register temp_reg, diff --git a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp index f053ec57771..715d3b5d17b 100644 --- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -1380,24 +1380,25 @@ public: // pp 181 - void and3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 ) | rs1(s1) | rs2(s2) ); } - void and3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } + void and3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 ) | rs1(s1) | rs2(s2) ); } + void and3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void andcc( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 | cc_bit_op3) | rs1(s1) | rs2(s2) ); } void andcc( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(and_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void andn( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(andn_op3 ) | rs1(s1) | rs2(s2) ); } void andn( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(andn_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } + void andn( Register s1, RegisterOrConstant s2, Register d); void andncc( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(andn_op3 | cc_bit_op3) | rs1(s1) | rs2(s2) ); } void andncc( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(andn_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } - void or3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 ) | rs1(s1) | rs2(s2) ); } - void or3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } + void or3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 ) | rs1(s1) | rs2(s2) ); } + void or3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void orcc( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 | cc_bit_op3) | rs1(s1) | rs2(s2) ); } void orcc( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(or_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void orn( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(orn_op3) | rs1(s1) | rs2(s2) ); } void orn( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(orn_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void orncc( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(orn_op3 | cc_bit_op3) | rs1(s1) | rs2(s2) ); } void orncc( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(orn_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } - void xor3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 ) | rs1(s1) | rs2(s2) ); } - void xor3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } + void xor3( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 ) | rs1(s1) | rs2(s2) ); } + void xor3( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 ) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void xorcc( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 | cc_bit_op3) | rs1(s1) | rs2(s2) ); } void xorcc( Register s1, int simm13a, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xor_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } void xnor( Register s1, Register s2, Register d ) { emit_long( op(arith_op) | rd(d) | op3(xnor_op3 ) | rs1(s1) | rs2(s2) ); } @@ -2026,8 +2027,8 @@ public: inline void st_ptr(Register d, Register s1, ByteSize simm13a); #endif - // ld_long will perform ld for 32 bit VM's and ldx for 64 bit VM's - // st_long will perform st for 32 bit VM's and stx for 64 bit VM's + // ld_long will perform ldd for 32 bit VM's and ldx for 64 bit VM's + // st_long will perform std for 32 bit VM's and stx for 64 bit VM's inline void ld_long(Register s1, Register s2, Register d); inline void ld_long(Register s1, int simm13a, Register d); inline void ld_long(Register s1, RegisterOrConstant s2, Register d); @@ -2038,23 +2039,19 @@ public: inline void st_long(Register d, const Address& a, int offset = 0); // Helpers for address formation. - // They update the dest in place, whether it is a register or constant. - // They emit no code at all if src is a constant zero. - // If dest is a constant and src is a register, the temp argument - // is required, and becomes the result. - // If dest is a register and src is a non-simm13 constant, - // the temp argument is required, and is used to materialize the constant. - void regcon_inc_ptr( RegisterOrConstant& dest, RegisterOrConstant src, - Register temp = noreg ); - void regcon_sll_ptr( RegisterOrConstant& dest, RegisterOrConstant src, - Register temp = noreg ); + // - They emit only a move if s2 is a constant zero. + // - If dest is a constant and either s1 or s2 is a register, the temp argument is required and becomes the result. + // - If dest is a register and either s1 or s2 is a non-simm13 constant, the temp argument is required and used to materialize the constant. + RegisterOrConstant regcon_andn_ptr(RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp = noreg); + RegisterOrConstant regcon_inc_ptr( RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp = noreg); + RegisterOrConstant regcon_sll_ptr( RegisterOrConstant s1, RegisterOrConstant s2, RegisterOrConstant d, Register temp = noreg); - RegisterOrConstant ensure_simm13_or_reg(RegisterOrConstant roc, Register Rtemp) { - guarantee(Rtemp != noreg, "constant offset overflow"); - if (is_simm13(roc.constant_or_zero())) - return roc; // register or short constant - set(roc.as_constant(), Rtemp); - return RegisterOrConstant(Rtemp); + RegisterOrConstant ensure_simm13_or_reg(RegisterOrConstant src, Register temp) { + if (is_simm13(src.constant_or_zero())) + return src; // register or short constant + guarantee(temp != noreg, "constant offset overflow"); + set(src.as_constant(), temp); + return temp; } // -------------------------------------------------- @@ -2303,6 +2300,9 @@ public: void lcmp( Register Ra, Register Rb, Register Rresult); #endif + // Loading values by size and signed-ness + void load_sized_value(Address src, Register dst, size_t size_in_bytes, bool is_signed); + void float_cmp( bool is_float, int unordered_result, FloatRegister Fa, FloatRegister Fb, Register Rresult); @@ -2421,12 +2421,16 @@ public: void check_method_handle_type(Register mtype_reg, Register mh_reg, Register temp_reg, Label& wrong_method_type); - void jump_to_method_handle_entry(Register mh_reg, Register temp_reg); + void load_method_handle_vmslots(Register vmslots_reg, Register mh_reg, + Register temp_reg); + void jump_to_method_handle_entry(Register mh_reg, Register temp_reg, bool emit_delayed_nop = true); // offset relative to Gargs of argument at tos[arg_slot]. // (arg_slot == 0 means the last argument, not the first). RegisterOrConstant argument_offset(RegisterOrConstant arg_slot, int extra_slot_offset = 0); - + // Address of Gargs and argument_offset. + Address argument_address(RegisterOrConstant arg_slot, + int extra_slot_offset = 0); // Stack overflow checking diff --git a/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp index 6ec0d8d2ed3..d769f711125 100644 --- a/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp +++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp @@ -206,12 +206,17 @@ inline void Assembler::ld( Register s1, RegisterOrConstant s2, Register d) { ld inline void Assembler::ldd( Register s1, RegisterOrConstant s2, Register d) { ldd( Address(s1, s2), d); } // form effective addresses this way: -inline void Assembler::add( Register s1, RegisterOrConstant s2, Register d, int offset) { - if (s2.is_register()) add(s1, s2.as_register(), d); +inline void Assembler::add(Register s1, RegisterOrConstant s2, Register d, int offset) { + if (s2.is_register()) add(s1, s2.as_register(), d); else { add(s1, s2.as_constant() + offset, d); offset = 0; } if (offset != 0) add(d, offset, d); } +inline void Assembler::andn(Register s1, RegisterOrConstant s2, Register d) { + if (s2.is_register()) andn(s1, s2.as_register(), d); + else andn(s1, s2.as_constant(), d); +} + inline void Assembler::ldstub( Register s1, Register s2, Register d) { emit_long( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | rs2(s2) ); } inline void Assembler::ldstub( Register s1, int simm13a, Register d) { emit_data( op(ldst_op) | rd(d) | op3(ldstub_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp index 9189f95d355..b5535f86f51 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp @@ -814,22 +814,39 @@ void InterpreterMacroAssembler::get_4_byte_integer_at_bcp( } -void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register tmp, int bcp_offset) { +void InterpreterMacroAssembler::get_cache_index_at_bcp(Register cache, Register tmp, + int bcp_offset, bool giant_index) { + assert(bcp_offset > 0, "bcp is still pointing to start of bytecode"); + if (!giant_index) { + get_2_byte_integer_at_bcp(bcp_offset, cache, tmp, Unsigned); + } else { + assert(EnableInvokeDynamic, "giant index used only for EnableInvokeDynamic"); + get_4_byte_integer_at_bcp(bcp_offset, cache, tmp); + assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line"); + xor3(tmp, -1, tmp); // convert to plain index + } +} + + +void InterpreterMacroAssembler::get_cache_and_index_at_bcp(Register cache, Register tmp, + int bcp_offset, bool giant_index) { assert(bcp_offset > 0, "bcp is still pointing to start of bytecode"); assert_different_registers(cache, tmp); assert_not_delayed(); - get_2_byte_integer_at_bcp(bcp_offset, cache, tmp, Unsigned); - // convert from field index to ConstantPoolCacheEntry index - // and from word index to byte offset + get_cache_index_at_bcp(cache, tmp, bcp_offset, giant_index); + // convert from field index to ConstantPoolCacheEntry index and from + // word index to byte offset sll(tmp, exact_log2(in_words(ConstantPoolCacheEntry::size()) * BytesPerWord), tmp); add(LcpoolCache, tmp, cache); } -void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset) { +void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache, Register tmp, + int bcp_offset, bool giant_index) { assert(bcp_offset > 0, "bcp is still pointing to start of bytecode"); assert_different_registers(cache, tmp); assert_not_delayed(); + assert(!giant_index,"NYI"); get_2_byte_integer_at_bcp(bcp_offset, cache, tmp, Unsigned); // convert from field index to ConstantPoolCacheEntry index // and from word index to byte offset @@ -1675,15 +1692,31 @@ void InterpreterMacroAssembler::profile_final_call(Register scratch) { // Count a virtual call in the bytecodes. void InterpreterMacroAssembler::profile_virtual_call(Register receiver, - Register scratch) { + Register scratch, + bool receiver_can_be_null) { if (ProfileInterpreter) { Label profile_continue; // If no method data exists, go to profile_continue. test_method_data_pointer(profile_continue); + + Label skip_receiver_profile; + if (receiver_can_be_null) { + Label not_null; + tst(receiver); + brx(Assembler::notZero, false, Assembler::pt, not_null); + delayed()->nop(); + // We are making a call. Increment the count for null receiver. + increment_mdp_data_at(in_bytes(CounterData::count_offset()), scratch); + ba(false, skip_receiver_profile); + delayed()->nop(); + bind(not_null); + } + // Record the receiver type. record_klass_in_profile(receiver, scratch, true); + bind(skip_receiver_profile); // The method data pointer needs to be updated to reflect the new target. update_mdp_by_constant(in_bytes(VirtualCallData::virtual_call_data_size())); diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp index cbb6fb4e276..0fd57778afe 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp @@ -191,8 +191,9 @@ class InterpreterMacroAssembler: public MacroAssembler { Register Rdst, setCCOrNot should_set_CC = dont_set_CC ); - void get_cache_and_index_at_bcp(Register cache, Register tmp, int bcp_offset); - void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset); + void get_cache_and_index_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false); + void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false); + void get_cache_index_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false); // common code @@ -304,7 +305,7 @@ class InterpreterMacroAssembler: public MacroAssembler { void profile_not_taken_branch(Register scratch); void profile_call(Register scratch); void profile_final_call(Register scratch); - void profile_virtual_call(Register receiver, Register scratch); + void profile_virtual_call(Register receiver, Register scratch, bool receiver_can_be_null = false); void profile_ret(TosState state, Register return_bci, Register scratch); void profile_null_seen(Register scratch); void profile_typecheck(Register klass, Register scratch); diff --git a/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp b/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp index d68d2b7702c..24560ab643e 100644 --- a/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp @@ -235,19 +235,17 @@ address InterpreterGenerator::generate_abstract_entry(void) { } - // Method handle invoker // Dispatch a method of the form java.dyn.MethodHandles::invoke(...) address InterpreterGenerator::generate_method_handle_entry(void) { if (!EnableMethodHandles) { return generate_abstract_entry(); } - return generate_abstract_entry(); //6815692// + + return MethodHandles::generate_method_handle_interpreter_entry(_masm); } - - //---------------------------------------------------------------------------------------------------- // Entry points & stack frame layout // diff --git a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp index dd40006e102..c8accffeaf7 100644 --- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2008-2010 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 @@ -29,6 +29,9 @@ address MethodHandleEntry::start_compiled_entry(MacroAssembler* _masm, address interpreted_entry) { + // Just before the actual machine code entry point, allocate space + // for a MethodHandleEntry::Data record, so that we can manage everything + // from one base pointer. __ align(wordSize); address target = __ pc() + sizeof(Data); while (__ pc() < target) { @@ -59,12 +62,876 @@ MethodHandleEntry* MethodHandleEntry::finish_compiled_entry(MacroAssembler* _mas // Code generation address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler* _masm) { - ShouldNotReachHere(); //NYI, 6815692 - return NULL; + // I5_savedSP: sender SP (must preserve) + // G4 (Gargs): incoming argument list (must preserve) + // G5_method: invoke methodOop; becomes method type. + // G3_method_handle: receiver method handle (must load from sp[MethodTypeForm.vmslots]) + // O0, O1: garbage temps, blown away + Register O0_argslot = O0; + Register O1_scratch = O1; + + // emit WrongMethodType path first, to enable back-branch from main path + Label wrong_method_type; + __ bind(wrong_method_type); + __ jump_to(AddressLiteral(Interpreter::throw_WrongMethodType_entry()), O1_scratch); + __ delayed()->nop(); + + // here's where control starts out: + __ align(CodeEntryAlignment); + address entry_point = __ pc(); + + // fetch the MethodType from the method handle into G5_method_type + { + Register tem = G5_method; + assert(tem == G5_method_type, "yes, it's the same register"); + for (jint* pchase = methodOopDesc::method_type_offsets_chain(); (*pchase) != -1; pchase++) { + __ ld_ptr(Address(tem, *pchase), G5_method_type); + } + } + + // given the MethodType, find out where the MH argument is buried + __ ld_ptr(Address(G5_method_type, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, O1_scratch)), O0_argslot); + __ ldsw( Address(O0_argslot, __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, O1_scratch)), O0_argslot); + __ ld_ptr(__ argument_address(O0_argslot), G3_method_handle); + + __ check_method_handle_type(G5_method_type, G3_method_handle, O1_scratch, wrong_method_type); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + + return entry_point; } + +#ifdef ASSERT +static void verify_argslot(MacroAssembler* _masm, Register argslot_reg, Register temp_reg, const char* error_message) { + // Verify that argslot lies within (Gargs, FP]. + Label L_ok, L_bad; +#ifdef _LP64 + __ add(FP, STACK_BIAS, temp_reg); + __ cmp(argslot_reg, temp_reg); +#else + __ cmp(argslot_reg, FP); +#endif + __ brx(Assembler::greaterUnsigned, false, Assembler::pn, L_bad); + __ delayed()->nop(); + __ cmp(Gargs, argslot_reg); + __ brx(Assembler::lessEqualUnsigned, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ bind(L_bad); + __ stop(error_message); + __ bind(L_ok); +} +#endif + + +// Helper to insert argument slots into the stack. +// arg_slots must be a multiple of stack_move_unit() and <= 0 +void MethodHandles::insert_arg_slots(MacroAssembler* _masm, + RegisterOrConstant arg_slots, + int arg_mask, + Register argslot_reg, + Register temp_reg, Register temp2_reg, Register temp3_reg) { + assert(temp3_reg != noreg, "temp3 required"); + assert_different_registers(argslot_reg, temp_reg, temp2_reg, temp3_reg, + (!arg_slots.is_register() ? Gargs : arg_slots.as_register())); + +#ifdef ASSERT + verify_argslot(_masm, argslot_reg, temp_reg, "insertion point must fall within current frame"); + if (arg_slots.is_register()) { + Label L_ok, L_bad; + __ cmp(arg_slots.as_register(), (int32_t) NULL_WORD); + __ br(Assembler::greater, false, Assembler::pn, L_bad); + __ delayed()->nop(); + __ btst(-stack_move_unit() - 1, arg_slots.as_register()); + __ br(Assembler::zero, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ bind(L_bad); + __ stop("assert arg_slots <= 0 and clear low bits"); + __ bind(L_ok); + } else { + assert(arg_slots.as_constant() <= 0, ""); + assert(arg_slots.as_constant() % -stack_move_unit() == 0, ""); + } +#endif // ASSERT + +#ifdef _LP64 + if (arg_slots.is_register()) { + // Was arg_slots register loaded as signed int? + Label L_ok; + __ sll(arg_slots.as_register(), BitsPerInt, temp_reg); + __ sra(temp_reg, BitsPerInt, temp_reg); + __ cmp(arg_slots.as_register(), temp_reg); + __ br(Assembler::equal, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ stop("arg_slots register not loaded as signed int"); + __ bind(L_ok); + } +#endif + + // Make space on the stack for the inserted argument(s). + // Then pull down everything shallower than argslot_reg. + // The stacked return address gets pulled down with everything else. + // That is, copy [sp, argslot) downward by -size words. In pseudo-code: + // sp -= size; + // for (temp = sp + size; temp < argslot; temp++) + // temp[-size] = temp[0] + // argslot -= size; + RegisterOrConstant offset = __ regcon_sll_ptr(arg_slots, LogBytesPerWord, temp3_reg); + + // Keep the stack pointer 2*wordSize aligned. + const int TwoWordAlignmentMask = right_n_bits(LogBytesPerWord + 1); + RegisterOrConstant masked_offset = __ regcon_andn_ptr(offset, TwoWordAlignmentMask, temp_reg); + __ add(SP, masked_offset, SP); + + __ mov(Gargs, temp_reg); // source pointer for copy + __ add(Gargs, offset, Gargs); + + { + Label loop; + __ bind(loop); + // pull one word down each time through the loop + __ ld_ptr(Address(temp_reg, 0), temp2_reg); + __ st_ptr(temp2_reg, Address(temp_reg, offset)); + __ add(temp_reg, wordSize, temp_reg); + __ cmp(temp_reg, argslot_reg); + __ brx(Assembler::less, false, Assembler::pt, loop); + __ delayed()->nop(); // FILLME + } + + // Now move the argslot down, to point to the opened-up space. + __ add(argslot_reg, offset, argslot_reg); +} + + +// Helper to remove argument slots from the stack. +// arg_slots must be a multiple of stack_move_unit() and >= 0 +void MethodHandles::remove_arg_slots(MacroAssembler* _masm, + RegisterOrConstant arg_slots, + Register argslot_reg, + Register temp_reg, Register temp2_reg, Register temp3_reg) { + assert(temp3_reg != noreg, "temp3 required"); + assert_different_registers(argslot_reg, temp_reg, temp2_reg, temp3_reg, + (!arg_slots.is_register() ? Gargs : arg_slots.as_register())); + + RegisterOrConstant offset = __ regcon_sll_ptr(arg_slots, LogBytesPerWord, temp3_reg); + +#ifdef ASSERT + // Verify that [argslot..argslot+size) lies within (Gargs, FP). + __ add(argslot_reg, offset, temp2_reg); + verify_argslot(_masm, temp2_reg, temp_reg, "deleted argument(s) must fall within current frame"); + if (arg_slots.is_register()) { + Label L_ok, L_bad; + __ cmp(arg_slots.as_register(), (int32_t) NULL_WORD); + __ br(Assembler::less, false, Assembler::pn, L_bad); + __ delayed()->nop(); + __ btst(-stack_move_unit() - 1, arg_slots.as_register()); + __ br(Assembler::zero, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ bind(L_bad); + __ stop("assert arg_slots >= 0 and clear low bits"); + __ bind(L_ok); + } else { + assert(arg_slots.as_constant() >= 0, ""); + assert(arg_slots.as_constant() % -stack_move_unit() == 0, ""); + } +#endif // ASSERT + + // Pull up everything shallower than argslot. + // Then remove the excess space on the stack. + // The stacked return address gets pulled up with everything else. + // That is, copy [sp, argslot) upward by size words. In pseudo-code: + // for (temp = argslot-1; temp >= sp; --temp) + // temp[size] = temp[0] + // argslot += size; + // sp += size; + __ sub(argslot_reg, wordSize, temp_reg); // source pointer for copy + { + Label loop; + __ bind(loop); + // pull one word up each time through the loop + __ ld_ptr(Address(temp_reg, 0), temp2_reg); + __ st_ptr(temp2_reg, Address(temp_reg, offset)); + __ sub(temp_reg, wordSize, temp_reg); + __ cmp(temp_reg, Gargs); + __ brx(Assembler::greaterEqual, false, Assembler::pt, loop); + __ delayed()->nop(); // FILLME + } + + // Now move the argslot up, to point to the just-copied block. + __ add(Gargs, offset, Gargs); + // And adjust the argslot address to point at the deletion point. + __ add(argslot_reg, offset, argslot_reg); + + // Keep the stack pointer 2*wordSize aligned. + const int TwoWordAlignmentMask = right_n_bits(LogBytesPerWord + 1); + RegisterOrConstant masked_offset = __ regcon_andn_ptr(offset, TwoWordAlignmentMask, temp_reg); + __ add(SP, masked_offset, SP); +} + + +#ifndef PRODUCT +extern "C" void print_method_handle(oop mh); +void trace_method_handle_stub(const char* adaptername, + oop mh) { +#if 0 + intptr_t* entry_sp, + intptr_t* saved_sp, + intptr_t* saved_bp) { + // called as a leaf from native code: do not block the JVM! + intptr_t* last_sp = (intptr_t*) saved_bp[frame::interpreter_frame_last_sp_offset]; + intptr_t* base_sp = (intptr_t*) saved_bp[frame::interpreter_frame_monitor_block_top_offset]; + printf("MH %s mh="INTPTR_FORMAT" sp=("INTPTR_FORMAT"+"INTX_FORMAT") stack_size="INTX_FORMAT" bp="INTPTR_FORMAT"\n", + adaptername, (intptr_t)mh, (intptr_t)entry_sp, (intptr_t)(saved_sp - entry_sp), (intptr_t)(base_sp - last_sp), (intptr_t)saved_bp); + if (last_sp != saved_sp) + printf("*** last_sp="INTPTR_FORMAT"\n", (intptr_t)last_sp); +#endif + + printf("MH %s mh="INTPTR_FORMAT"\n", adaptername, (intptr_t) mh); + print_method_handle(mh); +} +#endif // PRODUCT + + +//------------------------------------------------------------------------------ +// MethodHandles::generate_method_handle_stub +// // Generate an "entry" field for a method handle. // This determines how the method handle will respond to calls. void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHandles::EntryKind ek) { - ShouldNotReachHere(); //NYI, 6815692 + // Here is the register state during an interpreted call, + // as set up by generate_method_handle_interpreter_entry(): + // - G5: garbage temp (was MethodHandle.invoke methodOop, unused) + // - G3: receiver method handle + // - O5_savedSP: sender SP (must preserve) + + Register O0_argslot = O0; + Register O1_scratch = O1; + Register O2_scratch = O2; + Register O3_scratch = O3; + Register G5_index = G5; + + guarantee(java_dyn_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets"); + + // Some handy addresses: + Address G5_method_fie( G5_method, in_bytes(methodOopDesc::from_interpreted_offset())); + + Address G3_mh_vmtarget( G3_method_handle, java_dyn_MethodHandle::vmtarget_offset_in_bytes()); + + Address G3_dmh_vmindex( G3_method_handle, sun_dyn_DirectMethodHandle::vmindex_offset_in_bytes()); + + Address G3_bmh_vmargslot( G3_method_handle, sun_dyn_BoundMethodHandle::vmargslot_offset_in_bytes()); + Address G3_bmh_argument( G3_method_handle, sun_dyn_BoundMethodHandle::argument_offset_in_bytes()); + + Address G3_amh_vmargslot( G3_method_handle, sun_dyn_AdapterMethodHandle::vmargslot_offset_in_bytes()); + Address G3_amh_argument ( G3_method_handle, sun_dyn_AdapterMethodHandle::argument_offset_in_bytes()); + Address G3_amh_conversion(G3_method_handle, sun_dyn_AdapterMethodHandle::conversion_offset_in_bytes()); + + const int java_mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes(); + + if (have_entry(ek)) { + __ nop(); // empty stubs make SG sick + return; + } + + address interp_entry = __ pc(); + if (UseCompressedOops) __ unimplemented("UseCompressedOops"); + +#ifndef PRODUCT + if (TraceMethodHandles) { + // save: Gargs, O5_savedSP + __ save(SP, -16*wordSize, SP); + __ set((intptr_t) entry_name(ek), O0); + __ mov(G3_method_handle, O1); + __ call_VM_leaf(Lscratch, CAST_FROM_FN_PTR(address, trace_method_handle_stub)); + __ restore(SP, 16*wordSize, SP); + } +#endif // PRODUCT + + switch ((int) ek) { + case _raise_exception: + { + // Not a real MH entry, but rather shared code for raising an + // exception. Extra local arguments are passed in scratch + // registers, as required type in O3, failing object (or NULL) + // in O2, failing bytecode type in O1. + + __ mov(O5_savedSP, SP); // Cut the stack back to where the caller started. + + // Push arguments as if coming from the interpreter. + Register O0_scratch = O0_argslot; + int stackElementSize = Interpreter::stackElementSize(); + + // Make space on the stack for the arguments. + __ sub(SP, 4*stackElementSize, SP); + __ sub(Gargs, 3*stackElementSize, Gargs); + //__ sub(Lesp, 3*stackElementSize, Lesp); + + // void raiseException(int code, Object actual, Object required) + __ st( O1_scratch, Address(Gargs, 2*stackElementSize)); // code + __ st_ptr(O2_scratch, Address(Gargs, 1*stackElementSize)); // actual + __ st_ptr(O3_scratch, Address(Gargs, 0*stackElementSize)); // required + + Label no_method; + // FIXME: fill in _raise_exception_method with a suitable sun.dyn method + __ set(AddressLiteral((address) &_raise_exception_method), G5_method); + __ ld_ptr(Address(G5_method, 0), G5_method); + __ tst(G5_method); + __ brx(Assembler::zero, false, Assembler::pn, no_method); + __ delayed()->nop(); + + int jobject_oop_offset = 0; + __ ld_ptr(Address(G5_method, jobject_oop_offset), G5_method); + __ tst(G5_method); + __ brx(Assembler::zero, false, Assembler::pn, no_method); + __ delayed()->nop(); + + __ verify_oop(G5_method); + __ jump_indirect_to(G5_method_fie, O1_scratch); + __ delayed()->nop(); + + // If we get here, the Java runtime did not do its job of creating the exception. + // Do something that is at least causes a valid throw from the interpreter. + __ bind(no_method); + __ unimplemented("_raise_exception no method"); + } + break; + + case _invokestatic_mh: + case _invokespecial_mh: + { + __ ld_ptr(G3_mh_vmtarget, G5_method); // target is a methodOop + __ verify_oop(G5_method); + // Same as TemplateTable::invokestatic or invokespecial, + // minus the CP setup and profiling: + if (ek == _invokespecial_mh) { + // Must load & check the first argument before entering the target method. + __ load_method_handle_vmslots(O0_argslot, G3_method_handle, O1_scratch); + __ ld_ptr(__ argument_address(O0_argslot), G3_method_handle); + __ null_check(G3_method_handle); + __ verify_oop(G3_method_handle); + } + __ jump_indirect_to(G5_method_fie, O1_scratch); + __ delayed()->nop(); + } + break; + + case _invokevirtual_mh: + { + // Same as TemplateTable::invokevirtual, + // minus the CP setup and profiling: + + // Pick out the vtable index and receiver offset from the MH, + // and then we can discard it: + __ load_method_handle_vmslots(O0_argslot, G3_method_handle, O1_scratch); + __ ldsw(G3_dmh_vmindex, G5_index); + // Note: The verifier allows us to ignore G3_mh_vmtarget. + __ ld_ptr(__ argument_address(O0_argslot, -1), G3_method_handle); + __ null_check(G3_method_handle, oopDesc::klass_offset_in_bytes()); + + // Get receiver klass: + Register O0_klass = O0_argslot; + __ load_klass(G3_method_handle, O0_klass); + __ verify_oop(O0_klass); + + // Get target methodOop & entry point: + const int base = instanceKlass::vtable_start_offset() * wordSize; + assert(vtableEntry::size() * wordSize == wordSize, "adjust the scaling in the code below"); + + __ sll_ptr(G5_index, LogBytesPerWord, G5_index); + __ add(O0_klass, G5_index, O0_klass); + Address vtable_entry_addr(O0_klass, base + vtableEntry::method_offset_in_bytes()); + __ ld_ptr(vtable_entry_addr, G5_method); + + __ verify_oop(G5_method); + __ jump_indirect_to(G5_method_fie, O1_scratch); + __ delayed()->nop(); + } + break; + + case _invokeinterface_mh: + { + // Same as TemplateTable::invokeinterface, + // minus the CP setup and profiling: + __ load_method_handle_vmslots(O0_argslot, G3_method_handle, O1_scratch); + Register O1_intf = O1_scratch; + __ ld_ptr(G3_mh_vmtarget, O1_intf); + __ ldsw(G3_dmh_vmindex, G5_index); + __ ld_ptr(__ argument_address(O0_argslot, -1), G3_method_handle); + __ null_check(G3_method_handle, oopDesc::klass_offset_in_bytes()); + + // Get receiver klass: + Register O0_klass = O0_argslot; + __ load_klass(G3_method_handle, O0_klass); + __ verify_oop(O0_klass); + + // Get interface: + Label no_such_interface; + __ verify_oop(O1_intf); + __ lookup_interface_method(O0_klass, O1_intf, + // Note: next two args must be the same: + G5_index, G5_method, + O2_scratch, + O3_scratch, + no_such_interface); + + __ verify_oop(G5_method); + __ jump_indirect_to(G5_method_fie, O1_scratch); + __ delayed()->nop(); + + __ bind(no_such_interface); + // Throw an exception. + // For historical reasons, it will be IncompatibleClassChangeError. + __ unimplemented("not tested yet"); + __ ld_ptr(Address(O1_intf, java_mirror_offset), O3_scratch); // required interface + __ mov(O0_klass, O2_scratch); // bad receiver + __ jump_to(AddressLiteral(from_interpreted_entry(_raise_exception)), O0_argslot); + __ delayed()->mov(Bytecodes::_invokeinterface, O1_scratch); // who is complaining? + } + break; + + case _bound_ref_mh: + case _bound_int_mh: + case _bound_long_mh: + case _bound_ref_direct_mh: + case _bound_int_direct_mh: + case _bound_long_direct_mh: + { + const bool direct_to_method = (ek >= _bound_ref_direct_mh); + BasicType arg_type = T_ILLEGAL; + int arg_mask = _INSERT_NO_MASK; + int arg_slots = -1; + get_ek_bound_mh_info(ek, arg_type, arg_mask, arg_slots); + + // Make room for the new argument: + __ ldsw(G3_bmh_vmargslot, O0_argslot); + __ add(Gargs, __ argument_offset(O0_argslot), O0_argslot); + + insert_arg_slots(_masm, arg_slots * stack_move_unit(), arg_mask, O0_argslot, O1_scratch, O2_scratch, G5_index); + + // Store bound argument into the new stack slot: + __ ld_ptr(G3_bmh_argument, O1_scratch); + if (arg_type == T_OBJECT) { + __ st_ptr(O1_scratch, Address(O0_argslot, 0)); + } else { + Address prim_value_addr(O1_scratch, java_lang_boxing_object::value_offset_in_bytes(arg_type)); + __ load_sized_value(prim_value_addr, O2_scratch, type2aelembytes(arg_type), is_signed_subword_type(arg_type)); + if (arg_slots == 2) { + __ unimplemented("not yet tested"); +#ifndef _LP64 + __ signx(O2_scratch, O3_scratch); // Sign extend +#endif + __ st_long(O2_scratch, Address(O0_argslot, 0)); // Uses O2/O3 on !_LP64 + } else { + __ st_ptr( O2_scratch, Address(O0_argslot, 0)); + } + } + + if (direct_to_method) { + __ ld_ptr(G3_mh_vmtarget, G5_method); // target is a methodOop + __ verify_oop(G5_method); + __ jump_indirect_to(G5_method_fie, O1_scratch); + __ delayed()->nop(); + } else { + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); // target is a methodOop + __ verify_oop(G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + } + break; + + case _adapter_retype_only: + case _adapter_retype_raw: + // Immediately jump to the next MH layer: + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + // This is OK when all parameter types widen. + // It is also OK when a return type narrows. + break; + + case _adapter_check_cast: + { + // Temps: + Register G5_klass = G5_index; // Interesting AMH data. + + // Check a reference argument before jumping to the next layer of MH: + __ ldsw(G3_amh_vmargslot, O0_argslot); + Address vmarg = __ argument_address(O0_argslot); + + // What class are we casting to? + __ ld_ptr(G3_amh_argument, G5_klass); // This is a Class object! + __ ld_ptr(Address(G5_klass, java_lang_Class::klass_offset_in_bytes()), G5_klass); + + Label done; + __ ld_ptr(vmarg, O1_scratch); + __ tst(O1_scratch); + __ brx(Assembler::zero, false, Assembler::pn, done); // No cast if null. + __ delayed()->nop(); + __ load_klass(O1_scratch, O1_scratch); + + // Live at this point: + // - G5_klass : klass required by the target method + // - O1_scratch : argument klass to test + // - G3_method_handle: adapter method handle + __ check_klass_subtype(O1_scratch, G5_klass, O0_argslot, O2_scratch, done); + + // If we get here, the type check failed! + __ ldsw(G3_amh_vmargslot, O0_argslot); // reload argslot field + __ ld_ptr(G3_amh_argument, O3_scratch); // required class + __ ld_ptr(vmarg, O2_scratch); // bad object + __ jump_to(AddressLiteral(from_interpreted_entry(_raise_exception)), O0_argslot); + __ delayed()->mov(Bytecodes::_checkcast, O1_scratch); // who is complaining? + + __ bind(done); + // Get the new MH: + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_prim_to_prim: + case _adapter_ref_to_prim: + // Handled completely by optimized cases. + __ stop("init_AdapterMethodHandle should not issue this"); + break; + + case _adapter_opt_i2i: // optimized subcase of adapt_prim_to_prim +//case _adapter_opt_f2i: // optimized subcase of adapt_prim_to_prim + case _adapter_opt_l2i: // optimized subcase of adapt_prim_to_prim + case _adapter_opt_unboxi: // optimized subcase of adapt_ref_to_prim + { + // Perform an in-place conversion to int or an int subword. + __ ldsw(G3_amh_vmargslot, O0_argslot); + Address vmarg = __ argument_address(O0_argslot); + Address value; + bool value_left_justified = false; + + switch (ek) { + case _adapter_opt_i2i: + case _adapter_opt_l2i: + __ unimplemented(entry_name(ek)); + value = vmarg; + break; + case _adapter_opt_unboxi: + { + // Load the value up from the heap. + __ ld_ptr(vmarg, O1_scratch); + int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT); +#ifdef ASSERT + for (int bt = T_BOOLEAN; bt < T_INT; bt++) { + if (is_subword_type(BasicType(bt))) + assert(value_offset == java_lang_boxing_object::value_offset_in_bytes(BasicType(bt)), ""); + } +#endif + __ null_check(O1_scratch, value_offset); + value = Address(O1_scratch, value_offset); +#ifdef _BIG_ENDIAN + // Values stored in objects are packed. + value_left_justified = true; +#endif + } + break; + default: + ShouldNotReachHere(); + } + + // This check is required on _BIG_ENDIAN + Register G5_vminfo = G5_index; + __ ldsw(G3_amh_conversion, G5_vminfo); + assert(CONV_VMINFO_SHIFT == 0, "preshifted"); + + // Original 32-bit vmdata word must be of this form: + // | MBZ:6 | signBitCount:8 | srcDstTypes:8 | conversionOp:8 | + __ lduw(value, O1_scratch); + if (!value_left_justified) + __ sll(O1_scratch, G5_vminfo, O1_scratch); + Label zero_extend, done; + __ btst(CONV_VMINFO_SIGN_FLAG, G5_vminfo); + __ br(Assembler::zero, false, Assembler::pn, zero_extend); + __ delayed()->nop(); + + // this path is taken for int->byte, int->short + __ sra(O1_scratch, G5_vminfo, O1_scratch); + __ ba(false, done); + __ delayed()->nop(); + + __ bind(zero_extend); + // this is taken for int->char + __ srl(O1_scratch, G5_vminfo, O1_scratch); + + __ bind(done); + __ st(O1_scratch, vmarg); + + // Get the new MH: + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_opt_i2l: // optimized subcase of adapt_prim_to_prim + case _adapter_opt_unboxl: // optimized subcase of adapt_ref_to_prim + { + // Perform an in-place int-to-long or ref-to-long conversion. + __ ldsw(G3_amh_vmargslot, O0_argslot); + + // On big-endian machine we duplicate the slot and store the MSW + // in the first slot. + __ add(Gargs, __ argument_offset(O0_argslot, 1), O0_argslot); + + insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK, O0_argslot, O1_scratch, O2_scratch, G5_index); + + Address arg_lsw(O0_argslot, 0); + Address arg_msw(O0_argslot, -Interpreter::stackElementSize()); + + switch (ek) { + case _adapter_opt_i2l: + { + __ ldsw(arg_lsw, O2_scratch); // Load LSW +#ifndef _LP64 + __ signx(O2_scratch, O3_scratch); // Sign extend +#endif + __ st_long(O2_scratch, arg_msw); // Uses O2/O3 on !_LP64 + } + break; + case _adapter_opt_unboxl: + { + // Load the value up from the heap. + __ ld_ptr(arg_lsw, O1_scratch); + int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_LONG); + assert(value_offset == java_lang_boxing_object::value_offset_in_bytes(T_DOUBLE), ""); + __ null_check(O1_scratch, value_offset); + __ ld_long(Address(O1_scratch, value_offset), O2_scratch); // Uses O2/O3 on !_LP64 + __ st_long(O2_scratch, arg_msw); + } + break; + default: + ShouldNotReachHere(); + } + + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_opt_f2d: // optimized subcase of adapt_prim_to_prim + case _adapter_opt_d2f: // optimized subcase of adapt_prim_to_prim + { + // perform an in-place floating primitive conversion + __ unimplemented(entry_name(ek)); + } + break; + + case _adapter_prim_to_ref: + __ unimplemented(entry_name(ek)); // %%% FIXME: NYI + break; + + case _adapter_swap_args: + case _adapter_rot_args: + // handled completely by optimized cases + __ stop("init_AdapterMethodHandle should not issue this"); + break; + + case _adapter_opt_swap_1: + case _adapter_opt_swap_2: + case _adapter_opt_rot_1_up: + case _adapter_opt_rot_1_down: + case _adapter_opt_rot_2_up: + case _adapter_opt_rot_2_down: + { + int swap_bytes = 0, rotate = 0; + get_ek_adapter_opt_swap_rot_info(ek, swap_bytes, rotate); + + // 'argslot' is the position of the first argument to swap. + __ ldsw(G3_amh_vmargslot, O0_argslot); + __ add(Gargs, __ argument_offset(O0_argslot), O0_argslot); + + // 'vminfo' is the second. + Register O1_destslot = O1_scratch; + __ ldsw(G3_amh_conversion, O1_destslot); + assert(CONV_VMINFO_SHIFT == 0, "preshifted"); + __ and3(O1_destslot, CONV_VMINFO_MASK, O1_destslot); + __ add(Gargs, __ argument_offset(O1_destslot), O1_destslot); + + if (!rotate) { + for (int i = 0; i < swap_bytes; i += wordSize) { + __ ld_ptr(Address(O0_argslot, i), O2_scratch); + __ ld_ptr(Address(O1_destslot, i), O3_scratch); + __ st_ptr(O3_scratch, Address(O0_argslot, i)); + __ st_ptr(O2_scratch, Address(O1_destslot, i)); + } + } else { + // Save the first chunk, which is going to get overwritten. + switch (swap_bytes) { + case 4 : __ lduw(Address(O0_argslot, 0), O2_scratch); break; + case 16: __ ldx( Address(O0_argslot, 8), O3_scratch); //fall-thru + case 8 : __ ldx( Address(O0_argslot, 0), O2_scratch); break; + default: ShouldNotReachHere(); + } + + if (rotate > 0) { + // Rorate upward. + __ sub(O0_argslot, swap_bytes, O0_argslot); +#if ASSERT + { + // Verify that argslot > destslot, by at least swap_bytes. + Label L_ok; + __ cmp(O0_argslot, O1_destslot); + __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ stop("source must be above destination (upward rotation)"); + __ bind(L_ok); + } +#endif + // Work argslot down to destslot, copying contiguous data upwards. + // Pseudo-code: + // argslot = src_addr - swap_bytes + // destslot = dest_addr + // while (argslot >= destslot) { + // *(argslot + swap_bytes) = *(argslot + 0); + // argslot--; + // } + Label loop; + __ bind(loop); + __ ld_ptr(Address(O0_argslot, 0), G5_index); + __ st_ptr(G5_index, Address(O0_argslot, swap_bytes)); + __ sub(O0_argslot, wordSize, O0_argslot); + __ cmp(O0_argslot, O1_destslot); + __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, loop); + __ delayed()->nop(); // FILLME + } else { + __ add(O0_argslot, swap_bytes, O0_argslot); +#if ASSERT + { + // Verify that argslot < destslot, by at least swap_bytes. + Label L_ok; + __ cmp(O0_argslot, O1_destslot); + __ brx(Assembler::lessEqualUnsigned, false, Assembler::pt, L_ok); + __ delayed()->nop(); + __ stop("source must be above destination (upward rotation)"); + __ bind(L_ok); + } +#endif + // Work argslot up to destslot, copying contiguous data downwards. + // Pseudo-code: + // argslot = src_addr + swap_bytes + // destslot = dest_addr + // while (argslot >= destslot) { + // *(argslot - swap_bytes) = *(argslot + 0); + // argslot++; + // } + Label loop; + __ bind(loop); + __ ld_ptr(Address(O0_argslot, 0), G5_index); + __ st_ptr(G5_index, Address(O0_argslot, -swap_bytes)); + __ add(O0_argslot, wordSize, O0_argslot); + __ cmp(O0_argslot, O1_destslot); + __ brx(Assembler::lessEqualUnsigned, false, Assembler::pt, loop); + __ delayed()->nop(); // FILLME + } + + // Store the original first chunk into the destination slot, now free. + switch (swap_bytes) { + case 4 : __ stw(O2_scratch, Address(O1_destslot, 0)); break; + case 16: __ stx(O3_scratch, Address(O1_destslot, 8)); // fall-thru + case 8 : __ stx(O2_scratch, Address(O1_destslot, 0)); break; + default: ShouldNotReachHere(); + } + } + + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_dup_args: + { + // 'argslot' is the position of the first argument to duplicate. + __ ldsw(G3_amh_vmargslot, O0_argslot); + __ add(Gargs, __ argument_offset(O0_argslot), O0_argslot); + + // 'stack_move' is negative number of words to duplicate. + Register G5_stack_move = G5_index; + __ ldsw(G3_amh_conversion, G5_stack_move); + __ sra(G5_stack_move, CONV_STACK_MOVE_SHIFT, G5_stack_move); + + // Remember the old Gargs (argslot[0]). + Register O1_oldarg = O1_scratch; + __ mov(Gargs, O1_oldarg); + + // Move Gargs down to make room for dups. + __ sll_ptr(G5_stack_move, LogBytesPerWord, G5_stack_move); + __ add(Gargs, G5_stack_move, Gargs); + + // Compute the new Gargs (argslot[0]). + Register O2_newarg = O2_scratch; + __ mov(Gargs, O2_newarg); + + // Copy from oldarg[0...] down to newarg[0...] + // Pseude-code: + // O1_oldarg = old-Gargs + // O2_newarg = new-Gargs + // O0_argslot = argslot + // while (O2_newarg < O1_oldarg) *O2_newarg = *O0_argslot++ + Label loop; + __ bind(loop); + __ ld_ptr(Address(O0_argslot, 0), O3_scratch); + __ st_ptr(O3_scratch, Address(O2_newarg, 0)); + __ add(O0_argslot, wordSize, O0_argslot); + __ add(O2_newarg, wordSize, O2_newarg); + __ cmp(O2_newarg, O1_oldarg); + __ brx(Assembler::less, false, Assembler::pt, loop); + __ delayed()->nop(); // FILLME + + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_drop_args: + { + // 'argslot' is the position of the first argument to nuke. + __ ldsw(G3_amh_vmargslot, O0_argslot); + __ add(Gargs, __ argument_offset(O0_argslot), O0_argslot); + + // 'stack_move' is number of words to drop. + Register G5_stack_move = G5_index; + __ ldsw(G3_amh_conversion, G5_stack_move); + __ sra(G5_stack_move, CONV_STACK_MOVE_SHIFT, G5_stack_move); + + remove_arg_slots(_masm, G5_stack_move, O0_argslot, O1_scratch, O2_scratch, O3_scratch); + + __ ld_ptr(G3_mh_vmtarget, G3_method_handle); + __ jump_to_method_handle_entry(G3_method_handle, O1_scratch); + } + break; + + case _adapter_collect_args: + __ unimplemented(entry_name(ek)); // %%% FIXME: NYI + break; + + case _adapter_spread_args: + // Handled completely by optimized cases. + __ stop("init_AdapterMethodHandle should not issue this"); + break; + + case _adapter_opt_spread_0: + case _adapter_opt_spread_1: + case _adapter_opt_spread_more: + { + // spread an array out into a group of arguments + __ unimplemented(entry_name(ek)); + } + break; + + case _adapter_flyby: + case _adapter_ricochet: + __ unimplemented(entry_name(ek)); // %%% FIXME: NYI + break; + + default: + ShouldNotReachHere(); + } + + address me_cookie = MethodHandleEntry::start_compiled_entry(_masm, interp_entry); + __ unimplemented(entry_name(ek)); // %%% FIXME: NYI + + init_entry(ek, MethodHandleEntry::finish_compiled_entry(_masm, me_cookie)); } diff --git a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp index 2fed8cd83b5..e1ea96a3f5b 100644 --- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp @@ -2917,6 +2917,16 @@ class StubGenerator: public StubCodeGenerator { // arraycopy stubs used by compilers generate_arraycopy_stubs(); + // generic method handle stubs + if (EnableMethodHandles && SystemDictionary::MethodHandle_klass() != NULL) { + for (MethodHandles::EntryKind ek = MethodHandles::_EK_FIRST; + ek < MethodHandles::_EK_LIMIT; + ek = MethodHandles::EntryKind(1 + (int)ek)) { + StubCodeMark mark(this, "MethodHandle", MethodHandles::entry_name(ek)); + MethodHandles::generate_method_handle_stub(_masm, ek); + } + } + // Don't initialize the platform math functions since sparc // doesn't have intrinsics for these operations. } diff --git a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp index 8feef8bd8af..fc539099985 100644 --- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp @@ -151,8 +151,10 @@ address TemplateInterpreterGenerator::generate_StackOverflowError_handler() { address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) { - address compiled_entry = __ pc(); + TosState incoming_state = state; + Label cont; + address compiled_entry = __ pc(); address entry = __ pc(); #if !defined(_LP64) && defined(COMPILER2) @@ -165,12 +167,11 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, // do this here. Unfortunately if we did a rethrow we'd see an machepilog node // first which would move g1 -> O0/O1 and destroy the exception we were throwing. - if( state == ltos ) { - __ srl (G1, 0,O1); - __ srlx(G1,32,O0); + if (incoming_state == ltos) { + __ srl (G1, 0, O1); + __ srlx(G1, 32, O0); } -#endif /* !_LP64 && COMPILER2 */ - +#endif // !_LP64 && COMPILER2 __ bind(cont); @@ -182,10 +183,17 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, __ mov(Llast_SP, SP); // Remove any adapter added stack space. - + Label L_got_cache, L_giant_index; const Register cache = G3_scratch; const Register size = G1_scratch; + if (EnableInvokeDynamic) { + __ ldub(Address(Lbcp, 0), G1_scratch); // Load current bytecode. + __ cmp(G1_scratch, Bytecodes::_invokedynamic); + __ br(Assembler::equal, false, Assembler::pn, L_giant_index); + __ delayed()->nop(); + } __ get_cache_and_index_at_bcp(cache, G1_scratch, 1); + __ bind(L_got_cache); __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset(), size); __ and3(size, 0xFF, size); // argument size in words @@ -193,6 +201,14 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, __ add(Lesp, size, Lesp); // pop arguments __ dispatch_next(state, step); + // out of the main line of code... + if (EnableInvokeDynamic) { + __ bind(L_giant_index); + __ get_cache_and_index_at_bcp(cache, G1_scratch, 1, true); + __ ba(false, L_got_cache); + __ delayed()->nop(); + } + return entry; } diff --git a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp index 0849aaef697..5ab2ffc1308 100644 --- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -1963,19 +1963,30 @@ void TemplateTable::volatile_barrier(Assembler::Membar_mask_bits order_constrain // ---------------------------------------------------------------------------- void TemplateTable::resolve_cache_and_index(int byte_no, Register Rcache, Register index) { assert(byte_no == 1 || byte_no == 2, "byte_no out of range"); + bool is_invokedynamic = (bytecode() == Bytecodes::_invokedynamic); + // Depends on cpCacheOop layout! const int shift_count = (1 + byte_no)*BitsPerByte; Label resolved; - __ get_cache_and_index_at_bcp(Rcache, index, 1); - __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + - ConstantPoolCacheEntry::indices_offset(), Lbyte_code); + __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic); + if (is_invokedynamic) { + // We are resolved if the f1 field contains a non-null CallSite object. + __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + + ConstantPoolCacheEntry::f1_offset(), Lbyte_code); + __ tst(Lbyte_code); + __ br(Assembler::notEqual, false, Assembler::pt, resolved); + __ delayed()->set((int)bytecode(), O1); + } else { + __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + + ConstantPoolCacheEntry::indices_offset(), Lbyte_code); - __ srl( Lbyte_code, shift_count, Lbyte_code ); - __ and3( Lbyte_code, 0xFF, Lbyte_code ); - __ cmp( Lbyte_code, (int)bytecode()); - __ br( Assembler::equal, false, Assembler::pt, resolved); - __ delayed()->set((int)bytecode(), O1); + __ srl( Lbyte_code, shift_count, Lbyte_code ); + __ and3( Lbyte_code, 0xFF, Lbyte_code ); + __ cmp( Lbyte_code, (int)bytecode()); + __ br( Assembler::equal, false, Assembler::pt, resolved); + __ delayed()->set((int)bytecode(), O1); + } address entry; switch (bytecode()) { @@ -1987,12 +1998,13 @@ void TemplateTable::resolve_cache_and_index(int byte_no, Register Rcache, Regist case Bytecodes::_invokespecial : // fall through case Bytecodes::_invokestatic : // fall through case Bytecodes::_invokeinterface: entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke); break; + case Bytecodes::_invokedynamic : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic); break; default : ShouldNotReachHere(); break; } // first time invocation - must resolve first __ call_VM(noreg, entry, O1); // Update registers with resolved info - __ get_cache_and_index_at_bcp(Rcache, index, 1); + __ get_cache_and_index_at_bcp(Rcache, index, 1, is_invokedynamic); __ bind(resolved); } @@ -3130,7 +3142,42 @@ void TemplateTable::invokedynamic(int byte_no) { return; } - __ stop("invokedynamic NYI");//6815692// + // G5: CallSite object (f1) + // XX: unused (f2) + // G3: receiver address + // XX: flags (unused) + + Register G5_callsite = G5_method; + Register Rscratch = G3_scratch; + Register Rtemp = G1_scratch; + Register Rret = Lscratch; + + load_invoke_cp_cache_entry(byte_no, G5_callsite, noreg, Rret, false); + __ mov(SP, O5_savedSP); // record SP that we wanted the callee to restore + + __ verify_oop(G5_callsite); + + // profile this call + __ profile_call(O4); + + // get return address + AddressLiteral table(Interpreter::return_5_addrs_by_index_table()); + __ set(table, Rtemp); + __ srl(Rret, ConstantPoolCacheEntry::tosBits, Rret); // get return type + // Make sure we don't need to mask Rret for tosBits after the above shift + ConstantPoolCacheEntry::verify_tosBits(); + __ sll(Rret, LogBytesPerWord, Rret); + __ ld_ptr(Rtemp, Rret, Rret); // get return address + + __ ld_ptr(G5_callsite, __ delayed_value(java_dyn_CallSite::target_offset_in_bytes, Rscratch), G3_method_handle); + __ null_check(G3_method_handle); + + // Adjust Rret first so Llast_SP can be same as Rret + __ add(Rret, -frame::pc_return_offset, O7); + __ add(Lesp, BytesPerWord, Gargs); // setup parameter pointer + __ jump_to_method_handle_entry(G3_method_handle, Rtemp, /* emit_delayed_nop */ false); + // Record SP so we can remove any stack space allocated by adapter transition + __ delayed()->mov(SP, Llast_SP); } diff --git a/hotspot/src/cpu/x86/vm/assembler_x86.cpp b/hotspot/src/cpu/x86/vm/assembler_x86.cpp index 72086baee03..c3fed6bcd1b 100644 --- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp +++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -6492,24 +6492,19 @@ int MacroAssembler::load_unsigned_short(Register dst, Address src) { } void MacroAssembler::load_sized_value(Register dst, Address src, - int size_in_bytes, bool is_signed) { - switch (size_in_bytes ^ (is_signed ? -1 : 0)) { + size_t size_in_bytes, bool is_signed) { + switch (size_in_bytes) { #ifndef _LP64 // For case 8, caller is responsible for manually loading // the second word into another register. - case ~8: // fall through: - case 8: movl( dst, src ); break; + case 8: movl(dst, src); break; #else - case ~8: // fall through: - case 8: movq( dst, src ); break; + case 8: movq(dst, src); break; #endif - case ~4: // fall through: - case 4: movl( dst, src ); break; - case ~2: load_signed_short( dst, src ); break; - case 2: load_unsigned_short( dst, src ); break; - case ~1: load_signed_byte( dst, src ); break; - case 1: load_unsigned_byte( dst, src ); break; - default: ShouldNotReachHere(); + case 4: movl(dst, src); break; + case 2: is_signed ? load_signed_short(dst, src) : load_unsigned_short(dst, src); break; + case 1: is_signed ? load_signed_byte( dst, src) : load_unsigned_byte( dst, src); break; + default: ShouldNotReachHere(); } } @@ -7706,6 +7701,7 @@ void MacroAssembler::check_method_handle_type(Register mtype_reg, Register mh_re // method handle's MethodType. This macro hides the distinction. void MacroAssembler::load_method_handle_vmslots(Register vmslots_reg, Register mh_reg, Register temp_reg) { + assert_different_registers(vmslots_reg, mh_reg, temp_reg); if (UseCompressedOops) unimplemented(); // field accesses must decode // load mh.type.form.vmslots if (java_dyn_MethodHandle::vmslots_offset_in_bytes() != 0) { diff --git a/hotspot/src/cpu/x86/vm/assembler_x86.hpp b/hotspot/src/cpu/x86/vm/assembler_x86.hpp index f44ae2dde48..bc02c964691 100644 --- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp +++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -1511,7 +1511,7 @@ class MacroAssembler: public Assembler { void extend_sign(Register hi, Register lo); // Loading values by size and signed-ness - void load_sized_value(Register dst, Address src, int size_in_bytes, bool is_signed); + void load_sized_value(Register dst, Address src, size_t size_in_bytes, bool is_signed); // Support for inc/dec with optimal instruction selection depending on value diff --git a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp index 94c824abbce..a99296f73d4 100644 --- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp +++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp @@ -127,7 +127,8 @@ void MethodHandles::insert_arg_slots(MacroAssembler* _masm, RegisterOrConstant arg_slots, int arg_mask, Register rax_argslot, - Register rbx_temp, Register rdx_temp) { + Register rbx_temp, Register rdx_temp, Register temp3_reg) { + assert(temp3_reg == noreg, "temp3 not required"); assert_different_registers(rax_argslot, rbx_temp, rdx_temp, (!arg_slots.is_register() ? rsp : arg_slots.as_register())); @@ -185,7 +186,8 @@ void MethodHandles::insert_arg_slots(MacroAssembler* _masm, void MethodHandles::remove_arg_slots(MacroAssembler* _masm, RegisterOrConstant arg_slots, Register rax_argslot, - Register rbx_temp, Register rdx_temp) { + Register rbx_temp, Register rdx_temp, Register temp3_reg) { + assert(temp3_reg == noreg, "temp3 not required"); assert_different_registers(rax_argslot, rbx_temp, rdx_temp, (!arg_slots.is_register() ? rsp : arg_slots.as_register())); diff --git a/hotspot/src/share/vm/prims/methodHandles.hpp b/hotspot/src/share/vm/prims/methodHandles.hpp index 1929c4f00cc..7e31e08438a 100644 --- a/hotspot/src/share/vm/prims/methodHandles.hpp +++ b/hotspot/src/share/vm/prims/methodHandles.hpp @@ -430,12 +430,12 @@ class MethodHandles: AllStatic { RegisterOrConstant arg_slots, int arg_mask, Register argslot_reg, - Register temp_reg, Register temp2_reg); + Register temp_reg, Register temp2_reg, Register temp3_reg = noreg); static void remove_arg_slots(MacroAssembler* _masm, RegisterOrConstant arg_slots, Register argslot_reg, - Register temp_reg, Register temp2_reg); + Register temp_reg, Register temp2_reg, Register temp3_reg = noreg); }; From 5d05e67d86193ec0a3cb6459d9b5c7ec47622ecb Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:39 -0700 Subject: [PATCH 38/64] Added tag jdk7-b91 for changeset cc69164423eb --- .hgtags-top-repo | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags-top-repo b/.hgtags-top-repo index 56347c8d156..8116335042d 100644 --- a/.hgtags-top-repo +++ b/.hgtags-top-repo @@ -65,3 +65,4 @@ cf26288a114be67c39f2758959ce50b60f5ae330 jdk7-b85 82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88 7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89 425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90 +97d8b6c659c29c8493a8b2b72c2796a021a8cf79 jdk7-b91 From 2467acb3fadd185c20b1936240922f7bbb056057 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:40 -0700 Subject: [PATCH 39/64] Added tag jdk7-b91 for changeset acab8ba96315 --- corba/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/corba/.hgtags b/corba/.hgtags index 405a05a6939..019373740ec 100644 --- a/corba/.hgtags +++ b/corba/.hgtags @@ -65,3 +65,4 @@ c67a9df7bc0ca291f08f9a9cc05cb78ea15d25e6 jdk7-b85 39e14d2da687c7e592142137517aaf689544820f jdk7-b88 bb4424c5e778b842c064a8b1aa902b35f4397654 jdk7-b89 56ce07b0eb47b93a98a72adef0f21e602c460623 jdk7-b90 +bcd2fc089227559ac5be927923609fac29f067fa jdk7-b91 From 1273d6969f26ba70eed15dbfbeb17ee2bce8eaf4 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:43 -0700 Subject: [PATCH 40/64] Added tag jdk7-b91 for changeset c5092b6d8193 --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index a47a270d5e8..2e0258455ee 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -90,3 +90,4 @@ e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 15836273ac2494f36ef62088bc1cb6f3f011f565 jdk7-b89 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90 +e0a1a502e402dbe7bf2d9102b4084a7e79a99a9b jdk7-b91 From 332c6ac18126b848aec49c47b3d3af01c1ab69db Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:48 -0700 Subject: [PATCH 41/64] Added tag jdk7-b91 for changeset d93fc4179dc2 --- jaxp/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jaxp/.hgtags b/jaxp/.hgtags index 906fcdd5f09..824ee0d21d2 100644 --- a/jaxp/.hgtags +++ b/jaxp/.hgtags @@ -65,3 +65,4 @@ c876ad22e4bf9d3c6460080db7ace478e29a3ff9 jdk7-b82 d8ebd15910034f2ba50b2f129f959f86cca01419 jdk7-b88 d2818fd2b036f3b3154a9a7de41afcf4ac679c1b jdk7-b89 c5d932ee326d6f7fd4634b11c7185ea82d184df2 jdk7-b90 +b89b2c3044a298d542f84a2e9d957202b7d8cdb9 jdk7-b91 From 088d5c41e98a765de4ef924570cba04ee5ce1099 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:48 -0700 Subject: [PATCH 42/64] Added tag jdk7-b91 for changeset e675c1f4d97e --- jaxws/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jaxws/.hgtags b/jaxws/.hgtags index d988da222a4..92df3581436 100644 --- a/jaxws/.hgtags +++ b/jaxws/.hgtags @@ -65,3 +65,4 @@ f051045fe94a48fae1097f90cbd9227e6aae6b7e jdk7-b81 8c666f8f3565974e301ccb58b7538912551a6e26 jdk7-b88 bf3675aa7f20fc6f241ce95760005aef2a30ff41 jdk7-b89 ead7c4566a0017bcb44b468b3ac03b60dc5333ce jdk7-b90 +cf4686bf35abd1e573f09fa43cbec66403160ae9 jdk7-b91 From 7320b428801230a0d68872b83db5c28a9dd33591 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:32:53 -0700 Subject: [PATCH 43/64] Added tag jdk7-b91 for changeset bafb4ec71cd3 --- jdk/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/.hgtags b/jdk/.hgtags index 95bdf2ea44c..6a96881983e 100644 --- a/jdk/.hgtags +++ b/jdk/.hgtags @@ -65,3 +65,4 @@ eae6e9ab26064d9ba0e7665dd646a1fd2506fcc1 jdk7-b86 b3c69282f6d3c90ec21056cd1ab70dc0c895b069 jdk7-b88 4a6abb7e224cc8d9a583c23c5782e4668739a119 jdk7-b89 7f90d0b9dbb7ab4c60d0b0233e4e77fb4fac597c jdk7-b90 +08a31cab971fcad4695e913d0f3be7bde3a90747 jdk7-b91 From 74597db90f521a3f1bdcd737d694ee433c5128a7 Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 29 Apr 2010 14:33:03 -0700 Subject: [PATCH 44/64] Added tag jdk7-b91 for changeset cdc146f667c7 --- langtools/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/langtools/.hgtags b/langtools/.hgtags index c855c6e4256..1cb22441614 100644 --- a/langtools/.hgtags +++ b/langtools/.hgtags @@ -65,3 +65,4 @@ ef07347428f2198ae6b8144ac0b9086bbe39fd16 jdk7-b86 f9b5d4867a26f8c4b90ad37fe2c345b721e93d6b jdk7-b88 6cea9a143208bc1185ced046942c0f4e45dbeba5 jdk7-b89 71c2c23a7c35b2896c87004023b9743b6d1b7758 jdk7-b90 +97b6fa97b8ddb3a49394011c2a0ec5d6535e594c jdk7-b91 From a7fa37352db540f8c85a22d26c1969872fc50461 Mon Sep 17 00:00:00 2001 From: Erik Trimble Date: Thu, 29 Apr 2010 15:47:28 -0700 Subject: [PATCH 45/64] 6948636: Bump the HS18 build number to 04 Update the HS18 build number to 04 Reviewed-by: jcoomes --- hotspot/make/hotspot_version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotspot/make/hotspot_version b/hotspot/make/hotspot_version index ddf2f38ffa9..840d867917e 100644 --- a/hotspot/make/hotspot_version +++ b/hotspot/make/hotspot_version @@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2010 HS_MAJOR_VER=18 HS_MINOR_VER=0 -HS_BUILD_NUMBER=03 +HS_BUILD_NUMBER=04 JDK_MAJOR_VER=1 JDK_MINOR_VER=7 From 61b9d428d1b290f9762b0d0a840b7ed746b6dca2 Mon Sep 17 00:00:00 2001 From: Igor Veresov Date: Thu, 29 Apr 2010 17:53:58 -0700 Subject: [PATCH 46/64] 6948602: Disable use of SSE4.2 in String.indexOf intrinsic until 6942326 is fixed Disable the use of pcmpestri until it can be guaranteed that the load doesn't cross in to the uncommited space. See 6942326. Reviewed-by: never, kvn --- hotspot/src/share/vm/opto/library_call.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hotspot/src/share/vm/opto/library_call.cpp b/hotspot/src/share/vm/opto/library_call.cpp index eaa2a06ebb4..7a6ec0dcf43 100644 --- a/hotspot/src/share/vm/opto/library_call.cpp +++ b/hotspot/src/share/vm/opto/library_call.cpp @@ -1175,7 +1175,9 @@ bool LibraryCallKit::inline_string_indexOf() { Node *receiver = pop(); Node* result; - if (Matcher::has_match_rule(Op_StrIndexOf) && + // Disable the use of pcmpestri until it can be guaranteed that + // the load doesn't cross into the uncommited space. + if (false && Matcher::has_match_rule(Op_StrIndexOf) && UseSSE42Intrinsics) { // Generate SSE4.2 version of indexOf // We currently only have match rules that use SSE4.2 From 55457c9cc71130bb5964ebe66a275e76865e970b Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Fri, 30 Apr 2010 04:27:25 -0700 Subject: [PATCH 47/64] 6939182: Zero JNI handles fix Zero will exit with an error when invoked with -Xcheck:jni. Reviewed-by: twisti, kamg --- .../src/cpu/zero/vm/cppInterpreter_zero.cpp | 2 +- hotspot/src/cpu/zero/vm/frame_zero.cpp | 10 ++++---- hotspot/src/cpu/zero/vm/frame_zero.hpp | 19 +++++++-------- hotspot/src/cpu/zero/vm/frame_zero.inline.hpp | 12 +++++----- .../src/cpu/zero/vm/javaFrameAnchor_zero.hpp | 23 ++++++++++++++----- hotspot/src/cpu/zero/vm/stack_zero.cpp | 10 +++++++- hotspot/src/cpu/zero/vm/stack_zero.hpp | 3 +++ .../linux_zero/vm/thread_linux_zero.hpp | 15 ++++++++---- 8 files changed, 59 insertions(+), 35 deletions(-) diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp index 7c38e0820b1..3d6748e4935 100644 --- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp +++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp @@ -833,7 +833,7 @@ int AbstractInterpreter::layout_activation(methodOop method, int callee_extra_locals = callee_locals - callee_param_count; if (interpreter_frame) { - intptr_t *locals = interpreter_frame->sp() + method->max_locals(); + intptr_t *locals = interpreter_frame->fp() + method->max_locals(); interpreterState istate = interpreter_frame->get_interpreterState(); intptr_t *monitor_base = (intptr_t*) istate; intptr_t *stack_base = monitor_base - monitor_words; diff --git a/hotspot/src/cpu/zero/vm/frame_zero.cpp b/hotspot/src/cpu/zero/vm/frame_zero.cpp index 323912e1cb3..0bf4ae68b44 100644 --- a/hotspot/src/cpu/zero/vm/frame_zero.cpp +++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp @@ -1,6 +1,6 @@ /* * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007, 2008, 2009 Red Hat, Inc. + * Copyright 2007, 2008, 2009, 2010 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 @@ -44,14 +44,14 @@ frame frame::sender_for_entry_frame(RegisterMap *map) const { "sender should be next Java frame"); map->clear(); assert(map->include_argument_oops(), "should be set by clear"); - return frame(sender_sp(), sp() + 1); + return frame(zeroframe()->next(), sender_sp()); } frame frame::sender_for_nonentry_frame(RegisterMap *map) const { assert(zeroframe()->is_interpreter_frame() || zeroframe()->is_shark_frame() || zeroframe()->is_fake_stub_frame(), "wrong type of frame"); - return frame(sender_sp(), sp() + 1); + return frame(zeroframe()->next(), sender_sp()); } frame frame::sender(RegisterMap* map) const { @@ -172,8 +172,8 @@ void frame::zero_print_on_error(int frame_index, char *valuebuf = buf + buflen; // Print each word of the frame - for (intptr_t *addr = fp(); addr <= sp(); addr++) { - int offset = sp() - addr; + for (intptr_t *addr = sp(); addr <= fp(); addr++) { + int offset = fp() - addr; // Fill in default values, then try and improve them snprintf(fieldbuf, buflen, "word[%d]", offset); diff --git a/hotspot/src/cpu/zero/vm/frame_zero.hpp b/hotspot/src/cpu/zero/vm/frame_zero.hpp index 84d248fe0c4..31815eb24fb 100644 --- a/hotspot/src/cpu/zero/vm/frame_zero.hpp +++ b/hotspot/src/cpu/zero/vm/frame_zero.hpp @@ -1,6 +1,6 @@ /* * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007, 2008, 2009 Red Hat, Inc. + * Copyright 2007, 2008, 2009, 2010 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,17 +32,18 @@ // Constructor public: - frame(intptr_t* sp, intptr_t* fp); + frame(ZeroFrame* zeroframe, intptr_t* sp); - // 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; + ZeroFrame* _zeroframe; public: + const ZeroFrame *zeroframe() const { + return _zeroframe; + } + intptr_t* fp() const { - return _fp; + return (intptr_t *) zeroframe(); } #ifdef CC_INTERP @@ -50,10 +51,6 @@ #endif // CC_INTERP public: - const ZeroFrame *zeroframe() const { - return (ZeroFrame *) sp(); - } - const EntryFrame *zero_entryframe() const { return zeroframe()->as_entry_frame(); } diff --git a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp index 2751117f897..feab77f339c 100644 --- a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp +++ b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp @@ -1,6 +1,6 @@ /* * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007, 2008, 2009 Red Hat, Inc. + * Copyright 2007, 2008, 2009, 2010 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,16 +26,16 @@ // Constructors inline frame::frame() { + _zeroframe = NULL; _sp = NULL; - _fp = NULL; _pc = NULL; _cb = NULL; _deopt_state = unknown; } -inline frame::frame(intptr_t* sp, intptr_t* fp) { +inline frame::frame(ZeroFrame* zf, intptr_t* sp) { + _zeroframe = zf; _sp = sp; - _fp = fp; switch (zeroframe()->type()) { case ZeroFrame::ENTRY_FRAME: _pc = StubRoutines::call_stub_return_pc(); @@ -66,7 +66,7 @@ inline frame::frame(intptr_t* sp, intptr_t* fp) { // Accessors inline intptr_t* frame::sender_sp() const { - return (intptr_t *) zeroframe()->next(); + return fp() + 1; } inline intptr_t* frame::link() const { @@ -120,7 +120,7 @@ inline jint frame::interpreter_frame_expression_stack_direction() { // we can distinguish identity and younger/older relationship. NULL // represents an invalid (incomparable) frame. inline intptr_t* frame::id() const { - return sp(); + return fp(); } inline JavaCallWrapper* frame::entry_frame_call_wrapper() const { diff --git a/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp b/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp index e356cc91866..7665780bc01 100644 --- a/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp +++ b/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp @@ -1,6 +1,6 @@ /* * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2007, 2008 Red Hat, Inc. + * Copyright 2007, 2008, 2010 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 @@ -23,21 +23,31 @@ * */ + private: + ZeroFrame* volatile _last_Java_fp; + public: // Each arch must define reset, save, restore // These are used by objects that only care about: // 1 - initializing a new state (thread creation, javaCalls) // 2 - saving a current state (javaCalls) // 3 - restoring an old state (javaCalls) + // Note that whenever _last_Java_sp != NULL other anchor fields + // must be valid. The profiler apparently depends on this. void clear() { // clearing _last_Java_sp must be first _last_Java_sp = NULL; // fence? + _last_Java_fp = NULL; _last_Java_pc = NULL; } void copy(JavaFrameAnchor* src) { + set(src->_last_Java_sp, src->_last_Java_pc, src->_last_Java_fp); + } + + void set(intptr_t* sp, address pc, ZeroFrame* fp) { // In order to make sure the transition state is valid for "this" // We must clear _last_Java_sp before copying the rest of the new // data @@ -46,13 +56,14 @@ // previous version (pd_cache_state) don't NULL _last_Java_sp // unless the value is changing // - if (_last_Java_sp != src->_last_Java_sp) + if (_last_Java_sp != sp) _last_Java_sp = NULL; - _last_Java_pc = src->_last_Java_pc; + _last_Java_fp = fp; + _last_Java_pc = pc; // Must be last so profiler will always see valid frame if // has_last_frame() is true - _last_Java_sp = src->_last_Java_sp; + _last_Java_sp = sp; } bool walkable() { @@ -67,6 +78,6 @@ return _last_Java_sp; } - void set_last_Java_sp(intptr_t* sp) { - _last_Java_sp = sp; + ZeroFrame* last_Java_fp() const { + return _last_Java_fp; } diff --git a/hotspot/src/cpu/zero/vm/stack_zero.cpp b/hotspot/src/cpu/zero/vm/stack_zero.cpp index f9c50a6c2fd..328e52e6b00 100644 --- a/hotspot/src/cpu/zero/vm/stack_zero.cpp +++ b/hotspot/src/cpu/zero/vm/stack_zero.cpp @@ -32,6 +32,7 @@ void ZeroStack::handle_overflow(TRAPS) { // Set up the frame anchor if it isn't already bool has_last_Java_frame = thread->has_last_Java_frame(); if (!has_last_Java_frame) { + intptr_t *sp = thread->zero_stack()->sp(); ZeroFrame *frame = thread->top_zero_frame(); while (frame) { if (frame->is_shark_frame()) @@ -44,13 +45,14 @@ void ZeroStack::handle_overflow(TRAPS) { break; } + sp = ((intptr_t *) frame) + 1; frame = frame->next(); } if (frame == NULL) fatal("unrecoverable stack overflow"); - thread->set_last_Java_frame(frame); + thread->set_last_Java_frame(frame, sp); } // Throw the exception @@ -71,3 +73,9 @@ void ZeroStack::handle_overflow(TRAPS) { if (!has_last_Java_frame) thread->reset_last_Java_frame(); } + +#ifndef PRODUCT +void ZeroStack::zap(int c) { + memset(_base, c, available_words() * wordSize); +} +#endif // PRODUCT diff --git a/hotspot/src/cpu/zero/vm/stack_zero.hpp b/hotspot/src/cpu/zero/vm/stack_zero.hpp index 8e02d9f4bff..ab3beca4760 100644 --- a/hotspot/src/cpu/zero/vm/stack_zero.hpp +++ b/hotspot/src/cpu/zero/vm/stack_zero.hpp @@ -94,6 +94,9 @@ class ZeroStack { void overflow_check(int required_words, TRAPS); static void handle_overflow(TRAPS); + public: + void zap(int c) PRODUCT_RETURN; + public: static ByteSize base_offset() { return byte_offset_of(ZeroStack, _base); diff --git a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp index 76f74c49b63..aea90119989 100644 --- a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp +++ b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp @@ -68,19 +68,24 @@ public: void set_last_Java_frame() { - set_last_Java_frame(top_zero_frame()); + set_last_Java_frame(top_zero_frame(), zero_stack()->sp()); } void reset_last_Java_frame() { - set_last_Java_frame(NULL); + frame_anchor()->zap(); } - void set_last_Java_frame(ZeroFrame* frame) { - frame_anchor()->set_last_Java_sp((intptr_t *) frame); + void set_last_Java_frame(ZeroFrame* fp, intptr_t* sp) { + frame_anchor()->set(sp, NULL, fp); + } + + public: + ZeroFrame* last_Java_fp() { + return frame_anchor()->last_Java_fp(); } private: frame pd_last_frame() { assert(has_last_Java_frame(), "must have last_Java_sp() when suspended"); - return frame(last_Java_sp(), zero_stack()->sp()); + return frame(last_Java_fp(), last_Java_sp()); } public: From 0211f9703a9a10b43e55529dbb321c5844e3b985 Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Fri, 30 Apr 2010 08:37:24 -0700 Subject: [PATCH 48/64] 6943304: remove tagged stack interpreter Reviewed-by: coleenp, never, gbenson --- hotspot/src/cpu/sparc/vm/assembler_sparc.cpp | 2 +- .../src/cpu/sparc/vm/cppInterpreter_sparc.hpp | 4 +- hotspot/src/cpu/sparc/vm/frame_sparc.cpp | 2 +- .../src/cpu/sparc/vm/interp_masm_sparc.cpp | 292 ++++-------------- .../src/cpu/sparc/vm/interp_masm_sparc.hpp | 21 +- .../src/cpu/sparc/vm/interpreterRT_sparc.cpp | 52 +--- .../src/cpu/sparc/vm/interpreter_sparc.hpp | 32 +- .../src/cpu/sparc/vm/methodHandles_sparc.cpp | 4 +- .../src/cpu/sparc/vm/sharedRuntime_sparc.cpp | 62 +--- .../src/cpu/sparc/vm/stubGenerator_sparc.cpp | 14 +- .../sparc/vm/templateInterpreter_sparc.cpp | 26 +- .../sparc/vm/templateInterpreter_sparc.hpp | 5 +- .../src/cpu/sparc/vm/templateTable_sparc.cpp | 150 +++++---- hotspot/src/cpu/x86/vm/assembler_x86.cpp | 2 +- hotspot/src/cpu/x86/vm/cppInterpreter_x86.hpp | 6 +- hotspot/src/cpu/x86/vm/frame_x86.cpp | 6 +- hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp | 200 +----------- hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp | 38 +-- hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp | 178 +---------- hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp | 34 +- .../src/cpu/x86/vm/interpreterRT_x86_32.cpp | 18 +- .../src/cpu/x86/vm/interpreterRT_x86_64.cpp | 45 +-- hotspot/src/cpu/x86/vm/interpreter_x86.hpp | 37 +-- hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp | 11 +- hotspot/src/cpu/x86/vm/methodHandles_x86.cpp | 16 +- .../src/cpu/x86/vm/sharedRuntime_x86_32.cpp | 62 +--- .../src/cpu/x86/vm/sharedRuntime_x86_64.cpp | 37 +-- .../src/cpu/x86/vm/stubGenerator_x86_32.cpp | 8 +- .../src/cpu/x86/vm/stubGenerator_x86_64.cpp | 5 - .../cpu/x86/vm/templateInterpreter_x86.hpp | 6 +- .../cpu/x86/vm/templateInterpreter_x86_32.cpp | 22 +- .../cpu/x86/vm/templateInterpreter_x86_64.cpp | 24 +- .../src/cpu/x86/vm/templateTable_x86_32.cpp | 228 ++++---------- .../src/cpu/x86/vm/templateTable_x86_64.cpp | 156 ++++------ hotspot/src/cpu/zero/vm/interpreter_zero.hpp | 16 +- .../os_cpu/linux_x86/vm/globals_linux_x86.hpp | 8 +- .../solaris_x86/vm/globals_solaris_x86.hpp | 6 +- .../vm/interpreter/abstractInterpreter.hpp | 73 +---- .../vm/interpreter/bytecodeInterpreter.cpp | 91 +----- .../vm/interpreter/interpreterRuntime.cpp | 4 +- hotspot/src/share/vm/oops/methodOop.cpp | 2 +- hotspot/src/share/vm/prims/methodHandles.hpp | 4 +- hotspot/src/share/vm/runtime/arguments.cpp | 11 - hotspot/src/share/vm/runtime/frame.cpp | 171 ++-------- hotspot/src/share/vm/runtime/frame.hpp | 26 +- hotspot/src/share/vm/runtime/globals.hpp | 5 +- hotspot/src/share/vm/runtime/javaCalls.cpp | 12 +- hotspot/src/share/vm/runtime/javaCalls.hpp | 8 +- .../src/share/vm/runtime/sharedRuntime.cpp | 17 +- hotspot/src/share/vm/runtime/vframe.cpp | 129 +++----- hotspot/src/share/vm/runtime/vframeArray.cpp | 13 +- 51 files changed, 510 insertions(+), 1891 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp index 00fa5f4a629..5e4135737c4 100644 --- a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp @@ -3152,7 +3152,7 @@ void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_ RegisterOrConstant MacroAssembler::argument_offset(RegisterOrConstant arg_slot, int extra_slot_offset) { // cf. TemplateTable::prepare_invoke(), if (load_receiver). - int stackElementSize = Interpreter::stackElementSize(); + int stackElementSize = Interpreter::stackElementSize; int offset = extra_slot_offset * stackElementSize; if (arg_slot.is_constant()) { offset += arg_slot.as_constant() * stackElementSize; diff --git a/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.hpp b/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.hpp index c76d1e409c1..c4a256aaa89 100644 --- a/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2010 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 @@ -26,7 +26,7 @@ // fail with a guarantee ("not enough space for interpreter generation"); // if too small. // Run with +PrintInterpreter to get the VM to print out the size. - // Max size with JVMTI and TaggedStackInterpreter + // Max size with JVMTI // QQQ this is proably way too large for c++ interpreter diff --git a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp index 64b652376eb..bf5bc44a40c 100644 --- a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp @@ -620,7 +620,7 @@ bool frame::is_interpreted_frame_valid(JavaThread* thread) const { // stack frames shouldn't be much larger than max_stack elements - if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize()) { + if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize) { return false; } diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp index b5535f86f51..257c426ab68 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp @@ -50,7 +50,6 @@ void InterpreterMacroAssembler::compute_extra_locals_size_in_bytes(Register args // Any changes should also be applied to CodeEmitter::emit_osr_entry(). assert_different_registers(args_size, locals_size); // max_locals*2 for TAGS. Assumes that args_size has already been adjusted. - if (TaggedStackInterpreter) sll(locals_size, 1, locals_size); subcc(locals_size, args_size, delta);// extra space for non-arguments locals in words // Use br/mov combination because it works on both V8 and V9 and is // faster. @@ -319,7 +318,7 @@ void InterpreterMacroAssembler::load_unaligned_double(Register r1, int offset, F ldf(FloatRegisterImpl::D, r1, offset, d); #else ldf(FloatRegisterImpl::S, r1, offset, d); - ldf(FloatRegisterImpl::S, r1, offset + Interpreter::stackElementSize(), d->successor()); + ldf(FloatRegisterImpl::S, r1, offset + Interpreter::stackElementSize, d->successor()); #endif } @@ -330,10 +329,10 @@ void InterpreterMacroAssembler::store_unaligned_double(FloatRegister d, Register #ifdef _LP64 stf(FloatRegisterImpl::D, d, r1, offset); // store something more useful here - debug_only(stx(G0, r1, offset+Interpreter::stackElementSize());) + debug_only(stx(G0, r1, offset+Interpreter::stackElementSize);) #else stf(FloatRegisterImpl::S, d, r1, offset); - stf(FloatRegisterImpl::S, d->successor(), r1, offset + Interpreter::stackElementSize()); + stf(FloatRegisterImpl::S, d->successor(), r1, offset + Interpreter::stackElementSize); #endif } @@ -345,7 +344,7 @@ void InterpreterMacroAssembler::load_unaligned_long(Register r1, int offset, Reg ldx(r1, offset, rd); #else ld(r1, offset, rd); - ld(r1, offset + Interpreter::stackElementSize(), rd->successor()); + ld(r1, offset + Interpreter::stackElementSize, rd->successor()); #endif } @@ -356,138 +355,62 @@ void InterpreterMacroAssembler::store_unaligned_long(Register l, Register r1, in #ifdef _LP64 stx(l, r1, offset); // store something more useful here - debug_only(stx(G0, r1, offset+Interpreter::stackElementSize());) + debug_only(stx(G0, r1, offset+Interpreter::stackElementSize);) #else st(l, r1, offset); - st(l->successor(), r1, offset + Interpreter::stackElementSize()); + st(l->successor(), r1, offset + Interpreter::stackElementSize); #endif } -#ifdef ASSERT -void InterpreterMacroAssembler::verify_stack_tag(frame::Tag t, - Register r, - Register scratch) { - if (TaggedStackInterpreter) { - Label ok, long_ok; - ld_ptr(Lesp, Interpreter::expr_tag_offset_in_bytes(0), r); - if (t == frame::TagCategory2) { - cmp(r, G0); - brx(Assembler::equal, false, Assembler::pt, long_ok); - delayed()->ld_ptr(Lesp, Interpreter::expr_tag_offset_in_bytes(1), r); - stop("stack long/double tag value bad"); - bind(long_ok); - cmp(r, G0); - } else if (t == frame::TagValue) { - cmp(r, G0); - } else { - assert_different_registers(r, scratch); - mov(t, scratch); - cmp(r, scratch); - } - brx(Assembler::equal, false, Assembler::pt, ok); - delayed()->nop(); - // Also compare if the stack value is zero, then the tag might - // not have been set coming from deopt. - ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), r); - cmp(r, G0); - brx(Assembler::equal, false, Assembler::pt, ok); - delayed()->nop(); - stop("Stack tag value is bad"); - bind(ok); - } -} -#endif // ASSERT - void InterpreterMacroAssembler::pop_i(Register r) { assert_not_delayed(); - // Uses destination register r for scratch - debug_only(verify_stack_tag(frame::TagValue, r)); ld(Lesp, Interpreter::expr_offset_in_bytes(0), r); - inc(Lesp, Interpreter::stackElementSize()); + inc(Lesp, Interpreter::stackElementSize); debug_only(verify_esp(Lesp)); } void InterpreterMacroAssembler::pop_ptr(Register r, Register scratch) { assert_not_delayed(); - // Uses destination register r for scratch - debug_only(verify_stack_tag(frame::TagReference, r, scratch)); ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), r); - inc(Lesp, Interpreter::stackElementSize()); + inc(Lesp, Interpreter::stackElementSize); debug_only(verify_esp(Lesp)); } void InterpreterMacroAssembler::pop_l(Register r) { assert_not_delayed(); - // Uses destination register r for scratch - debug_only(verify_stack_tag(frame::TagCategory2, r)); load_unaligned_long(Lesp, Interpreter::expr_offset_in_bytes(0), r); - inc(Lesp, 2*Interpreter::stackElementSize()); + inc(Lesp, 2*Interpreter::stackElementSize); debug_only(verify_esp(Lesp)); } void InterpreterMacroAssembler::pop_f(FloatRegister f, Register scratch) { assert_not_delayed(); - debug_only(verify_stack_tag(frame::TagValue, scratch)); ldf(FloatRegisterImpl::S, Lesp, Interpreter::expr_offset_in_bytes(0), f); - inc(Lesp, Interpreter::stackElementSize()); + inc(Lesp, Interpreter::stackElementSize); debug_only(verify_esp(Lesp)); } void InterpreterMacroAssembler::pop_d(FloatRegister f, Register scratch) { assert_not_delayed(); - debug_only(verify_stack_tag(frame::TagCategory2, scratch)); load_unaligned_double(Lesp, Interpreter::expr_offset_in_bytes(0), f); - inc(Lesp, 2*Interpreter::stackElementSize()); + inc(Lesp, 2*Interpreter::stackElementSize); debug_only(verify_esp(Lesp)); } -// (Note use register first, then decrement so dec can be done during store stall) -void InterpreterMacroAssembler::tag_stack(Register r) { - if (TaggedStackInterpreter) { - st_ptr(r, Lesp, Interpreter::tag_offset_in_bytes()); - } -} - -void InterpreterMacroAssembler::tag_stack(frame::Tag t, Register r) { - if (TaggedStackInterpreter) { - assert (frame::TagValue == 0, "TagValue must be zero"); - if (t == frame::TagValue) { - st_ptr(G0, Lesp, Interpreter::tag_offset_in_bytes()); - } else if (t == frame::TagCategory2) { - st_ptr(G0, Lesp, Interpreter::tag_offset_in_bytes()); - // Tag next slot down too - st_ptr(G0, Lesp, -Interpreter::stackElementSize() + Interpreter::tag_offset_in_bytes()); - } else { - assert_different_registers(r, O3); - mov(t, O3); - st_ptr(O3, Lesp, Interpreter::tag_offset_in_bytes()); - } - } -} - void InterpreterMacroAssembler::push_i(Register r) { assert_not_delayed(); debug_only(verify_esp(Lesp)); - tag_stack(frame::TagValue, r); - st( r, Lesp, Interpreter::value_offset_in_bytes()); - dec( Lesp, Interpreter::stackElementSize()); + st(r, Lesp, 0); + dec(Lesp, Interpreter::stackElementSize); } void InterpreterMacroAssembler::push_ptr(Register r) { assert_not_delayed(); - tag_stack(frame::TagReference, r); - st_ptr( r, Lesp, Interpreter::value_offset_in_bytes()); - dec( Lesp, Interpreter::stackElementSize()); -} - -void InterpreterMacroAssembler::push_ptr(Register r, Register tag) { - assert_not_delayed(); - tag_stack(tag); - st_ptr(r, Lesp, Interpreter::value_offset_in_bytes()); - dec( Lesp, Interpreter::stackElementSize()); + st_ptr(r, Lesp, 0); + dec(Lesp, Interpreter::stackElementSize); } // remember: our convention for longs in SPARC is: @@ -497,33 +420,28 @@ void InterpreterMacroAssembler::push_ptr(Register r, Register tag) { void InterpreterMacroAssembler::push_l(Register r) { assert_not_delayed(); debug_only(verify_esp(Lesp)); - tag_stack(frame::TagCategory2, r); - // Longs are in stored in memory-correct order, even if unaligned. - // and may be separated by stack tags. - int offset = -Interpreter::stackElementSize() + Interpreter::value_offset_in_bytes(); + // Longs are stored in memory-correct order, even if unaligned. + int offset = -Interpreter::stackElementSize; store_unaligned_long(r, Lesp, offset); - dec(Lesp, 2 * Interpreter::stackElementSize()); + dec(Lesp, 2 * Interpreter::stackElementSize); } void InterpreterMacroAssembler::push_f(FloatRegister f) { assert_not_delayed(); debug_only(verify_esp(Lesp)); - tag_stack(frame::TagValue, Otos_i); - stf(FloatRegisterImpl::S, f, Lesp, Interpreter::value_offset_in_bytes()); - dec(Lesp, Interpreter::stackElementSize()); + stf(FloatRegisterImpl::S, f, Lesp, 0); + dec(Lesp, Interpreter::stackElementSize); } void InterpreterMacroAssembler::push_d(FloatRegister d) { assert_not_delayed(); debug_only(verify_esp(Lesp)); - tag_stack(frame::TagCategory2, Otos_i); - // Longs are in stored in memory-correct order, even if unaligned. - // and may be separated by stack tags. - int offset = -Interpreter::stackElementSize() + Interpreter::value_offset_in_bytes(); + // Longs are stored in memory-correct order, even if unaligned. + int offset = -Interpreter::stackElementSize; store_unaligned_double(d, Lesp, offset); - dec(Lesp, 2 * Interpreter::stackElementSize()); + dec(Lesp, 2 * Interpreter::stackElementSize); } @@ -561,30 +479,18 @@ void InterpreterMacroAssembler::pop(TosState state) { } -// Tagged stack helpers for swap and dup -void InterpreterMacroAssembler::load_ptr_and_tag(int n, Register val, - Register tag) { +// Helpers for swap and dup +void InterpreterMacroAssembler::load_ptr(int n, Register val) { ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(n), val); - if (TaggedStackInterpreter) { - ld_ptr(Lesp, Interpreter::expr_tag_offset_in_bytes(n), tag); - } } -void InterpreterMacroAssembler::store_ptr_and_tag(int n, Register val, - Register tag) { +void InterpreterMacroAssembler::store_ptr(int n, Register val) { st_ptr(val, Lesp, Interpreter::expr_offset_in_bytes(n)); - if (TaggedStackInterpreter) { - st_ptr(tag, Lesp, Interpreter::expr_tag_offset_in_bytes(n)); - } } void InterpreterMacroAssembler::load_receiver(Register param_count, Register recv) { - - sll(param_count, Interpreter::logStackElementSize(), param_count); - if (TaggedStackInterpreter) { - add(param_count, Interpreter::value_offset_in_bytes(), param_count); // get obj address - } + sll(param_count, Interpreter::logStackElementSize, param_count); ld_ptr(Lesp, param_count, recv); // gets receiver Oop } @@ -605,7 +511,6 @@ void InterpreterMacroAssembler::empty_expression_stack() { // Compute max expression stack+register save area lduh(Lmethod, in_bytes(methodOopDesc::max_stack_offset()), Gframe_size); // Load max stack. - if (TaggedStackInterpreter) sll ( Gframe_size, 1, Gframe_size); // max_stack * 2 for TAGS add( Gframe_size, frame::memory_parameter_word_sp_offset, Gframe_size ); // @@ -2018,51 +1923,11 @@ void InterpreterMacroAssembler::add_monitor_to_stack( bool stack_is_empty, } // Locals -#ifdef ASSERT -void InterpreterMacroAssembler::verify_local_tag(frame::Tag t, - Register base, - Register scratch, - int n) { - if (TaggedStackInterpreter) { - Label ok, long_ok; - // Use dst for scratch - assert_different_registers(base, scratch); - ld_ptr(base, Interpreter::local_tag_offset_in_bytes(n), scratch); - if (t == frame::TagCategory2) { - cmp(scratch, G0); - brx(Assembler::equal, false, Assembler::pt, long_ok); - delayed()->ld_ptr(base, Interpreter::local_tag_offset_in_bytes(n+1), scratch); - stop("local long/double tag value bad"); - bind(long_ok); - // compare second half tag - cmp(scratch, G0); - } else if (t == frame::TagValue) { - cmp(scratch, G0); - } else { - assert_different_registers(O3, base, scratch); - mov(t, O3); - cmp(scratch, O3); - } - brx(Assembler::equal, false, Assembler::pt, ok); - delayed()->nop(); - // Also compare if the local value is zero, then the tag might - // not have been set coming from deopt. - ld_ptr(base, Interpreter::local_offset_in_bytes(n), scratch); - cmp(scratch, G0); - brx(Assembler::equal, false, Assembler::pt, ok); - delayed()->nop(); - stop("Local tag value is bad"); - bind(ok); - } -} -#endif // ASSERT - void InterpreterMacroAssembler::access_local_ptr( Register index, Register dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagReference, index, dst)); - ld_ptr(index, Interpreter::value_offset_in_bytes(), dst); + ld_ptr(index, 0, dst); // Note: index must hold the effective address--the iinc template uses it } @@ -2070,27 +1935,24 @@ void InterpreterMacroAssembler::access_local_ptr( Register index, Register dst ) void InterpreterMacroAssembler::access_local_returnAddress(Register index, Register dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagValue, index, dst)); - ld_ptr(index, Interpreter::value_offset_in_bytes(), dst); + ld_ptr(index, 0, dst); } void InterpreterMacroAssembler::access_local_int( Register index, Register dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagValue, index, dst)); - ld(index, Interpreter::value_offset_in_bytes(), dst); + ld(index, 0, dst); // Note: index must hold the effective address--the iinc template uses it } void InterpreterMacroAssembler::access_local_long( Register index, Register dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagCategory2, index, dst)); // First half stored at index n+1 (which grows down from Llocals[n]) load_unaligned_long(index, Interpreter::local_offset_in_bytes(1), dst); } @@ -2098,18 +1960,16 @@ void InterpreterMacroAssembler::access_local_long( Register index, Register dst void InterpreterMacroAssembler::access_local_float( Register index, FloatRegister dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagValue, index, G1_scratch)); - ldf(FloatRegisterImpl::S, index, Interpreter::value_offset_in_bytes(), dst); + ldf(FloatRegisterImpl::S, index, 0, dst); } void InterpreterMacroAssembler::access_local_double( Register index, FloatRegister dst ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(verify_local_tag(frame::TagCategory2, index, G1_scratch)); load_unaligned_double(index, Interpreter::local_offset_in_bytes(1), dst); } @@ -2135,94 +1995,60 @@ void InterpreterMacroAssembler::check_for_regarea_stomp(Register Rindex, int off } #endif // ASSERT -void InterpreterMacroAssembler::tag_local(frame::Tag t, - Register base, - Register src, - int n) { - if (TaggedStackInterpreter) { - // have to store zero because local slots can be reused (rats!) - if (t == frame::TagValue) { - st_ptr(G0, base, Interpreter::local_tag_offset_in_bytes(n)); - } else if (t == frame::TagCategory2) { - st_ptr(G0, base, Interpreter::local_tag_offset_in_bytes(n)); - st_ptr(G0, base, Interpreter::local_tag_offset_in_bytes(n+1)); - } else { - // assert that we don't stomp the value in 'src' - // O3 is arbitrary because it's not used. - assert_different_registers(src, base, O3); - mov( t, O3); - st_ptr(O3, base, Interpreter::local_tag_offset_in_bytes(n)); - } - } -} - void InterpreterMacroAssembler::store_local_int( Register index, Register src ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - debug_only(check_for_regarea_stomp(index, Interpreter::value_offset_in_bytes(), FP, G1_scratch, G4_scratch);) - tag_local(frame::TagValue, index, src); - st(src, index, Interpreter::value_offset_in_bytes()); + debug_only(check_for_regarea_stomp(index, 0, FP, G1_scratch, G4_scratch);) + st(src, index, 0); } -void InterpreterMacroAssembler::store_local_ptr( Register index, Register src, - Register tag ) { +void InterpreterMacroAssembler::store_local_ptr( Register index, Register src ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - #ifdef ASSERT - check_for_regarea_stomp(index, Interpreter::value_offset_in_bytes(), FP, G1_scratch, G4_scratch); - #endif - st_ptr(src, index, Interpreter::value_offset_in_bytes()); - // Store tag register directly - if (TaggedStackInterpreter) { - st_ptr(tag, index, Interpreter::tag_offset_in_bytes()); - } +#ifdef ASSERT + check_for_regarea_stomp(index, 0, FP, G1_scratch, G4_scratch); +#endif + st_ptr(src, index, 0); } -void InterpreterMacroAssembler::store_local_ptr( int n, Register src, - Register tag ) { - st_ptr(src, Llocals, Interpreter::local_offset_in_bytes(n)); - if (TaggedStackInterpreter) { - st_ptr(tag, Llocals, Interpreter::local_tag_offset_in_bytes(n)); - } +void InterpreterMacroAssembler::store_local_ptr( int n, Register src ) { + st_ptr(src, Llocals, Interpreter::local_offset_in_bytes(n)); } void InterpreterMacroAssembler::store_local_long( Register index, Register src ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - #ifdef ASSERT +#ifdef ASSERT check_for_regarea_stomp(index, Interpreter::local_offset_in_bytes(1), FP, G1_scratch, G4_scratch); - #endif - tag_local(frame::TagCategory2, index, src); +#endif store_unaligned_long(src, index, Interpreter::local_offset_in_bytes(1)); // which is n+1 } void InterpreterMacroAssembler::store_local_float( Register index, FloatRegister src ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - #ifdef ASSERT - check_for_regarea_stomp(index, Interpreter::value_offset_in_bytes(), FP, G1_scratch, G4_scratch); - #endif - tag_local(frame::TagValue, index, G1_scratch); - stf(FloatRegisterImpl::S, src, index, Interpreter::value_offset_in_bytes()); +#ifdef ASSERT + check_for_regarea_stomp(index, 0, FP, G1_scratch, G4_scratch); +#endif + stf(FloatRegisterImpl::S, src, index, 0); } void InterpreterMacroAssembler::store_local_double( Register index, FloatRegister src ) { assert_not_delayed(); - sll(index, Interpreter::logStackElementSize(), index); + sll(index, Interpreter::logStackElementSize, index); sub(Llocals, index, index); - #ifdef ASSERT +#ifdef ASSERT check_for_regarea_stomp(index, Interpreter::local_offset_in_bytes(1), FP, G1_scratch, G4_scratch); - #endif - tag_local(frame::TagCategory2, index, G1_scratch); +#endif store_unaligned_double(src, index, Interpreter::local_offset_in_bytes(1)); } diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp index 0fd57778afe..3db0a0a081b 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp @@ -149,7 +149,6 @@ class InterpreterMacroAssembler: public MacroAssembler { void push_i( Register r = Otos_i); void push_ptr( Register r = Otos_i); - void push_ptr( Register r, Register tag); void push_l( Register r = Otos_l1); void push_f(FloatRegister f = Ftos_f); void push_d(FloatRegister f = Ftos_d1); @@ -159,17 +158,9 @@ class InterpreterMacroAssembler: public MacroAssembler { void push(TosState state); // transition state -> vtos void empty_expression_stack(); // resets both Lesp and SP - // Support for Tagged Stacks - void tag_stack(frame::Tag t, Register r); - void tag_stack(Register tag); - void tag_local(frame::Tag t, Register src, Register base, int n = 0); - #ifdef ASSERT void verify_sp(Register Rsp, Register Rtemp); void verify_esp(Register Resp); // verify that Lesp points to a word in the temp stack - - void verify_stack_tag(frame::Tag t, Register r, Register scratch = G0); - void verify_local_tag(frame::Tag t, Register base, Register scr, int n = 0); #endif // ASSERT public: @@ -242,17 +233,17 @@ class InterpreterMacroAssembler: public MacroAssembler { void check_for_regarea_stomp( Register Rindex, int offset, Register Rlimit, Register Rscratch, Register Rscratch1); #endif // ASSERT void store_local_int( Register index, Register src ); - void store_local_ptr( Register index, Register src, Register tag = Otos_l2 ); - void store_local_ptr( int n, Register src, Register tag = Otos_l2 ); + void store_local_ptr( Register index, Register src ); + void store_local_ptr( int n, Register src ); void store_local_long( Register index, Register src ); void store_local_float( Register index, FloatRegister src ); void store_local_double( Register index, FloatRegister src ); - // Tagged stack helpers for swap and dup - void load_ptr_and_tag(int n, Register val, Register tag); - void store_ptr_and_tag(int n, Register val, Register tag); + // Helpers for swap and dup + void load_ptr(int n, Register val); + void store_ptr(int n, Register val); - // Tagged stack helper for getting receiver in register. + // Helper for getting receiver in register. void load_receiver(Register param_count, Register recv); static int top_most_monitor_byte_offset(); // offset in bytes to top of monitor block diff --git a/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp b/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp index 7306f2a7f6e..443a74f4708 100644 --- a/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2010 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 @@ -43,19 +43,6 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_long() { Argument jni_arg(jni_offset(), false); Register Rtmp = O0; -#ifdef ASSERT - if (TaggedStackInterpreter) { - // check at least one tag is okay - Label ok; - __ ld_ptr(Llocals, Interpreter::local_tag_offset_in_bytes(offset() + 1), Rtmp); - __ cmp(Rtmp, G0); - __ brx(Assembler::equal, false, Assembler::pt, ok); - __ delayed()->nop(); - __ stop("Native object has bad tag value"); - __ bind(ok); - } -#endif // ASSERT - #ifdef _LP64 __ ldx(Llocals, Interpreter::local_offset_in_bytes(offset() + 1), Rtmp); __ store_long_argument(Rtmp, jni_arg); @@ -107,18 +94,6 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_object() { Address h_arg = Address(Llocals, Interpreter::local_offset_in_bytes(offset())); __ ld_ptr(h_arg, Rtmp1); -#ifdef ASSERT - if (TaggedStackInterpreter) { - // check we have the obj and not the tag - Label ok; - __ mov(frame::TagReference, Rtmp3); - __ cmp(Rtmp1, Rtmp3); - __ brx(Assembler::notEqual, true, Assembler::pt, ok); - __ delayed()->nop(); - __ stop("Native object passed tag by mistake"); - __ bind(ok); - } -#endif // ASSERT if (!do_NULL_check) { __ add(h_arg.base(), h_arg.disp(), Rtmp2); } else { @@ -168,17 +143,9 @@ class SlowSignatureHandler: public NativeSignatureIterator { long_sig = 3 }; -#ifdef ASSERT - void verify_tag(frame::Tag t) { - assert(!TaggedStackInterpreter || - *(intptr_t*)(_from+Interpreter::local_tag_offset_in_bytes(0)) == t, "wrong tag"); - } -#endif // ASSERT - virtual void pass_int() { *_to++ = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; add_signature( non_float ); } @@ -186,31 +153,27 @@ class SlowSignatureHandler: public NativeSignatureIterator { // pass address of from intptr_t *from_addr = (intptr_t*)(_from + Interpreter::local_offset_in_bytes(0)); *_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr; - debug_only(verify_tag(frame::TagReference)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; add_signature( non_float ); } #ifdef _LP64 virtual void pass_float() { *_to++ = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; add_signature( float_sig ); } virtual void pass_double() { *_to++ = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - debug_only(verify_tag(frame::TagValue)); - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; add_signature( double_sig ); } virtual void pass_long() { _to[0] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - debug_only(verify_tag(frame::TagValue)); _to += 1; - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; add_signature( long_sig ); } #else @@ -218,9 +181,8 @@ class SlowSignatureHandler: public NativeSignatureIterator { virtual void pass_long() { _to[0] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); _to[1] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); _to += 2; - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; add_signature( non_float ); } #endif // _LP64 diff --git a/hotspot/src/cpu/sparc/vm/interpreter_sparc.hpp b/hotspot/src/cpu/sparc/vm/interpreter_sparc.hpp index 711eedead67..e9a101e8fbe 100644 --- a/hotspot/src/cpu/sparc/vm/interpreter_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/interpreter_sparc.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -24,33 +24,13 @@ public: - // Support for Tagged Stacks + static int expr_offset_in_bytes(int i) { return stackElementSize * i + wordSize; } // Stack index relative to tos (which points at value) - static int expr_index_at(int i) { - return stackElementWords() * i; - } - - static int expr_tag_index_at(int i) { - assert(TaggedStackInterpreter, "should not call this"); - // tag is one word above java stack element - return stackElementWords() * i + 1; - } - - static int expr_offset_in_bytes(int i) { return stackElementSize()*i + wordSize; } - static int expr_tag_offset_in_bytes (int i) { - assert(TaggedStackInterpreter, "should not call this"); - return expr_offset_in_bytes(i) + wordSize; - } + static int expr_index_at(int i) { return stackElementWords * i; } // Already negated by c++ interpreter - static int local_index_at(int i) { - assert(i<=0, "local direction already negated"); - return stackElementWords() * i + (value_offset_in_bytes()/wordSize); - } - - static int local_tag_index_at(int i) { - assert(i<=0, "local direction already negated"); - assert(TaggedStackInterpreter, "should not call this"); - return stackElementWords() * i + (tag_offset_in_bytes()/wordSize); + static int local_index_at(int i) { + assert(i <= 0, "local direction already negated"); + return stackElementWords * i; } diff --git a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp index c8accffeaf7..3eeb885e497 100644 --- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp @@ -358,7 +358,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan // Push arguments as if coming from the interpreter. Register O0_scratch = O0_argslot; - int stackElementSize = Interpreter::stackElementSize(); + int stackElementSize = Interpreter::stackElementSize; // Make space on the stack for the arguments. __ sub(SP, 4*stackElementSize, SP); @@ -679,7 +679,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK, O0_argslot, O1_scratch, O2_scratch, G5_index); Address arg_lsw(O0_argslot, 0); - Address arg_msw(O0_argslot, -Interpreter::stackElementSize()); + Address arg_msw(O0_argslot, -Interpreter::stackElementSize); switch (ek) { case _adapter_opt_i2l: diff --git a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp index 50a5b6de13b..7ef64e361be 100644 --- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp @@ -547,17 +547,11 @@ class AdapterGenerator { void set_Rdisp(Register r) { Rdisp = r; } void patch_callers_callsite(); - void tag_c2i_arg(frame::Tag t, Register base, int st_off, Register scratch); // base+st_off points to top of argument - int arg_offset(const int st_off) { return st_off + Interpreter::value_offset_in_bytes(); } + int arg_offset(const int st_off) { return st_off; } int next_arg_offset(const int st_off) { - return st_off - Interpreter::stackElementSize() + Interpreter::value_offset_in_bytes(); - } - - int tag_offset(const int st_off) { return st_off + Interpreter::tag_offset_in_bytes(); } - int next_tag_offset(const int st_off) { - return st_off - Interpreter::stackElementSize() + Interpreter::tag_offset_in_bytes(); + return st_off - Interpreter::stackElementSize; } // Argument slot values may be loaded first into a register because @@ -565,9 +559,6 @@ class AdapterGenerator { RegisterOrConstant arg_slot(const int st_off); RegisterOrConstant next_arg_slot(const int st_off); - RegisterOrConstant tag_slot(const int st_off); - RegisterOrConstant next_tag_slot(const int st_off); - // Stores long into offset pointed to by base void store_c2i_long(Register r, Register base, const int st_off, bool is_stack); @@ -653,23 +644,6 @@ void AdapterGenerator::patch_callers_callsite() { __ bind(L); } -void AdapterGenerator::tag_c2i_arg(frame::Tag t, Register base, int st_off, - Register scratch) { - if (TaggedStackInterpreter) { - RegisterOrConstant slot = tag_slot(st_off); - // have to store zero because local slots can be reused (rats!) - if (t == frame::TagValue) { - __ st_ptr(G0, base, slot); - } else if (t == frame::TagCategory2) { - __ st_ptr(G0, base, slot); - __ st_ptr(G0, base, next_tag_slot(st_off)); - } else { - __ mov(t, scratch); - __ st_ptr(scratch, base, slot); - } - } -} - RegisterOrConstant AdapterGenerator::arg_slot(const int st_off) { RegisterOrConstant roc(arg_offset(st_off)); @@ -682,17 +656,6 @@ RegisterOrConstant AdapterGenerator::next_arg_slot(const int st_off) { } -RegisterOrConstant AdapterGenerator::tag_slot(const int st_off) { - RegisterOrConstant roc(tag_offset(st_off)); - return __ ensure_simm13_or_reg(roc, Rdisp); -} - -RegisterOrConstant AdapterGenerator::next_tag_slot(const int st_off) { - RegisterOrConstant roc(next_tag_offset(st_off)); - return __ ensure_simm13_or_reg(roc, Rdisp); -} - - // Stores long into offset pointed to by base void AdapterGenerator::store_c2i_long(Register r, Register base, const int st_off, bool is_stack) { @@ -718,19 +681,16 @@ void AdapterGenerator::store_c2i_long(Register r, Register base, } #endif // COMPILER2 #endif // _LP64 - tag_c2i_arg(frame::TagCategory2, base, st_off, r); } void AdapterGenerator::store_c2i_object(Register r, Register base, const int st_off) { __ st_ptr (r, base, arg_slot(st_off)); - tag_c2i_arg(frame::TagReference, base, st_off, r); } void AdapterGenerator::store_c2i_int(Register r, Register base, const int st_off) { __ st (r, base, arg_slot(st_off)); - tag_c2i_arg(frame::TagValue, base, st_off, r); } // Stores into offset pointed to by base @@ -745,13 +705,11 @@ void AdapterGenerator::store_c2i_double(VMReg r_2, __ stf(FloatRegisterImpl::S, r_1->as_FloatRegister(), base, next_arg_slot(st_off)); __ stf(FloatRegisterImpl::S, r_2->as_FloatRegister(), base, arg_slot(st_off) ); #endif - tag_c2i_arg(frame::TagCategory2, base, st_off, G1_scratch); } void AdapterGenerator::store_c2i_float(FloatRegister f, Register base, const int st_off) { __ stf(FloatRegisterImpl::S, f, base, arg_slot(st_off)); - tag_c2i_arg(frame::TagValue, base, st_off, G1_scratch); } void AdapterGenerator::gen_c2i_adapter( @@ -786,14 +744,14 @@ void AdapterGenerator::gen_c2i_adapter( // Since all args are passed on the stack, total_args_passed*wordSize is the // space we need. Add in varargs area needed by the interpreter. Round up // to stack alignment. - const int arg_size = total_args_passed * Interpreter::stackElementSize(); + const int arg_size = total_args_passed * Interpreter::stackElementSize; const int varargs_area = (frame::varargs_offset - frame::register_save_words)*wordSize; const int extraspace = round_to(arg_size + varargs_area, 2*wordSize); int bias = STACK_BIAS; const int interp_arg_offset = frame::varargs_offset*wordSize + - (total_args_passed-1)*Interpreter::stackElementSize(); + (total_args_passed-1)*Interpreter::stackElementSize; Register base = SP; @@ -814,7 +772,7 @@ void AdapterGenerator::gen_c2i_adapter( // First write G1 (if used) to where ever it must go for (int i=0; ias_VMReg()) { @@ -831,7 +789,7 @@ void AdapterGenerator::gen_c2i_adapter( // Now write the args into the outgoing interpreter space for (int i=0; iis_valid()) { @@ -900,7 +858,7 @@ void AdapterGenerator::gen_c2i_adapter( #endif // _LP64 __ mov((frame::varargs_offset)*wordSize - - 1*Interpreter::stackElementSize()+bias+BytesPerWord, G1); + 1*Interpreter::stackElementSize+bias+BytesPerWord, G1); // Jump to the interpreter just as if interpreter was doing it. __ jmpl(G3_scratch, 0, G0); // Setup Lesp for the call. Cannot actually set Lesp as the current Lesp @@ -1051,7 +1009,7 @@ void AdapterGenerator::gen_i2c_adapter( // ldx/lddf optimizations. // Load in argument order going down. - const int ld_off = (total_args_passed-i)*Interpreter::stackElementSize(); + const int ld_off = (total_args_passed-i)*Interpreter::stackElementSize; set_Rdisp(G1_scratch); VMReg r_1 = regs[i].first(); @@ -1120,7 +1078,7 @@ void AdapterGenerator::gen_i2c_adapter( for (int i=0; iis_Register() && regs[i].second()->is_valid()) { // Load in argument order going down - int ld_off = (total_args_passed-i)*Interpreter::stackElementSize(); + int ld_off = (total_args_passed-i)*Interpreter::stackElementSize; // Need to marshal 64-bit value from misaligned Lesp loads Register r = regs[i].first()->as_Register()->after_restore(); if (r == G1 || r == G4) { @@ -3062,7 +3020,7 @@ int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals) "test and remove; got more parms than locals"); if (callee_locals < callee_parameters) return 0; // No adjustment for negative locals - int diff = (callee_locals - callee_parameters) * Interpreter::stackElementWords(); + int diff = (callee_locals - callee_parameters) * Interpreter::stackElementWords; return round_to(diff, WordsPerLong); } diff --git a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp index e1ea96a3f5b..2bb8e8383bd 100644 --- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp @@ -139,7 +139,7 @@ class StubGenerator: public StubCodeGenerator { __ ld_ptr(parameter_size.as_address(), t); // get parameter size (in words) __ add(t, frame::memory_parameter_word_sp_offset, t); // add space for save area (in words) __ round_to(t, WordsPerLong); // make sure it is multiple of 2 (in words) - __ sll(t, Interpreter::logStackElementSize(), t); // compute number of bytes + __ sll(t, Interpreter::logStackElementSize, t); // compute number of bytes __ neg(t); // negate so it can be used with save __ save(SP, t, SP); // setup new frame } @@ -191,19 +191,13 @@ class StubGenerator: public StubCodeGenerator { // copy parameters if any Label loop; __ BIND(loop); - // Store tag first. - if (TaggedStackInterpreter) { - __ ld_ptr(src, 0, tmp); - __ add(src, BytesPerWord, src); // get next - __ st_ptr(tmp, dst, Interpreter::tag_offset_in_bytes()); - } // Store parameter value __ ld_ptr(src, 0, tmp); __ add(src, BytesPerWord, src); - __ st_ptr(tmp, dst, Interpreter::value_offset_in_bytes()); + __ st_ptr(tmp, dst, 0); __ deccc(cnt); __ br(Assembler::greater, false, Assembler::pt, loop); - __ delayed()->sub(dst, Interpreter::stackElementSize(), dst); + __ delayed()->sub(dst, Interpreter::stackElementSize, dst); // done __ BIND(exit); @@ -220,7 +214,7 @@ class StubGenerator: public StubCodeGenerator { // setup parameters const Register t = G3_scratch; __ ld_ptr(parameter_size.as_in().as_address(), t); // get parameter size (in words) - __ sll(t, Interpreter::logStackElementSize(), t); // compute number of bytes + __ sll(t, Interpreter::logStackElementSize, t); // compute number of bytes __ sub(FP, t, Gargs); // setup parameter pointer #ifdef _LP64 __ add( Gargs, STACK_BIAS, Gargs ); // Account for LP64 stack bias diff --git a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp index fc539099985..0c4d7472cd5 100644 --- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp @@ -197,7 +197,7 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset(), size); __ and3(size, 0xFF, size); // argument size in words - __ sll(size, Interpreter::logStackElementSize(), size); // each argument size in bytes + __ sll(size, Interpreter::logStackElementSize, size); // each argument size in bytes __ add(Lesp, size, Lesp); // pop arguments __ dispatch_next(state, step); @@ -495,7 +495,7 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) { // Set the saved SP after the register window save // assert_different_registers(Gargs, Glocals_size, Gframe_size, O5_savedSP); - __ sll(Glocals_size, Interpreter::logStackElementSize(), Otmp1); + __ sll(Glocals_size, Interpreter::logStackElementSize, Otmp1); __ add(Gargs, Otmp1, Gargs); if (native_call) { @@ -511,7 +511,7 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) { __ lduh( size_of_locals, Otmp1 ); __ sub( Otmp1, Glocals_size, Glocals_size ); __ round_to( Glocals_size, WordsPerLong ); - __ sll( Glocals_size, Interpreter::logStackElementSize(), Glocals_size ); + __ sll( Glocals_size, Interpreter::logStackElementSize, Glocals_size ); // see if the frame is greater than one page in size. If so, // then we need to verify there is enough stack space remaining @@ -519,7 +519,7 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) { __ lduh( max_stack, Gframe_size ); __ add( Gframe_size, extra_space, Gframe_size ); __ round_to( Gframe_size, WordsPerLong ); - __ sll( Gframe_size, Interpreter::logStackElementSize(), Gframe_size); + __ sll( Gframe_size, Interpreter::logStackElementSize, Gframe_size); // Add in java locals size for stack overflow check only __ add( Gframe_size, Glocals_size, Gframe_size ); @@ -1234,8 +1234,8 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) { // be updated! __ lduh( size_of_locals, O2 ); __ lduh( size_of_parameters, O1 ); - __ sll( O2, Interpreter::logStackElementSize(), O2); - __ sll( O1, Interpreter::logStackElementSize(), O1 ); + __ sll( O2, Interpreter::logStackElementSize, O2); + __ sll( O1, Interpreter::logStackElementSize, O1 ); __ sub( Llocals, O2, O2 ); __ sub( Llocals, O1, O1 ); @@ -1470,8 +1470,8 @@ static int size_activation_helper(int callee_extra_locals, int max_stack, int mo round_to(frame::interpreter_frame_vm_local_words,WordsPerLong); // callee_locals and max_stack are counts, not the size in frame. const int locals_size = - round_to(callee_extra_locals * Interpreter::stackElementWords(), WordsPerLong); - const int max_stack_words = max_stack * Interpreter::stackElementWords(); + round_to(callee_extra_locals * Interpreter::stackElementWords, WordsPerLong); + const int max_stack_words = max_stack * Interpreter::stackElementWords; return (round_to((max_stack_words //6815692//+ methodOopDesc::extra_stack_words() + rounded_vm_local_words @@ -1570,11 +1570,11 @@ int AbstractInterpreter::layout_activation(methodOop method, // preallocate stack space intptr_t* esp = monitors - 1 - - (tempcount * Interpreter::stackElementWords()) - + (tempcount * Interpreter::stackElementWords) - popframe_extra_args; - int local_words = method->max_locals() * Interpreter::stackElementWords(); - int parm_words = method->size_of_parameters() * Interpreter::stackElementWords(); + int local_words = method->max_locals() * Interpreter::stackElementWords; + int parm_words = method->size_of_parameters() * Interpreter::stackElementWords; NEEDS_CLEANUP; intptr_t* locals; if (caller->is_interpreted_frame()) { @@ -1662,7 +1662,7 @@ int AbstractInterpreter::layout_activation(methodOop method, BasicObjectLock* mp = (BasicObjectLock*)monitors; assert(interpreter_frame->interpreter_frame_method() == method, "method matches"); - assert(interpreter_frame->interpreter_frame_local_at(9) == (intptr_t *)((intptr_t)locals - (9 * Interpreter::stackElementSize())+Interpreter::value_offset_in_bytes()), "locals match"); + assert(interpreter_frame->interpreter_frame_local_at(9) == (intptr_t *)((intptr_t)locals - (9 * Interpreter::stackElementSize)), "locals match"); assert(interpreter_frame->interpreter_frame_monitor_end() == mp, "monitor_end matches"); assert(((intptr_t *)interpreter_frame->interpreter_frame_monitor_begin()) == ((intptr_t *)mp)+monitor_size, "monitor_begin matches"); assert(interpreter_frame->interpreter_frame_tos_address()-1 == esp, "esp matches"); @@ -1758,7 +1758,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() { // Compute size of arguments for saving when returning to deoptimized caller __ lduh(Lmethod, in_bytes(methodOopDesc::size_of_parameters_offset()), Gtmp1); - __ sll(Gtmp1, Interpreter::logStackElementSize(), Gtmp1); + __ sll(Gtmp1, Interpreter::logStackElementSize, Gtmp1); __ sub(Llocals, Gtmp1, Gtmp2); __ add(Gtmp2, wordSize, Gtmp2); // Save these arguments diff --git a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.hpp b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.hpp index 6a510688888..3f8de131db5 100644 --- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -29,7 +29,8 @@ // fail with a guarantee ("not enough space for interpreter generation"); // if too small. // Run with +PrintInterpreter to get the VM to print out the size. - // Max size with JVMTI and TaggedStackInterpreter + // Max size with JVMTI + #ifdef _LP64 // The sethi() instruction generates lots more instructions when shell // stack limit is unlimited, so that's why this is much bigger. diff --git a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp index 5ab2ffc1308..6ca719e007a 100644 --- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp @@ -580,7 +580,6 @@ void TemplateTable::saload() { void TemplateTable::iload(int n) { transition(vtos, itos); - debug_only(__ verify_local_tag(frame::TagValue, Llocals, Otos_i, n)); __ ld( Llocals, Interpreter::local_offset_in_bytes(n), Otos_i ); } @@ -588,7 +587,6 @@ void TemplateTable::iload(int n) { void TemplateTable::lload(int n) { transition(vtos, ltos); assert(n+1 < Argument::n_register_parameters, "would need more code"); - debug_only(__ verify_local_tag(frame::TagCategory2, Llocals, Otos_l, n)); __ load_unaligned_long(Llocals, Interpreter::local_offset_in_bytes(n+1), Otos_l); } @@ -596,7 +594,6 @@ void TemplateTable::lload(int n) { void TemplateTable::fload(int n) { transition(vtos, ftos); assert(n < Argument::n_register_parameters, "would need more code"); - debug_only(__ verify_local_tag(frame::TagValue, Llocals, G3_scratch, n)); __ ldf( FloatRegisterImpl::S, Llocals, Interpreter::local_offset_in_bytes(n), Ftos_f ); } @@ -604,14 +601,12 @@ void TemplateTable::fload(int n) { void TemplateTable::dload(int n) { transition(vtos, dtos); FloatRegister dst = Ftos_d; - debug_only(__ verify_local_tag(frame::TagCategory2, Llocals, G3_scratch, n)); __ load_unaligned_double(Llocals, Interpreter::local_offset_in_bytes(n+1), dst); } void TemplateTable::aload(int n) { transition(vtos, atos); - debug_only(__ verify_local_tag(frame::TagReference, Llocals, Otos_i, n)); __ ld_ptr( Llocals, Interpreter::local_offset_in_bytes(n), Otos_i ); } @@ -707,12 +702,11 @@ void TemplateTable::dstore() { void TemplateTable::astore() { transition(vtos, vtos); - // astore tos can also be a returnAddress, so load and store the tag too - __ load_ptr_and_tag(0, Otos_i, Otos_l2); - __ inc(Lesp, Interpreter::stackElementSize()); + __ load_ptr(0, Otos_i); + __ inc(Lesp, Interpreter::stackElementSize); __ verify_oop_or_return_address(Otos_i, G3_scratch); locals_index(G3_scratch); - __ store_local_ptr( G3_scratch, Otos_i, Otos_l2 ); + __ store_local_ptr(G3_scratch, Otos_i); } @@ -750,12 +744,11 @@ void TemplateTable::wide_dstore() { void TemplateTable::wide_astore() { transition(vtos, vtos); - // astore tos can also be a returnAddress, so load and store the tag too - __ load_ptr_and_tag(0, Otos_i, Otos_l2); - __ inc(Lesp, Interpreter::stackElementSize()); + __ load_ptr(0, Otos_i); + __ inc(Lesp, Interpreter::stackElementSize); __ verify_oop_or_return_address(Otos_i, G3_scratch); locals_index_wide(G3_scratch); - __ store_local_ptr( G3_scratch, Otos_i, Otos_l2 ); + __ store_local_ptr(G3_scratch, Otos_i); } @@ -845,13 +838,13 @@ void TemplateTable::aastore() { do_oop_store(_masm, O1, noreg, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Otos_i, G3_scratch, _bs->kind(), true); __ ba(false,done); - __ delayed()->inc(Lesp, 3* Interpreter::stackElementSize()); // adj sp (pops array, index and value) + __ delayed()->inc(Lesp, 3* Interpreter::stackElementSize); // adj sp (pops array, index and value) __ bind(is_null); do_oop_store(_masm, O1, noreg, arrayOopDesc::base_offset_in_bytes(T_OBJECT), G0, G4_scratch, _bs->kind(), true); __ profile_null_seen(G3_scratch); - __ inc(Lesp, 3* Interpreter::stackElementSize()); // adj sp (pops array, index and value) + __ inc(Lesp, 3* Interpreter::stackElementSize); // adj sp (pops array, index and value) __ bind(done); } @@ -884,7 +877,6 @@ void TemplateTable::sastore() { void TemplateTable::istore(int n) { transition(itos, vtos); - __ tag_local(frame::TagValue, Llocals, Otos_i, n); __ st(Otos_i, Llocals, Interpreter::local_offset_in_bytes(n)); } @@ -892,7 +884,6 @@ void TemplateTable::istore(int n) { void TemplateTable::lstore(int n) { transition(ltos, vtos); assert(n+1 < Argument::n_register_parameters, "only handle register cases"); - __ tag_local(frame::TagCategory2, Llocals, Otos_l, n); __ store_unaligned_long(Otos_l, Llocals, Interpreter::local_offset_in_bytes(n+1)); } @@ -901,7 +892,6 @@ void TemplateTable::lstore(int n) { void TemplateTable::fstore(int n) { transition(ftos, vtos); assert(n < Argument::n_register_parameters, "only handle register cases"); - __ tag_local(frame::TagValue, Llocals, Otos_l, n); __ stf(FloatRegisterImpl::S, Ftos_f, Llocals, Interpreter::local_offset_in_bytes(n)); } @@ -909,30 +899,28 @@ void TemplateTable::fstore(int n) { void TemplateTable::dstore(int n) { transition(dtos, vtos); FloatRegister src = Ftos_d; - __ tag_local(frame::TagCategory2, Llocals, Otos_l, n); __ store_unaligned_double(src, Llocals, Interpreter::local_offset_in_bytes(n+1)); } void TemplateTable::astore(int n) { transition(vtos, vtos); - // astore tos can also be a returnAddress, so load and store the tag too - __ load_ptr_and_tag(0, Otos_i, Otos_l2); - __ inc(Lesp, Interpreter::stackElementSize()); + __ load_ptr(0, Otos_i); + __ inc(Lesp, Interpreter::stackElementSize); __ verify_oop_or_return_address(Otos_i, G3_scratch); - __ store_local_ptr( n, Otos_i, Otos_l2 ); + __ store_local_ptr(n, Otos_i); } void TemplateTable::pop() { transition(vtos, vtos); - __ inc(Lesp, Interpreter::stackElementSize()); + __ inc(Lesp, Interpreter::stackElementSize); } void TemplateTable::pop2() { transition(vtos, vtos); - __ inc(Lesp, 2 * Interpreter::stackElementSize()); + __ inc(Lesp, 2 * Interpreter::stackElementSize); } @@ -940,8 +928,8 @@ void TemplateTable::dup() { transition(vtos, vtos); // stack: ..., a // load a and tag - __ load_ptr_and_tag(0, Otos_i, Otos_l2); - __ push_ptr(Otos_i, Otos_l2); + __ load_ptr(0, Otos_i); + __ push_ptr(Otos_i); // stack: ..., a, a } @@ -949,11 +937,11 @@ void TemplateTable::dup() { void TemplateTable::dup_x1() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, G3_scratch, G4_scratch); // get a - __ load_ptr_and_tag(0, Otos_l1, Otos_l2); // get b - __ store_ptr_and_tag(1, Otos_l1, Otos_l2); // put b - __ store_ptr_and_tag(0, G3_scratch, G4_scratch); // put a - like swap - __ push_ptr(Otos_l1, Otos_l2); // push b + __ load_ptr( 1, G3_scratch); // get a + __ load_ptr( 0, Otos_l1); // get b + __ store_ptr(1, Otos_l1); // put b + __ store_ptr(0, G3_scratch); // put a - like swap + __ push_ptr(Otos_l1); // push b // stack: ..., b, a, b } @@ -962,27 +950,27 @@ void TemplateTable::dup_x2() { transition(vtos, vtos); // stack: ..., a, b, c // get c and push on stack, reuse registers - __ load_ptr_and_tag(0, G3_scratch, G4_scratch); // get c - __ push_ptr(G3_scratch, G4_scratch); // push c with tag + __ load_ptr( 0, G3_scratch); // get c + __ push_ptr(G3_scratch); // push c with tag // stack: ..., a, b, c, c (c in reg) (Lesp - 4) // (stack offsets n+1 now) - __ load_ptr_and_tag(3, Otos_l1, Otos_l2); // get a - __ store_ptr_and_tag(3, G3_scratch, G4_scratch); // put c at 3 + __ load_ptr( 3, Otos_l1); // get a + __ store_ptr(3, G3_scratch); // put c at 3 // stack: ..., c, b, c, c (a in reg) - __ load_ptr_and_tag(2, G3_scratch, G4_scratch); // get b - __ store_ptr_and_tag(2, Otos_l1, Otos_l2); // put a at 2 + __ load_ptr( 2, G3_scratch); // get b + __ store_ptr(2, Otos_l1); // put a at 2 // stack: ..., c, a, c, c (b in reg) - __ store_ptr_and_tag(1, G3_scratch, G4_scratch); // put b at 1 + __ store_ptr(1, G3_scratch); // put b at 1 // stack: ..., c, a, b, c } void TemplateTable::dup2() { transition(vtos, vtos); - __ load_ptr_and_tag(1, G3_scratch, G4_scratch); // get a - __ load_ptr_and_tag(0, Otos_l1, Otos_l2); // get b - __ push_ptr(G3_scratch, G4_scratch); // push a - __ push_ptr(Otos_l1, Otos_l2); // push b + __ load_ptr(1, G3_scratch); // get a + __ load_ptr(0, Otos_l1); // get b + __ push_ptr(G3_scratch); // push a + __ push_ptr(Otos_l1); // push b // stack: ..., a, b, a, b } @@ -990,17 +978,17 @@ void TemplateTable::dup2() { void TemplateTable::dup2_x1() { transition(vtos, vtos); // stack: ..., a, b, c - __ load_ptr_and_tag(1, Lscratch, G1_scratch); // get b - __ load_ptr_and_tag(2, Otos_l1, Otos_l2); // get a - __ store_ptr_and_tag(2, Lscratch, G1_scratch); // put b at a + __ load_ptr( 1, Lscratch); // get b + __ load_ptr( 2, Otos_l1); // get a + __ store_ptr(2, Lscratch); // put b at a // stack: ..., b, b, c - __ load_ptr_and_tag(0, G3_scratch, G4_scratch); // get c - __ store_ptr_and_tag(1, G3_scratch, G4_scratch); // put c at b + __ load_ptr( 0, G3_scratch); // get c + __ store_ptr(1, G3_scratch); // put c at b // stack: ..., b, c, c - __ store_ptr_and_tag(0, Otos_l1, Otos_l2); // put a at c + __ store_ptr(0, Otos_l1); // put a at c // stack: ..., b, c, a - __ push_ptr(Lscratch, G1_scratch); // push b - __ push_ptr(G3_scratch, G4_scratch); // push c + __ push_ptr(Lscratch); // push b + __ push_ptr(G3_scratch); // push c // stack: ..., b, c, a, b, c } @@ -1010,18 +998,18 @@ void TemplateTable::dup2_x1() { void TemplateTable::dup2_x2() { transition(vtos, vtos); // stack: ..., a, b, c, d - __ load_ptr_and_tag(1, Lscratch, G1_scratch); // get c - __ load_ptr_and_tag(3, Otos_l1, Otos_l2); // get a - __ store_ptr_and_tag(3, Lscratch, G1_scratch); // put c at 3 - __ store_ptr_and_tag(1, Otos_l1, Otos_l2); // put a at 1 + __ load_ptr( 1, Lscratch); // get c + __ load_ptr( 3, Otos_l1); // get a + __ store_ptr(3, Lscratch); // put c at 3 + __ store_ptr(1, Otos_l1); // put a at 1 // stack: ..., c, b, a, d - __ load_ptr_and_tag(2, G3_scratch, G4_scratch); // get b - __ load_ptr_and_tag(0, Otos_l1, Otos_l2); // get d - __ store_ptr_and_tag(0, G3_scratch, G4_scratch); // put b at 0 - __ store_ptr_and_tag(2, Otos_l1, Otos_l2); // put d at 2 + __ load_ptr( 2, G3_scratch); // get b + __ load_ptr( 0, Otos_l1); // get d + __ store_ptr(0, G3_scratch); // put b at 0 + __ store_ptr(2, Otos_l1); // put d at 2 // stack: ..., c, d, a, b - __ push_ptr(Lscratch, G1_scratch); // push c - __ push_ptr(Otos_l1, Otos_l2); // push d + __ push_ptr(Lscratch); // push c + __ push_ptr(Otos_l1); // push d // stack: ..., c, d, a, b, c, d } @@ -1029,10 +1017,10 @@ void TemplateTable::dup2_x2() { void TemplateTable::swap() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, G3_scratch, G4_scratch); // get a - __ load_ptr_and_tag(0, Otos_l1, Otos_l2); // get b - __ store_ptr_and_tag(0, G3_scratch, G4_scratch); // put b - __ store_ptr_and_tag(1, Otos_l1, Otos_l2); // put a + __ load_ptr( 1, G3_scratch); // get a + __ load_ptr( 0, Otos_l1); // get b + __ store_ptr(0, G3_scratch); // put b + __ store_ptr(1, Otos_l1); // put a // stack: ..., b, a } @@ -1045,9 +1033,9 @@ void TemplateTable::iop2(Operation op) { case sub: __ sub(O1, Otos_i, Otos_i); break; // %%%%% Mul may not exist: better to call .mul? case mul: __ smul(O1, Otos_i, Otos_i); break; - case _and: __ and3(O1, Otos_i, Otos_i); break; - case _or: __ or3(O1, Otos_i, Otos_i); break; - case _xor: __ xor3(O1, Otos_i, Otos_i); break; + case _and: __ and3(O1, Otos_i, Otos_i); break; + case _or: __ or3(O1, Otos_i, Otos_i); break; + case _xor: __ xor3(O1, Otos_i, Otos_i); break; case shl: __ sll(O1, Otos_i, Otos_i); break; case shr: __ sra(O1, Otos_i, Otos_i); break; case ushr: __ srl(O1, Otos_i, Otos_i); break; @@ -1061,17 +1049,17 @@ void TemplateTable::lop2(Operation op) { __ pop_l(O2); switch (op) { #ifdef _LP64 - case add: __ add(O2, Otos_l, Otos_l); break; - case sub: __ sub(O2, Otos_l, Otos_l); break; - case _and: __ and3( O2, Otos_l, Otos_l); break; - case _or: __ or3( O2, Otos_l, Otos_l); break; - case _xor: __ xor3( O2, Otos_l, Otos_l); break; + case add: __ add(O2, Otos_l, Otos_l); break; + case sub: __ sub(O2, Otos_l, Otos_l); break; + case _and: __ and3(O2, Otos_l, Otos_l); break; + case _or: __ or3(O2, Otos_l, Otos_l); break; + case _xor: __ xor3(O2, Otos_l, Otos_l); break; #else case add: __ addcc(O3, Otos_l2, Otos_l2); __ addc(O2, Otos_l1, Otos_l1); break; case sub: __ subcc(O3, Otos_l2, Otos_l2); __ subc(O2, Otos_l1, Otos_l1); break; - case _and: __ and3( O3, Otos_l2, Otos_l2); __ and3( O2, Otos_l1, Otos_l1); break; - case _or: __ or3( O3, Otos_l2, Otos_l2); __ or3( O2, Otos_l1, Otos_l1); break; - case _xor: __ xor3( O3, Otos_l2, Otos_l2); __ xor3( O2, Otos_l1, Otos_l1); break; + case _and: __ and3(O3, Otos_l2, Otos_l2); __ and3(O2, Otos_l1, Otos_l1); break; + case _or: __ or3(O3, Otos_l2, Otos_l2); __ or3(O2, Otos_l1, Otos_l1); break; + case _xor: __ xor3(O3, Otos_l2, Otos_l2); __ xor3(O2, Otos_l1, Otos_l1); break; #endif default: ShouldNotReachHere(); } @@ -1307,7 +1295,7 @@ void TemplateTable::iinc() { __ ldsb(Lbcp, 2, O2); // load constant __ access_local_int(G3_scratch, Otos_i); __ add(Otos_i, O2, Otos_i); - __ st(Otos_i, G3_scratch, Interpreter::value_offset_in_bytes()); // access_local_int puts E.A. in G3_scratch + __ st(Otos_i, G3_scratch, 0); // access_local_int puts E.A. in G3_scratch } @@ -1317,7 +1305,7 @@ void TemplateTable::wide_iinc() { __ get_2_byte_integer_at_bcp( 4, O2, O3, InterpreterMacroAssembler::Signed); __ access_local_int(G3_scratch, Otos_i); __ add(Otos_i, O3, Otos_i); - __ st(Otos_i, G3_scratch, Interpreter::value_offset_in_bytes()); // access_local_int puts E.A. in G3_scratch + __ st(Otos_i, G3_scratch, 0); // access_local_int puts E.A. in G3_scratch } @@ -1555,7 +1543,7 @@ void TemplateTable::branch(bool is_jsr, bool is_wide) { // Bump Lbcp to target of JSR __ add(Lbcp, O1_disp, Lbcp); // Push returnAddress for "ret" on stack - __ push_ptr(Otos_i, G0); // push ptr sized thing plus 0 for tag. + __ push_ptr(Otos_i); // And away we go! __ dispatch_next(vtos); return; @@ -2754,7 +2742,7 @@ void TemplateTable::fast_xaccess(TosState state) { Register Rflags = G4_scratch; Register Rreceiver = Lscratch; - __ ld_ptr(Llocals, Interpreter::value_offset_in_bytes(), Rreceiver); + __ ld_ptr(Llocals, 0, Rreceiver); // access constant pool cache (is resolved) __ get_cache_and_index_at_bcp(Rcache, G4_scratch, 2); @@ -3696,7 +3684,7 @@ void TemplateTable::multianewarray() { transition(vtos, atos); // put ndims * wordSize into Lscratch __ ldub( Lbcp, 3, Lscratch); - __ sll( Lscratch, Interpreter::logStackElementSize(), Lscratch); + __ sll( Lscratch, Interpreter::logStackElementSize, Lscratch); // Lesp points past last_dim, so set to O1 to first_dim address __ add( Lesp, Lscratch, O1); call_VM(Otos_i, CAST_FROM_FN_PTR(address, InterpreterRuntime::multianewarray), O1); diff --git a/hotspot/src/cpu/x86/vm/assembler_x86.cpp b/hotspot/src/cpu/x86/vm/assembler_x86.cpp index c3fed6bcd1b..4722210351d 100644 --- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp +++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp @@ -7740,7 +7740,7 @@ void MacroAssembler::jump_to_method_handle_entry(Register mh_reg, Register temp_ Address MacroAssembler::argument_address(RegisterOrConstant arg_slot, int extra_slot_offset) { // cf. TemplateTable::prepare_invoke(), if (load_receiver). - int stackElementSize = Interpreter::stackElementSize(); + int stackElementSize = Interpreter::stackElementSize; int offset = Interpreter::expr_offset_in_bytes(extra_slot_offset+0); #ifdef ASSERT int offset1 = Interpreter::expr_offset_in_bytes(extra_slot_offset+1); diff --git a/hotspot/src/cpu/x86/vm/cppInterpreter_x86.hpp b/hotspot/src/cpu/x86/vm/cppInterpreter_x86.hpp index 66c169e9722..f8c7e41c62b 100644 --- a/hotspot/src/cpu/x86/vm/cppInterpreter_x86.hpp +++ b/hotspot/src/cpu/x86/vm/cppInterpreter_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -28,6 +28,6 @@ // Size of interpreter code. Increase if too small. Interpreter will // fail with a guarantee ("not enough space for interpreter generation"); // if too small. - // Run with +PrintInterpreterSize to get the VM to print out the size. - // Max size with JVMTI and TaggedStackInterpreter + // Run with +PrintInterpreter to get the VM to print out the size. + // Max size with JVMTI const static int InterpreterCodeSize = 168 * 1024; diff --git a/hotspot/src/cpu/x86/vm/frame_x86.cpp b/hotspot/src/cpu/x86/vm/frame_x86.cpp index 01f49e3dba8..6d51fb1a217 100644 --- a/hotspot/src/cpu/x86/vm/frame_x86.cpp +++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp @@ -502,7 +502,7 @@ bool frame::interpreter_frame_equals_unpacked_fp(intptr_t* fp) { // When unpacking an optimized frame the frame pointer is // adjusted with: int diff = (method->max_locals() - method->size_of_parameters()) * - Interpreter::stackElementWords(); + Interpreter::stackElementWords; return _fp == (fp - diff); } @@ -542,7 +542,7 @@ bool frame::is_interpreted_frame_valid(JavaThread* thread) const { // stack frames shouldn't be much larger than max_stack elements - if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize()) { + if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize) { return false; } @@ -594,7 +594,7 @@ BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result) #ifdef AMD64 // This is times two because we do a push(ltos) after pushing XMM0 // and that takes two interpreter stack slots. - tos_addr += 2 * Interpreter::stackElementWords(); + tos_addr += 2 * Interpreter::stackElementWords; #else tos_addr += 2; #endif // AMD64 diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp index 205e5d80de5..0513d52d1cc 100644 --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp @@ -265,89 +265,30 @@ void InterpreterMacroAssembler::d2ieee() { // Java Expression Stack -#ifdef ASSERT -void InterpreterMacroAssembler::verify_stack_tag(frame::Tag t) { - if (TaggedStackInterpreter) { - Label okay; - cmpptr(Address(rsp, wordSize), (int32_t)t); - jcc(Assembler::equal, okay); - // Also compare if the stack value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(rsp, 0), 0); - jcc(Assembler::equal, okay); - stop("Java Expression stack tag value is bad"); - bind(okay); - } -} -#endif // ASSERT - void InterpreterMacroAssembler::pop_ptr(Register r) { - debug_only(verify_stack_tag(frame::TagReference)); pop(r); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); -} - -void InterpreterMacroAssembler::pop_ptr(Register r, Register tag) { - pop(r); - // Tag may not be reference for jsr, can be returnAddress - if (TaggedStackInterpreter) pop(tag); } void InterpreterMacroAssembler::pop_i(Register r) { - debug_only(verify_stack_tag(frame::TagValue)); pop(r); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); } void InterpreterMacroAssembler::pop_l(Register lo, Register hi) { - debug_only(verify_stack_tag(frame::TagValue)); pop(lo); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); - debug_only(verify_stack_tag(frame::TagValue)); pop(hi); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); } void InterpreterMacroAssembler::pop_f() { - debug_only(verify_stack_tag(frame::TagValue)); fld_s(Address(rsp, 0)); addptr(rsp, 1 * wordSize); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); } void InterpreterMacroAssembler::pop_d() { - // Write double to stack contiguously and load into ST0 - pop_dtos_to_rsp(); fld_d(Address(rsp, 0)); addptr(rsp, 2 * wordSize); } -// Pop the top of the java expression stack to execution stack (which -// happens to be the same place). -void InterpreterMacroAssembler::pop_dtos_to_rsp() { - if (TaggedStackInterpreter) { - // Pop double value into scratch registers - debug_only(verify_stack_tag(frame::TagValue)); - pop(rax); - addptr(rsp, 1* wordSize); - debug_only(verify_stack_tag(frame::TagValue)); - pop(rdx); - addptr(rsp, 1* wordSize); - push(rdx); - push(rax); - } -} - -void InterpreterMacroAssembler::pop_ftos_to_rsp() { - if (TaggedStackInterpreter) { - debug_only(verify_stack_tag(frame::TagValue)); - pop(rax); - addptr(rsp, 1 * wordSize); - push(rax); // ftos is at rsp - } -} - void InterpreterMacroAssembler::pop(TosState state) { switch (state) { case atos: pop_ptr(rax); break; @@ -365,54 +306,28 @@ void InterpreterMacroAssembler::pop(TosState state) { } void InterpreterMacroAssembler::push_ptr(Register r) { - if (TaggedStackInterpreter) push(frame::TagReference); - push(r); -} - -void InterpreterMacroAssembler::push_ptr(Register r, Register tag) { - if (TaggedStackInterpreter) push(tag); // tag first push(r); } void InterpreterMacroAssembler::push_i(Register r) { - if (TaggedStackInterpreter) push(frame::TagValue); push(r); } void InterpreterMacroAssembler::push_l(Register lo, Register hi) { - if (TaggedStackInterpreter) push(frame::TagValue); push(hi); - if (TaggedStackInterpreter) push(frame::TagValue); push(lo); } void InterpreterMacroAssembler::push_f() { - if (TaggedStackInterpreter) push(frame::TagValue); // Do not schedule for no AGI! Never write beyond rsp! subptr(rsp, 1 * wordSize); fstp_s(Address(rsp, 0)); } void InterpreterMacroAssembler::push_d(Register r) { - if (TaggedStackInterpreter) { - // Double values are stored as: - // tag - // high - // tag - // low - push(frame::TagValue); - subptr(rsp, 3 * wordSize); - fstp_d(Address(rsp, 0)); - // move high word up to slot n-1 - movl(r, Address(rsp, 1*wordSize)); - movl(Address(rsp, 2*wordSize), r); - // move tag - movl(Address(rsp, 1*wordSize), frame::TagValue); - } else { - // Do not schedule for no AGI! Never write beyond rsp! - subptr(rsp, 2 * wordSize); - fstp_d(Address(rsp, 0)); - } + // Do not schedule for no AGI! Never write beyond rsp! + subptr(rsp, 2 * wordSize); + fstp_d(Address(rsp, 0)); } @@ -433,118 +348,15 @@ void InterpreterMacroAssembler::push(TosState state) { } -// Tagged stack helpers for swap and dup -void InterpreterMacroAssembler::load_ptr_and_tag(int n, Register val, - Register tag) { +// Helpers for swap and dup +void InterpreterMacroAssembler::load_ptr(int n, Register val) { movptr(val, Address(rsp, Interpreter::expr_offset_in_bytes(n))); - if (TaggedStackInterpreter) { - movptr(tag, Address(rsp, Interpreter::expr_tag_offset_in_bytes(n))); - } } -void InterpreterMacroAssembler::store_ptr_and_tag(int n, Register val, - Register tag) { +void InterpreterMacroAssembler::store_ptr(int n, Register val) { movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val); - if (TaggedStackInterpreter) { - movptr(Address(rsp, Interpreter::expr_tag_offset_in_bytes(n)), tag); - } } - -// Tagged local support -void InterpreterMacroAssembler::tag_local(frame::Tag tag, int n) { - if (TaggedStackInterpreter) { - if (tag == frame::TagCategory2) { - movptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n+1)), (int32_t)frame::TagValue); - movptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n)), (int32_t)frame::TagValue); - } else { - movptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n)), (int32_t)tag); - } - } -} - -void InterpreterMacroAssembler::tag_local(frame::Tag tag, Register idx) { - if (TaggedStackInterpreter) { - if (tag == frame::TagCategory2) { - movptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(1)), (int32_t)frame::TagValue); - movptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(0)), (int32_t)frame::TagValue); - } else { - movptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(0)), (int32_t)tag); - } - } -} - -void InterpreterMacroAssembler::tag_local(Register tag, Register idx) { - if (TaggedStackInterpreter) { - // can only be TagValue or TagReference - movptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(0)), tag); - } -} - - -void InterpreterMacroAssembler::tag_local(Register tag, int n) { - if (TaggedStackInterpreter) { - // can only be TagValue or TagReference - movptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n)), tag); - } -} - -#ifdef ASSERT -void InterpreterMacroAssembler::verify_local_tag(frame::Tag tag, int n) { - if (TaggedStackInterpreter) { - frame::Tag t = tag; - if (tag == frame::TagCategory2) { - Label nbl; - t = frame::TagValue; // change to what is stored in locals - cmpptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n+1)), (int32_t)t); - jcc(Assembler::equal, nbl); - stop("Local tag is bad for long/double"); - bind(nbl); - } - Label notBad; - cmpptr(Address(rdi, Interpreter::local_tag_offset_in_bytes(n)), (int32_t)t); - jcc(Assembler::equal, notBad); - // Also compare if the local value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(rdi, Interpreter::local_offset_in_bytes(n)), 0); - jcc(Assembler::equal, notBad); - stop("Local tag is bad"); - bind(notBad); - } -} - -void InterpreterMacroAssembler::verify_local_tag(frame::Tag tag, Register idx) { - if (TaggedStackInterpreter) { - frame::Tag t = tag; - if (tag == frame::TagCategory2) { - Label nbl; - t = frame::TagValue; // change to what is stored in locals - cmpptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(1)), (int32_t)t); - jcc(Assembler::equal, nbl); - stop("Local tag is bad for long/double"); - bind(nbl); - } - Label notBad; - cmpl(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_tag_offset_in_bytes(0)), (int32_t)t); - jcc(Assembler::equal, notBad); - // Also compare if the local value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(rdi, idx, Interpreter::stackElementScale(), - Interpreter::local_offset_in_bytes(0)), 0); - jcc(Assembler::equal, notBad); - stop("Local tag is bad"); - bind(notBad); - - } -} -#endif // ASSERT - void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point) { MacroAssembler::call_VM_leaf_base(entry_point, 0); } diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp index f7d17a9fd80..9bafe9fe110 100644 --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -85,16 +85,12 @@ class InterpreterMacroAssembler: public MacroAssembler { void d2ieee(); // truncate dtos to 64bits void pop_ptr(Register r = rax); - void pop_ptr(Register r, Register tag); void pop_i(Register r = rax); void pop_l(Register lo = rax, Register hi = rdx); void pop_f(); void pop_d(); - void pop_ftos_to_rsp(); - void pop_dtos_to_rsp(); void push_ptr(Register r = rax); - void push_ptr(Register r, Register tag); void push_i(Register r = rax); void push_l(Register lo = rax, Register hi = rdx); void push_d(Register r = rax); @@ -112,33 +108,15 @@ class InterpreterMacroAssembler: public MacroAssembler { void pop(void* v ); // Add unimplemented ambiguous method void push(void* v ); // Add unimplemented ambiguous method - DEBUG_ONLY(void verify_stack_tag(frame::Tag t);) - -#endif // CC_INTERP - -#ifndef CC_INTERP - - void empty_expression_stack() { - movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); - // NULL last_sp until next java call - movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); + void empty_expression_stack() { + movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); + // NULL last_sp until next java call + movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); } - // Tagged stack helpers for swap and dup - void load_ptr_and_tag(int n, Register val, Register tag); - void store_ptr_and_tag(int n, Register val, Register tag); - - // Tagged Local support - - void tag_local(frame::Tag tag, int n); - void tag_local(Register tag, int n); - void tag_local(frame::Tag tag, Register idx); - void tag_local(Register tag, Register idx); - -#ifdef ASSERT - void verify_local_tag(frame::Tag tag, int n); - void verify_local_tag(frame::Tag tag, Register idx); -#endif // ASSERT + // Helpers for swap and dup + void load_ptr(int n, Register val); + void store_ptr(int n, Register val); // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls void super_call_VM_leaf(address entry_point); diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp index 62acfa226fb..cfd46e5b96c 100644 --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp @@ -264,113 +264,51 @@ void InterpreterMacroAssembler::gen_subtype_check(Register Rsub_klass, // Java Expression Stack -#ifdef ASSERT -// Verifies that the stack tag matches. Must be called before the stack -// value is popped off the stack. -void InterpreterMacroAssembler::verify_stack_tag(frame::Tag t) { - if (TaggedStackInterpreter) { - frame::Tag tag = t; - if (t == frame::TagCategory2) { - tag = frame::TagValue; - Label hokay; - cmpptr(Address(rsp, 3*wordSize), (int32_t)tag); - jcc(Assembler::equal, hokay); - stop("Java Expression stack tag high value is bad"); - bind(hokay); - } - Label okay; - cmpptr(Address(rsp, wordSize), (int32_t)tag); - jcc(Assembler::equal, okay); - // Also compare if the stack value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(rsp, 0), 0); - jcc(Assembler::equal, okay); - stop("Java Expression stack tag value is bad"); - bind(okay); - } -} -#endif // ASSERT - void InterpreterMacroAssembler::pop_ptr(Register r) { - debug_only(verify_stack_tag(frame::TagReference)); pop(r); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); -} - -void InterpreterMacroAssembler::pop_ptr(Register r, Register tag) { - pop(r); - if (TaggedStackInterpreter) pop(tag); } void InterpreterMacroAssembler::pop_i(Register r) { // XXX can't use pop currently, upper half non clean - debug_only(verify_stack_tag(frame::TagValue)); movl(r, Address(rsp, 0)); addptr(rsp, wordSize); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); } void InterpreterMacroAssembler::pop_l(Register r) { - debug_only(verify_stack_tag(frame::TagCategory2)); movq(r, Address(rsp, 0)); - addptr(rsp, 2 * Interpreter::stackElementSize()); + addptr(rsp, 2 * Interpreter::stackElementSize); } void InterpreterMacroAssembler::pop_f(XMMRegister r) { - debug_only(verify_stack_tag(frame::TagValue)); movflt(r, Address(rsp, 0)); addptr(rsp, wordSize); - if (TaggedStackInterpreter) addptr(rsp, 1 * wordSize); } void InterpreterMacroAssembler::pop_d(XMMRegister r) { - debug_only(verify_stack_tag(frame::TagCategory2)); movdbl(r, Address(rsp, 0)); - addptr(rsp, 2 * Interpreter::stackElementSize()); + addptr(rsp, 2 * Interpreter::stackElementSize); } void InterpreterMacroAssembler::push_ptr(Register r) { - if (TaggedStackInterpreter) push(frame::TagReference); - push(r); -} - -void InterpreterMacroAssembler::push_ptr(Register r, Register tag) { - if (TaggedStackInterpreter) push(tag); push(r); } void InterpreterMacroAssembler::push_i(Register r) { - if (TaggedStackInterpreter) push(frame::TagValue); push(r); } void InterpreterMacroAssembler::push_l(Register r) { - if (TaggedStackInterpreter) { - push(frame::TagValue); - subptr(rsp, 1 * wordSize); - push(frame::TagValue); - subptr(rsp, 1 * wordSize); - } else { - subptr(rsp, 2 * wordSize); - } + subptr(rsp, 2 * wordSize); movq(Address(rsp, 0), r); } void InterpreterMacroAssembler::push_f(XMMRegister r) { - if (TaggedStackInterpreter) push(frame::TagValue); subptr(rsp, wordSize); movflt(Address(rsp, 0), r); } void InterpreterMacroAssembler::push_d(XMMRegister r) { - if (TaggedStackInterpreter) { - push(frame::TagValue); - subptr(rsp, 1 * wordSize); - push(frame::TagValue); - subptr(rsp, 1 * wordSize); - } else { - subptr(rsp, 2 * wordSize); - } + subptr(rsp, 2 * wordSize); movdbl(Address(rsp, 0), r); } @@ -407,118 +345,16 @@ void InterpreterMacroAssembler::push(TosState state) { } - - -// Tagged stack helpers for swap and dup -void InterpreterMacroAssembler::load_ptr_and_tag(int n, Register val, - Register tag) { +// Helpers for swap and dup +void InterpreterMacroAssembler::load_ptr(int n, Register val) { movptr(val, Address(rsp, Interpreter::expr_offset_in_bytes(n))); - if (TaggedStackInterpreter) { - movptr(tag, Address(rsp, Interpreter::expr_tag_offset_in_bytes(n))); - } } -void InterpreterMacroAssembler::store_ptr_and_tag(int n, Register val, - Register tag) { +void InterpreterMacroAssembler::store_ptr(int n, Register val) { movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val); - if (TaggedStackInterpreter) { - movptr(Address(rsp, Interpreter::expr_tag_offset_in_bytes(n)), tag); - } } -// Tagged local support -void InterpreterMacroAssembler::tag_local(frame::Tag tag, int n) { - if (TaggedStackInterpreter) { - if (tag == frame::TagCategory2) { - movptr(Address(r14, Interpreter::local_tag_offset_in_bytes(n+1)), - (int32_t)frame::TagValue); - movptr(Address(r14, Interpreter::local_tag_offset_in_bytes(n)), - (int32_t)frame::TagValue); - } else { - movptr(Address(r14, Interpreter::local_tag_offset_in_bytes(n)), (int32_t)tag); - } - } -} - -void InterpreterMacroAssembler::tag_local(frame::Tag tag, Register idx) { - if (TaggedStackInterpreter) { - if (tag == frame::TagCategory2) { - movptr(Address(r14, idx, Address::times_8, - Interpreter::local_tag_offset_in_bytes(1)), (int32_t)frame::TagValue); - movptr(Address(r14, idx, Address::times_8, - Interpreter::local_tag_offset_in_bytes(0)), (int32_t)frame::TagValue); - } else { - movptr(Address(r14, idx, Address::times_8, Interpreter::local_tag_offset_in_bytes(0)), - (int32_t)tag); - } - } -} - -void InterpreterMacroAssembler::tag_local(Register tag, Register idx) { - if (TaggedStackInterpreter) { - // can only be TagValue or TagReference - movptr(Address(r14, idx, Address::times_8, Interpreter::local_tag_offset_in_bytes(0)), tag); - } -} - - -void InterpreterMacroAssembler::tag_local(Register tag, int n) { - if (TaggedStackInterpreter) { - // can only be TagValue or TagReference - movptr(Address(r14, Interpreter::local_tag_offset_in_bytes(n)), tag); - } -} - -#ifdef ASSERT -void InterpreterMacroAssembler::verify_local_tag(frame::Tag tag, int n) { - if (TaggedStackInterpreter) { - frame::Tag t = tag; - if (tag == frame::TagCategory2) { - Label nbl; - t = frame::TagValue; // change to what is stored in locals - cmpptr(Address(r14, Interpreter::local_tag_offset_in_bytes(n+1)), (int32_t)t); - jcc(Assembler::equal, nbl); - stop("Local tag is bad for long/double"); - bind(nbl); - } - Label notBad; - cmpq(Address(r14, Interpreter::local_tag_offset_in_bytes(n)), (int32_t)t); - jcc(Assembler::equal, notBad); - // Also compare if the local value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(r14, Interpreter::local_offset_in_bytes(n)), 0); - jcc(Assembler::equal, notBad); - stop("Local tag is bad"); - bind(notBad); - } -} - -void InterpreterMacroAssembler::verify_local_tag(frame::Tag tag, Register idx) { - if (TaggedStackInterpreter) { - frame::Tag t = tag; - if (tag == frame::TagCategory2) { - Label nbl; - t = frame::TagValue; // change to what is stored in locals - cmpptr(Address(r14, idx, Address::times_8, Interpreter::local_tag_offset_in_bytes(1)), (int32_t)t); - jcc(Assembler::equal, nbl); - stop("Local tag is bad for long/double"); - bind(nbl); - } - Label notBad; - cmpptr(Address(r14, idx, Address::times_8, Interpreter::local_tag_offset_in_bytes(0)), (int32_t)t); - jcc(Assembler::equal, notBad); - // Also compare if the local value is zero, then the tag might - // not have been set coming from deopt. - cmpptr(Address(r14, idx, Address::times_8, Interpreter::local_offset_in_bytes(0)), 0); - jcc(Assembler::equal, notBad); - stop("Local tag is bad"); - bind(notBad); - } -} -#endif // ASSERT - - void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point) { MacroAssembler::call_VM_leaf_base(entry_point, 0); } diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp index fd935f1ed8b..d0408b274e4 100644 --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -120,38 +120,16 @@ class InterpreterMacroAssembler: public MacroAssembler { void pop(TosState state); // transition vtos -> state void push(TosState state); // transition state -> vtos - // Tagged stack support, pop and push both tag and value. - void pop_ptr(Register r, Register tag); - void push_ptr(Register r, Register tag); -#endif // CC_INTERP - - DEBUG_ONLY(void verify_stack_tag(frame::Tag t);) - -#ifndef CC_INTERP - - // Tagged stack helpers for swap and dup - void load_ptr_and_tag(int n, Register val, Register tag); - void store_ptr_and_tag(int n, Register val, Register tag); - - // Tagged Local support - void tag_local(frame::Tag tag, int n); - void tag_local(Register tag, int n); - void tag_local(frame::Tag tag, Register idx); - void tag_local(Register tag, Register idx); - -#ifdef ASSERT - void verify_local_tag(frame::Tag tag, int n); - void verify_local_tag(frame::Tag tag, Register idx); -#endif // ASSERT - - - void empty_expression_stack() - { + void empty_expression_stack() { movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); // NULL last_sp until next java call movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); } + // Helpers for swap and dup + void load_ptr(int n, Register val); + void store_ptr(int n, Register val); + // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls void super_call_VM_leaf(address entry_point); void super_call_VM_leaf(address entry_point, Register arg_1); diff --git a/hotspot/src/cpu/x86/vm/interpreterRT_x86_32.cpp b/hotspot/src/cpu/x86/vm/interpreterRT_x86_32.cpp index 2faa99b294c..a65d5c9a4f9 100644 --- a/hotspot/src/cpu/x86/vm/interpreterRT_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/interpreterRT_x86_32.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2010 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 @@ -86,33 +86,23 @@ class SlowSignatureHandler: public NativeSignatureIterator { address _from; intptr_t* _to; -#ifdef ASSERT - void verify_tag(frame::Tag t) { - assert(!TaggedStackInterpreter || - *(intptr_t*)(_from+Interpreter::local_tag_offset_in_bytes(0)) == t, "wrong tag"); - } -#endif // ASSERT - virtual void pass_int() { *_to++ = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; } virtual void pass_long() { _to[0] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); _to[1] = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); _to += 2; - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; } virtual void pass_object() { // pass address of from intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0)); *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr; - debug_only(verify_tag(frame::TagReference)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; } public: diff --git a/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp b/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp index 6975fdc2699..134d96917b8 100644 --- a/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 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 @@ -293,18 +293,10 @@ class SlowSignatureHandler intptr_t* _fp_identifiers; unsigned int _num_args; -#ifdef ASSERT - void verify_tag(frame::Tag t) { - assert(!TaggedStackInterpreter || - *(intptr_t*)(_from+Interpreter::local_tag_offset_in_bytes(0)) == t, "wrong tag"); - } -#endif // ASSERT - virtual void pass_int() { jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_args < Argument::n_int_register_parameters_c-1) { *_reg_args++ = from_obj; @@ -317,8 +309,7 @@ class SlowSignatureHandler virtual void pass_long() { intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - debug_only(verify_tag(frame::TagValue)); - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; if (_num_args < Argument::n_int_register_parameters_c-1) { *_reg_args++ = from_obj; @@ -331,8 +322,7 @@ class SlowSignatureHandler virtual void pass_object() { intptr_t *from_addr = (intptr_t*)(_from + Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagReference)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_args < Argument::n_int_register_parameters_c-1) { *_reg_args++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr; _num_args++; @@ -344,8 +334,7 @@ class SlowSignatureHandler virtual void pass_float() { jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_args < Argument::n_float_register_parameters_c-1) { *_reg_args++ = from_obj; @@ -359,8 +348,7 @@ class SlowSignatureHandler virtual void pass_double() { intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - debug_only(verify_tag(frame::TagValue)); - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; if (_num_args < Argument::n_float_register_parameters_c-1) { *_reg_args++ = from_obj; @@ -397,18 +385,10 @@ class SlowSignatureHandler unsigned int _num_int_args; unsigned int _num_fp_args; -#ifdef ASSERT - void verify_tag(frame::Tag t) { - assert(!TaggedStackInterpreter || - *(intptr_t*)(_from+Interpreter::local_tag_offset_in_bytes(0)) == t, "wrong tag"); - } -#endif // ASSERT - virtual void pass_int() { jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_int_args < Argument::n_int_register_parameters_c-1) { *_int_args++ = from_obj; @@ -421,8 +401,7 @@ class SlowSignatureHandler virtual void pass_long() { intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - debug_only(verify_tag(frame::TagValue)); - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; if (_num_int_args < Argument::n_int_register_parameters_c-1) { *_int_args++ = from_obj; @@ -435,8 +414,7 @@ class SlowSignatureHandler virtual void pass_object() { intptr_t *from_addr = (intptr_t*)(_from + Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagReference)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_int_args < Argument::n_int_register_parameters_c-1) { *_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr; @@ -449,8 +427,7 @@ class SlowSignatureHandler virtual void pass_float() { jint from_obj = *(jint*)(_from+Interpreter::local_offset_in_bytes(0)); - debug_only(verify_tag(frame::TagValue)); - _from -= Interpreter::stackElementSize(); + _from -= Interpreter::stackElementSize; if (_num_fp_args < Argument::n_float_register_parameters_c) { *_fp_args++ = from_obj; @@ -463,7 +440,7 @@ class SlowSignatureHandler virtual void pass_double() { intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1)); - _from -= 2*Interpreter::stackElementSize(); + _from -= 2*Interpreter::stackElementSize; if (_num_fp_args < Argument::n_float_register_parameters_c) { *_fp_args++ = from_obj; diff --git a/hotspot/src/cpu/x86/vm/interpreter_x86.hpp b/hotspot/src/cpu/x86/vm/interpreter_x86.hpp index 04db7fdf7b3..3633db50204 100644 --- a/hotspot/src/cpu/x86/vm/interpreter_x86.hpp +++ b/hotspot/src/cpu/x86/vm/interpreter_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -31,39 +31,16 @@ // the fpu stack. static const int return_sentinel; - - static Address::ScaleFactor stackElementScale() { - return TaggedStackInterpreter? Address::times_8 : Address::times_4; - } + static Address::ScaleFactor stackElementScale() { return Address::times_4; } // Offset from rsp (which points to the last stack element) - static int expr_offset_in_bytes(int i) { return stackElementSize()*i ; } - static int expr_tag_offset_in_bytes(int i) { - assert(TaggedStackInterpreter, "should not call this"); - return expr_offset_in_bytes(i) + wordSize; - } - - // Support for Tagged Stacks + static int expr_offset_in_bytes(int i) { return stackElementSize * i; } // Stack index relative to tos (which points at value) - static int expr_index_at(int i) { - return stackElementWords() * i; - } - - static int expr_tag_index_at(int i) { - assert(TaggedStackInterpreter, "should not call this"); - // tag is one word above java stack element - return stackElementWords() * i + 1; - } + static int expr_index_at(int i) { return stackElementWords * i; } // Already negated by c++ interpreter - static int local_index_at(int i) { - assert(i<=0, "local direction already negated"); - return stackElementWords() * i + (value_offset_in_bytes()/wordSize); - } - - static int local_tag_index_at(int i) { - assert(i<=0, "local direction already negated"); - assert(TaggedStackInterpreter, "should not call this"); - return stackElementWords() * i + (tag_offset_in_bytes()/wordSize); + static int local_index_at(int i) { + assert(i <= 0, "local direction already negated"); + return stackElementWords * i; } diff --git a/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp b/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp index 2db290c431b..12470e791f2 100644 --- a/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -131,14 +131,7 @@ address InterpreterGenerator::generate_math_entry(AbstractInterpreter::MethodKin // java methods. Interpreter::method_kind(...) will select // this entry point for the corresponding methods in JDK 1.3. // get argument - if (TaggedStackInterpreter) { - __ pushl(Address(rsp, 3*wordSize)); // push hi (and note rsp -= wordSize) - __ pushl(Address(rsp, 2*wordSize)); // push lo - __ fld_d(Address(rsp, 0)); // get double in ST0 - __ addptr(rsp, 2*wordSize); - } else { - __ fld_d(Address(rsp, 1*wordSize)); - } + __ fld_d(Address(rsp, 1*wordSize)); switch (kind) { case Interpreter::java_lang_math_sin : __ trigfunc('s'); diff --git a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp index a99296f73d4..2c47d50dbfc 100644 --- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp +++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp @@ -500,7 +500,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan #ifndef _LP64 if (arg_slots == 2) { __ movl(rdx_temp, prim_value_addr.plus_disp(wordSize)); - __ movl(Address(rax_argslot, Interpreter::stackElementSize()), rdx_temp); + __ movl(Address(rax_argslot, Interpreter::stackElementSize), rdx_temp); } #endif //_LP64 } @@ -596,7 +596,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan __ lea(rax_argslot, __ argument_address(rax_argslot, 1)); remove_arg_slots(_masm, -stack_move_unit(), rax_argslot, rbx_temp, rdx_temp); - vmarg = Address(rax_argslot, -Interpreter::stackElementSize()); + vmarg = Address(rax_argslot, -Interpreter::stackElementSize); __ movl(rdx_temp, vmarg); } break; @@ -665,8 +665,8 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan __ lea(rax_argslot, __ argument_address(rax_argslot, 1)); insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK, rax_argslot, rbx_temp, rdx_temp); - Address vmarg1(rax_argslot, -Interpreter::stackElementSize()); - Address vmarg2 = vmarg1.plus_disp(Interpreter::stackElementSize()); + Address vmarg1(rax_argslot, -Interpreter::stackElementSize); + Address vmarg2 = vmarg1.plus_disp(Interpreter::stackElementSize); switch (ek) { case _adapter_opt_i2l: @@ -718,7 +718,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan insert_arg_slots(_masm, stack_move_unit(), _INSERT_INT_MASK, rax_argslot, rbx_temp, rdx_temp); } - Address vmarg(rax_argslot, -Interpreter::stackElementSize()); + Address vmarg(rax_argslot, -Interpreter::stackElementSize); #ifdef _LP64 if (ek == _adapter_opt_f2d) { @@ -1016,7 +1016,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan // Array length checks out. Now insert any required stack slots. if (length_constant == -1) { // Form a pointer to the end of the affected region. - __ lea(rdx_argslot_limit, Address(rax_argslot, Interpreter::stackElementSize())); + __ lea(rdx_argslot_limit, Address(rax_argslot, Interpreter::stackElementSize)); // 'stack_move' is negative number of words to insert Register rdi_stack_move = rdi; __ movl2ptr(rdi_stack_move, rcx_amh_conversion); @@ -1054,7 +1054,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan __ movptr(rbx_temp, Address(rsi_source, 0)); __ movptr(Address(rax_argslot, 0), rbx_temp); __ addptr(rsi_source, type2aelembytes(elem_type)); - __ addptr(rax_argslot, Interpreter::stackElementSize()); + __ addptr(rax_argslot, Interpreter::stackElementSize); __ cmpptr(rax_argslot, rdx_argslot_limit); __ jccb(Assembler::less, loop); } else if (length_constant == 0) { @@ -1067,7 +1067,7 @@ void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHan __ movptr(rbx_temp, Address(rsi_array, elem_offset)); __ movptr(Address(rax_argslot, slot_offset), rbx_temp); elem_offset += type2aelembytes(elem_type); - slot_offset += Interpreter::stackElementSize(); + slot_offset += Interpreter::stackElementSize; } } diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp index 886aa61214c..b77204baa91 100644 --- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp @@ -503,34 +503,9 @@ static void patch_callers_callsite(MacroAssembler *masm) { } -// Helper function to put tags in interpreter stack. -static void tag_stack(MacroAssembler *masm, const BasicType sig, int st_off) { - if (TaggedStackInterpreter) { - int tag_offset = st_off + Interpreter::expr_tag_offset_in_bytes(0); - if (sig == T_OBJECT || sig == T_ARRAY) { - __ movptr(Address(rsp, tag_offset), frame::TagReference); - } else if (sig == T_LONG || sig == T_DOUBLE) { - int next_tag_offset = st_off + Interpreter::expr_tag_offset_in_bytes(1); - __ movptr(Address(rsp, next_tag_offset), frame::TagValue); - __ movptr(Address(rsp, tag_offset), frame::TagValue); - } else { - __ movptr(Address(rsp, tag_offset), frame::TagValue); - } - } -} - -// Double and long values with Tagged stacks are not contiguous. static void move_c2i_double(MacroAssembler *masm, XMMRegister r, int st_off) { - int next_off = st_off - Interpreter::stackElementSize(); - if (TaggedStackInterpreter) { - __ movdbl(Address(rsp, next_off), r); - // Move top half up and put tag in the middle. - __ movl(rdi, Address(rsp, next_off+wordSize)); - __ movl(Address(rsp, st_off), rdi); - tag_stack(masm, T_DOUBLE, next_off); - } else { - __ movdbl(Address(rsp, next_off), r); - } + int next_off = st_off - Interpreter::stackElementSize; + __ movdbl(Address(rsp, next_off), r); } static void gen_c2i_adapter(MacroAssembler *masm, @@ -560,7 +535,7 @@ static void gen_c2i_adapter(MacroAssembler *masm, // Since all args are passed on the stack, total_args_passed * interpreter_ // stack_element_size is the // space we need. - int extraspace = total_args_passed * Interpreter::stackElementSize(); + int extraspace = total_args_passed * Interpreter::stackElementSize; // Get return address __ pop(rax); @@ -578,8 +553,8 @@ static void gen_c2i_adapter(MacroAssembler *masm, } // st_off points to lowest address on stack. - int st_off = ((total_args_passed - 1) - i) * Interpreter::stackElementSize(); - int next_off = st_off - Interpreter::stackElementSize(); + int st_off = ((total_args_passed - 1) - i) * Interpreter::stackElementSize; + int next_off = st_off - Interpreter::stackElementSize; // Say 4 args: // i st_off @@ -601,7 +576,6 @@ static void gen_c2i_adapter(MacroAssembler *masm, if (!r_2->is_valid()) { __ movl(rdi, Address(rsp, ld_off)); __ movptr(Address(rsp, st_off), rdi); - tag_stack(masm, sig_bt[i], st_off); } else { // ld_off == LSW, ld_off+VMRegImpl::stack_slot_size == MSW @@ -619,13 +593,11 @@ static void gen_c2i_adapter(MacroAssembler *masm, __ movptr(Address(rsp, st_off), rax); #endif /* ASSERT */ #endif // _LP64 - tag_stack(masm, sig_bt[i], next_off); } } else if (r_1->is_Register()) { Register r = r_1->as_Register(); if (!r_2->is_valid()) { __ movl(Address(rsp, st_off), r); - tag_stack(masm, sig_bt[i], st_off); } else { // long/double in gpr NOT_LP64(ShouldNotReachHere()); @@ -639,17 +611,14 @@ static void gen_c2i_adapter(MacroAssembler *masm, __ movptr(Address(rsp, st_off), rax); #endif /* ASSERT */ __ movptr(Address(rsp, next_off), r); - tag_stack(masm, sig_bt[i], next_off); } else { __ movptr(Address(rsp, st_off), r); - tag_stack(masm, sig_bt[i], st_off); } } } else { assert(r_1->is_XMMRegister(), ""); if (!r_2->is_valid()) { __ movflt(Address(rsp, st_off), r_1->as_XMMRegister()); - tag_stack(masm, sig_bt[i], st_off); } else { assert(sig_bt[i] == T_DOUBLE || sig_bt[i] == T_LONG, "wrong type"); move_c2i_double(masm, r_1->as_XMMRegister(), st_off); @@ -665,20 +634,9 @@ static void gen_c2i_adapter(MacroAssembler *masm, } -// For tagged stacks, double or long value aren't contiguous on the stack -// so get them contiguous for the xmm load static void move_i2c_double(MacroAssembler *masm, XMMRegister r, Register saved_sp, int ld_off) { - int next_val_off = ld_off - Interpreter::stackElementSize(); - if (TaggedStackInterpreter) { - // use tag slot temporarily for MSW - __ movptr(rsi, Address(saved_sp, ld_off)); - __ movptr(Address(saved_sp, next_val_off+wordSize), rsi); - __ movdbl(r, Address(saved_sp, next_val_off)); - // restore tag - __ movptr(Address(saved_sp, next_val_off+wordSize), frame::TagValue); - } else { - __ movdbl(r, Address(saved_sp, next_val_off)); - } + int next_val_off = ld_off - Interpreter::stackElementSize; + __ movdbl(r, Address(saved_sp, next_val_off)); } static void gen_i2c_adapter(MacroAssembler *masm, @@ -797,9 +755,9 @@ static void gen_i2c_adapter(MacroAssembler *masm, assert(!regs[i].second()->is_valid() || regs[i].first()->next() == regs[i].second(), "scrambled load targets?"); // Load in argument order going down. - int ld_off = (total_args_passed - i)*Interpreter::stackElementSize() + Interpreter::value_offset_in_bytes(); + int ld_off = (total_args_passed - i) * Interpreter::stackElementSize; // Point to interpreter value (vs. tag) - int next_off = ld_off - Interpreter::stackElementSize(); + int next_off = ld_off - Interpreter::stackElementSize; // // // @@ -2322,7 +2280,7 @@ nmethod *SharedRuntime::generate_dtrace_nmethod( // this function returns the adjust size (in number of words) to a c2i adapter // activation for use during deoptimization int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals ) { - return (callee_locals - callee_parameters) * Interpreter::stackElementWords(); + return (callee_locals - callee_parameters) * Interpreter::stackElementWords; } diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp index 9fa01e4bdef..c6a1bd91477 100644 --- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp @@ -452,22 +452,6 @@ static void patch_callers_callsite(MacroAssembler *masm) { __ bind(L); } -// Helper function to put tags in interpreter stack. -static void tag_stack(MacroAssembler *masm, const BasicType sig, int st_off) { - if (TaggedStackInterpreter) { - int tag_offset = st_off + Interpreter::expr_tag_offset_in_bytes(0); - if (sig == T_OBJECT || sig == T_ARRAY) { - __ movptr(Address(rsp, tag_offset), (int32_t) frame::TagReference); - } else if (sig == T_LONG || sig == T_DOUBLE) { - int next_tag_offset = st_off + Interpreter::expr_tag_offset_in_bytes(1); - __ movptr(Address(rsp, next_tag_offset), (int32_t) frame::TagValue); - __ movptr(Address(rsp, tag_offset), (int32_t) frame::TagValue); - } else { - __ movptr(Address(rsp, tag_offset), (int32_t) frame::TagValue); - } - } -} - static void gen_c2i_adapter(MacroAssembler *masm, int total_args_passed, @@ -489,7 +473,7 @@ static void gen_c2i_adapter(MacroAssembler *masm, // we also account for the return address location since // we store it first rather than hold it in rax across all the shuffling - int extraspace = (total_args_passed * Interpreter::stackElementSize()) + wordSize; + int extraspace = (total_args_passed * Interpreter::stackElementSize) + wordSize; // stack is aligned, keep it that way extraspace = round_to(extraspace, 2*wordSize); @@ -513,9 +497,8 @@ static void gen_c2i_adapter(MacroAssembler *masm, } // offset to start parameters - int st_off = (total_args_passed - i) * Interpreter::stackElementSize() + - Interpreter::value_offset_in_bytes(); - int next_off = st_off - Interpreter::stackElementSize(); + int st_off = (total_args_passed - i) * Interpreter::stackElementSize; + int next_off = st_off - Interpreter::stackElementSize; // Say 4 args: // i st_off @@ -543,7 +526,6 @@ static void gen_c2i_adapter(MacroAssembler *masm, // sign extend?? __ movl(rax, Address(rsp, ld_off)); __ movptr(Address(rsp, st_off), rax); - tag_stack(masm, sig_bt[i], st_off); } else { @@ -560,10 +542,8 @@ static void gen_c2i_adapter(MacroAssembler *masm, __ mov64(rax, CONST64(0xdeadffffdeadaaaa)); __ movptr(Address(rsp, st_off), rax); #endif /* ASSERT */ - tag_stack(masm, sig_bt[i], next_off); } else { __ movq(Address(rsp, st_off), rax); - tag_stack(masm, sig_bt[i], st_off); } } } else if (r_1->is_Register()) { @@ -572,7 +552,6 @@ static void gen_c2i_adapter(MacroAssembler *masm, // must be only an int (or less ) so move only 32bits to slot // why not sign extend?? __ movl(Address(rsp, st_off), r); - tag_stack(masm, sig_bt[i], st_off); } else { // Two VMREgs|OptoRegs can be T_OBJECT, T_ADDRESS, T_DOUBLE, T_LONG // T_DOUBLE and T_LONG use two slots in the interpreter @@ -584,10 +563,8 @@ static void gen_c2i_adapter(MacroAssembler *masm, __ movptr(Address(rsp, st_off), rax); #endif /* ASSERT */ __ movq(Address(rsp, next_off), r); - tag_stack(masm, sig_bt[i], next_off); } else { __ movptr(Address(rsp, st_off), r); - tag_stack(masm, sig_bt[i], st_off); } } } else { @@ -595,7 +572,6 @@ static void gen_c2i_adapter(MacroAssembler *masm, if (!r_2->is_valid()) { // only a float use just part of the slot __ movflt(Address(rsp, st_off), r_1->as_XMMRegister()); - tag_stack(masm, sig_bt[i], st_off); } else { #ifdef ASSERT // Overwrite the unused slot with known junk @@ -603,7 +579,6 @@ static void gen_c2i_adapter(MacroAssembler *masm, __ movptr(Address(rsp, st_off), rax); #endif /* ASSERT */ __ movdbl(Address(rsp, next_off), r_1->as_XMMRegister()); - tag_stack(masm, sig_bt[i], next_off); } } } @@ -688,9 +663,9 @@ static void gen_i2c_adapter(MacroAssembler *masm, assert(!regs[i].second()->is_valid() || regs[i].first()->next() == regs[i].second(), "scrambled load targets?"); // Load in argument order going down. - int ld_off = (total_args_passed - i)*Interpreter::stackElementSize() + Interpreter::value_offset_in_bytes(); + int ld_off = (total_args_passed - i)*Interpreter::stackElementSize; // Point to interpreter value (vs. tag) - int next_off = ld_off - Interpreter::stackElementSize(); + int next_off = ld_off - Interpreter::stackElementSize; // // // @@ -2535,7 +2510,7 @@ nmethod *SharedRuntime::generate_dtrace_nmethod(MacroAssembler *masm, // this function returns the adjust size (in number of words) to a c2i adapter // activation for use during deoptimization int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals ) { - return (callee_locals - callee_parameters) * Interpreter::stackElementWords(); + return (callee_locals - callee_parameters) * Interpreter::stackElementWords; } diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp index ccb8bf0a5b1..99865e668f6 100644 --- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp @@ -139,7 +139,7 @@ class StubGenerator: public StubCodeGenerator { // stub code __ enter(); __ movptr(rcx, parameter_size); // parameter counter - __ shlptr(rcx, Interpreter::logStackElementSize()); // convert parameter count to bytes + __ shlptr(rcx, Interpreter::logStackElementSize); // convert parameter count to bytes __ addptr(rcx, locals_count_in_bytes); // reserve space for register saves __ subptr(rsp, rcx); __ andptr(rsp, -(StackAlignmentInBytes)); // Align stack @@ -194,12 +194,6 @@ class StubGenerator: public StubCodeGenerator { __ xorptr(rbx, rbx); __ BIND(loop); - if (TaggedStackInterpreter) { - __ movptr(rax, Address(rdx, rcx, Interpreter::stackElementScale(), - -2*wordSize)); // get tag - __ movptr(Address(rsp, rbx, Interpreter::stackElementScale(), - Interpreter::expr_tag_offset_in_bytes(0)), rax); // store tag - } // get parameter __ movptr(rax, Address(rdx, rcx, Interpreter::stackElementScale(), -wordSize)); diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp index 121cfd67381..6f3538b4fea 100644 --- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp @@ -278,11 +278,6 @@ class StubGenerator: public StubCodeGenerator { __ movptr(c_rarg2, parameters); // parameter pointer __ movl(c_rarg1, c_rarg3); // parameter counter is in c_rarg1 __ BIND(loop); - if (TaggedStackInterpreter) { - __ movl(rax, Address(c_rarg2, 0)); // get tag - __ addptr(c_rarg2, wordSize); // advance to next tag - __ push(rax); // pass tag - } __ movptr(rax, Address(c_rarg2, 0));// get parameter __ addptr(c_rarg2, wordSize); // advance to next parameter __ decrementl(c_rarg1); // decrement counter diff --git a/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp b/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp index 40a70f9349a..99e9add9527 100644 --- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp +++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -28,8 +28,8 @@ // Size of interpreter code. Increase if too small. Interpreter will // fail with a guarantee ("not enough space for interpreter generation"); // if too small. - // Run with +PrintInterpreterSize to get the VM to print out the size. - // Max size with JVMTI and TaggedStackInterpreter + // Run with +PrintInterpreter to get the VM to print out the size. + // Max size with JVMTI #ifdef AMD64 const static int InterpreterCodeSize = 200 * 1024; #else diff --git a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp index 6174b2d8bea..fe84b9a1a4b 100644 --- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp @@ -305,7 +305,6 @@ address TemplateInterpreterGenerator::generate_result_handler_for(BasicType type case T_FLOAT : { const Register t = InterpreterRuntime::SignatureHandlerGenerator::temp(); __ pop(t); // remove return address first - __ pop_dtos_to_rsp(); // Must return a result for interpreter or compiler. In SSE // mode, results are returned in xmm0 and the FPU stack must // be empty. @@ -468,7 +467,7 @@ void InterpreterGenerator::generate_stack_overflow_check(void) { // see if the frame is greater than one page in size. If so, // then we need to verify there is enough stack space remaining // for the additional locals. - __ cmpl(rdx, (page_size - overhead_size)/Interpreter::stackElementSize()); + __ cmpl(rdx, (page_size - overhead_size)/Interpreter::stackElementSize); __ jcc(Assembler::belowEqual, after_frame_check); // compute rsp as if this were going to be the last frame on @@ -882,7 +881,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) { __ get_method(method); __ verify_oop(method); __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset())); - __ shlptr(t, Interpreter::logStackElementSize()); + __ shlptr(t, Interpreter::logStackElementSize); __ addptr(t, 2*wordSize); // allocate two more slots for JNIEnv and possible mirror __ subptr(rsp, t); __ andptr(rsp, -(StackAlignmentInBytes)); // gcc needs 16 byte aligned stacks to do XMM intrinsics @@ -1225,9 +1224,6 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) { __ testl(rdx, rdx); __ jcc(Assembler::lessEqual, exit); // do nothing if rdx <= 0 __ bind(loop); - if (TaggedStackInterpreter) { - __ push((int32_t)NULL_WORD); // push tag - } __ push((int32_t)NULL_WORD); // initialize local variables __ decrement(rdx); // until everything initialized __ jcc(Assembler::greater, loop); @@ -1463,7 +1459,7 @@ int AbstractInterpreter::size_top_interpreter_activation(methodOop method) { const int extra_stack = methodOopDesc::extra_stack_entries(); const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) * - Interpreter::stackElementWords(); + Interpreter::stackElementWords; return overhead_size + method_stack + stub_code; } @@ -1487,9 +1483,9 @@ int AbstractInterpreter::layout_activation(methodOop method, // NOTE: return size is in words not bytes // fixed size of an interpreter frame: - int max_locals = method->max_locals() * Interpreter::stackElementWords(); + int max_locals = method->max_locals() * Interpreter::stackElementWords; int extra_locals = (method->max_locals() - method->size_of_parameters()) * - Interpreter::stackElementWords(); + Interpreter::stackElementWords; int overhead = frame::sender_sp_offset - frame::interpreter_frame_initial_sp_offset; @@ -1499,9 +1495,9 @@ int AbstractInterpreter::layout_activation(methodOop method, int size = overhead + - ((callee_locals - callee_param_count)*Interpreter::stackElementWords()) + + ((callee_locals - callee_param_count)*Interpreter::stackElementWords) + (moncount*frame::interpreter_frame_monitor_size()) + - tempcount*Interpreter::stackElementWords() + popframe_extra_args; + tempcount*Interpreter::stackElementWords + popframe_extra_args; if (interpreter_frame != NULL) { #ifdef ASSERT @@ -1525,7 +1521,7 @@ int AbstractInterpreter::layout_activation(methodOop method, // Set last_sp intptr_t* rsp = (intptr_t*) monbot - - tempcount*Interpreter::stackElementWords() - + tempcount*Interpreter::stackElementWords - popframe_extra_args; interpreter_frame->interpreter_frame_set_last_sp(rsp); @@ -1625,7 +1621,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() { __ get_method(rax); __ verify_oop(rax); __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc::size_of_parameters_offset()))); - __ shlptr(rax, Interpreter::logStackElementSize()); + __ shlptr(rax, Interpreter::logStackElementSize); __ restore_locals(); __ subptr(rdi, rax); __ addptr(rdi, wordSize); diff --git a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp index da5a0eca94d..9641f5e2753 100644 --- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp @@ -199,7 +199,6 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, in_bytes(constantPoolCacheOopDesc::base_offset()) + 3 * wordSize)); __ andl(rbx, 0xFF); - if (TaggedStackInterpreter) __ shll(rbx, 1); // 2 slots per parameter. __ lea(rsp, Address(rsp, rbx, Address::times_8)); __ dispatch_next(state, step); @@ -417,7 +416,7 @@ void InterpreterGenerator::generate_stack_overflow_check(void) { // see if the frame is greater than one page in size. If so, // then we need to verify there is enough stack space remaining // for the additional locals. - __ cmpl(rdx, (page_size - overhead_size) / Interpreter::stackElementSize()); + __ cmpl(rdx, (page_size - overhead_size) / Interpreter::stackElementSize); __ jcc(Assembler::belowEqual, after_frame_check); // compute rsp as if this were going to be the last frame on @@ -428,7 +427,7 @@ void InterpreterGenerator::generate_stack_overflow_check(void) { // locals + overhead, in bytes __ mov(rax, rdx); - __ shlptr(rax, Interpreter::logStackElementSize()); // 2 slots per parameter. + __ shlptr(rax, Interpreter::logStackElementSize); // 2 slots per parameter. __ addptr(rax, overhead_size); #ifdef ASSERT @@ -759,7 +758,6 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) { // for natives the size of locals is zero // compute beginning of parameters (r14) - if (TaggedStackInterpreter) __ shll(rcx, 1); // 2 slots per parameter. __ lea(r14, Address(rsp, rcx, Address::times_8, -wordSize)); // add 2 zero-initialized slots for native calls @@ -865,7 +863,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) { __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset())); - __ shll(t, Interpreter::logStackElementSize()); + __ shll(t, Interpreter::logStackElementSize); __ subptr(rsp, t); __ subptr(rsp, frame::arg_reg_save_area_bytes); // windows @@ -1228,7 +1226,6 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) { __ pop(rax); // compute beginning of parameters (r14) - if (TaggedStackInterpreter) __ shll(rcx, 1); // 2 slots per parameter. __ lea(r14, Address(rsp, rcx, Address::times_8, -wordSize)); // rdx - # of additional locals @@ -1239,7 +1236,6 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) { __ testl(rdx, rdx); __ jcc(Assembler::lessEqual, exit); // do nothing if rdx <= 0 __ bind(loop); - if (TaggedStackInterpreter) __ push((int) NULL_WORD); // push tag __ push((int) NULL_WORD); // initialize local variables __ decrementl(rdx); // until everything initialized __ jcc(Assembler::greater, loop); @@ -1486,7 +1482,7 @@ int AbstractInterpreter::size_top_interpreter_activation(methodOop method) { const int stub_code = frame::entry_frame_after_call_words; const int extra_stack = methodOopDesc::extra_stack_entries(); const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) * - Interpreter::stackElementWords(); + Interpreter::stackElementWords; return (overhead_size + method_stack + stub_code); } @@ -1507,9 +1503,9 @@ int AbstractInterpreter::layout_activation(methodOop method, // It is also guaranteed to be walkable even though it is in a skeletal state // fixed size of an interpreter frame: - int max_locals = method->max_locals() * Interpreter::stackElementWords(); + int max_locals = method->max_locals() * Interpreter::stackElementWords; int extra_locals = (method->max_locals() - method->size_of_parameters()) * - Interpreter::stackElementWords(); + Interpreter::stackElementWords; int overhead = frame::sender_sp_offset - frame::interpreter_frame_initial_sp_offset; @@ -1518,9 +1514,9 @@ int AbstractInterpreter::layout_activation(methodOop method, // for the callee's params we only need to account for the extra // locals. int size = overhead + - (callee_locals - callee_param_count)*Interpreter::stackElementWords() + + (callee_locals - callee_param_count)*Interpreter::stackElementWords + moncount * frame::interpreter_frame_monitor_size() + - tempcount* Interpreter::stackElementWords() + popframe_extra_args; + tempcount* Interpreter::stackElementWords + popframe_extra_args; if (interpreter_frame != NULL) { #ifdef ASSERT if (!EnableMethodHandles) @@ -1544,7 +1540,7 @@ int AbstractInterpreter::layout_activation(methodOop method, // Set last_sp intptr_t* esp = (intptr_t*) monbot - - tempcount*Interpreter::stackElementWords() - + tempcount*Interpreter::stackElementWords - popframe_extra_args; interpreter_frame->interpreter_frame_set_last_sp(esp); @@ -1650,7 +1646,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() { __ get_method(rax); __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc:: size_of_parameters_offset()))); - __ shll(rax, Interpreter::logStackElementSize()); + __ shll(rax, Interpreter::logStackElementSize); __ restore_locals(); // XXX do we need this? __ subptr(r14, rax); __ addptr(r14, wordSize); diff --git a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp index dba7aa3617e..7c7c97b05e8 100644 --- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp @@ -50,7 +50,7 @@ static inline Address daddress(int n) { return laddress(n); } static inline Address aaddress(int n) { return iaddress(n); } static inline Address iaddress(Register r) { - return Address(rdi, r, Interpreter::stackElementScale(), Interpreter::value_offset_in_bytes()); + return Address(rdi, r, Interpreter::stackElementScale()); } static inline Address laddress(Register r) { return Address(rdi, r, Interpreter::stackElementScale(), Interpreter::local_offset_in_bytes(1)); @@ -59,12 +59,9 @@ static inline Address haddress(Register r) { return Address(rdi, r, Interpreter::stackElementScale(), Interpreter::local_offset_in_bytes(0)); } -static inline Address faddress(Register r) { return iaddress(r); }; -static inline Address daddress(Register r) { - assert(!TaggedStackInterpreter, "This doesn't work"); - return laddress(r); -}; -static inline Address aaddress(Register r) { return iaddress(r); }; +static inline Address faddress(Register r) { return iaddress(r); } +static inline Address daddress(Register r) { return laddress(r); } +static inline Address aaddress(Register r) { return iaddress(r); } // expression stack // (Note: Must not use symmetric equivalents at_rsp_m1/2 since they store @@ -448,7 +445,6 @@ void TemplateTable::iload() { // Get the local value into tos locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } @@ -456,18 +452,15 @@ void TemplateTable::fast_iload2() { transition(vtos, itos); locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); __ push(itos); locals_index(rbx, 3); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::fast_iload() { transition(vtos, itos); locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } @@ -476,7 +469,6 @@ void TemplateTable::lload() { locals_index(rbx); __ movptr(rax, laddress(rbx)); NOT_LP64(__ movl(rdx, haddress(rbx))); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } @@ -484,26 +476,13 @@ void TemplateTable::fload() { transition(vtos, ftos); locals_index(rbx); __ fld_s(faddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::dload() { transition(vtos, dtos); locals_index(rbx); - if (TaggedStackInterpreter) { - // Get double out of locals array, onto temp stack and load with - // float instruction into ST0 - __ movl(rax, laddress(rbx)); - __ movl(rdx, haddress(rbx)); - __ push(rdx); // push hi first - __ push(rax); - __ fld_d(Address(rsp, 0)); - __ addptr(rsp, 2*wordSize); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); - } else { - __ fld_d(daddress(rbx)); - } + __ fld_d(daddress(rbx)); } @@ -511,7 +490,6 @@ void TemplateTable::aload() { transition(vtos, atos); locals_index(rbx); __ movptr(rax, aaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagReference, rbx)); } @@ -527,7 +505,6 @@ void TemplateTable::wide_iload() { transition(vtos, itos); locals_index_wide(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } @@ -536,7 +513,6 @@ void TemplateTable::wide_lload() { locals_index_wide(rbx); __ movptr(rax, laddress(rbx)); NOT_LP64(__ movl(rdx, haddress(rbx))); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } @@ -544,26 +520,13 @@ void TemplateTable::wide_fload() { transition(vtos, ftos); locals_index_wide(rbx); __ fld_s(faddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::wide_dload() { transition(vtos, dtos); locals_index_wide(rbx); - if (TaggedStackInterpreter) { - // Get double out of locals array, onto temp stack and load with - // float instruction into ST0 - __ movl(rax, laddress(rbx)); - __ movl(rdx, haddress(rbx)); - __ push(rdx); // push hi first - __ push(rax); - __ fld_d(Address(rsp, 0)); - __ addl(rsp, 2*wordSize); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); - } else { - __ fld_d(daddress(rbx)); - } + __ fld_d(daddress(rbx)); } @@ -571,7 +534,6 @@ void TemplateTable::wide_aload() { transition(vtos, atos); locals_index_wide(rbx); __ movptr(rax, aaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagReference, rbx)); } void TemplateTable::index_check(Register array, Register index) { @@ -672,7 +634,6 @@ void TemplateTable::fast_icaload() { // load index out of locals locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); // rdx: array index_check(rdx, rax); @@ -695,7 +656,6 @@ void TemplateTable::saload() { void TemplateTable::iload(int n) { transition(vtos, itos); __ movl(rax, iaddress(n)); - debug_only(__ verify_local_tag(frame::TagValue, n)); } @@ -703,39 +663,24 @@ void TemplateTable::lload(int n) { transition(vtos, ltos); __ movptr(rax, laddress(n)); NOT_LP64(__ movptr(rdx, haddress(n))); - debug_only(__ verify_local_tag(frame::TagCategory2, n)); } void TemplateTable::fload(int n) { transition(vtos, ftos); __ fld_s(faddress(n)); - debug_only(__ verify_local_tag(frame::TagValue, n)); } void TemplateTable::dload(int n) { transition(vtos, dtos); - if (TaggedStackInterpreter) { - // Get double out of locals array, onto temp stack and load with - // float instruction into ST0 - __ movl(rax, laddress(n)); - __ movl(rdx, haddress(n)); - __ push(rdx); // push hi first - __ push(rax); - __ fld_d(Address(rsp, 0)); - __ addptr(rsp, 2*wordSize); // reset rsp - debug_only(__ verify_local_tag(frame::TagCategory2, n)); - } else { - __ fld_d(daddress(n)); - } + __ fld_d(daddress(n)); } void TemplateTable::aload(int n) { transition(vtos, atos); __ movptr(rax, aaddress(n)); - debug_only(__ verify_local_tag(frame::TagReference, n)); } @@ -809,7 +754,6 @@ void TemplateTable::istore() { transition(itos, vtos); locals_index(rbx); __ movl(iaddress(rbx), rax); - __ tag_local(frame::TagValue, rbx); } @@ -818,7 +762,6 @@ void TemplateTable::lstore() { locals_index(rbx); __ movptr(laddress(rbx), rax); NOT_LP64(__ movptr(haddress(rbx), rdx)); - __ tag_local(frame::TagCategory2, rbx); } @@ -826,34 +769,21 @@ void TemplateTable::fstore() { transition(ftos, vtos); locals_index(rbx); __ fstp_s(faddress(rbx)); - __ tag_local(frame::TagValue, rbx); } void TemplateTable::dstore() { transition(dtos, vtos); locals_index(rbx); - if (TaggedStackInterpreter) { - // Store double on stack and reload into locals nonadjacently - __ subptr(rsp, 2 * wordSize); - __ fstp_d(Address(rsp, 0)); - __ pop(rax); - __ pop(rdx); - __ movptr(laddress(rbx), rax); - __ movptr(haddress(rbx), rdx); - __ tag_local(frame::TagCategory2, rbx); - } else { - __ fstp_d(daddress(rbx)); - } + __ fstp_d(daddress(rbx)); } void TemplateTable::astore() { transition(vtos, vtos); - __ pop_ptr(rax, rdx); // will need to pop tag too + __ pop_ptr(rax); locals_index(rbx); __ movptr(aaddress(rbx), rax); - __ tag_local(rdx, rbx); // need to store same tag in local may be returnAddr } @@ -862,7 +792,6 @@ void TemplateTable::wide_istore() { __ pop_i(rax); locals_index_wide(rbx); __ movl(iaddress(rbx), rax); - __ tag_local(frame::TagValue, rbx); } @@ -872,7 +801,6 @@ void TemplateTable::wide_lstore() { locals_index_wide(rbx); __ movptr(laddress(rbx), rax); NOT_LP64(__ movl(haddress(rbx), rdx)); - __ tag_local(frame::TagCategory2, rbx); } @@ -888,10 +816,9 @@ void TemplateTable::wide_dstore() { void TemplateTable::wide_astore() { transition(vtos, vtos); - __ pop_ptr(rax, rdx); + __ pop_ptr(rax); locals_index_wide(rbx); __ movptr(aaddress(rbx), rax); - __ tag_local(rdx, rbx); } @@ -990,7 +917,7 @@ void TemplateTable::aastore() { // Pop stack arguments __ bind(done); - __ addptr(rsp, 3 * Interpreter::stackElementSize()); + __ addptr(rsp, 3 * Interpreter::stackElementSize); } @@ -1024,7 +951,6 @@ void TemplateTable::sastore() { void TemplateTable::istore(int n) { transition(itos, vtos); __ movl(iaddress(n), rax); - __ tag_local(frame::TagValue, n); } @@ -1032,58 +958,45 @@ void TemplateTable::lstore(int n) { transition(ltos, vtos); __ movptr(laddress(n), rax); NOT_LP64(__ movptr(haddress(n), rdx)); - __ tag_local(frame::TagCategory2, n); } void TemplateTable::fstore(int n) { transition(ftos, vtos); __ fstp_s(faddress(n)); - __ tag_local(frame::TagValue, n); } void TemplateTable::dstore(int n) { transition(dtos, vtos); - if (TaggedStackInterpreter) { - __ subptr(rsp, 2 * wordSize); - __ fstp_d(Address(rsp, 0)); - __ pop(rax); - __ pop(rdx); - __ movl(laddress(n), rax); - __ movl(haddress(n), rdx); - __ tag_local(frame::TagCategory2, n); - } else { - __ fstp_d(daddress(n)); - } + __ fstp_d(daddress(n)); } void TemplateTable::astore(int n) { transition(vtos, vtos); - __ pop_ptr(rax, rdx); + __ pop_ptr(rax); __ movptr(aaddress(n), rax); - __ tag_local(rdx, n); } void TemplateTable::pop() { transition(vtos, vtos); - __ addptr(rsp, Interpreter::stackElementSize()); + __ addptr(rsp, Interpreter::stackElementSize); } void TemplateTable::pop2() { transition(vtos, vtos); - __ addptr(rsp, 2*Interpreter::stackElementSize()); + __ addptr(rsp, 2*Interpreter::stackElementSize); } void TemplateTable::dup() { transition(vtos, vtos); // stack: ..., a - __ load_ptr_and_tag(0, rax, rdx); - __ push_ptr(rax, rdx); + __ load_ptr(0, rax); + __ push_ptr(rax); // stack: ..., a, a } @@ -1091,11 +1004,11 @@ void TemplateTable::dup() { void TemplateTable::dup_x1() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(0, rax, rdx); // load b - __ load_ptr_and_tag(1, rcx, rbx); // load a - __ store_ptr_and_tag(1, rax, rdx); // store b - __ store_ptr_and_tag(0, rcx, rbx); // store a - __ push_ptr(rax, rdx); // push b + __ load_ptr( 0, rax); // load b + __ load_ptr( 1, rcx); // load a + __ store_ptr(1, rax); // store b + __ store_ptr(0, rcx); // store a + __ push_ptr(rax); // push b // stack: ..., b, a, b } @@ -1103,15 +1016,15 @@ void TemplateTable::dup_x1() { void TemplateTable::dup_x2() { transition(vtos, vtos); // stack: ..., a, b, c - __ load_ptr_and_tag(0, rax, rdx); // load c - __ load_ptr_and_tag(2, rcx, rbx); // load a - __ store_ptr_and_tag(2, rax, rdx); // store c in a - __ push_ptr(rax, rdx); // push c + __ load_ptr( 0, rax); // load c + __ load_ptr( 2, rcx); // load a + __ store_ptr(2, rax); // store c in a + __ push_ptr(rax); // push c // stack: ..., c, b, c, c - __ load_ptr_and_tag(2, rax, rdx); // load b - __ store_ptr_and_tag(2, rcx, rbx); // store a in b + __ load_ptr( 2, rax); // load b + __ store_ptr(2, rcx); // store a in b // stack: ..., c, a, c, c - __ store_ptr_and_tag(1, rax, rdx); // store b in c + __ store_ptr(1, rax); // store b in c // stack: ..., c, a, b, c } @@ -1119,10 +1032,10 @@ void TemplateTable::dup_x2() { void TemplateTable::dup2() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, rax, rdx); // load a - __ push_ptr(rax, rdx); // push a - __ load_ptr_and_tag(1, rax, rdx); // load b - __ push_ptr(rax, rdx); // push b + __ load_ptr(1, rax); // load a + __ push_ptr(rax); // push a + __ load_ptr(1, rax); // load b + __ push_ptr(rax); // push b // stack: ..., a, b, a, b } @@ -1130,17 +1043,17 @@ void TemplateTable::dup2() { void TemplateTable::dup2_x1() { transition(vtos, vtos); // stack: ..., a, b, c - __ load_ptr_and_tag(0, rcx, rbx); // load c - __ load_ptr_and_tag(1, rax, rdx); // load b - __ push_ptr(rax, rdx); // push b - __ push_ptr(rcx, rbx); // push c + __ load_ptr( 0, rcx); // load c + __ load_ptr( 1, rax); // load b + __ push_ptr(rax); // push b + __ push_ptr(rcx); // push c // stack: ..., a, b, c, b, c - __ store_ptr_and_tag(3, rcx, rbx); // store c in b + __ store_ptr(3, rcx); // store c in b // stack: ..., a, c, c, b, c - __ load_ptr_and_tag(4, rcx, rbx); // load a - __ store_ptr_and_tag(2, rcx, rbx); // store a in 2nd c + __ load_ptr( 4, rcx); // load a + __ store_ptr(2, rcx); // store a in 2nd c // stack: ..., a, c, a, b, c - __ store_ptr_and_tag(4, rax, rdx); // store b in a + __ store_ptr(4, rax); // store b in a // stack: ..., b, c, a, b, c // stack: ..., b, c, a, b, c } @@ -1149,19 +1062,19 @@ void TemplateTable::dup2_x1() { void TemplateTable::dup2_x2() { transition(vtos, vtos); // stack: ..., a, b, c, d - __ load_ptr_and_tag(0, rcx, rbx); // load d - __ load_ptr_and_tag(1, rax, rdx); // load c - __ push_ptr(rax, rdx); // push c - __ push_ptr(rcx, rbx); // push d + __ load_ptr( 0, rcx); // load d + __ load_ptr( 1, rax); // load c + __ push_ptr(rax); // push c + __ push_ptr(rcx); // push d // stack: ..., a, b, c, d, c, d - __ load_ptr_and_tag(4, rax, rdx); // load b - __ store_ptr_and_tag(2, rax, rdx); // store b in d - __ store_ptr_and_tag(4, rcx, rbx); // store d in b + __ load_ptr( 4, rax); // load b + __ store_ptr(2, rax); // store b in d + __ store_ptr(4, rcx); // store d in b // stack: ..., a, d, c, b, c, d - __ load_ptr_and_tag(5, rcx, rbx); // load a - __ load_ptr_and_tag(3, rax, rdx); // load c - __ store_ptr_and_tag(3, rcx, rbx); // store a in c - __ store_ptr_and_tag(5, rax, rdx); // store c in a + __ load_ptr( 5, rcx); // load a + __ load_ptr( 3, rax); // load c + __ store_ptr(3, rcx); // store a in c + __ store_ptr(5, rax); // store c in a // stack: ..., c, d, a, b, c, d // stack: ..., c, d, a, b, c, d } @@ -1170,10 +1083,10 @@ void TemplateTable::dup2_x2() { void TemplateTable::swap() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, rcx, rbx); // load a - __ load_ptr_and_tag(0, rax, rdx); // load b - __ store_ptr_and_tag(0, rcx, rbx); // store a in b - __ store_ptr_and_tag(1, rax, rdx); // store b in a + __ load_ptr( 1, rcx); // load a + __ load_ptr( 0, rax); // load b + __ store_ptr(0, rcx); // store a in b + __ store_ptr(1, rax); // store b in a // stack: ..., b, a } @@ -1181,12 +1094,12 @@ void TemplateTable::swap() { void TemplateTable::iop2(Operation op) { transition(itos, itos); switch (op) { - case add : __ pop_i(rdx); __ addl (rax, rdx); break; + case add : __ pop_i(rdx); __ addl (rax, rdx); break; case sub : __ mov(rdx, rax); __ pop_i(rax); __ subl (rax, rdx); break; - case mul : __ pop_i(rdx); __ imull(rax, rdx); break; - case _and : __ pop_i(rdx); __ andl (rax, rdx); break; - case _or : __ pop_i(rdx); __ orl (rax, rdx); break; - case _xor : __ pop_i(rdx); __ xorl (rax, rdx); break; + case mul : __ pop_i(rdx); __ imull(rax, rdx); break; + case _and : __ pop_i(rdx); __ andl (rax, rdx); break; + case _or : __ pop_i(rdx); __ orl (rax, rdx); break; + case _xor : __ pop_i(rdx); __ xorl (rax, rdx); break; case shl : __ mov(rcx, rax); __ pop_i(rax); __ shll (rax); break; // implicit masking of lower 5 bits by Intel shift instr. case shr : __ mov(rcx, rax); __ pop_i(rax); __ sarl (rax); break; // implicit masking of lower 5 bits by Intel shift instr. case ushr : __ mov(rcx, rax); __ pop_i(rax); __ shrl (rax); break; // implicit masking of lower 5 bits by Intel shift instr. @@ -1199,13 +1112,13 @@ void TemplateTable::lop2(Operation op) { transition(ltos, ltos); __ pop_l(rbx, rcx); switch (op) { - case add : __ addl(rax, rbx); __ adcl(rdx, rcx); break; - case sub : __ subl(rbx, rax); __ sbbl(rcx, rdx); - __ mov(rax, rbx); __ mov(rdx, rcx); break; - case _and: __ andl(rax, rbx); __ andl(rdx, rcx); break; - case _or : __ orl (rax, rbx); __ orl (rdx, rcx); break; - case _xor: __ xorl(rax, rbx); __ xorl(rdx, rcx); break; - default : ShouldNotReachHere(); + case add : __ addl(rax, rbx); __ adcl(rdx, rcx); break; + case sub : __ subl(rbx, rax); __ sbbl(rcx, rdx); + __ mov (rax, rbx); __ mov (rdx, rcx); break; + case _and : __ andl(rax, rbx); __ andl(rdx, rcx); break; + case _or : __ orl (rax, rbx); __ orl (rdx, rcx); break; + case _xor : __ xorl(rax, rbx); __ xorl(rdx, rcx); break; + default : ShouldNotReachHere(); } } @@ -1299,7 +1212,6 @@ void TemplateTable::lushr() { void TemplateTable::fop2(Operation op) { transition(ftos, ftos); - __ pop_ftos_to_rsp(); // pop ftos into rsp switch (op) { case add: __ fadd_s (at_rsp()); break; case sub: __ fsubr_s(at_rsp()); break; @@ -1315,7 +1227,6 @@ void TemplateTable::fop2(Operation op) { void TemplateTable::dop2(Operation op) { transition(dtos, dtos); - __ pop_dtos_to_rsp(); // pop dtos into rsp switch (op) { case add: __ fadd_d (at_rsp()); break; @@ -1557,10 +1468,8 @@ void TemplateTable::lcmp() { void TemplateTable::float_cmp(bool is_float, int unordered_result) { if (is_float) { - __ pop_ftos_to_rsp(); __ fld_s(at_rsp()); } else { - __ pop_dtos_to_rsp(); __ fld_d(at_rsp()); __ pop(rdx); } @@ -2854,7 +2763,6 @@ void TemplateTable::fast_xaccess(TosState state) { transition(vtos, state); // get receiver __ movptr(rax, aaddress(0)); - debug_only(__ verify_local_tag(frame::TagReference, 0)); // access constant pool cache __ get_cache_and_index_at_bcp(rcx, rdx, 2); __ movptr(rbx, Address(rcx, diff --git a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp index 8c6a9c1e567..6efd571e200 100644 --- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp @@ -58,7 +58,7 @@ static inline Address aaddress(int n) { } static inline Address iaddress(Register r) { - return Address(r14, r, Address::times_8, Interpreter::value_offset_in_bytes()); + return Address(r14, r, Address::times_8); } static inline Address laddress(Register r) { @@ -418,7 +418,6 @@ void TemplateTable::ldc2_w() { void TemplateTable::locals_index(Register reg, int offset) { __ load_unsigned_byte(reg, at_bcp(offset)); __ negptr(reg); - if (TaggedStackInterpreter) __ shlptr(reg, 1); // index = index*2 } void TemplateTable::iload() { @@ -460,53 +459,45 @@ void TemplateTable::iload() { // Get the local value into tos locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::fast_iload2() { transition(vtos, itos); locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); __ push(itos); locals_index(rbx, 3); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::fast_iload() { transition(vtos, itos); locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::lload() { transition(vtos, ltos); locals_index(rbx); __ movq(rax, laddress(rbx)); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } void TemplateTable::fload() { transition(vtos, ftos); locals_index(rbx); __ movflt(xmm0, faddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::dload() { transition(vtos, dtos); locals_index(rbx); __ movdbl(xmm0, daddress(rbx)); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } void TemplateTable::aload() { transition(vtos, atos); locals_index(rbx); __ movptr(rax, aaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagReference, rbx)); } void TemplateTable::locals_index_wide(Register reg) { @@ -514,42 +505,36 @@ void TemplateTable::locals_index_wide(Register reg) { __ bswapl(reg); __ shrl(reg, 16); __ negptr(reg); - if (TaggedStackInterpreter) __ shlptr(reg, 1); // index = index*2 } void TemplateTable::wide_iload() { transition(vtos, itos); locals_index_wide(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::wide_lload() { transition(vtos, ltos); locals_index_wide(rbx); __ movq(rax, laddress(rbx)); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } void TemplateTable::wide_fload() { transition(vtos, ftos); locals_index_wide(rbx); __ movflt(xmm0, faddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); } void TemplateTable::wide_dload() { transition(vtos, dtos); locals_index_wide(rbx); __ movdbl(xmm0, daddress(rbx)); - debug_only(__ verify_local_tag(frame::TagCategory2, rbx)); } void TemplateTable::wide_aload() { transition(vtos, atos); locals_index_wide(rbx); __ movptr(rax, aaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagReference, rbx)); } void TemplateTable::index_check(Register array, Register index) { @@ -654,7 +639,6 @@ void TemplateTable::fast_icaload() { // load index out of locals locals_index(rbx); __ movl(rax, iaddress(rbx)); - debug_only(__ verify_local_tag(frame::TagValue, rbx)); // eax: index // rdx: array @@ -681,31 +665,26 @@ void TemplateTable::saload() { void TemplateTable::iload(int n) { transition(vtos, itos); __ movl(rax, iaddress(n)); - debug_only(__ verify_local_tag(frame::TagValue, n)); } void TemplateTable::lload(int n) { transition(vtos, ltos); __ movq(rax, laddress(n)); - debug_only(__ verify_local_tag(frame::TagCategory2, n)); } void TemplateTable::fload(int n) { transition(vtos, ftos); __ movflt(xmm0, faddress(n)); - debug_only(__ verify_local_tag(frame::TagValue, n)); } void TemplateTable::dload(int n) { transition(vtos, dtos); __ movdbl(xmm0, daddress(n)); - debug_only(__ verify_local_tag(frame::TagCategory2, n)); } void TemplateTable::aload(int n) { transition(vtos, atos); __ movptr(rax, aaddress(n)); - debug_only(__ verify_local_tag(frame::TagReference, n)); } void TemplateTable::aload_0() { @@ -791,36 +770,31 @@ void TemplateTable::istore() { transition(itos, vtos); locals_index(rbx); __ movl(iaddress(rbx), rax); - __ tag_local(frame::TagValue, rbx); } void TemplateTable::lstore() { transition(ltos, vtos); locals_index(rbx); __ movq(laddress(rbx), rax); - __ tag_local(frame::TagCategory2, rbx); } void TemplateTable::fstore() { transition(ftos, vtos); locals_index(rbx); __ movflt(faddress(rbx), xmm0); - __ tag_local(frame::TagValue, rbx); } void TemplateTable::dstore() { transition(dtos, vtos); locals_index(rbx); __ movdbl(daddress(rbx), xmm0); - __ tag_local(frame::TagCategory2, rbx); } void TemplateTable::astore() { transition(vtos, vtos); - __ pop_ptr(rax, rdx); // will need to pop tag too + __ pop_ptr(rax); locals_index(rbx); __ movptr(aaddress(rbx), rax); - __ tag_local(rdx, rbx); // store tag from stack, might be returnAddr } void TemplateTable::wide_istore() { @@ -828,7 +802,6 @@ void TemplateTable::wide_istore() { __ pop_i(); locals_index_wide(rbx); __ movl(iaddress(rbx), rax); - __ tag_local(frame::TagValue, rbx); } void TemplateTable::wide_lstore() { @@ -836,7 +809,6 @@ void TemplateTable::wide_lstore() { __ pop_l(); locals_index_wide(rbx); __ movq(laddress(rbx), rax); - __ tag_local(frame::TagCategory2, rbx); } void TemplateTable::wide_fstore() { @@ -844,7 +816,6 @@ void TemplateTable::wide_fstore() { __ pop_f(); locals_index_wide(rbx); __ movflt(faddress(rbx), xmm0); - __ tag_local(frame::TagValue, rbx); } void TemplateTable::wide_dstore() { @@ -852,15 +823,13 @@ void TemplateTable::wide_dstore() { __ pop_d(); locals_index_wide(rbx); __ movdbl(daddress(rbx), xmm0); - __ tag_local(frame::TagCategory2, rbx); } void TemplateTable::wide_astore() { transition(vtos, vtos); - __ pop_ptr(rax, rdx); // will need to pop tag too + __ pop_ptr(rax); locals_index_wide(rbx); __ movptr(aaddress(rbx), rax); - __ tag_local(rdx, rbx); // store tag from stack, might be returnAddr } void TemplateTable::iastore() { @@ -972,7 +941,7 @@ void TemplateTable::aastore() { // Pop stack arguments __ bind(done); - __ addptr(rsp, 3 * Interpreter::stackElementSize()); + __ addptr(rsp, 3 * Interpreter::stackElementSize); } void TemplateTable::bastore() { @@ -1010,130 +979,125 @@ void TemplateTable::sastore() { void TemplateTable::istore(int n) { transition(itos, vtos); __ movl(iaddress(n), rax); - __ tag_local(frame::TagValue, n); } void TemplateTable::lstore(int n) { transition(ltos, vtos); __ movq(laddress(n), rax); - __ tag_local(frame::TagCategory2, n); } void TemplateTable::fstore(int n) { transition(ftos, vtos); __ movflt(faddress(n), xmm0); - __ tag_local(frame::TagValue, n); } void TemplateTable::dstore(int n) { transition(dtos, vtos); __ movdbl(daddress(n), xmm0); - __ tag_local(frame::TagCategory2, n); } void TemplateTable::astore(int n) { transition(vtos, vtos); - __ pop_ptr(rax, rdx); + __ pop_ptr(rax); __ movptr(aaddress(n), rax); - __ tag_local(rdx, n); } void TemplateTable::pop() { transition(vtos, vtos); - __ addptr(rsp, Interpreter::stackElementSize()); + __ addptr(rsp, Interpreter::stackElementSize); } void TemplateTable::pop2() { transition(vtos, vtos); - __ addptr(rsp, 2 * Interpreter::stackElementSize()); + __ addptr(rsp, 2 * Interpreter::stackElementSize); } void TemplateTable::dup() { transition(vtos, vtos); - __ load_ptr_and_tag(0, rax, rdx); - __ push_ptr(rax, rdx); + __ load_ptr(0, rax); + __ push_ptr(rax); // stack: ..., a, a } void TemplateTable::dup_x1() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(0, rax, rdx); // load b - __ load_ptr_and_tag(1, rcx, rbx); // load a - __ store_ptr_and_tag(1, rax, rdx); // store b - __ store_ptr_and_tag(0, rcx, rbx); // store a - __ push_ptr(rax, rdx); // push b + __ load_ptr( 0, rax); // load b + __ load_ptr( 1, rcx); // load a + __ store_ptr(1, rax); // store b + __ store_ptr(0, rcx); // store a + __ push_ptr(rax); // push b // stack: ..., b, a, b } void TemplateTable::dup_x2() { transition(vtos, vtos); // stack: ..., a, b, c - __ load_ptr_and_tag(0, rax, rdx); // load c - __ load_ptr_and_tag(2, rcx, rbx); // load a - __ store_ptr_and_tag(2, rax, rdx); // store c in a - __ push_ptr(rax, rdx); // push c + __ load_ptr( 0, rax); // load c + __ load_ptr( 2, rcx); // load a + __ store_ptr(2, rax); // store c in a + __ push_ptr(rax); // push c // stack: ..., c, b, c, c - __ load_ptr_and_tag(2, rax, rdx); // load b - __ store_ptr_and_tag(2, rcx, rbx); // store a in b + __ load_ptr( 2, rax); // load b + __ store_ptr(2, rcx); // store a in b // stack: ..., c, a, c, c - __ store_ptr_and_tag(1, rax, rdx); // store b in c + __ store_ptr(1, rax); // store b in c // stack: ..., c, a, b, c } void TemplateTable::dup2() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, rax, rdx); // load a - __ push_ptr(rax, rdx); // push a - __ load_ptr_and_tag(1, rax, rdx); // load b - __ push_ptr(rax, rdx); // push b + __ load_ptr(1, rax); // load a + __ push_ptr(rax); // push a + __ load_ptr(1, rax); // load b + __ push_ptr(rax); // push b // stack: ..., a, b, a, b } void TemplateTable::dup2_x1() { transition(vtos, vtos); // stack: ..., a, b, c - __ load_ptr_and_tag(0, rcx, rbx); // load c - __ load_ptr_and_tag(1, rax, rdx); // load b - __ push_ptr(rax, rdx); // push b - __ push_ptr(rcx, rbx); // push c + __ load_ptr( 0, rcx); // load c + __ load_ptr( 1, rax); // load b + __ push_ptr(rax); // push b + __ push_ptr(rcx); // push c // stack: ..., a, b, c, b, c - __ store_ptr_and_tag(3, rcx, rbx); // store c in b + __ store_ptr(3, rcx); // store c in b // stack: ..., a, c, c, b, c - __ load_ptr_and_tag(4, rcx, rbx); // load a - __ store_ptr_and_tag(2, rcx, rbx); // store a in 2nd c + __ load_ptr( 4, rcx); // load a + __ store_ptr(2, rcx); // store a in 2nd c // stack: ..., a, c, a, b, c - __ store_ptr_and_tag(4, rax, rdx); // store b in a + __ store_ptr(4, rax); // store b in a // stack: ..., b, c, a, b, c } void TemplateTable::dup2_x2() { transition(vtos, vtos); // stack: ..., a, b, c, d - __ load_ptr_and_tag(0, rcx, rbx); // load d - __ load_ptr_and_tag(1, rax, rdx); // load c - __ push_ptr(rax, rdx); // push c - __ push_ptr(rcx, rbx); // push d + __ load_ptr( 0, rcx); // load d + __ load_ptr( 1, rax); // load c + __ push_ptr(rax); // push c + __ push_ptr(rcx); // push d // stack: ..., a, b, c, d, c, d - __ load_ptr_and_tag(4, rax, rdx); // load b - __ store_ptr_and_tag(2, rax, rdx); // store b in d - __ store_ptr_and_tag(4, rcx, rbx); // store d in b + __ load_ptr( 4, rax); // load b + __ store_ptr(2, rax); // store b in d + __ store_ptr(4, rcx); // store d in b // stack: ..., a, d, c, b, c, d - __ load_ptr_and_tag(5, rcx, rbx); // load a - __ load_ptr_and_tag(3, rax, rdx); // load c - __ store_ptr_and_tag(3, rcx, rbx); // store a in c - __ store_ptr_and_tag(5, rax, rdx); // store c in a + __ load_ptr( 5, rcx); // load a + __ load_ptr( 3, rax); // load c + __ store_ptr(3, rcx); // store a in c + __ store_ptr(5, rax); // store c in a // stack: ..., c, d, a, b, c, d } void TemplateTable::swap() { transition(vtos, vtos); // stack: ..., a, b - __ load_ptr_and_tag(1, rcx, rbx); // load a - __ load_ptr_and_tag(0, rax, rdx); // load b - __ store_ptr_and_tag(0, rcx, rbx); // store a in b - __ store_ptr_and_tag(1, rax, rdx); // store b in a + __ load_ptr( 1, rcx); // load a + __ load_ptr( 0, rax); // load b + __ store_ptr(0, rcx); // store a in b + __ store_ptr(1, rax); // store b in a // stack: ..., b, a } @@ -1156,12 +1120,12 @@ void TemplateTable::iop2(Operation op) { void TemplateTable::lop2(Operation op) { transition(ltos, ltos); switch (op) { - case add : __ pop_l(rdx); __ addptr (rax, rdx); break; - case sub : __ mov(rdx, rax); __ pop_l(rax); __ subptr (rax, rdx); break; - case _and : __ pop_l(rdx); __ andptr (rax, rdx); break; - case _or : __ pop_l(rdx); __ orptr (rax, rdx); break; - case _xor : __ pop_l(rdx); __ xorptr (rax, rdx); break; - default : ShouldNotReachHere(); + case add : __ pop_l(rdx); __ addptr(rax, rdx); break; + case sub : __ mov(rdx, rax); __ pop_l(rax); __ subptr(rax, rdx); break; + case _and : __ pop_l(rdx); __ andptr(rax, rdx); break; + case _or : __ pop_l(rdx); __ orptr (rax, rdx); break; + case _xor : __ pop_l(rdx); __ xorptr(rax, rdx); break; + default : ShouldNotReachHere(); } } @@ -1250,7 +1214,7 @@ void TemplateTable::fop2(Operation op) { switch (op) { case add: __ addss(xmm0, at_rsp()); - __ addptr(rsp, Interpreter::stackElementSize()); + __ addptr(rsp, Interpreter::stackElementSize); break; case sub: __ movflt(xmm1, xmm0); @@ -1259,7 +1223,7 @@ void TemplateTable::fop2(Operation op) { break; case mul: __ mulss(xmm0, at_rsp()); - __ addptr(rsp, Interpreter::stackElementSize()); + __ addptr(rsp, Interpreter::stackElementSize); break; case div: __ movflt(xmm1, xmm0); @@ -1282,7 +1246,7 @@ void TemplateTable::dop2(Operation op) { switch (op) { case add: __ addsd(xmm0, at_rsp()); - __ addptr(rsp, 2 * Interpreter::stackElementSize()); + __ addptr(rsp, 2 * Interpreter::stackElementSize); break; case sub: __ movdbl(xmm1, xmm0); @@ -1291,7 +1255,7 @@ void TemplateTable::dop2(Operation op) { break; case mul: __ mulsd(xmm0, at_rsp()); - __ addptr(rsp, 2 * Interpreter::stackElementSize()); + __ addptr(rsp, 2 * Interpreter::stackElementSize); break; case div: __ movdbl(xmm1, xmm0); @@ -2782,7 +2746,6 @@ void TemplateTable::fast_xaccess(TosState state) { // get receiver __ movptr(rax, aaddress(0)); - debug_only(__ verify_local_tag(frame::TagReference, 0)); // access constant pool cache __ get_cache_and_index_at_bcp(rcx, rdx, 2); __ movptr(rbx, @@ -2858,7 +2821,6 @@ void TemplateTable::prepare_invoke(Register method, Register index, int byte_no) if (load_receiver) { __ movl(recv, flags); __ andl(recv, 0xFF); - if (TaggedStackInterpreter) __ shll(recv, 1); // index*2 Address recv_addr(rsp, recv, Address::times_8, -Interpreter::expr_offset_in_bytes(1)); __ movptr(recv, recv_addr); __ verify_oop(recv); @@ -3610,13 +3572,11 @@ void TemplateTable::multianewarray() { __ load_unsigned_byte(rax, at_bcp(3)); // get number of dimensions // last dim is on top of stack; we want address of first one: // first_addr = last_addr + (ndims - 1) * wordSize - if (TaggedStackInterpreter) __ shll(rax, 1); // index*2 __ lea(c_rarg1, Address(rsp, rax, Address::times_8, -wordSize)); call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::multianewarray), c_rarg1); __ load_unsigned_byte(rbx, at_bcp(3)); - if (TaggedStackInterpreter) __ shll(rbx, 1); // index*2 __ lea(rsp, Address(rsp, rbx, Address::times_8)); } #endif // !CC_INTERP diff --git a/hotspot/src/cpu/zero/vm/interpreter_zero.hpp b/hotspot/src/cpu/zero/vm/interpreter_zero.hpp index 67cac47d9a2..df0ccb7348c 100644 --- a/hotspot/src/cpu/zero/vm/interpreter_zero.hpp +++ b/hotspot/src/cpu/zero/vm/interpreter_zero.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. * Copyright 2007, 2008 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -38,24 +38,12 @@ static int expr_index_at(int i) { return stackElementWords() * i; } - static int expr_tag_index_at(int i) { - assert(TaggedStackInterpreter, "should not call this"); - Unimplemented(); - } static int expr_offset_in_bytes(int i) { return stackElementSize() * i; } - static int expr_tag_offset_in_bytes(int i) { - assert(TaggedStackInterpreter, "should not call this"); - Unimplemented(); - } static int local_index_at(int i) { assert(i <= 0, "local direction already negated"); - return stackElementWords() * i + (value_offset_in_bytes() / wordSize); - } - static int local_tag_index_at(int i) { - assert(TaggedStackInterpreter, "should not call this"); - Unimplemented(); + return stackElementWords() * i; } diff --git a/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp b/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp index 708cc3e085c..98d488e02ea 100644 --- a/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp +++ b/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2010 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 @@ -30,9 +30,9 @@ define_pd_global(bool, DontYieldALot, false); define_pd_global(intx, ThreadStackSize, 1024); // 0 => use system default define_pd_global(intx, VMThreadStackSize, 1024); #else -// ThreadStackSize 320 allows TaggedStackInterpreter and a couple of test cases -// to run while keeping the number of threads that can be created high. -// System default ThreadStackSize appears to be 512 which is too big. +// ThreadStackSize 320 allows a couple of test cases to run while +// keeping the number of threads that can be created high. System +// default ThreadStackSize appears to be 512 which is too big. define_pd_global(intx, ThreadStackSize, 320); define_pd_global(intx, VMThreadStackSize, 512); #endif // AMD64 diff --git a/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp index 4b2749bc193..51a8b9b2dd6 100644 --- a/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp +++ b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2010 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 @@ -31,8 +31,8 @@ define_pd_global(intx, ThreadStackSize, 1024); // 0 => use system defau define_pd_global(intx, VMThreadStackSize, 1024); define_pd_global(uintx,JVMInvokeMethodSlack, 8*K); #else -// ThreadStackSize 320 allows TaggedStackInterpreter and a couple of test cases -// to run while keeping the number of threads that can be created high. +// ThreadStackSize 320 allows a couple of test cases to run while +// keeping the number of threads that can be created high. define_pd_global(intx, ThreadStackSize, 320); define_pd_global(intx, VMThreadStackSize, 512); define_pd_global(uintx,JVMInvokeMethodSlack, 10*K); diff --git a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp index 8ab9e40d32b..72bf5c89db9 100644 --- a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp @@ -167,60 +167,15 @@ class AbstractInterpreter: AllStatic { // Debugging/printing static void print(); // prints the interpreter code - // Support for Tagged Stacks - // - // Tags are stored on the Java Expression stack above the value: - // - // tag - // value - // - // For double values: - // - // tag2 - // high word - // tag1 - // low word - public: - static int stackElementWords() { return TaggedStackInterpreter ? 2 : 1; } - static int stackElementSize() { return stackElementWords()*wordSize; } - static int logStackElementSize() { return - TaggedStackInterpreter? LogBytesPerWord+1 : LogBytesPerWord; } - - // Tag is at pointer, value is one below for a stack growing down - // (or above for stack growing up) - static int value_offset_in_bytes() { - return TaggedStackInterpreter ? - frame::interpreter_frame_expression_stack_direction() * wordSize : 0; - } - static int tag_offset_in_bytes() { - assert(TaggedStackInterpreter, "should not call this"); - return 0; - } - - // Tagged Locals - // Locals are stored relative to Llocals: - // - // tag <- Llocals[n] - // value - // - // Category 2 types are indexed as: - // - // tag <- Llocals[-n] - // high word - // tag <- Llocals[-n+1] - // low word - // + // Interpreter helpers + const static int stackElementWords = 1; + const static int stackElementSize = stackElementWords * wordSize; + const static int logStackElementSize = LogBytesPerWord; // Local values relative to locals[n] static int local_offset_in_bytes(int n) { - return ((frame::interpreter_frame_expression_stack_direction() * n) * - stackElementSize()) + value_offset_in_bytes(); - } - static int local_tag_offset_in_bytes(int n) { - assert(TaggedStackInterpreter, "should not call this"); - return ((frame::interpreter_frame_expression_stack_direction() * n) * - stackElementSize()) + tag_offset_in_bytes(); + return ((frame::interpreter_frame_expression_stack_direction() * n) * stackElementSize); } // access to stacked values according to type: @@ -237,29 +192,15 @@ class AbstractInterpreter: AllStatic { static jlong long_in_slot(intptr_t* slot_addr) { if (sizeof(intptr_t) >= sizeof(jlong)) { return *(jlong*) slot_addr; - } else if (!TaggedStackInterpreter) { - return Bytes::get_native_u8((address)slot_addr); } else { - assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32"); - // assemble the long in memory order (not arithmetic order) - union { jlong j; jint i[2]; } u; - u.i[0] = (jint) slot_addr[0*stackElementSize()]; - u.i[1] = (jint) slot_addr[1*stackElementSize()]; - return u.j; + return Bytes::get_native_u8((address)slot_addr); } } static void set_long_in_slot(intptr_t* slot_addr, jlong value) { if (sizeof(intptr_t) >= sizeof(jlong)) { *(jlong*) slot_addr = value; - } else if (!TaggedStackInterpreter) { - Bytes::put_native_u8((address)slot_addr, value); } else { - assert(sizeof(intptr_t) * 2 == sizeof(jlong), "ILP32"); - // assemble the long in memory order (not arithmetic order) - union { jlong j; jint i[2]; } u; - u.j = value; - slot_addr[0*stackElementSize()] = (intptr_t) u.i[0]; - slot_addr[1*stackElementSize()] = (intptr_t) u.i[1]; + Bytes::put_native_u8((address)slot_addr, value); } } static void get_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) { diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp index a8400339093..f93608f13c0 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2010 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 @@ -2692,219 +2692,141 @@ BytecodeInterpreter::BytecodeInterpreter(messages msg) { // The implementations are platform dependent. We have to worry about alignment // issues on some machines which can change on the same platform depending on // whether it is an LP64 machine also. -#ifdef ASSERT -void BytecodeInterpreter::verify_stack_tag(intptr_t *tos, frame::Tag tag, int offset) { - if (TaggedStackInterpreter) { - frame::Tag t = (frame::Tag)tos[Interpreter::expr_tag_index_at(-offset)]; - assert(t == tag, "stack tag mismatch"); - } -} -#endif // ASSERT - address BytecodeInterpreter::stack_slot(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagValue, offset)); return (address) tos[Interpreter::expr_index_at(-offset)]; } jint BytecodeInterpreter::stack_int(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagValue, offset)); return *((jint*) &tos[Interpreter::expr_index_at(-offset)]); } jfloat BytecodeInterpreter::stack_float(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagValue, offset)); return *((jfloat *) &tos[Interpreter::expr_index_at(-offset)]); } oop BytecodeInterpreter::stack_object(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagReference, offset)); return (oop)tos [Interpreter::expr_index_at(-offset)]; } jdouble BytecodeInterpreter::stack_double(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagValue, offset)); - debug_only(verify_stack_tag(tos, frame::TagValue, offset-1)); return ((VMJavaVal64*) &tos[Interpreter::expr_index_at(-offset)])->d; } jlong BytecodeInterpreter::stack_long(intptr_t *tos, int offset) { - debug_only(verify_stack_tag(tos, frame::TagValue, offset)); - debug_only(verify_stack_tag(tos, frame::TagValue, offset-1)); return ((VMJavaVal64 *) &tos[Interpreter::expr_index_at(-offset)])->l; } -void BytecodeInterpreter::tag_stack(intptr_t *tos, frame::Tag tag, int offset) { - if (TaggedStackInterpreter) - tos[Interpreter::expr_tag_index_at(-offset)] = (intptr_t)tag; -} - // only used for value types void BytecodeInterpreter::set_stack_slot(intptr_t *tos, address value, int offset) { - tag_stack(tos, frame::TagValue, offset); *((address *)&tos[Interpreter::expr_index_at(-offset)]) = value; } void BytecodeInterpreter::set_stack_int(intptr_t *tos, int value, int offset) { - tag_stack(tos, frame::TagValue, offset); *((jint *)&tos[Interpreter::expr_index_at(-offset)]) = value; } void BytecodeInterpreter::set_stack_float(intptr_t *tos, jfloat value, int offset) { - tag_stack(tos, frame::TagValue, offset); *((jfloat *)&tos[Interpreter::expr_index_at(-offset)]) = value; } void BytecodeInterpreter::set_stack_object(intptr_t *tos, oop value, int offset) { - tag_stack(tos, frame::TagReference, offset); *((oop *)&tos[Interpreter::expr_index_at(-offset)]) = value; } // needs to be platform dep for the 32 bit platforms. void BytecodeInterpreter::set_stack_double(intptr_t *tos, jdouble value, int offset) { - tag_stack(tos, frame::TagValue, offset); - tag_stack(tos, frame::TagValue, offset-1); ((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset)])->d = value; } void BytecodeInterpreter::set_stack_double_from_addr(intptr_t *tos, address addr, int offset) { - tag_stack(tos, frame::TagValue, offset); - tag_stack(tos, frame::TagValue, offset-1); (((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset)])->d = ((VMJavaVal64*)addr)->d); } void BytecodeInterpreter::set_stack_long(intptr_t *tos, jlong value, int offset) { - tag_stack(tos, frame::TagValue, offset); ((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset+1)])->l = 0xdeedbeeb; - tag_stack(tos, frame::TagValue, offset-1); ((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset)])->l = value; } void BytecodeInterpreter::set_stack_long_from_addr(intptr_t *tos, address addr, int offset) { - tag_stack(tos, frame::TagValue, offset); ((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset+1)])->l = 0xdeedbeeb; - tag_stack(tos, frame::TagValue, offset-1); ((VMJavaVal64*)&tos[Interpreter::expr_index_at(-offset)])->l = ((VMJavaVal64*)addr)->l; } // Locals -#ifdef ASSERT -void BytecodeInterpreter::verify_locals_tag(intptr_t *locals, frame::Tag tag, - int offset) { - if (TaggedStackInterpreter) { - frame::Tag t = (frame::Tag)locals[Interpreter::local_tag_index_at(-offset)]; - assert(t == tag, "locals tag mismatch"); - } -} -#endif // ASSERT address BytecodeInterpreter::locals_slot(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); return (address)locals[Interpreter::local_index_at(-offset)]; } jint BytecodeInterpreter::locals_int(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); return (jint)locals[Interpreter::local_index_at(-offset)]; } jfloat BytecodeInterpreter::locals_float(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); return (jfloat)locals[Interpreter::local_index_at(-offset)]; } oop BytecodeInterpreter::locals_object(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagReference, offset)); return (oop)locals[Interpreter::local_index_at(-offset)]; } jdouble BytecodeInterpreter::locals_double(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); return ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->d; } jlong BytecodeInterpreter::locals_long(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); - debug_only(verify_locals_tag(locals, frame::TagValue, offset+1)); return ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->l; } // Returns the address of locals value. address BytecodeInterpreter::locals_long_at(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); - debug_only(verify_locals_tag(locals, frame::TagValue, offset+1)); return ((address)&locals[Interpreter::local_index_at(-(offset+1))]); } address BytecodeInterpreter::locals_double_at(intptr_t* locals, int offset) { - debug_only(verify_locals_tag(locals, frame::TagValue, offset)); - debug_only(verify_locals_tag(locals, frame::TagValue, offset+1)); return ((address)&locals[Interpreter::local_index_at(-(offset+1))]); } -void BytecodeInterpreter::tag_locals(intptr_t *locals, frame::Tag tag, int offset) { - if (TaggedStackInterpreter) - locals[Interpreter::local_tag_index_at(-offset)] = (intptr_t)tag; -} - // Used for local value or returnAddress void BytecodeInterpreter::set_locals_slot(intptr_t *locals, address value, int offset) { - tag_locals(locals, frame::TagValue, offset); *((address*)&locals[Interpreter::local_index_at(-offset)]) = value; } void BytecodeInterpreter::set_locals_int(intptr_t *locals, jint value, int offset) { - tag_locals(locals, frame::TagValue, offset); *((jint *)&locals[Interpreter::local_index_at(-offset)]) = value; } void BytecodeInterpreter::set_locals_float(intptr_t *locals, jfloat value, int offset) { - tag_locals(locals, frame::TagValue, offset); *((jfloat *)&locals[Interpreter::local_index_at(-offset)]) = value; } void BytecodeInterpreter::set_locals_object(intptr_t *locals, oop value, int offset) { - tag_locals(locals, frame::TagReference, offset); *((oop *)&locals[Interpreter::local_index_at(-offset)]) = value; } void BytecodeInterpreter::set_locals_double(intptr_t *locals, jdouble value, int offset) { - tag_locals(locals, frame::TagValue, offset); - tag_locals(locals, frame::TagValue, offset+1); ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->d = value; } void BytecodeInterpreter::set_locals_long(intptr_t *locals, jlong value, int offset) { - tag_locals(locals, frame::TagValue, offset); - tag_locals(locals, frame::TagValue, offset+1); ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->l = value; } void BytecodeInterpreter::set_locals_double_from_addr(intptr_t *locals, address addr, int offset) { - tag_locals(locals, frame::TagValue, offset); - tag_locals(locals, frame::TagValue, offset+1); ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->d = ((VMJavaVal64*)addr)->d; } void BytecodeInterpreter::set_locals_long_from_addr(intptr_t *locals, address addr, int offset) { - tag_locals(locals, frame::TagValue, offset); - tag_locals(locals, frame::TagValue, offset+1); ((VMJavaVal64*)&locals[Interpreter::local_index_at(-(offset+1))])->l = ((VMJavaVal64*)addr)->l; } void BytecodeInterpreter::astore(intptr_t* tos, int stack_offset, intptr_t* locals, int locals_offset) { - // Copy tag from stack to locals. astore's operand can be returnAddress - // and may not be TagReference - if (TaggedStackInterpreter) { - frame::Tag t = (frame::Tag) tos[Interpreter::expr_tag_index_at(-stack_offset)]; - locals[Interpreter::local_tag_index_at(-locals_offset)] = (intptr_t)t; - } intptr_t value = tos[Interpreter::expr_index_at(-stack_offset)]; locals[Interpreter::local_index_at(-locals_offset)] = value; } @@ -2912,10 +2834,6 @@ void BytecodeInterpreter::astore(intptr_t* tos, int stack_offset, void BytecodeInterpreter::copy_stack_slot(intptr_t *tos, int from_offset, int to_offset) { - if (TaggedStackInterpreter) { - tos[Interpreter::expr_tag_index_at(-to_offset)] = - (intptr_t)tos[Interpreter::expr_tag_index_at(-from_offset)]; - } tos[Interpreter::expr_index_at(-to_offset)] = (intptr_t)tos[Interpreter::expr_index_at(-from_offset)]; } @@ -2964,16 +2882,9 @@ void BytecodeInterpreter::dup2_x2(intptr_t *tos) { void BytecodeInterpreter::swap(intptr_t *tos) { // swap top two elements intptr_t val = tos[Interpreter::expr_index_at(1)]; - frame::Tag t; - if (TaggedStackInterpreter) { - t = (frame::Tag) tos[Interpreter::expr_tag_index_at(1)]; - } // Copy -2 entry to -1 copy_stack_slot(tos, -2, -1); // Store saved -1 entry into -2 - if (TaggedStackInterpreter) { - tos[Interpreter::expr_tag_index_at(2)] = (intptr_t)t; - } tos[Interpreter::expr_index_at(2)] = val; } // -------------------------------------------------------------------------------- diff --git a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp index 78a6af5549e..84d4fd762f7 100644 --- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp @@ -1067,7 +1067,7 @@ IRT_ENTRY(void, InterpreterRuntime::post_field_modification(JavaThread *thread, jlong_accessor u; jint* newval = (jint*)value; u.words[0] = newval[0]; - u.words[1] = newval[Interpreter::stackElementWords()]; // skip if tag + u.words[1] = newval[Interpreter::stackElementWords]; // skip if tag fvalue.j = u.long_value; #endif // _LP64 @@ -1252,6 +1252,6 @@ IRT_LEAF(void, InterpreterRuntime::popframe_move_outgoing_args(JavaThread* threa ArgumentSizeComputer asc(invoke->signature()); int size_of_arguments = (asc.size() + (invoke->has_receiver() ? 1 : 0)); // receiver Copy::conjoint_bytes(src_address, dest_address, - size_of_arguments * Interpreter::stackElementSize()); + size_of_arguments * Interpreter::stackElementSize); IRT_END #endif diff --git a/hotspot/src/share/vm/oops/methodOop.cpp b/hotspot/src/share/vm/oops/methodOop.cpp index 07ef9a8b9a5..06825af6c9d 100644 --- a/hotspot/src/share/vm/oops/methodOop.cpp +++ b/hotspot/src/share/vm/oops/methodOop.cpp @@ -306,7 +306,7 @@ void methodOopDesc::cleanup_inline_caches() { int methodOopDesc::extra_stack_words() { // not an inline function, to avoid a header dependency on Interpreter - return extra_stack_entries() * Interpreter::stackElementSize(); + return extra_stack_entries() * Interpreter::stackElementSize; } diff --git a/hotspot/src/share/vm/prims/methodHandles.hpp b/hotspot/src/share/vm/prims/methodHandles.hpp index 7e31e08438a..fc810b9d64e 100644 --- a/hotspot/src/share/vm/prims/methodHandles.hpp +++ b/hotspot/src/share/vm/prims/methodHandles.hpp @@ -163,7 +163,7 @@ class MethodHandles: AllStatic { default: ShouldNotReachHere(); } // Return the size of the stack slots to move in bytes. - swap_bytes = swap_slots * Interpreter::stackElementSize(); + swap_bytes = swap_slots * Interpreter::stackElementSize; } static int get_ek_adapter_opt_spread_info(EntryKind ek) { @@ -219,7 +219,7 @@ class MethodHandles: AllStatic { // Offset in words that the interpreter stack pointer moves when an argument is pushed. // The stack_move value must always be a multiple of this. static int stack_move_unit() { - return frame::interpreter_frame_expression_stack_direction() * Interpreter::stackElementWords(); + return frame::interpreter_frame_expression_stack_direction() * Interpreter::stackElementWords; } enum { CONV_VMINFO_SIGN_FLAG = 0x80 }; diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 7984761451c..963b22df502 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -2867,12 +2867,6 @@ jint Arguments::parse(const JavaVMInitArgs* args) { } #endif // _LP64 - // MethodHandles code does not support TaggedStackInterpreter. - if (EnableMethodHandles && TaggedStackInterpreter) { - warning("TaggedStackInterpreter is not supported by MethodHandles code. Disabling TaggedStackInterpreter."); - TaggedStackInterpreter = false; - } - // Check the GC selections again. if (!check_gc_consistency()) { return JNI_EINVAL; @@ -2915,11 +2909,6 @@ jint Arguments::parse(const JavaVMInitArgs* args) { LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false)); #endif // CC_INTERP -#ifdef ZERO - // Clear flags not supported by Zero - FLAG_SET_DEFAULT(TaggedStackInterpreter, false); -#endif // ZERO - #ifdef COMPILER2 if (!UseBiasedLocking || EmitSync != 0) { UseOptoBiasInlining = false; diff --git a/hotspot/src/share/vm/runtime/frame.cpp b/hotspot/src/share/vm/runtime/frame.cpp index 30782f355c6..5292bd4bec6 100644 --- a/hotspot/src/share/vm/runtime/frame.cpp +++ b/hotspot/src/share/vm/runtime/frame.cpp @@ -468,42 +468,16 @@ intptr_t* frame::interpreter_frame_local_at(int index) const { return &((*interpreter_frame_locals_addr())[n]); } -frame::Tag frame::interpreter_frame_local_tag(int index) const { - const int n = Interpreter::local_tag_offset_in_bytes(index)/wordSize; - return (Tag)(*interpreter_frame_locals_addr()) [n]; -} - -void frame::interpreter_frame_set_local_tag(int index, Tag tag) const { - const int n = Interpreter::local_tag_offset_in_bytes(index)/wordSize; - (*interpreter_frame_locals_addr())[n] = (intptr_t)tag; -} - intptr_t* frame::interpreter_frame_expression_stack_at(jint offset) const { const int i = offset * interpreter_frame_expression_stack_direction(); - const int n = ((i * Interpreter::stackElementSize()) + - Interpreter::value_offset_in_bytes())/wordSize; + const int n = i * Interpreter::stackElementWords; return &(interpreter_frame_expression_stack()[n]); } -frame::Tag frame::interpreter_frame_expression_stack_tag(jint offset) const { - const int i = offset * interpreter_frame_expression_stack_direction(); - const int n = ((i * Interpreter::stackElementSize()) + - Interpreter::tag_offset_in_bytes())/wordSize; - return (Tag)(interpreter_frame_expression_stack()[n]); -} - -void frame::interpreter_frame_set_expression_stack_tag(jint offset, - Tag tag) const { - const int i = offset * interpreter_frame_expression_stack_direction(); - const int n = ((i * Interpreter::stackElementSize()) + - Interpreter::tag_offset_in_bytes())/wordSize; - interpreter_frame_expression_stack()[n] = (intptr_t)tag; -} - jint frame::interpreter_frame_expression_stack_size() const { // Number of elements on the interpreter expression stack // Callers should span by stackElementWords - int element_size = Interpreter::stackElementWords(); + int element_size = Interpreter::stackElementWords; if (frame::interpreter_frame_expression_stack_direction() < 0) { return (interpreter_frame_expression_stack() - interpreter_frame_tos_address() + 1)/element_size; @@ -585,20 +559,12 @@ void frame::interpreter_frame_print_on(outputStream* st) const { for (i = 0; i < interpreter_frame_method()->max_locals(); i++ ) { intptr_t x = *interpreter_frame_local_at(i); st->print(" - local [" INTPTR_FORMAT "]", x); - if (TaggedStackInterpreter) { - Tag x = interpreter_frame_local_tag(i); - st->print(" - local tag [" INTPTR_FORMAT "]", x); - } st->fill_to(23); st->print_cr("; #%d", i); } for (i = interpreter_frame_expression_stack_size() - 1; i >= 0; --i ) { intptr_t x = *interpreter_frame_expression_stack_at(i); st->print(" - stack [" INTPTR_FORMAT "]", x); - if (TaggedStackInterpreter) { - Tag x = interpreter_frame_expression_stack_tag(i); - st->print(" - stack tag [" INTPTR_FORMAT "]", x); - } st->fill_to(23); st->print_cr("; #%d", i); } @@ -950,103 +916,19 @@ void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool quer } } - if (TaggedStackInterpreter) { - // process locals & expression stack - InterpreterOopMap *mask = NULL; -#ifdef ASSERT - InterpreterOopMap oopmap_mask; - OopMapCache::compute_one_oop_map(m, bci, &oopmap_mask); - mask = &oopmap_mask; -#endif // ASSERT - oops_interpreted_locals_do(f, max_locals, mask); - oops_interpreted_expressions_do(f, signature, has_receiver, - m->max_stack(), - max_locals, mask); + InterpreterFrameClosure blk(this, max_locals, m->max_stack(), f); + + // process locals & expression stack + InterpreterOopMap mask; + if (query_oop_map_cache) { + m->mask_for(bci, &mask); } else { - InterpreterFrameClosure blk(this, max_locals, m->max_stack(), f); - - // process locals & expression stack - InterpreterOopMap mask; - if (query_oop_map_cache) { - m->mask_for(bci, &mask); - } else { - OopMapCache::compute_one_oop_map(m, bci, &mask); - } - mask.iterate_oop(&blk); + OopMapCache::compute_one_oop_map(m, bci, &mask); } + mask.iterate_oop(&blk); } -void frame::oops_interpreted_locals_do(OopClosure *f, - int max_locals, - InterpreterOopMap *mask) { - // Process locals then interpreter expression stack - for (int i = 0; i < max_locals; i++ ) { - Tag tag = interpreter_frame_local_tag(i); - if (tag == TagReference) { - oop* addr = (oop*) interpreter_frame_local_at(i); - assert((intptr_t*)addr >= sp(), "must be inside the frame"); - f->do_oop(addr); -#ifdef ASSERT - } else { - assert(tag == TagValue, "bad tag value for locals"); - oop* p = (oop*) interpreter_frame_local_at(i); - // Not always true - too bad. May have dead oops without tags in locals. - // assert(*p == NULL || !(*p)->is_oop(), "oop not tagged on interpreter locals"); - assert(*p == NULL || !mask->is_oop(i), "local oop map mismatch"); -#endif // ASSERT - } - } -} - -void frame::oops_interpreted_expressions_do(OopClosure *f, - symbolHandle signature, - bool has_receiver, - int max_stack, - int max_locals, - InterpreterOopMap *mask) { - // There is no stack no matter what the esp is pointing to (native methods - // might look like expression stack is nonempty). - if (max_stack == 0) return; - - // Point the top of the expression stack above arguments to a call so - // arguments aren't gc'ed as both stack values for callee and callee - // arguments in callee's locals. - int args_size = 0; - if (!signature.is_null()) { - args_size = ArgumentSizeComputer(signature).size() + (has_receiver ? 1 : 0); - } - - intptr_t *tos_addr = interpreter_frame_tos_at(args_size); - assert(args_size != 0 || tos_addr == interpreter_frame_tos_address(), "these are same"); - intptr_t *frst_expr = interpreter_frame_expression_stack_at(0); - // In case of exceptions, the expression stack is invalid and the esp - // will be reset to express this condition. Therefore, we call f only - // if addr is 'inside' the stack (i.e., addr >= esp for Intel). - bool in_stack; - if (interpreter_frame_expression_stack_direction() > 0) { - in_stack = (intptr_t*)frst_expr <= tos_addr; - } else { - in_stack = (intptr_t*)frst_expr >= tos_addr; - } - if (!in_stack) return; - - jint stack_size = interpreter_frame_expression_stack_size() - args_size; - for (int j = 0; j < stack_size; j++) { - Tag tag = interpreter_frame_expression_stack_tag(j); - if (tag == TagReference) { - oop *addr = (oop*) interpreter_frame_expression_stack_at(j); - f->do_oop(addr); -#ifdef ASSERT - } else { - assert(tag == TagValue, "bad tag value for stack element"); - oop *p = (oop*) interpreter_frame_expression_stack_at((j)); - assert(*p == NULL || !mask->is_oop(j+max_locals), "stack oop map mismatch"); -#endif // ASSERT - } - } -} - void frame::oops_interpreted_arguments_do(symbolHandle signature, bool has_receiver, OopClosure* f) { InterpretedArgumentOopFinder finder(signature, has_receiver, this, f); finder.oops_do(); @@ -1306,29 +1188,18 @@ void frame::zap_dead_interpreted_locals(JavaThread *thread, const RegisterMap* m int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals(); - if (TaggedStackInterpreter) { - InterpreterOopMap *mask = NULL; -#ifdef ASSERT - InterpreterOopMap oopmap_mask; - methodHandle method(thread, m); - OopMapCache::compute_one_oop_map(method, bci, &oopmap_mask); - mask = &oopmap_mask; -#endif // ASSERT - oops_interpreted_locals_do(&_check_oop, max_locals, mask); - } else { - // process dynamic part - InterpreterFrameClosure value_blk(this, max_locals, m->max_stack(), - &_check_value); - InterpreterFrameClosure oop_blk(this, max_locals, m->max_stack(), - &_check_oop ); - InterpreterFrameClosure dead_blk(this, max_locals, m->max_stack(), - &_zap_dead ); + // process dynamic part + InterpreterFrameClosure value_blk(this, max_locals, m->max_stack(), + &_check_value); + InterpreterFrameClosure oop_blk(this, max_locals, m->max_stack(), + &_check_oop ); + InterpreterFrameClosure dead_blk(this, max_locals, m->max_stack(), + &_zap_dead ); - // get frame map - InterpreterOopMap mask; - m->mask_for(bci, &mask); - mask.iterate_all( &oop_blk, &value_blk, &dead_blk); - } + // get frame map + InterpreterOopMap mask; + m->mask_for(bci, &mask); + mask.iterate_all( &oop_blk, &value_blk, &dead_blk); } diff --git a/hotspot/src/share/vm/runtime/frame.hpp b/hotspot/src/share/vm/runtime/frame.hpp index 92df6b353d5..ab8084674fb 100644 --- a/hotspot/src/share/vm/runtime/frame.hpp +++ b/hotspot/src/share/vm/runtime/frame.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -191,26 +191,10 @@ class frame VALUE_OBJ_CLASS_SPEC { intptr_t* interpreter_frame_mdx_addr() const; public: - // Tags for TaggedStackInterpreter - enum Tag { - TagValue = 0, // Important: must be zero to use G0 on sparc. - TagReference = 0x555, // Reference type - is an oop that needs gc. - TagCategory2 = 0x666 // Only used internally by interpreter - // and not written to the java stack. - // The values above are chosen so that misuse causes a crash - // with a recognizable value. - }; - - static Tag tag_for_basic_type(BasicType typ) { - return (typ == T_OBJECT ? TagReference : TagValue); - } - // Locals // The _at version returns a pointer because the address is used for GC. intptr_t* interpreter_frame_local_at(int index) const; - Tag interpreter_frame_local_tag(int index) const; - void interpreter_frame_set_local_tag(int index, Tag tag) const; void interpreter_frame_set_locals(intptr_t* locs); @@ -260,8 +244,6 @@ class frame VALUE_OBJ_CLASS_SPEC { // The _at version returns a pointer because the address is used for GC. intptr_t* interpreter_frame_expression_stack_at(jint offset) const; - Tag interpreter_frame_expression_stack_tag(jint offset) const; - void interpreter_frame_set_expression_stack_tag(jint offset, Tag tag) const; // top of expression stack intptr_t* interpreter_frame_tos_at(jint offset) const; @@ -375,12 +357,6 @@ class frame VALUE_OBJ_CLASS_SPEC { void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true); private: - void oops_interpreted_locals_do(OopClosure *f, - int max_locals, - InterpreterOopMap *mask); - void oops_interpreted_expressions_do(OopClosure *f, symbolHandle signature, - bool has_receiver, int max_stack, int max_locals, - InterpreterOopMap *mask); void oops_interpreted_arguments_do(symbolHandle signature, bool has_receiver, OopClosure* f); // Iteration of oops diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index 861d89cb699..fd345f91393 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -3497,9 +3497,6 @@ class CommandLineFlags { develop(bool, TraceInvokeDynamic, false, \ "trace internal invoke dynamic operations") \ \ - product(bool, TaggedStackInterpreter, false, \ - "Insert tags in interpreter execution stack for oopmap generaion")\ - \ diagnostic(bool, PauseAtStartup, false, \ "Causes the VM to pause at startup time and wait for the pause " \ "file to be removed (default: ./vm.paused.)") \ diff --git a/hotspot/src/share/vm/runtime/javaCalls.cpp b/hotspot/src/share/vm/runtime/javaCalls.cpp index a64fdb07a89..0abe9416973 100644 --- a/hotspot/src/share/vm/runtime/javaCalls.cpp +++ b/hotspot/src/share/vm/runtime/javaCalls.cpp @@ -1,5 +1,5 @@ /* - * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2010 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 @@ -417,17 +417,9 @@ intptr_t* JavaCallArguments::parameters() { // Handle conversion _value[i] = (intptr_t)Handle::raw_resolve((oop *)_value[i]); } - // The parameters are moved to the parameters array to include the tags. - if (TaggedStackInterpreter) { - // Tags are interspersed with arguments. Tags are first. - int tagged_index = i*2; - _parameters[tagged_index] = _is_oop[i] ? frame::TagReference : - frame::TagValue; - _parameters[tagged_index+1] = _value[i]; - } } // Return argument vector - return TaggedStackInterpreter ? _parameters : _value; + return _value; } diff --git a/hotspot/src/share/vm/runtime/javaCalls.hpp b/hotspot/src/share/vm/runtime/javaCalls.hpp index 345206f02c5..2921d59707f 100644 --- a/hotspot/src/share/vm/runtime/javaCalls.hpp +++ b/hotspot/src/share/vm/runtime/javaCalls.hpp @@ -66,11 +66,9 @@ class JavaCallArguments : public StackObj { }; intptr_t _value_buffer [_default_size + 1]; - intptr_t _parameter_buffer [_default_size*2 + 1]; bool _is_oop_buffer[_default_size + 1]; intptr_t* _value; - intptr_t* _parameters; bool* _is_oop; int _size; int _max_size; @@ -81,7 +79,6 @@ class JavaCallArguments : public StackObj { _value = &_value_buffer[1]; _is_oop = &_is_oop_buffer[1]; - _parameters = &_parameter_buffer[0]; _max_size = _default_size; _size = 0; _start_at_zero = false; @@ -99,11 +96,10 @@ class JavaCallArguments : public StackObj { if (max_size > _default_size) { _value = NEW_RESOURCE_ARRAY(intptr_t, max_size + 1); _is_oop = NEW_RESOURCE_ARRAY(bool, max_size + 1); - if (TaggedStackInterpreter) { - _parameters = NEW_RESOURCE_ARRAY(intptr_t, max_size*2 + 1); - } + // Reserve room for potential receiver in value and is_oop _value++; _is_oop++; + _max_size = max_size; _size = 0; _start_at_zero = false; diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.cpp b/hotspot/src/share/vm/runtime/sharedRuntime.cpp index 06af4af32cd..1b164ab6f5b 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp @@ -1842,14 +1842,11 @@ class AdapterFingerPrint : public CHeapObj { case T_OBJECT: case T_ARRAY: - if (!TaggedStackInterpreter) { #ifdef _LP64 - return T_LONG; + return T_LONG; #else - return T_INT; + return T_INT; #endif - } - return T_OBJECT; case T_INT: case T_LONG: @@ -2595,17 +2592,9 @@ JRT_LEAF(intptr_t*, SharedRuntime::OSR_migration_begin( JavaThread *thread) ) // Copy the locals. Order is preserved so that loading of longs works. // Since there's no GC I can copy the oops blindly. assert( sizeof(HeapWord)==sizeof(intptr_t), "fix this code"); - if (TaggedStackInterpreter) { - for (int i = 0; i < max_locals; i++) { - // copy only each local separately to the buffer avoiding the tag - buf[i] = *fr.interpreter_frame_local_at(max_locals-i-1); - } - } else { - Copy::disjoint_words( - (HeapWord*)fr.interpreter_frame_local_at(max_locals-1), + Copy::disjoint_words((HeapWord*)fr.interpreter_frame_local_at(max_locals-1), (HeapWord*)&buf[0], max_locals); - } // Inflate locks. Copy the displaced headers. Be careful, there can be holes. int i = max_locals; diff --git a/hotspot/src/share/vm/runtime/vframe.cpp b/hotspot/src/share/vm/runtime/vframe.cpp index 1b5a7f8a0c1..a4d25b20f09 100644 --- a/hotspot/src/share/vm/runtime/vframe.cpp +++ b/hotspot/src/share/vm/runtime/vframe.cpp @@ -244,51 +244,30 @@ StackValueCollection* interpretedVFrame::locals() const { StackValueCollection* result = new StackValueCollection(length); // Get oopmap describing oops and int for current bci - if (TaggedStackInterpreter) { - for(int i=0; i < length; i++) { - // Find stack location - intptr_t *addr = locals_addr_at(i); - - // Depending on oop/int put it in the right package - StackValue *sv; - frame::Tag tag = fr().interpreter_frame_local_tag(i); - if (tag == frame::TagReference) { - // oop value - Handle h(*(oop *)addr); - sv = new StackValue(h); - } else { - // integer - sv = new StackValue(*addr); - } - assert(sv != NULL, "sanity check"); - result->add(sv); - } + InterpreterOopMap oop_mask; + if (TraceDeoptimization && Verbose) { + methodHandle m_h(thread(), method()); + OopMapCache::compute_one_oop_map(m_h, bci(), &oop_mask); } else { - InterpreterOopMap oop_mask; - if (TraceDeoptimization && Verbose) { - methodHandle m_h(thread(), method()); - OopMapCache::compute_one_oop_map(m_h, bci(), &oop_mask); - } else { - method()->mask_for(bci(), &oop_mask); - } - // handle locals - for(int i=0; i < length; i++) { - // Find stack location - intptr_t *addr = locals_addr_at(i); + method()->mask_for(bci(), &oop_mask); + } + // handle locals + for(int i=0; i < length; i++) { + // Find stack location + intptr_t *addr = locals_addr_at(i); - // Depending on oop/int put it in the right package - StackValue *sv; - if (oop_mask.is_oop(i)) { - // oop value - Handle h(*(oop *)addr); - sv = new StackValue(h); - } else { - // integer - sv = new StackValue(*addr); - } - assert(sv != NULL, "sanity check"); - result->add(sv); + // Depending on oop/int put it in the right package + StackValue *sv; + if (oop_mask.is_oop(i)) { + // oop value + Handle h(*(oop *)addr); + sv = new StackValue(h); + } else { + // integer + sv = new StackValue(*addr); } + assert(sv != NULL, "sanity check"); + result->add(sv); } return result; } @@ -331,53 +310,31 @@ StackValueCollection* interpretedVFrame::expressions() const { int nof_locals = method()->max_locals(); StackValueCollection* result = new StackValueCollection(length); - if (TaggedStackInterpreter) { - // handle expressions - for(int i=0; i < length; i++) { - // Find stack location - intptr_t *addr = fr().interpreter_frame_expression_stack_at(i); - frame::Tag tag = fr().interpreter_frame_expression_stack_tag(i); - - // Depending on oop/int put it in the right package - StackValue *sv; - if (tag == frame::TagReference) { - // oop value - Handle h(*(oop *)addr); - sv = new StackValue(h); - } else { - // otherwise - sv = new StackValue(*addr); - } - assert(sv != NULL, "sanity check"); - result->add(sv); - } + InterpreterOopMap oop_mask; + // Get oopmap describing oops and int for current bci + if (TraceDeoptimization && Verbose) { + methodHandle m_h(method()); + OopMapCache::compute_one_oop_map(m_h, bci(), &oop_mask); } else { - InterpreterOopMap oop_mask; - // Get oopmap describing oops and int for current bci - if (TraceDeoptimization && Verbose) { - methodHandle m_h(method()); - OopMapCache::compute_one_oop_map(m_h, bci(), &oop_mask); - } else { - method()->mask_for(bci(), &oop_mask); - } - // handle expressions - for(int i=0; i < length; i++) { - // Find stack location - intptr_t *addr = fr().interpreter_frame_expression_stack_at(i); + method()->mask_for(bci(), &oop_mask); + } + // handle expressions + for(int i=0; i < length; i++) { + // Find stack location + intptr_t *addr = fr().interpreter_frame_expression_stack_at(i); - // Depending on oop/int put it in the right package - StackValue *sv; - if (oop_mask.is_oop(i + nof_locals)) { - // oop value - Handle h(*(oop *)addr); - sv = new StackValue(h); - } else { - // integer - sv = new StackValue(*addr); - } - assert(sv != NULL, "sanity check"); - result->add(sv); + // Depending on oop/int put it in the right package + StackValue *sv; + if (oop_mask.is_oop(i + nof_locals)) { + // oop value + Handle h(*(oop *)addr); + sv = new StackValue(h); + } else { + // integer + sv = new StackValue(*addr); } + assert(sv != NULL, "sanity check"); + result->add(sv); } return result; } diff --git a/hotspot/src/share/vm/runtime/vframeArray.cpp b/hotspot/src/share/vm/runtime/vframeArray.cpp index 2fb27dfd920..f76b9e2c608 100644 --- a/hotspot/src/share/vm/runtime/vframeArray.cpp +++ b/hotspot/src/share/vm/runtime/vframeArray.cpp @@ -309,11 +309,6 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters, default: ShouldNotReachHere(); } - if (TaggedStackInterpreter) { - // Write tag to the stack - iframe()->interpreter_frame_set_expression_stack_tag(i, - frame::tag_for_basic_type(value->type())); - } } @@ -335,11 +330,6 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters, default: ShouldNotReachHere(); } - if (TaggedStackInterpreter) { - // Write tag to stack - iframe()->interpreter_frame_set_local_tag(i, - frame::tag_for_basic_type(value->type())); - } } if (is_top_frame && JvmtiExport::can_pop_frame() && thread->popframe_forcing_deopt_reexecution()) { @@ -354,9 +344,8 @@ void vframeArrayElement::unpack_on_stack(int callee_parameters, void* saved_args = thread->popframe_preserved_args(); assert(saved_args != NULL, "must have been saved by interpreter"); #ifdef ASSERT - int stack_words = Interpreter::stackElementWords(); assert(popframe_preserved_args_size_in_words <= - iframe()->interpreter_frame_expression_stack_size()*stack_words, + iframe()->interpreter_frame_expression_stack_size()*Interpreter::stackElementWords, "expression stack size should have been extended"); #endif // ASSERT int top_element = iframe()->interpreter_frame_expression_stack_size()-1; From 4eb75c2df3fba71e551872578249fc65d5872ebc Mon Sep 17 00:00:00 2001 From: John R Rose Date: Sat, 1 May 2010 02:42:18 -0700 Subject: [PATCH 49/64] 6939134: JSR 292 adjustments to method handle invocation Split MethodHandle.invoke into invokeExact and invokeGeneric; also clean up JVM-to-Java interfaces Reviewed-by: twisti --- .../src/cpu/sparc/vm/methodHandles_sparc.cpp | 15 +++ hotspot/src/cpu/x86/vm/methodHandles_x86.cpp | 16 +++ hotspot/src/share/vm/c1/c1_LIR.hpp | 2 +- hotspot/src/share/vm/ci/ciEnv.cpp | 29 +++-- hotspot/src/share/vm/ci/ciObjectFactory.cpp | 5 +- hotspot/src/share/vm/ci/ciSymbol.cpp | 12 +- hotspot/src/share/vm/ci/ciSymbol.hpp | 10 +- .../share/vm/classfile/classFileParser.cpp | 3 +- hotspot/src/share/vm/classfile/dictionary.cpp | 15 +-- hotspot/src/share/vm/classfile/dictionary.hpp | 20 ++- .../src/share/vm/classfile/javaClasses.cpp | 30 +++-- .../src/share/vm/classfile/javaClasses.hpp | 17 +-- .../share/vm/classfile/systemDictionary.cpp | 117 ++++++----------- .../share/vm/classfile/systemDictionary.hpp | 31 ++--- hotspot/src/share/vm/classfile/vmSymbols.hpp | 30 +++-- hotspot/src/share/vm/includeDB_core | 3 + .../vm/interpreter/interpreterRuntime.cpp | 52 ++++---- .../src/share/vm/interpreter/linkResolver.cpp | 21 +++- hotspot/src/share/vm/memory/universe.cpp | 2 +- hotspot/src/share/vm/oops/cpCacheOop.cpp | 13 +- hotspot/src/share/vm/oops/cpCacheOop.hpp | 2 +- hotspot/src/share/vm/oops/methodKlass.cpp | 8 +- hotspot/src/share/vm/oops/methodOop.cpp | 43 +++++-- hotspot/src/share/vm/oops/methodOop.hpp | 7 +- hotspot/src/share/vm/opto/bytecodeInfo.cpp | 5 - .../src/share/vm/prims/methodHandleWalk.cpp | 5 +- hotspot/src/share/vm/prims/methodHandles.cpp | 119 ++++++++++++++---- hotspot/src/share/vm/prims/methodHandles.hpp | 12 +- .../src/share/vm/runtime/sharedRuntime.cpp | 2 +- 29 files changed, 413 insertions(+), 233 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp index 3eeb885e497..2c26318b135 100644 --- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp @@ -290,6 +290,21 @@ void trace_method_handle_stub(const char* adaptername, } #endif // PRODUCT +// which conversion op types are implemented here? +int MethodHandles::adapter_conversion_ops_supported_mask() { + return ((1<holder()->name() == ciSymbol::java_dyn_MethodHandle() && - method()->name() == ciSymbol::invoke_name()); + methodOopDesc::is_method_handle_invoke_name(method()->name()->sid())); } intptr_t vtable_offset() const { diff --git a/hotspot/src/share/vm/ci/ciEnv.cpp b/hotspot/src/share/vm/ci/ciEnv.cpp index b947e50ab8f..7698c63a334 100644 --- a/hotspot/src/share/vm/ci/ciEnv.cpp +++ b/hotspot/src/share/vm/ci/ciEnv.cpp @@ -731,26 +731,29 @@ ciMethod* ciEnv::get_method_by_index_impl(constantPoolHandle cpool, // ciEnv::get_fake_invokedynamic_method_impl ciMethod* ciEnv::get_fake_invokedynamic_method_impl(constantPoolHandle cpool, int index, Bytecodes::Code bc) { + // Compare the following logic with InterpreterRuntime::resolve_invokedynamic. assert(bc == Bytecodes::_invokedynamic, "must be invokedynamic"); - // Get the CallSite from the constant pool cache. - ConstantPoolCacheEntry* cpc_entry = cpool->cache()->secondary_entry_at(index); - assert(cpc_entry != NULL && cpc_entry->is_secondary_entry(), "sanity"); - Handle call_site = cpc_entry->f1(); + bool is_resolved = cpool->cache()->main_entry_at(index)->is_resolved(bc); + if (is_resolved && (oop) cpool->cache()->secondary_entry_at(index)->f1() == NULL) + // FIXME: code generation could allow for null (unlinked) call site + is_resolved = false; - // Call site might not be linked yet. - if (call_site.is_null()) { + // Call site might not be resolved yet. We could create a real invoker method from the + // compiler, but it is simpler to stop the code path here with an unlinked method. + if (!is_resolved) { ciInstanceKlass* mh_klass = get_object(SystemDictionary::MethodHandle_klass())->as_instance_klass(); - ciSymbol* sig_sym = get_object(cpool->signature_ref_at(index))->as_symbol(); - return get_unloaded_method(mh_klass, ciSymbol::invoke_name(), sig_sym); + ciSymbol* sig_sym = get_object(cpool->signature_ref_at(index))->as_symbol(); + return get_unloaded_method(mh_klass, ciSymbol::invokeExact_name(), sig_sym); } - // Get the methodOop from the CallSite. - methodOop method_oop = (methodOop) java_dyn_CallSite::vmmethod(call_site()); - assert(method_oop != NULL, "sanity"); - assert(method_oop->is_method_handle_invoke(), "consistent"); + // Get the invoker methodOop from the constant pool. + intptr_t f2_value = cpool->cache()->main_entry_at(index)->f2(); + methodOop signature_invoker = methodOop(f2_value); + assert(signature_invoker != NULL && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(), + "correct result from LinkResolver::resolve_invokedynamic"); - return get_object(method_oop)->as_method(); + return get_object(signature_invoker)->as_method(); } diff --git a/hotspot/src/share/vm/ci/ciObjectFactory.cpp b/hotspot/src/share/vm/ci/ciObjectFactory.cpp index cfbdf1659eb..79c13177e08 100644 --- a/hotspot/src/share/vm/ci/ciObjectFactory.cpp +++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp @@ -103,7 +103,7 @@ void ciObjectFactory::init_shared_objects() { for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { symbolHandle sym_handle = vmSymbolHandles::symbol_handle_at((vmSymbols::SID) i); assert(vmSymbols::find_sid(sym_handle()) == i, "1-1 mapping"); - ciSymbol* sym = new (_arena) ciSymbol(sym_handle); + ciSymbol* sym = new (_arena) ciSymbol(sym_handle, (vmSymbols::SID) i); init_ident_of(sym); _shared_ci_symbols[i] = sym; } @@ -273,7 +273,8 @@ ciObject* ciObjectFactory::create_new_object(oop o) { if (o->is_symbol()) { symbolHandle h_o(THREAD, (symbolOop)o); - return new (arena()) ciSymbol(h_o); + assert(vmSymbols::find_sid(h_o()) == vmSymbols::NO_SID, ""); + return new (arena()) ciSymbol(h_o, vmSymbols::NO_SID); } else if (o->is_klass()) { KlassHandle h_k(THREAD, (klassOop)o); Klass* k = ((klassOop)o)->klass_part(); diff --git a/hotspot/src/share/vm/ci/ciSymbol.cpp b/hotspot/src/share/vm/ci/ciSymbol.cpp index e534f04c3de..319f3327a11 100644 --- a/hotspot/src/share/vm/ci/ciSymbol.cpp +++ b/hotspot/src/share/vm/ci/ciSymbol.cpp @@ -29,7 +29,17 @@ // ciSymbol::ciSymbol // // Preallocated handle variant. Used with handles from vmSymboHandles. -ciSymbol::ciSymbol(symbolHandle h_s) : ciObject(h_s) { +ciSymbol::ciSymbol(symbolHandle h_s, vmSymbols::SID sid) + : ciObject(h_s), _sid(sid) +{ + assert(sid_ok(), "must be in vmSymbols"); +} + +// Normal case for non-famous symbols. +ciSymbol::ciSymbol(symbolOop s) + : ciObject(s), _sid(vmSymbols::NO_SID) +{ + assert(sid_ok(), "must not be in vmSymbols"); } // ciSymbol diff --git a/hotspot/src/share/vm/ci/ciSymbol.hpp b/hotspot/src/share/vm/ci/ciSymbol.hpp index abb3088edbf..db5cdc823fd 100644 --- a/hotspot/src/share/vm/ci/ciSymbol.hpp +++ b/hotspot/src/share/vm/ci/ciSymbol.hpp @@ -36,8 +36,11 @@ class ciSymbol : public ciObject { friend class ciObjArrayKlass; private: - ciSymbol(symbolOop s) : ciObject(s) {} - ciSymbol(symbolHandle s); // for use with vmSymbolHandles + const vmSymbols::SID _sid; + DEBUG_ONLY( bool sid_ok() { return vmSymbols::find_sid(get_symbolOop()) == _sid; } ) + + ciSymbol(symbolOop s); // normal case, for symbols not mentioned in vmSymbols + ciSymbol(symbolHandle s, vmSymbols::SID sid); // for use with vmSymbolHandles symbolOop get_symbolOop() const { return (symbolOop)get_oop(); } @@ -52,6 +55,9 @@ private: static ciSymbol* make_impl(const char* s); public: + // The enumeration ID from vmSymbols, or vmSymbols::NO_SID if none. + vmSymbols::SID sid() const { return _sid; } + // The text of the symbol as a null-terminated utf8 string. const char* as_utf8(); int utf8_length(); diff --git a/hotspot/src/share/vm/classfile/classFileParser.cpp b/hotspot/src/share/vm/classfile/classFileParser.cpp index 23ec4746bcc..05917d1f1b8 100644 --- a/hotspot/src/share/vm/classfile/classFileParser.cpp +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp @@ -1837,7 +1837,8 @@ methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interf _has_vanilla_constructor = true; } - if (EnableMethodHandles && m->is_method_handle_invoke()) { + if (EnableMethodHandles && (m->is_method_handle_invoke() || + m->is_method_handle_adapter())) { THROW_MSG_(vmSymbols::java_lang_VirtualMachineError(), "Method handle invokers must be defined internally to the VM", nullHandle); } diff --git a/hotspot/src/share/vm/classfile/dictionary.cpp b/hotspot/src/share/vm/classfile/dictionary.cpp index 5bf9132f4ce..d879a2c8ba4 100644 --- a/hotspot/src/share/vm/classfile/dictionary.cpp +++ b/hotspot/src/share/vm/classfile/dictionary.cpp @@ -561,10 +561,11 @@ SymbolPropertyTable::SymbolPropertyTable(int table_size, HashtableBucket* t, SymbolPropertyEntry* SymbolPropertyTable::find_entry(int index, unsigned int hash, - symbolHandle sym) { - assert(index == index_for(sym), "incorrect index?"); + symbolHandle sym, + intptr_t sym_mode) { + assert(index == index_for(sym, sym_mode), "incorrect index?"); for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) { - if (p->hash() == hash && p->symbol() == sym()) { + if (p->hash() == hash && p->symbol() == sym() && p->symbol_mode() == sym_mode) { return p; } } @@ -573,12 +574,12 @@ SymbolPropertyEntry* SymbolPropertyTable::find_entry(int index, unsigned int has SymbolPropertyEntry* SymbolPropertyTable::add_entry(int index, unsigned int hash, - symbolHandle sym) { + symbolHandle sym, intptr_t sym_mode) { assert_locked_or_safepoint(SystemDictionary_lock); - assert(index == index_for(sym), "incorrect index?"); - assert(find_entry(index, hash, sym) == NULL, "no double entry"); + assert(index == index_for(sym, sym_mode), "incorrect index?"); + assert(find_entry(index, hash, sym, sym_mode) == NULL, "no double entry"); - SymbolPropertyEntry* p = new_entry(hash, sym()); + SymbolPropertyEntry* p = new_entry(hash, sym(), sym_mode); Hashtable::add_entry(index, p); return p; } diff --git a/hotspot/src/share/vm/classfile/dictionary.hpp b/hotspot/src/share/vm/classfile/dictionary.hpp index 4228b17cc25..e8f2bb563c7 100644 --- a/hotspot/src/share/vm/classfile/dictionary.hpp +++ b/hotspot/src/share/vm/classfile/dictionary.hpp @@ -223,12 +223,16 @@ class DictionaryEntry : public HashtableEntry { class SymbolPropertyEntry : public HashtableEntry { friend class VMStructs; private: + intptr_t _symbol_mode; // secondary key oop _property_oop; address _property_data; public: symbolOop symbol() const { return (symbolOop) literal(); } + intptr_t symbol_mode() const { return _symbol_mode; } + void set_symbol_mode(intptr_t m) { _symbol_mode = m; } + oop property_oop() const { return _property_oop; } void set_property_oop(oop p) { _property_oop = p; } @@ -248,6 +252,7 @@ class SymbolPropertyEntry : public HashtableEntry { void print_on(outputStream* st) const { symbol()->print_value_on(st); + st->print("/mode="INTX_FORMAT, symbol_mode()); st->print(" -> "); bool printed = false; if (property_oop() != NULL) { @@ -285,8 +290,9 @@ private: ShouldNotReachHere(); } - SymbolPropertyEntry* new_entry(unsigned int hash, symbolOop symbol) { + SymbolPropertyEntry* new_entry(unsigned int hash, symbolOop symbol, intptr_t symbol_mode) { SymbolPropertyEntry* entry = (SymbolPropertyEntry*) Hashtable::new_entry(hash, symbol); + entry->set_symbol_mode(symbol_mode); entry->set_property_oop(NULL); entry->set_property_data(NULL); return entry; @@ -300,16 +306,20 @@ public: Hashtable::free_entry(entry); } - unsigned int compute_hash(symbolHandle sym) { + unsigned int compute_hash(symbolHandle sym, intptr_t symbol_mode) { // Use the regular identity_hash. - return Hashtable::compute_hash(sym); + return Hashtable::compute_hash(sym) ^ symbol_mode; + } + + int index_for(symbolHandle name, intptr_t symbol_mode) { + return hash_to_index(compute_hash(name, symbol_mode)); } // need not be locked; no state change - SymbolPropertyEntry* find_entry(int index, unsigned int hash, symbolHandle name); + SymbolPropertyEntry* find_entry(int index, unsigned int hash, symbolHandle name, intptr_t name_mode); // must be done under SystemDictionary_lock - SymbolPropertyEntry* add_entry(int index, unsigned int hash, symbolHandle name); + SymbolPropertyEntry* add_entry(int index, unsigned int hash, symbolHandle name, intptr_t name_mode); // GC support void oops_do(OopClosure* f); diff --git a/hotspot/src/share/vm/classfile/javaClasses.cpp b/hotspot/src/share/vm/classfile/javaClasses.cpp index 730f1c7abc8..26008cd6e9c 100644 --- a/hotspot/src/share/vm/classfile/javaClasses.cpp +++ b/hotspot/src/share/vm/classfile/javaClasses.cpp @@ -2446,24 +2446,20 @@ oop java_dyn_MethodTypeForm::erasedType(oop mtform) { // Support for java_dyn_CallSite -int java_dyn_CallSite::_type_offset; int java_dyn_CallSite::_target_offset; -int java_dyn_CallSite::_vmmethod_offset; +int java_dyn_CallSite::_caller_method_offset; +int java_dyn_CallSite::_caller_bci_offset; void java_dyn_CallSite::compute_offsets() { if (!EnableInvokeDynamic) return; klassOop k = SystemDictionary::CallSite_klass(); if (k != NULL) { - compute_offset(_type_offset, k, vmSymbols::type_name(), vmSymbols::java_dyn_MethodType_signature(), true); - compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature(), true); - compute_offset(_vmmethod_offset, k, vmSymbols::vmmethod_name(), vmSymbols::object_signature(), true); + compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_dyn_MethodHandle_signature()); + compute_offset(_caller_method_offset, k, vmSymbols::vmmethod_name(), vmSymbols::sun_dyn_MemberName_signature()); + compute_offset(_caller_bci_offset, k, vmSymbols::vmindex_name(), vmSymbols::int_signature()); } } -oop java_dyn_CallSite::type(oop site) { - return site->obj_field(_type_offset); -} - oop java_dyn_CallSite::target(oop site) { return site->obj_field(_target_offset); } @@ -2472,12 +2468,20 @@ void java_dyn_CallSite::set_target(oop site, oop target) { site->obj_field_put(_target_offset, target); } -oop java_dyn_CallSite::vmmethod(oop site) { - return site->obj_field(_vmmethod_offset); +oop java_dyn_CallSite::caller_method(oop site) { + return site->obj_field(_caller_method_offset); } -void java_dyn_CallSite::set_vmmethod(oop site, oop ref) { - site->obj_field_put(_vmmethod_offset, ref); +void java_dyn_CallSite::set_caller_method(oop site, oop ref) { + site->obj_field_put(_caller_method_offset, ref); +} + +jint java_dyn_CallSite::caller_bci(oop site) { + return site->int_field(_caller_bci_offset); +} + +void java_dyn_CallSite::set_caller_bci(oop site, jint bci) { + site->int_field_put(_caller_bci_offset, bci); } diff --git a/hotspot/src/share/vm/classfile/javaClasses.hpp b/hotspot/src/share/vm/classfile/javaClasses.hpp index af78d5e58b3..ec176a3341e 100644 --- a/hotspot/src/share/vm/classfile/javaClasses.hpp +++ b/hotspot/src/share/vm/classfile/javaClasses.hpp @@ -1068,21 +1068,22 @@ class java_dyn_CallSite: AllStatic { friend class JavaClasses; private: - static int _type_offset; static int _target_offset; - static int _vmmethod_offset; + static int _caller_method_offset; + static int _caller_bci_offset; static void compute_offsets(); public: // Accessors - static oop type(oop site); - static oop target(oop site); static void set_target(oop site, oop target); - static oop vmmethod(oop site); - static void set_vmmethod(oop site, oop ref); + static oop caller_method(oop site); + static void set_caller_method(oop site, oop ref); + + static jint caller_bci(oop site); + static void set_caller_bci(oop site, jint bci); // Testers static bool is_subclass(klassOop klass) { @@ -1094,8 +1095,8 @@ public: // Accessors for code generation: static int target_offset_in_bytes() { return _target_offset; } - static int type_offset_in_bytes() { return _type_offset; } - static int vmmethod_offset_in_bytes() { return _vmmethod_offset; } + static int caller_method_offset_in_bytes() { return _caller_method_offset; } + static int caller_bci_offset_in_bytes() { return _caller_bci_offset; } }; diff --git a/hotspot/src/share/vm/classfile/systemDictionary.cpp b/hotspot/src/share/vm/classfile/systemDictionary.cpp index 83f8717cf65..6ccbb21e634 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.cpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp @@ -2341,7 +2341,8 @@ char* SystemDictionary::check_signature_loaders(symbolHandle signature, } -methodOop SystemDictionary::find_method_handle_invoke(symbolHandle signature, +methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, + symbolHandle signature, Handle class_loader, Handle protection_domain, TRAPS) { @@ -2352,26 +2353,28 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle signature, // create this side table lazily _invoke_method_table = new SymbolPropertyTable(_invoke_method_size); } - unsigned int hash = invoke_method_table()->compute_hash(signature); + vmSymbols::SID name_id = vmSymbols::find_sid(name()); + assert(name_id != vmSymbols::NO_SID, "must be a known name"); + unsigned int hash = invoke_method_table()->compute_hash(signature, name_id); int index = invoke_method_table()->hash_to_index(hash); - SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature); + SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature, name_id); if (spe == NULL || spe->property_oop() == NULL) { // Must create lots of stuff here, but outside of the SystemDictionary lock. if (THREAD->is_Compiler_thread()) return NULL; // do not attempt from within compiler - Handle mt = compute_method_handle_type(signature(), - class_loader, protection_domain, - CHECK_NULL); + Handle mt = find_method_handle_type(signature(), + class_loader, protection_domain, + CHECK_NULL); KlassHandle mh_klass = SystemDictionaryHandles::MethodHandle_klass(); - methodHandle m = methodOopDesc::make_invoke_method(mh_klass, signature, + methodHandle m = methodOopDesc::make_invoke_method(mh_klass, name, signature, mt, CHECK_NULL); // Now grab the lock. We might have to throw away the new method, // if a racing thread has managed to install one at the same time. { MutexLocker ml(SystemDictionary_lock, Thread::current()); - spe = invoke_method_table()->find_entry(index, hash, signature); + spe = invoke_method_table()->find_entry(index, hash, signature, name_id); if (spe == NULL) - spe = invoke_method_table()->add_entry(index, hash, signature); + spe = invoke_method_table()->add_entry(index, hash, signature, name_id); if (spe->property_oop() == NULL) spe->set_property_oop(m()); } @@ -2385,10 +2388,10 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle signature, // signature, as interpreted relative to the given class loader. // Because of class loader constraints, all method handle usage must be // consistent with this loader. -Handle SystemDictionary::compute_method_handle_type(symbolHandle signature, - Handle class_loader, - Handle protection_domain, - TRAPS) { +Handle SystemDictionary::find_method_handle_type(symbolHandle signature, + Handle class_loader, + Handle protection_domain, + TRAPS) { Handle empty; int npts = ArgumentCount(signature()).size(); objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty)); @@ -2413,16 +2416,14 @@ Handle SystemDictionary::compute_method_handle_type(symbolHandle signature, } assert(arg == npts, ""); - // call MethodType java.dyn.MethodType::makeImpl(Class rt, Class[] pts, false, true) - bool varargs = false, trusted = true; + // call sun.dyn.MethodHandleNatives::findMethodType(Class rt, Class[] pts) -> MethodType JavaCallArguments args(Handle(THREAD, rt())); args.push_oop(pts()); - args.push_int(false); - args.push_int(trusted); JavaValue result(T_OBJECT); JavaCalls::call_static(&result, - SystemDictionary::MethodType_klass(), - vmSymbols::makeImpl_name(), vmSymbols::makeImpl_signature(), + SystemDictionary::MethodHandleNatives_klass(), + vmSymbols::findMethodHandleType_name(), + vmSymbols::findMethodHandleType_signature(), &args, CHECK_(empty)); return Handle(THREAD, (oop) result.get_jobject()); } @@ -2430,29 +2431,34 @@ Handle SystemDictionary::compute_method_handle_type(symbolHandle signature, // Ask Java code to find or construct a java.dyn.CallSite for the given // name and signature, as interpreted relative to the given class loader. -Handle SystemDictionary::make_dynamic_call_site(KlassHandle caller, - int caller_method_idnum, - int caller_bci, +Handle SystemDictionary::make_dynamic_call_site(Handle bootstrap_method, symbolHandle name, - methodHandle mh_invdyn, + methodHandle signature_invoker, + Handle info, + methodHandle caller_method, + int caller_bci, TRAPS) { Handle empty; - // call java.dyn.CallSite::makeSite(caller, name, mtype, cmid, cbci) + Handle caller_mname = MethodHandles::new_MemberName(CHECK_(empty)); + MethodHandles::init_MemberName(caller_mname(), caller_method()); + + // call sun.dyn.MethodHandleNatives::makeDynamicCallSite(bootm, name, mtype, info, caller_mname, caller_pos) oop name_str_oop = StringTable::intern(name(), CHECK_(empty)); // not a handle! - JavaCallArguments args(Handle(THREAD, caller->java_mirror())); + JavaCallArguments args(Handle(THREAD, bootstrap_method())); args.push_oop(name_str_oop); - args.push_oop(mh_invdyn->method_handle_type()); - args.push_int(caller_method_idnum); + args.push_oop(signature_invoker->method_handle_type()); + args.push_oop(info()); + args.push_oop(caller_mname()); args.push_int(caller_bci); JavaValue result(T_OBJECT); JavaCalls::call_static(&result, - SystemDictionary::CallSite_klass(), - vmSymbols::makeSite_name(), vmSymbols::makeSite_signature(), + SystemDictionary::MethodHandleNatives_klass(), + vmSymbols::makeDynamicCallSite_name(), + vmSymbols::makeDynamicCallSite_signature(), &args, CHECK_(empty)); oop call_site_oop = (oop) result.get_jobject(); assert(call_site_oop->is_oop() /*&& java_dyn_CallSite::is_instance(call_site_oop)*/, "must be sane"); - java_dyn_CallSite::set_vmmethod(call_site_oop, mh_invdyn()); if (TraceMethodHandles) { #ifndef PRODUCT tty->print_cr("Linked invokedynamic bci=%d site="INTPTR_FORMAT":", caller_bci, call_site_oop); @@ -2463,9 +2469,7 @@ Handle SystemDictionary::make_dynamic_call_site(KlassHandle caller, return call_site_oop; } -Handle SystemDictionary::find_bootstrap_method(KlassHandle caller, - KlassHandle search_bootstrap_klass, - TRAPS) { +Handle SystemDictionary::find_bootstrap_method(KlassHandle caller, TRAPS) { Handle empty; if (!caller->oop_is_instance()) return empty; @@ -2476,57 +2480,12 @@ Handle SystemDictionary::find_bootstrap_method(KlassHandle caller, if (TraceMethodHandles) { tty->print_cr("bootstrap method for "PTR_FORMAT" cached as "PTR_FORMAT":", ik(), boot_method_oop); } - NOT_PRODUCT(if (!boot_method_oop->is_oop()) { tty->print_cr("*** boot MH of "PTR_FORMAT" = "PTR_FORMAT, ik(), boot_method_oop); ik()->print(); }); assert(boot_method_oop->is_oop() && java_dyn_MethodHandle::is_instance(boot_method_oop), "must be sane"); return Handle(THREAD, boot_method_oop); } - boot_method_oop = NULL; // GC safety - // call java.dyn.Linkage::findBootstrapMethod(caller, sbk) - JavaCallArguments args(Handle(THREAD, ik->java_mirror())); - if (search_bootstrap_klass.is_null()) - args.push_oop(Handle()); - else - args.push_oop(search_bootstrap_klass->java_mirror()); - JavaValue result(T_OBJECT); - JavaCalls::call_static(&result, - SystemDictionary::Linkage_klass(), - vmSymbols::findBootstrapMethod_name(), - vmSymbols::findBootstrapMethod_signature(), - &args, CHECK_(empty)); - boot_method_oop = (oop) result.get_jobject(); - - if (boot_method_oop != NULL) { - if (TraceMethodHandles) { -#ifndef PRODUCT - tty->print_cr("--------"); - tty->print_cr("bootstrap method for "PTR_FORMAT" computed as "PTR_FORMAT":", ik(), boot_method_oop); - ik()->print(); - boot_method_oop->print(); - tty->print_cr("========"); -#endif //PRODUCT - } - assert(boot_method_oop->is_oop() - && java_dyn_MethodHandle::is_instance(boot_method_oop), "must be sane"); - // probably no race conditions, but let's be careful: - if (Atomic::cmpxchg_ptr(boot_method_oop, ik->adr_bootstrap_method(), NULL) == NULL) - ik->set_bootstrap_method(boot_method_oop); - else - boot_method_oop = ik->bootstrap_method(); - } else { - if (TraceMethodHandles) { -#ifndef PRODUCT - tty->print_cr("--------"); - tty->print_cr("bootstrap method for "PTR_FORMAT" computed as NULL:", ik()); - ik()->print(); - tty->print_cr("========"); -#endif //PRODUCT - } - boot_method_oop = ik->bootstrap_method(); - } - - return Handle(THREAD, boot_method_oop); + return empty; } // Since the identity hash code for symbols changes when the symbols are diff --git a/hotspot/src/share/vm/classfile/systemDictionary.hpp b/hotspot/src/share/vm/classfile/systemDictionary.hpp index 03b2aeb6b42..0d88d4206fd 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.hpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp @@ -136,6 +136,7 @@ class SymbolPropertyTable; template(MethodHandle_klass, java_dyn_MethodHandle, Opt) \ template(MemberName_klass, sun_dyn_MemberName, Opt) \ template(MethodHandleImpl_klass, sun_dyn_MethodHandleImpl, Opt) \ + template(MethodHandleNatives_klass, sun_dyn_MethodHandleNatives, Opt) \ template(AdapterMethodHandle_klass, sun_dyn_AdapterMethodHandle, Opt) \ template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \ template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \ @@ -463,29 +464,29 @@ public: // JSR 292 // find the java.dyn.MethodHandles::invoke method for a given signature - static methodOop find_method_handle_invoke(symbolHandle signature, + static methodOop find_method_handle_invoke(symbolHandle name, + symbolHandle signature, Handle class_loader, Handle protection_domain, TRAPS); - // ask Java to compute the java.dyn.MethodType object for a given signature - static Handle compute_method_handle_type(symbolHandle signature, - Handle class_loader, - Handle protection_domain, - TRAPS); + // ask Java to compute a java.dyn.MethodType object for a given signature + static Handle find_method_handle_type(symbolHandle signature, + Handle class_loader, + Handle protection_domain, + TRAPS); // ask Java to create a dynamic call site, while linking an invokedynamic op - static Handle make_dynamic_call_site(KlassHandle caller, - int caller_method_idnum, - int caller_bci, + static Handle make_dynamic_call_site(Handle bootstrap_method, + // Callee information: symbolHandle name, - methodHandle mh_invoke, + methodHandle signature_invoker, + Handle info, + // Caller information: + methodHandle caller_method, + int caller_bci, TRAPS); // coordinate with Java about bootstrap methods - static Handle find_bootstrap_method(KlassHandle caller, - // This argument is non-null only when a - // classfile attribute has been found: - KlassHandle search_bootstrap_klass, - TRAPS); + static Handle find_bootstrap_method(KlassHandle caller, TRAPS); // Utility for printing loader "name" as part of tracing constraints static const char* loader_name(oop loader) { diff --git a/hotspot/src/share/vm/classfile/vmSymbols.hpp b/hotspot/src/share/vm/classfile/vmSymbols.hpp index a7ee43ee6ac..46d8b0c1061 100644 --- a/hotspot/src/share/vm/classfile/vmSymbols.hpp +++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp @@ -137,6 +137,7 @@ template(java_lang_CloneNotSupportedException, "java/lang/CloneNotSupportedException") \ template(java_lang_IllegalAccessException, "java/lang/IllegalAccessException") \ template(java_lang_IllegalArgumentException, "java/lang/IllegalArgumentException") \ + template(java_lang_IllegalStateException, "java/lang/IllegalStateException") \ template(java_lang_IllegalMonitorStateException, "java/lang/IllegalMonitorStateException") \ template(java_lang_IllegalThreadStateException, "java/lang/IllegalThreadStateException") \ template(java_lang_IndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException") \ @@ -201,6 +202,11 @@ template(newField_signature, "(Lsun/reflect/FieldInfo;)Ljava/lang/reflect/Field;") \ template(newMethod_name, "newMethod") \ template(newMethod_signature, "(Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Method;") \ + /* the following two names must be in order: */ \ + template(invokeExact_name, "invokeExact") \ + template(invokeGeneric_name, "invokeGeneric") \ + template(invokeVarargs_name, "invokeVarargs") \ + template(star_name, "*") /*not really a name*/ \ template(invoke_name, "invoke") \ template(override_name, "override") \ template(parameterTypes_name, "parameterTypes") \ @@ -231,16 +237,17 @@ template(java_dyn_MethodTypeForm, "java/dyn/MethodTypeForm") \ template(java_dyn_MethodTypeForm_signature, "Ljava/dyn/MethodTypeForm;") \ template(sun_dyn_MemberName, "sun/dyn/MemberName") \ + template(sun_dyn_MemberName_signature, "Lsun/dyn/MemberName;") \ template(sun_dyn_MethodHandleImpl, "sun/dyn/MethodHandleImpl") \ + template(sun_dyn_MethodHandleNatives, "sun/dyn/MethodHandleNatives") \ template(sun_dyn_AdapterMethodHandle, "sun/dyn/AdapterMethodHandle") \ template(sun_dyn_BoundMethodHandle, "sun/dyn/BoundMethodHandle") \ template(sun_dyn_DirectMethodHandle, "sun/dyn/DirectMethodHandle") \ - template(makeImpl_name, "makeImpl") /*MethodType::makeImpl*/ \ - template(makeImpl_signature, "(Ljava/lang/Class;[Ljava/lang/Class;ZZ)Ljava/dyn/MethodType;") \ - template(makeSite_name, "makeSite") /*CallSite::makeSite*/ \ - template(makeSite_signature, "(Ljava/lang/Class;Ljava/lang/String;Ljava/dyn/MethodType;II)Ljava/dyn/CallSite;") \ - template(findBootstrapMethod_name, "findBootstrapMethod") \ - template(findBootstrapMethod_signature, "(Ljava/lang/Class;Ljava/lang/Class;)Ljava/dyn/MethodHandle;") \ + /* internal up-calls made only by the JVM, via class sun.dyn.MethodHandleNatives: */ \ + template(findMethodHandleType_name, "findMethodHandleType") \ + template(findMethodHandleType_signature, "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/dyn/MethodType;") \ + template(makeDynamicCallSite_name, "makeDynamicCallSite") \ + template(makeDynamicCallSite_signature, "(Ljava/dyn/MethodHandle;Ljava/lang/String;Ljava/dyn/MethodType;Ljava/lang/Object;Lsun/dyn/MemberName;I)Ljava/dyn/CallSite;") \ NOT_LP64( do_alias(machine_word_signature, int_signature) ) \ LP64_ONLY( do_alias(machine_word_signature, long_signature) ) \ \ @@ -408,8 +415,9 @@ template(void_classloader_signature, "()Ljava/lang/ClassLoader;") \ template(void_object_signature, "()Ljava/lang/Object;") \ template(void_class_signature, "()Ljava/lang/Class;") \ - template(void_string_signature, "()Ljava/lang/String;") \ - template(object_array_object_object_signature, "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\ + template(void_string_signature, "()Ljava/lang/String;") \ + template(object_array_object_signature, "([Ljava/lang/Object;)Ljava/lang/Object;") \ + template(object_object_array_object_signature, "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\ template(exception_void_signature, "(Ljava/lang/Exception;)V") \ template(protectiondomain_signature, "[Ljava/security/ProtectionDomain;") \ template(accesscontrolcontext_signature, "Ljava/security/AccessControlContext;") \ @@ -863,11 +871,15 @@ do_intrinsic(_Object_init, java_lang_Object, object_initializer_name, void_method_signature, F_R) \ /* (symbol object_initializer_name defined above) */ \ \ - do_intrinsic(_invoke, java_lang_reflect_Method, invoke_name, object_array_object_object_signature, F_R) \ + do_intrinsic(_invoke, java_lang_reflect_Method, invoke_name, object_object_array_object_signature, F_R) \ /* (symbols invoke_name and invoke_signature defined above) */ \ do_intrinsic(_checkSpreadArgument, sun_dyn_MethodHandleImpl, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) \ do_name( checkSpreadArgument_name, "checkSpreadArgument") \ do_name( checkSpreadArgument_signature, "(Ljava/lang/Object;I)V") \ + do_intrinsic(_invokeExact, java_dyn_MethodHandle, invokeExact_name, object_array_object_signature, F_RN) \ + do_intrinsic(_invokeGeneric, java_dyn_MethodHandle, invokeGeneric_name, object_array_object_signature, F_RN) \ + do_intrinsic(_invokeVarargs, java_dyn_MethodHandle, invokeVarargs_name, object_array_object_signature, F_R) \ + do_intrinsic(_invokeDynamic, java_dyn_InvokeDynamic, star_name, object_array_object_signature, F_SN) \ \ /* unboxing methods: */ \ do_intrinsic(_booleanValue, java_lang_Boolean, booleanValue_name, void_boolean_signature, F_R) \ diff --git a/hotspot/src/share/vm/includeDB_core b/hotspot/src/share/vm/includeDB_core index 5670d3d64c8..7c11beec02d 100644 --- a/hotspot/src/share/vm/includeDB_core +++ b/hotspot/src/share/vm/includeDB_core @@ -2867,6 +2867,7 @@ methodHandles.hpp frame.inline.hpp methodHandles.hpp globals.hpp methodHandles.hpp interfaceSupport.hpp methodHandles.hpp javaClasses.hpp +methodHandles.hpp no_precompiled_headers methodHandles.hpp vmSymbols.hpp methodHandles.cpp allocation.inline.hpp @@ -2930,6 +2931,7 @@ methodOop.cpp interpreter.hpp methodOop.cpp jvmtiExport.hpp methodOop.cpp klassOop.hpp methodOop.cpp methodDataOop.hpp +methodOop.cpp methodHandleWalk.hpp methodOop.cpp methodOop.hpp methodOop.cpp nativeLookup.hpp methodOop.cpp oop.inline.hpp @@ -4075,6 +4077,7 @@ systemDictionary.cpp jvmtiEnvBase.hpp systemDictionary.cpp klass.inline.hpp systemDictionary.cpp loaderConstraints.hpp systemDictionary.cpp methodDataOop.hpp +systemDictionary.cpp methodHandles.hpp systemDictionary.cpp mutexLocker.hpp systemDictionary.cpp objArrayKlass.hpp systemDictionary.cpp oop.inline.hpp diff --git a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp index 84d4fd762f7..590edd58380 100644 --- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp @@ -691,24 +691,21 @@ IRT_ENTRY(void, InterpreterRuntime::resolve_invokedynamic(JavaThread* thread)) { methodHandle caller_method(thread, method(thread)); - // first determine if there is a bootstrap method - { - KlassHandle caller_klass(thread, caller_method->method_holder()); - Handle bootm = SystemDictionary::find_bootstrap_method(caller_klass, KlassHandle(), CHECK); - if (bootm.is_null()) { - // If there is no bootstrap method, throw IncompatibleClassChangeError. - // This is a valid generic error type for resolution (JLS 12.3.3). - char buf[200]; - jio_snprintf(buf, sizeof(buf), "Class %s has not declared a bootstrap method for invokedynamic", - (Klass::cast(caller_klass()))->external_name()); - THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); - } - } + // first find the bootstrap method + KlassHandle caller_klass(thread, caller_method->method_holder()); + Handle bootm = SystemDictionary::find_bootstrap_method(caller_klass, CHECK); constantPoolHandle pool(thread, caller_method->constants()); pool->set_invokedynamic(); // mark header to flag active call sites - int site_index = four_byte_index(thread); + int caller_bci = 0; + int site_index = 0; + { address caller_bcp = bcp(thread); + caller_bci = caller_method->bci_from(caller_bcp); + site_index = Bytes::get_native_u4(caller_bcp+1); + } + assert(site_index == four_byte_index(thread), ""); + assert(constantPoolCacheOopDesc::is_secondary_index(site_index), "proper format"); // there is a second CPC entries that is of interest; it caches signature info: int main_index = pool->cache()->secondary_entry_at(site_index)->main_entry_index(); @@ -732,23 +729,32 @@ IRT_ENTRY(void, InterpreterRuntime::resolve_invokedynamic(JavaThread* thread)) { // The method (f2 entry) of the main entry is the MH.invoke for the // invokedynamic target call signature. intptr_t f2_value = pool->cache()->entry_at(main_index)->f2(); - methodHandle mh_invdyn(THREAD, (methodOop) f2_value); - assert(mh_invdyn.not_null() && mh_invdyn->is_method() && mh_invdyn->is_method_handle_invoke(), + methodHandle signature_invoker(THREAD, (methodOop) f2_value); + assert(signature_invoker.not_null() && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(), "correct result from LinkResolver::resolve_invokedynamic"); symbolHandle call_site_name(THREAD, pool->name_ref_at(site_index)); + + Handle info; // NYI: Other metadata from a new kind of CP entry. (Annotations?) + + // this is the index which gets stored on the CallSite object (as "callerPosition"): + int call_site_position = constantPoolCacheOopDesc::decode_secondary_index(site_index); + Handle call_site - = SystemDictionary::make_dynamic_call_site(caller_method->method_holder(), - caller_method->method_idnum(), - caller_method->bci_from(bcp(thread)), + = SystemDictionary::make_dynamic_call_site(bootm, + // Callee information: call_site_name, - mh_invdyn, + signature_invoker, + info, + // Caller information: + caller_method, + caller_bci, CHECK); // In the secondary entry, the f1 field is the call site, and the f2 (index) - // field is some data about the invoke site. - int extra_data = 0; - pool->cache()->secondary_entry_at(site_index)->set_dynamic_call(call_site(), extra_data); + // field is some data about the invoke site. Currently, it is just the BCI. + // Later, it might be changed to help manage inlining dependencies. + pool->cache()->secondary_entry_at(site_index)->set_dynamic_call(call_site, signature_invoker); } IRT_END diff --git a/hotspot/src/share/vm/interpreter/linkResolver.cpp b/hotspot/src/share/vm/interpreter/linkResolver.cpp index 4c5fd690393..d80ef9daf52 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.cpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp @@ -138,6 +138,15 @@ void LinkResolver::resolve_klass_no_update(KlassHandle& result, constantPoolHand void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { methodOop result_oop = klass->uncached_lookup_method(name(), signature()); + if (EnableMethodHandles && result_oop != NULL) { + switch (result_oop->intrinsic_id()) { + case vmIntrinsics::_invokeExact: + case vmIntrinsics::_invokeGeneric: + case vmIntrinsics::_invokeDynamic: + // Do not link directly to these. The VM must produce a synthetic one using lookup_implicit_method. + return; + } + } result = methodHandle(THREAD, result_oop); } @@ -165,8 +174,10 @@ void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle void LinkResolver::lookup_implicit_method(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { if (EnableMethodHandles && MethodHandles::enabled() && - name == vmSymbolHandles::invoke_name() && klass() == SystemDictionary::MethodHandle_klass()) { - methodOop result_oop = SystemDictionary::find_method_handle_invoke(signature, + klass() == SystemDictionary::MethodHandle_klass() && + methodOopDesc::is_method_handle_invoke_name(name())) { + methodOop result_oop = SystemDictionary::find_method_handle_invoke(name, + signature, Handle(), Handle(), CHECK); @@ -239,7 +250,7 @@ void LinkResolver::resolve_dynamic_method(methodHandle& resolved_method, KlassHa // The class is java.dyn.MethodHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); - symbolHandle method_name = vmSymbolHandles::invoke_name(); + symbolHandle method_name = vmSymbolHandles::invokeExact_name(); symbolHandle method_signature(THREAD, pool->signature_ref_at(index)); KlassHandle current_klass (THREAD, pool->pool_holder()); @@ -1041,10 +1052,10 @@ void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle po // At this point, we only need the signature, and can ignore the name. symbolHandle method_signature(THREAD, pool->signature_ref_at(raw_index)); // raw_index works directly - symbolHandle method_name = vmSymbolHandles::invoke_name(); + symbolHandle method_name = vmSymbolHandles::invokeExact_name(); KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass(); - // JSR 292: this must be an implicitly generated method MethodHandle.invoke(*...) + // JSR 292: this must be an implicitly generated method MethodHandle.invokeExact(*...) // The extra MH receiver will be inserted into the stack on every call. methodHandle resolved_method; lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK); diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index 5803a4d356e..13b9b556fd0 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -1045,7 +1045,7 @@ bool universe_post_init() { k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_reflect_Method(), true, CHECK_false); k_h = instanceKlassHandle(THREAD, k); k_h->link_class(CHECK_false); - m = k_h->find_method(vmSymbols::invoke_name(), vmSymbols::object_array_object_object_signature()); + m = k_h->find_method(vmSymbols::invoke_name(), vmSymbols::object_object_array_object_signature()); if (m == NULL || m->is_static()) { THROW_MSG_(vmSymbols::java_lang_NoSuchMethodException(), "java.lang.reflect.Method.invoke", false); diff --git a/hotspot/src/share/vm/oops/cpCacheOop.cpp b/hotspot/src/share/vm/oops/cpCacheOop.cpp index 36380c88903..7742b0f5cd4 100644 --- a/hotspot/src/share/vm/oops/cpCacheOop.cpp +++ b/hotspot/src/share/vm/oops/cpCacheOop.cpp @@ -218,18 +218,19 @@ void ConstantPoolCacheEntry::set_interface_call(methodHandle method, int index) } -void ConstantPoolCacheEntry::set_dynamic_call(Handle call_site, int extra_data) { - methodOop method = (methodOop) java_dyn_CallSite::vmmethod(call_site()); - assert(method->is_method(), "must be initialized properly"); - int param_size = method->size_of_parameters(); +void ConstantPoolCacheEntry::set_dynamic_call(Handle call_site, + methodHandle signature_invoker) { + int param_size = signature_invoker->size_of_parameters(); assert(param_size >= 1, "method argument size must include MH.this"); param_size -= 1; // do not count MH.this; it is not stacked for invokedynamic if (Atomic::cmpxchg_ptr(call_site(), &_f1, NULL) == NULL) { // racing threads might be trying to install their own favorites set_f1(call_site()); } - set_f2(extra_data); - set_flags(as_flags(as_TosState(method->result_type()), method->is_final_method(), false, false, false, true) | param_size); + //set_f2(0); + bool is_final = true; + assert(signature_invoker->is_final_method(), "is_final"); + set_flags(as_flags(as_TosState(signature_invoker->result_type()), is_final, false, false, false, true) | param_size); // do not do set_bytecode on a secondary CP cache entry //set_bytecode_1(Bytecodes::_invokedynamic); } diff --git a/hotspot/src/share/vm/oops/cpCacheOop.hpp b/hotspot/src/share/vm/oops/cpCacheOop.hpp index 6fb7a635e56..823a77bb73e 100644 --- a/hotspot/src/share/vm/oops/cpCacheOop.hpp +++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp @@ -181,7 +181,7 @@ class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC { void set_dynamic_call( Handle call_site, // Resolved java.dyn.CallSite (f1) - int extra_data // (f2) + methodHandle signature_invoker // determines signature information ); void set_parameter_size(int value) { diff --git a/hotspot/src/share/vm/oops/methodKlass.cpp b/hotspot/src/share/vm/oops/methodKlass.cpp index 1b788c63b13..a69cc59c67b 100644 --- a/hotspot/src/share/vm/oops/methodKlass.cpp +++ b/hotspot/src/share/vm/oops/methodKlass.cpp @@ -236,8 +236,10 @@ void methodKlass::oop_print_on(oop obj, outputStream* st) { assert(obj->is_method(), "must be method"); Klass::oop_print_on(obj, st); methodOop m = methodOop(obj); + // get the effect of PrintOopAddress, always, for methods: + st->print (" - this oop: "INTPTR_FORMAT, (intptr_t)m); st->print (" - method holder: "); m->method_holder()->print_value_on(st); st->cr(); - st->print (" - constants: " INTPTR_FORMAT, " ", (address)m->constants()); + st->print (" - constants: "INTPTR_FORMAT" ", (address)m->constants()); m->constants()->print_value_on(st); st->cr(); st->print (" - access: 0x%x ", m->access_flags().as_int()); m->access_flags().print_on(st); st->cr(); st->print (" - name: "); m->name()->print_value_on(st); st->cr(); @@ -246,6 +248,10 @@ void methodKlass::oop_print_on(oop obj, outputStream* st) { st->print_cr(" - max locals: %d", m->max_locals()); st->print_cr(" - size of params: %d", m->size_of_parameters()); st->print_cr(" - method size: %d", m->method_size()); + if (m->intrinsic_id() != vmIntrinsics::_none) + st->print_cr(" - intrinsic id: %d %s", m->intrinsic_id(), vmIntrinsics::name_at(m->intrinsic_id())); + if (m->highest_tier_compile() != CompLevel_none) + st->print_cr(" - highest tier: %d", m->highest_tier_compile()); st->print_cr(" - vtable index: %d", m->_vtable_index); st->print_cr(" - i2i entry: " INTPTR_FORMAT, m->interpreter_entry()); st->print_cr(" - adapter: " INTPTR_FORMAT, m->adapter()); diff --git a/hotspot/src/share/vm/oops/methodOop.cpp b/hotspot/src/share/vm/oops/methodOop.cpp index 06825af6c9d..5394db3d735 100644 --- a/hotspot/src/share/vm/oops/methodOop.cpp +++ b/hotspot/src/share/vm/oops/methodOop.cpp @@ -807,9 +807,19 @@ bool methodOopDesc::should_not_be_cached() const { return false; } +bool methodOopDesc::is_method_handle_invoke_name(vmSymbols::SID name_sid) { + switch (name_sid) { + case vmSymbols::VM_SYMBOL_ENUM_NAME(invoke_name): // FIXME: remove this transitional form + case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeExact_name): + case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name): + return true; + } + return false; +} + // Constant pool structure for invoke methods: enum { - _imcp_invoke_name = 1, // utf8: 'invoke' + _imcp_invoke_name = 1, // utf8: 'invokeExact' or 'invokeGeneric' _imcp_invoke_signature, // utf8: (variable symbolOop) _imcp_method_type_value, // string: (variable java/dyn/MethodType, sic) _imcp_limit @@ -839,14 +849,15 @@ jint* methodOopDesc::method_type_offsets_chain() { // // Tests if this method is an internal adapter frame from the // MethodHandleCompiler. +// Must be consistent with MethodHandleCompiler::get_method_oop(). bool methodOopDesc::is_method_handle_adapter() const { - return ((name() == vmSymbols::invoke_name() && - method_holder() == SystemDictionary::MethodHandle_klass()) - || - method_holder() == SystemDictionary::InvokeDynamic_klass()); + return (is_method_handle_invoke_name(name()) && + is_synthetic() && + MethodHandleCompiler::klass_is_method_handle_adapter_holder(method_holder())); } methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, + symbolHandle name, symbolHandle signature, Handle method_type, TRAPS) { methodHandle empty; @@ -865,7 +876,7 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, constantPoolOop cp_oop = oopFactory::new_constantPool(_imcp_limit, IsSafeConc, CHECK_(empty)); cp = constantPoolHandle(THREAD, cp_oop); } - cp->symbol_at_put(_imcp_invoke_name, vmSymbols::invoke_name()); + cp->symbol_at_put(_imcp_invoke_name, name()); cp->symbol_at_put(_imcp_invoke_signature, signature()); cp->string_at_put(_imcp_method_type_value, vmSymbols::void_signature()); cp->set_pool_holder(holder()); @@ -882,7 +893,7 @@ methodHandle methodOopDesc::make_invoke_method(KlassHandle holder, m->set_constants(cp()); m->set_name_index(_imcp_invoke_name); m->set_signature_index(_imcp_invoke_signature); - assert(m->name() == vmSymbols::invoke_name(), ""); + assert(is_method_handle_invoke_name(m->name()), ""); assert(m->signature() == signature(), ""); #ifdef CC_INTERP ResultTypeFinder rtf(signature()); @@ -1033,6 +1044,24 @@ void methodOopDesc::init_intrinsic_id() { id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags); break; } + break; + + // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*. + case vmSymbols::VM_SYMBOL_ENUM_NAME(java_dyn_MethodHandle): + if (is_static() || !is_native()) break; + switch (name_id) { + case vmSymbols::VM_SYMBOL_ENUM_NAME(invokeGeneric_name): + id = vmIntrinsics::_invokeGeneric; break; + default: + if (is_method_handle_invoke_name(name())) + id = vmIntrinsics::_invokeExact; + break; + } + break; + case vmSymbols::VM_SYMBOL_ENUM_NAME(java_dyn_InvokeDynamic): + if (!is_static() || !is_native()) break; + id = vmIntrinsics::_invokeDynamic; + break; } if (id != vmIntrinsics::_none) { diff --git a/hotspot/src/share/vm/oops/methodOop.hpp b/hotspot/src/share/vm/oops/methodOop.hpp index 61dc3f1bc39..a77280da785 100644 --- a/hotspot/src/share/vm/oops/methodOop.hpp +++ b/hotspot/src/share/vm/oops/methodOop.hpp @@ -525,11 +525,16 @@ class methodOopDesc : public oopDesc { // JSR 292 support bool is_method_handle_invoke() const { return access_flags().is_method_handle_invoke(); } + static bool is_method_handle_invoke_name(vmSymbols::SID name_sid); + static bool is_method_handle_invoke_name(symbolOop name) { + return is_method_handle_invoke_name(vmSymbols::find_sid(name)); + } // Tests if this method is an internal adapter frame from the // MethodHandleCompiler. bool is_method_handle_adapter() const; static methodHandle make_invoke_method(KlassHandle holder, - symbolHandle signature, + symbolHandle name, //invokeExact or invokeGeneric + symbolHandle signature, //anything at all Handle method_type, TRAPS); // these operate only on invoke methods: diff --git a/hotspot/src/share/vm/opto/bytecodeInfo.cpp b/hotspot/src/share/vm/opto/bytecodeInfo.cpp index b199d7c7047..922b712cdbe 100644 --- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp +++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp @@ -477,12 +477,7 @@ InlineTree *InlineTree::build_inline_tree_for_callee( ciMethod* callee_method, J } int new_depth_adjust = 0; if (caller_jvms->method() != NULL) { - if ((caller_jvms->method()->name() == ciSymbol::invoke_name() && - caller_jvms->method()->holder()->name() == ciSymbol::java_dyn_MethodHandle()) - || caller_jvms->method()->holder()->name() == ciSymbol::java_dyn_InvokeDynamic()) - /* @@@ FIXME: if (caller_jvms->method()->is_method_handle_adapter()) - */ new_depth_adjust -= 1; // don't count actions in MH or indy adapter frames else if (callee_method->is_method_handle_invoke()) { new_depth_adjust -= 1; // don't count method handle calls from java.dyn implem diff --git a/hotspot/src/share/vm/prims/methodHandleWalk.cpp b/hotspot/src/share/vm/prims/methodHandleWalk.cpp index 0df6c308bb7..6be78f36e63 100644 --- a/hotspot/src/share/vm/prims/methodHandleWalk.cpp +++ b/hotspot/src/share/vm/prims/methodHandleWalk.cpp @@ -1173,9 +1173,9 @@ methodHandle MethodHandleCompiler::get_method_oop(TRAPS) const { // has no receiver, normal MH calls do. int flags_bits; if (for_invokedynamic()) - flags_bits = (/*JVM_MH_INVOKE_BITS |*/ JVM_ACC_PUBLIC | JVM_ACC_FINAL | JVM_ACC_STATIC); + flags_bits = (/*JVM_MH_INVOKE_BITS |*/ JVM_ACC_PUBLIC | JVM_ACC_FINAL | JVM_ACC_SYNTHETIC | JVM_ACC_STATIC); else - flags_bits = (/*JVM_MH_INVOKE_BITS |*/ JVM_ACC_PUBLIC | JVM_ACC_FINAL); + flags_bits = (/*JVM_MH_INVOKE_BITS |*/ JVM_ACC_PUBLIC | JVM_ACC_FINAL | JVM_ACC_SYNTHETIC); bool is_conc_safe = true; methodOop m_oop = oopFactory::new_method(bytecode_length(), @@ -1217,6 +1217,7 @@ methodHandle MethodHandleCompiler::get_method_oop(TRAPS) const { } #endif //PRODUCT + assert(m->is_method_handle_adapter(), "must be recognized as an adapter"); return m; } diff --git a/hotspot/src/share/vm/prims/methodHandles.cpp b/hotspot/src/share/vm/prims/methodHandles.cpp index 4131f0f34b8..9581757f061 100644 --- a/hotspot/src/share/vm/prims/methodHandles.cpp +++ b/hotspot/src/share/vm/prims/methodHandles.cpp @@ -366,6 +366,13 @@ enum { VM_INDEX_UNINITIALIZED = sun_dyn_MemberName::VM_INDEX_UNINITIALIZED }; +Handle MethodHandles::new_MemberName(TRAPS) { + Handle empty; + instanceKlassHandle k(THREAD, SystemDictionary::MemberName_klass()); + if (!k->is_initialized()) k->initialize(CHECK_(empty)); + return Handle(THREAD, k->allocate_instance(THREAD)); +} + void MethodHandles::init_MemberName(oop mname_oop, oop target_oop) { if (target_oop->klass() == SystemDictionary::reflect_Field_klass()) { oop clazz = java_lang_reflect_Field::clazz(target_oop); // fd.field_holder() @@ -394,16 +401,18 @@ void MethodHandles::init_MemberName(oop mname_oop, methodOop m, bool do_dispatch sun_dyn_MemberName::set_vmtarget(mname_oop, vmtarget); sun_dyn_MemberName::set_vmindex(mname_oop, vmindex); sun_dyn_MemberName::set_flags(mname_oop, flags); + sun_dyn_MemberName::set_clazz(mname_oop, Klass::cast(m->method_holder())->java_mirror()); } void MethodHandles::init_MemberName(oop mname_oop, klassOop field_holder, AccessFlags mods, int offset) { int flags = (IS_FIELD | (jushort)( mods.as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS )); oop vmtarget = field_holder; - int vmindex = offset; // implies no info yet + int vmindex = offset; // determines the field uniquely when combined with static bit assert(vmindex != VM_INDEX_UNINITIALIZED, "bad alias on vmindex"); sun_dyn_MemberName::set_vmtarget(mname_oop, vmtarget); sun_dyn_MemberName::set_vmindex(mname_oop, vmindex); sun_dyn_MemberName::set_flags(mname_oop, flags); + sun_dyn_MemberName::set_clazz(mname_oop, Klass::cast(field_holder)->java_mirror()); } @@ -467,7 +476,7 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { name_str = NULL; // safety // convert the external string or reflective type to an internal signature - bool force_signature = (name() == vmSymbols::invoke_name()); + bool force_signature = methodOopDesc::is_method_handle_invoke_name(name()); symbolHandle type; { symbolOop type_sym = NULL; if (java_dyn_MethodType::is_instance(type_str)) { @@ -775,6 +784,20 @@ int MethodHandles::find_MemberNames(klassOop k, } +// Decode this java.lang.Class object into an instanceKlass, if possible. +// Throw IAE if not +instanceKlassHandle MethodHandles::resolve_instance_klass(oop java_mirror_oop, TRAPS) { + instanceKlassHandle empty; + klassOop caller = NULL; + if (java_lang_Class::is_instance(java_mirror_oop)) { + caller = java_lang_Class::as_klassOop(java_mirror_oop); + } + if (caller == NULL || !Klass::cast(caller)->oop_is_instance()) { + THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), "not a class", empty); + } + return instanceKlassHandle(THREAD, caller); +} + // Decode the vmtarget field of a method handle. @@ -2115,31 +2138,26 @@ JVM_ENTRY(void, MHI_init_DMH(JNIEnv *env, jobject igcls, jobject mh_jh, KlassHandle caller(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(caller_jh))); // If this were a bytecode, the first access check would be against // the "reference class" mentioned in the CONSTANT_Methodref. - // For that class, we use the defining class of m, - // or a more specific receiver limit if available. - klassOop reference_klass = m->method_holder(); // OK approximation - if (receiver_limit != NULL && receiver_limit != reference_klass) { - if (!Klass::cast(receiver_limit)->is_subtype_of(reference_klass)) - THROW_MSG(vmSymbols::java_lang_InternalError(), "receiver limit out of bounds"); // Java code bug - reference_klass = receiver_limit; - } - // Emulate LinkResolver::check_klass_accessability. - if (!Reflection::verify_class_access(caller->as_klassOop(), - reference_klass, - true)) { - THROW_MSG(vmSymbols::java_lang_InternalError(), Klass::cast(m->method_holder())->external_name()); - } + // We don't know at this point which class that was, and if we + // check against m.method_holder we might get the wrong answer. + // So we just make sure to handle this check when the resolution + // happens, when we call resolve_MemberName. + // + // (A public class can inherit public members from private supers, + // and it would be wrong to check access against the private super + // if the original symbolic reference was against the public class.) + // // If there were a bytecode, the next step would be to lookup the method // in the reference class, then then check the method's access bits. // Emulate LinkResolver::check_method_accessability. klassOop resolved_klass = m->method_holder(); if (!Reflection::verify_field_access(caller->as_klassOop(), - resolved_klass, reference_klass, + resolved_klass, resolved_klass, m->access_flags(), true)) { // %%% following cutout belongs in Reflection::verify_field_access? bool same_pm = Reflection::is_same_package_member(caller->as_klassOop(), - reference_klass, THREAD); + resolved_klass, THREAD); if (!same_pm) { THROW_MSG(vmSymbols::java_lang_InternalError(), m->name_and_sig_as_C_string()); } @@ -2244,6 +2262,8 @@ JVM_ENTRY(jint, MHI_getConstant(JNIEnv *env, jobject igcls, jint which)) { case MethodHandles::GC_JVM_STACK_MOVE_UNIT: // return number of words per slot, signed according to stack direction return MethodHandles::stack_move_unit(); + case MethodHandles::GC_CONV_OP_IMPLEMENTED_MASK: + return MethodHandles::adapter_conversion_ops_supported_mask(); } return 0; } @@ -2342,7 +2362,22 @@ JVM_END JVM_ENTRY(void, MHI_resolve_Mem(JNIEnv *env, jobject igcls, jobject mname_jh, jclass caller_jh)) { if (mname_jh == NULL) { THROW(vmSymbols::java_lang_InternalError()); } Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh)); - // %%% take caller into account! + + // The trusted Java code that calls this method should already have performed + // access checks on behalf of the given caller. But, we can verify this. + if (VerifyMethodHandles && caller_jh != NULL) { + klassOop reference_klass = java_lang_Class::as_klassOop(sun_dyn_MemberName::clazz(mname())); + if (reference_klass != NULL) { + // Emulate LinkResolver::check_klass_accessability. + klassOop caller = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(caller_jh)); + if (!Reflection::verify_class_access(caller, + reference_klass, + true)) { + THROW_MSG(vmSymbols::java_lang_InternalError(), Klass::cast(reference_klass)->external_name()); + } + } + } + MethodHandles::resolve_MemberName(mname, CHECK); } JVM_END @@ -2387,12 +2422,48 @@ JVM_ENTRY(jint, MHI_getMembers(JNIEnv *env, jobject igcls, } JVM_END +JVM_ENTRY(void, MHI_registerBootstrap(JNIEnv *env, jobject igcls, jclass caller_jh, jobject bsm_jh)) { + instanceKlassHandle ik = MethodHandles::resolve_instance_klass(caller_jh, THREAD); + ik->link_class(CHECK); + if (!java_dyn_MethodHandle::is_instance(JNIHandles::resolve(bsm_jh))) { + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "method handle"); + } + const char* err = NULL; + if (ik->is_initialized() || ik->is_in_error_state()) { + err = "too late: class is already initialized"; + } else { + ObjectLocker ol(ik, THREAD); // note: this should be a recursive lock + if (ik->is_not_initialized() || + (ik->is_being_initialized() && ik->is_reentrant_initialization(THREAD))) { + if (ik->bootstrap_method() != NULL) { + err = "class is already equipped with a bootstrap method"; + } else { + ik->set_bootstrap_method(JNIHandles::resolve_non_null(bsm_jh)); + err = NULL; + } + } else { + err = "class is already initialized"; + if (ik->is_being_initialized()) + err = "class is already being initialized in a different thread"; + } + } + if (err != NULL) { + THROW_MSG(vmSymbols::java_lang_IllegalStateException(), err); + } +} +JVM_END -JVM_ENTRY(void, MH_linkCallSite(JNIEnv *env, jobject igcls, jobject site_jh, jobject target_jh)) { +JVM_ENTRY(jobject, MHI_getBootstrap(JNIEnv *env, jobject igcls, jclass caller_jh)) { + instanceKlassHandle ik = MethodHandles::resolve_instance_klass(caller_jh, THREAD); + return JNIHandles::make_local(THREAD, ik->bootstrap_method()); +} +JVM_END + +JVM_ENTRY(void, MHI_setCallSiteTarget(JNIEnv *env, jobject igcls, jobject site_jh, jobject target_jh)) { // No special action required, yet. oop site_oop = JNIHandles::resolve(site_jh); - if (site_oop == NULL || site_oop->klass() != SystemDictionary::CallSite_klass()) - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "call site"); + if (!java_dyn_CallSite::is_instance(site_oop)) + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "not a CallSite"); java_dyn_CallSite::set_target(site_oop, JNIHandles::resolve(target_jh)); } JVM_END @@ -2442,7 +2513,9 @@ static JNINativeMethod methods[] = { // More entry points specifically for EnableInvokeDynamic. static JNINativeMethod methods2[] = { - {CC"linkCallSite", CC"("CST MH")V", FN_PTR(MH_linkCallSite)} + {CC"registerBootstrap", CC"("CLS MH")V", FN_PTR(MHI_registerBootstrap)}, + {CC"getBootstrap", CC"("CLS")"MH, FN_PTR(MHI_getBootstrap)}, + {CC"setCallSiteTarget", CC"("CST MH")V", FN_PTR(MHI_setCallSiteTarget)} }; diff --git a/hotspot/src/share/vm/prims/methodHandles.hpp b/hotspot/src/share/vm/prims/methodHandles.hpp index fc810b9d64e..3449b8406f1 100644 --- a/hotspot/src/share/vm/prims/methodHandles.hpp +++ b/hotspot/src/share/vm/prims/methodHandles.hpp @@ -216,6 +216,9 @@ class MethodHandles: AllStatic { return (conv >> CONV_VMINFO_SHIFT) & CONV_VMINFO_MASK; } + // Bit mask of conversion_op values. May vary by platform. + static int adapter_conversion_ops_supported_mask(); + // Offset in words that the interpreter stack pointer moves when an argument is pushed. // The stack_move value must always be a multiple of this. static int stack_move_unit() { @@ -262,8 +265,9 @@ class MethodHandles: AllStatic { // working with member names static void resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing + static Handle new_MemberName(TRAPS); // must be followed by init_MemberName static void init_MemberName(oop mname_oop, oop target); // compute vmtarget/vmindex from target - static void init_MemberName(oop mname_oop, methodOop m, bool do_dispatch); + static void init_MemberName(oop mname_oop, methodOop m, bool do_dispatch = true); static void init_MemberName(oop mname_oop, klassOop field_holder, AccessFlags mods, int offset); static int find_MemberNames(klassOop k, symbolOop name, symbolOop sig, int mflags, klassOop caller, @@ -300,6 +304,7 @@ class MethodHandles: AllStatic { // format of query to getConstant: GC_JVM_PUSH_LIMIT = 0, GC_JVM_STACK_MOVE_UNIT = 1, + GC_CONV_OP_IMPLEMENTED_MASK = 2, // format of result from getTarget / encode_target: ETF_HANDLE_OR_METHOD_NAME = 0, // all available data (immediate MH or method) @@ -311,6 +316,11 @@ class MethodHandles: AllStatic { static oop encode_target(Handle mh, int format, TRAPS); // report vmtarget (to Java code) static bool class_cast_needed(klassOop src, klassOop dst); + static instanceKlassHandle resolve_instance_klass(oop java_mirror_oop, TRAPS); + static instanceKlassHandle resolve_instance_klass(jclass java_mirror_jh, TRAPS) { + return resolve_instance_klass(JNIHandles::resolve(java_mirror_jh), THREAD); + } + private: // These checkers operate on a pair of whole MethodTypes: static const char* check_method_type_change(oop src_mtype, int src_beg, int src_end, diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.cpp b/hotspot/src/share/vm/runtime/sharedRuntime.cpp index 1b164ab6f5b..a27ee6024b0 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp @@ -1557,7 +1557,7 @@ char* SharedRuntime::generate_wrong_method_type_message(JavaThread* thread, methodOop actual_method = MethodHandles::decode_method(actual, kignore, fignore); if (actual_method != NULL) { - if (actual_method->name() == vmSymbols::invoke_name()) + if (methodOopDesc::is_method_handle_invoke_name(actual_method->name())) mhName = "$"; else mhName = actual_method->signature()->as_C_string(); From 973b1ef143b7f51a3525086765ac470f334bdce9 Mon Sep 17 00:00:00 2001 From: John R Rose Date: Sat, 1 May 2010 21:57:35 -0700 Subject: [PATCH 50/64] 6939196: method handle signatures off the boot class path get linkage errors Adjust MethodType lookup logic to search off the BCP, but not to cache those results Reviewed-by: twisti --- .../share/vm/classfile/systemDictionary.cpp | 72 +++++++++++------ .../share/vm/classfile/systemDictionary.hpp | 7 +- .../src/share/vm/interpreter/linkResolver.cpp | 13 +-- .../src/share/vm/interpreter/linkResolver.hpp | 3 +- hotspot/src/share/vm/prims/methodHandles.cpp | 79 +++++++++++++++---- hotspot/src/share/vm/runtime/signature.cpp | 20 +++++ hotspot/src/share/vm/runtime/signature.hpp | 3 + 7 files changed, 150 insertions(+), 47 deletions(-) diff --git a/hotspot/src/share/vm/classfile/systemDictionary.cpp b/hotspot/src/share/vm/classfile/systemDictionary.cpp index 6ccbb21e634..23c4434d0fe 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.cpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp @@ -2343,12 +2343,9 @@ char* SystemDictionary::check_signature_loaders(symbolHandle signature, methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, symbolHandle signature, - Handle class_loader, - Handle protection_domain, + KlassHandle accessing_klass, TRAPS) { if (!EnableMethodHandles) return NULL; - assert(class_loader.is_null() && protection_domain.is_null(), - "cannot load specialized versions of MethodHandle.invoke"); if (invoke_method_table() == NULL) { // create this side table lazily _invoke_method_table = new SymbolPropertyTable(_invoke_method_size); @@ -2358,30 +2355,36 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, unsigned int hash = invoke_method_table()->compute_hash(signature, name_id); int index = invoke_method_table()->hash_to_index(hash); SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature, name_id); + methodHandle non_cached_result; if (spe == NULL || spe->property_oop() == NULL) { + spe = NULL; // Must create lots of stuff here, but outside of the SystemDictionary lock. if (THREAD->is_Compiler_thread()) return NULL; // do not attempt from within compiler - Handle mt = find_method_handle_type(signature(), - class_loader, protection_domain, - CHECK_NULL); + bool found_on_bcp = false; + Handle mt = find_method_handle_type(signature(), accessing_klass, found_on_bcp, CHECK_NULL); KlassHandle mh_klass = SystemDictionaryHandles::MethodHandle_klass(); methodHandle m = methodOopDesc::make_invoke_method(mh_klass, name, signature, mt, CHECK_NULL); // Now grab the lock. We might have to throw away the new method, // if a racing thread has managed to install one at the same time. - { + if (found_on_bcp) { MutexLocker ml(SystemDictionary_lock, Thread::current()); spe = invoke_method_table()->find_entry(index, hash, signature, name_id); if (spe == NULL) spe = invoke_method_table()->add_entry(index, hash, signature, name_id); if (spe->property_oop() == NULL) spe->set_property_oop(m()); + } else { + non_cached_result = m; } } - methodOop m = (methodOop) spe->property_oop(); - assert(m->is_method(), ""); - return m; + if (spe != NULL && spe->property_oop() != NULL) { + assert(spe->property_oop()->is_method(), ""); + return (methodOop) spe->property_oop(); + } else { + return non_cached_result(); + } } // Ask Java code to find or construct a java.dyn.MethodType for the given @@ -2389,30 +2392,50 @@ methodOop SystemDictionary::find_method_handle_invoke(symbolHandle name, // Because of class loader constraints, all method handle usage must be // consistent with this loader. Handle SystemDictionary::find_method_handle_type(symbolHandle signature, - Handle class_loader, - Handle protection_domain, + KlassHandle accessing_klass, + bool& return_bcp_flag, TRAPS) { + Handle class_loader, protection_domain; + bool is_on_bcp = true; // keep this true as long as we can materialize from the boot classloader Handle empty; int npts = ArgumentCount(signature()).size(); objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty)); int arg = 0; Handle rt; // the return type from the signature for (SignatureStream ss(signature()); !ss.is_done(); ss.next()) { - oop mirror; - if (!ss.is_object()) { - mirror = Universe::java_mirror(ss.type()); - } else { - symbolOop name_oop = ss.as_symbol(CHECK_(empty)); - symbolHandle name(THREAD, name_oop); - klassOop klass = resolve_or_fail(name, - class_loader, protection_domain, - true, CHECK_(empty)); - mirror = Klass::cast(klass)->java_mirror(); + oop mirror = NULL; + if (is_on_bcp) { + mirror = ss.as_java_mirror(class_loader, protection_domain, + SignatureStream::ReturnNull, CHECK_(empty)); + if (mirror == NULL) { + // fall back from BCP to accessing_klass + if (accessing_klass.not_null()) { + class_loader = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader()); + protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain()); + } + is_on_bcp = false; + } + } + if (!is_on_bcp) { + // Resolve, throwing a real error if it doesn't work. + mirror = ss.as_java_mirror(class_loader, protection_domain, + SignatureStream::NCDFError, CHECK_(empty)); } if (ss.at_return_type()) rt = Handle(THREAD, mirror); else pts->obj_at_put(arg++, mirror); + // Check accessibility. + if (ss.is_object() && accessing_klass.not_null()) { + klassOop sel_klass = java_lang_Class::as_klassOop(mirror); + // Emulate constantPoolOopDesc::verify_constant_pool_resolve. + if (Klass::cast(sel_klass)->oop_is_objArray()) + sel_klass = objArrayKlass::cast(sel_klass)->bottom_klass(); + if (Klass::cast(sel_klass)->oop_is_instance()) { + KlassHandle sel_kh(THREAD, sel_klass); + LinkResolver::check_klass_accessability(accessing_klass, sel_kh, CHECK_(empty)); + } + } } assert(arg == npts, ""); @@ -2425,6 +2448,9 @@ Handle SystemDictionary::find_method_handle_type(symbolHandle signature, vmSymbols::findMethodHandleType_name(), vmSymbols::findMethodHandleType_signature(), &args, CHECK_(empty)); + + // report back to the caller with the MethodType and the "on_bcp" flag + return_bcp_flag = is_on_bcp; return Handle(THREAD, (oop) result.get_jobject()); } diff --git a/hotspot/src/share/vm/classfile/systemDictionary.hpp b/hotspot/src/share/vm/classfile/systemDictionary.hpp index 0d88d4206fd..bd31fbb4957 100644 --- a/hotspot/src/share/vm/classfile/systemDictionary.hpp +++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp @@ -466,13 +466,12 @@ public: // find the java.dyn.MethodHandles::invoke method for a given signature static methodOop find_method_handle_invoke(symbolHandle name, symbolHandle signature, - Handle class_loader, - Handle protection_domain, + KlassHandle accessing_klass, TRAPS); // ask Java to compute a java.dyn.MethodType object for a given signature static Handle find_method_handle_type(symbolHandle signature, - Handle class_loader, - Handle protection_domain, + KlassHandle accessing_klass, + bool& return_bcp_flag, TRAPS); // ask Java to create a dynamic call site, while linking an invokedynamic op static Handle make_dynamic_call_site(Handle bootstrap_method, diff --git a/hotspot/src/share/vm/interpreter/linkResolver.cpp b/hotspot/src/share/vm/interpreter/linkResolver.cpp index d80ef9daf52..1dcea5db93f 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.cpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp @@ -172,14 +172,16 @@ void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name(), signature())); } -void LinkResolver::lookup_implicit_method(methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS) { +void LinkResolver::lookup_implicit_method(methodHandle& result, + KlassHandle klass, symbolHandle name, symbolHandle signature, + KlassHandle current_klass, + TRAPS) { if (EnableMethodHandles && MethodHandles::enabled() && klass() == SystemDictionary::MethodHandle_klass() && methodOopDesc::is_method_handle_invoke_name(name())) { methodOop result_oop = SystemDictionary::find_method_handle_invoke(name, signature, - Handle(), - Handle(), + current_klass, CHECK); if (result_oop != NULL) { assert(result_oop->is_method_handle_invoke() && result_oop->signature() == signature(), "consistent"); @@ -290,7 +292,7 @@ void LinkResolver::resolve_method(methodHandle& resolved_method, KlassHandle res if (resolved_method.is_null()) { // JSR 292: see if this is an implicitly generated method MethodHandle.invoke(*...) - lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK); + lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, CHECK); } if (resolved_method.is_null()) { @@ -1058,7 +1060,8 @@ void LinkResolver::resolve_invokedynamic(CallInfo& result, constantPoolHandle po // JSR 292: this must be an implicitly generated method MethodHandle.invokeExact(*...) // The extra MH receiver will be inserted into the stack on every call. methodHandle resolved_method; - lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, CHECK); + KlassHandle current_klass(THREAD, pool->pool_holder()); + lookup_implicit_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, CHECK); if (resolved_method.is_null()) { THROW(vmSymbols::java_lang_InternalError()); } diff --git a/hotspot/src/share/vm/interpreter/linkResolver.hpp b/hotspot/src/share/vm/interpreter/linkResolver.hpp index efc1b53f5f3..673a166d0e7 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.hpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp @@ -103,7 +103,8 @@ class LinkResolver: AllStatic { static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); - static void lookup_implicit_method (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); + static void lookup_implicit_method (methodHandle& result, KlassHandle klass, symbolHandle name, symbolHandle signature, + KlassHandle current_klass, TRAPS); static int vtable_index_of_miranda_method(KlassHandle klass, symbolHandle name, symbolHandle signature, TRAPS); diff --git a/hotspot/src/share/vm/prims/methodHandles.cpp b/hotspot/src/share/vm/prims/methodHandles.cpp index 9581757f061..9d9c2140864 100644 --- a/hotspot/src/share/vm/prims/methodHandles.cpp +++ b/hotspot/src/share/vm/prims/methodHandles.cpp @@ -475,16 +475,25 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { if (name.is_null()) return; // no such name name_str = NULL; // safety + Handle polymorphic_method_type; + bool polymorphic_signature = false; + if ((flags & ALL_KINDS) == IS_METHOD && + (defc() == SystemDictionary::InvokeDynamic_klass() || + (defc() == SystemDictionary::MethodHandle_klass() && + methodOopDesc::is_method_handle_invoke_name(name())))) + polymorphic_signature = true; + // convert the external string or reflective type to an internal signature - bool force_signature = methodOopDesc::is_method_handle_invoke_name(name()); symbolHandle type; { symbolOop type_sym = NULL; if (java_dyn_MethodType::is_instance(type_str)) { - type_sym = java_dyn_MethodType::as_signature(type_str, force_signature, CHECK); + type_sym = java_dyn_MethodType::as_signature(type_str, polymorphic_signature, CHECK); + if (polymorphic_signature) + polymorphic_method_type = Handle(THREAD, type_str); //preserve exactly } else if (java_lang_Class::is_instance(type_str)) { - type_sym = java_lang_Class::as_signature(type_str, force_signature, CHECK); + type_sym = java_lang_Class::as_signature(type_str, false, CHECK); } else if (java_lang_String::is_instance(type_str)) { - if (force_signature) { + if (polymorphic_signature) { type = java_lang_String::as_symbol(type_str, CHECK); } else { type_sym = java_lang_String::as_symbol_or_null(type_str); @@ -517,7 +526,7 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { } if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; - return; + break; // go to second chance } } methodHandle m = result.resolved_method(); @@ -591,8 +600,42 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { sun_dyn_MemberName::set_modifiers(mname(), mods); return; } + default: + THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format"); + } + + // Second chance. + if (polymorphic_method_type.not_null()) { + // Look on a non-null class loader. + Handle cur_class_loader; + const int nptypes = java_dyn_MethodType::ptype_count(polymorphic_method_type()); + for (int i = 0; i <= nptypes; i++) { + oop type_mirror; + if (i < nptypes) type_mirror = java_dyn_MethodType::ptype(polymorphic_method_type(), i); + else type_mirror = java_dyn_MethodType::rtype(polymorphic_method_type()); + klassOop example_type = java_lang_Class::as_klassOop(type_mirror); + if (example_type == NULL) continue; + oop class_loader = Klass::cast(example_type)->class_loader(); + if (class_loader == NULL || class_loader == cur_class_loader()) continue; + cur_class_loader = Handle(THREAD, class_loader); + methodOop m = SystemDictionary::find_method_handle_invoke(name, + type, + KlassHandle(THREAD, example_type), + THREAD); + if (HAS_PENDING_EXCEPTION) { + CLEAR_PENDING_EXCEPTION; + m = NULL; + // try again with a different class loader... + } + if (m != NULL) { + int mods = (m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS); + sun_dyn_MemberName::set_vmtarget(mname(), m); + sun_dyn_MemberName::set_vmindex(mname(), m->vtable_index()); + sun_dyn_MemberName::set_modifiers(mname(), mods); + return; + } + } } - THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format"); } // Conversely, a member name which is only initialized from JVM internals @@ -993,6 +1036,13 @@ void MethodHandles::verify_method_signature(methodHandle m, pnum += 1; mnum += 1; } + klassOop pklass = NULL; + BasicType ptype = T_OBJECT; + if (ptype_oop != NULL) + ptype = java_lang_Class::as_BasicType(ptype_oop, &pklass); + else + // null does not match any non-reference; use Object to report the error + pklass = SystemDictionary::Object_klass(); klassOop mklass = NULL; BasicType mtype = ss.type(); if (mtype == T_ARRAY) mtype = T_OBJECT; // fold all refs to T_OBJECT @@ -1001,21 +1051,22 @@ void MethodHandles::verify_method_signature(methodHandle m, // null matches any reference continue; } + KlassHandle pklass_handle(THREAD, pklass); pklass = NULL; // If we fail to resolve types at this point, we will throw an error. symbolOop name_oop = ss.as_symbol(CHECK); symbolHandle name(THREAD, name_oop); instanceKlass* mk = instanceKlass::cast(m->method_holder()); Handle loader(THREAD, mk->class_loader()); Handle domain(THREAD, mk->protection_domain()); - mklass = SystemDictionary::resolve_or_fail(name, loader, domain, - true, CHECK); + mklass = SystemDictionary::resolve_or_null(name, loader, domain, CHECK); + pklass = pklass_handle(); + if (mklass == NULL && pklass != NULL && + Klass::cast(pklass)->name() == name() && + m->is_method_handle_invoke()) { + // Assume a match. We can't really decode the signature of MH.invoke*. + continue; + } } - if (ptype_oop == NULL) { - // null does not match any non-reference; use Object to report the error - ptype_oop = object_java_mirror(); - } - klassOop pklass = NULL; - BasicType ptype = java_lang_Class::as_BasicType(ptype_oop, &pklass); if (!ss.at_return_type()) { err = check_argument_type_change(ptype, pklass, mtype, mklass, mnum); } else { diff --git a/hotspot/src/share/vm/runtime/signature.cpp b/hotspot/src/share/vm/runtime/signature.cpp index c9c3859a612..ca46e2ceafd 100644 --- a/hotspot/src/share/vm/runtime/signature.cpp +++ b/hotspot/src/share/vm/runtime/signature.cpp @@ -327,6 +327,26 @@ symbolOop SignatureStream::as_symbol(TRAPS) { return result; } +klassOop SignatureStream::as_klass(Handle class_loader, Handle protection_domain, + FailureMode failure_mode, TRAPS) { + if (!is_object()) return NULL; + symbolOop name = as_symbol(CHECK_NULL); + if (failure_mode == ReturnNull) { + return SystemDictionary::resolve_or_null(name, class_loader, protection_domain, THREAD); + } else { + bool throw_error = (failure_mode == NCDFError); + return SystemDictionary::resolve_or_fail(name, class_loader, protection_domain, throw_error, THREAD); + } +} + +oop SignatureStream::as_java_mirror(Handle class_loader, Handle protection_domain, + FailureMode failure_mode, TRAPS) { + if (!is_object()) + return Universe::java_mirror(type()); + klassOop klass = as_klass(class_loader, protection_domain, failure_mode, CHECK_NULL); + if (klass == NULL) return NULL; + return Klass::cast(klass)->java_mirror(); +} symbolOop SignatureStream::as_symbol_or_null() { // Create a symbol from for string _begin _end diff --git a/hotspot/src/share/vm/runtime/signature.hpp b/hotspot/src/share/vm/runtime/signature.hpp index 9d67b0334ec..aeed8037ca9 100644 --- a/hotspot/src/share/vm/runtime/signature.hpp +++ b/hotspot/src/share/vm/runtime/signature.hpp @@ -402,6 +402,9 @@ class SignatureStream : public StackObj { bool is_array() const; // True if this argument is an array BasicType type() const { return _type; } symbolOop as_symbol(TRAPS); + enum FailureMode { ReturnNull, CNFException, NCDFError }; + klassOop as_klass(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS); + oop as_java_mirror(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS); // return same as_symbol except allocation of new symbols is avoided. symbolOop as_symbol_or_null(); From 416df6da75a1e681bbe353a0dd76cdc97477e9ae Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Tue, 4 May 2010 02:33:59 -0700 Subject: [PATCH 51/64] 6949423: remove tagged stack interpreter for Zero Missed Zero changes for 6943304. Reviewed-by: twisti --- hotspot/src/cpu/zero/vm/interpreter_zero.hpp | 6 +++--- hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp | 8 ++++---- hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp | 8 +------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/hotspot/src/cpu/zero/vm/interpreter_zero.hpp b/hotspot/src/cpu/zero/vm/interpreter_zero.hpp index df0ccb7348c..4ea5623c15a 100644 --- a/hotspot/src/cpu/zero/vm/interpreter_zero.hpp +++ b/hotspot/src/cpu/zero/vm/interpreter_zero.hpp @@ -36,14 +36,14 @@ public: static int expr_index_at(int i) { - return stackElementWords() * i; + return stackElementWords * i; } static int expr_offset_in_bytes(int i) { - return stackElementSize() * i; + return stackElementSize * i; } static int local_index_at(int i) { assert(i <= 0, "local direction already negated"); - return stackElementWords() * i; + return stackElementWords * i; } diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp index f93608f13c0..bb331380131 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp @@ -189,7 +189,7 @@ // JavaStack Implementation #define MORE_STACK(count) \ - (topOfStack -= ((count) * Interpreter::stackElementWords())) + (topOfStack -= ((count) * Interpreter::stackElementWords)) #define UPDATE_PC(opsize) {pc += opsize; } @@ -1950,8 +1950,8 @@ run: jint size = STACK_INT(-1); // stack grows down, dimensions are up! jint *dimarray = - (jint*)&topOfStack[dims * Interpreter::stackElementWords()+ - Interpreter::stackElementWords()-1]; + (jint*)&topOfStack[dims * Interpreter::stackElementWords+ + Interpreter::stackElementWords-1]; //adjust pointer to start of stack element CALL_VM(InterpreterRuntime::multianewarray(THREAD, dimarray), handle_exception); @@ -2375,7 +2375,7 @@ run: assert(except_oop(), "No exception to process"); intptr_t continuation_bci; // expression stack is emptied - topOfStack = istate->stack_base() - Interpreter::stackElementWords(); + topOfStack = istate->stack_base() - Interpreter::stackElementWords; CALL_VM(continuation_bci = (intptr_t)InterpreterRuntime::exception_handler_for_exception(THREAD, except_oop()), handle_exception); diff --git a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp index ea68b860b4c..c30474597ec 100644 --- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2010 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 @@ -510,8 +510,6 @@ static oop stack_object(intptr_t *tos, int offset); static jdouble stack_double(intptr_t *tos, int offset); static jlong stack_long(intptr_t *tos, int offset); -static void tag_stack(intptr_t *tos, frame::Tag tag, int offset); - // only used for value types static void set_stack_slot(intptr_t *tos, address value, int offset); static void set_stack_int(intptr_t *tos, int value, int offset); @@ -537,8 +535,6 @@ static jlong locals_long(intptr_t* locals, int offset); static address locals_long_at(intptr_t* locals, int offset); static address locals_double_at(intptr_t* locals, int offset); -static void tag_locals(intptr_t *locals, frame::Tag tag, int offset); - static void set_locals_slot(intptr_t *locals, address value, int offset); static void set_locals_int(intptr_t *locals, jint value, int offset); static void set_locals_float(intptr_t *locals, jfloat value, int offset); @@ -557,8 +553,6 @@ static void astore(intptr_t* topOfStack, int stack_offset, static void copy_stack_slot(intptr_t *tos, int from_offset, int to_offset); #ifndef PRODUCT -static void verify_locals_tag(intptr_t *locals, frame::Tag tag, int offset); -static void verify_stack_tag(intptr_t *tos, frame::Tag tag, int offset); static const char* C_msg(BytecodeInterpreter::messages msg); void print(); #endif // PRODUCT From 43a9130faa25b37caf3ac36f3484f21fe9b870b4 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Tue, 4 May 2010 15:12:08 -0400 Subject: [PATCH 52/64] 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout Add comparison functions for compressed oops to use bubblesort. Reviewed-by: never, coleenp --- hotspot/src/share/vm/oops/methodOop.cpp | 24 ++- .../test/runtime/6925573/SortMethodsTest.java | 190 ++++++++++++++++++ 2 files changed, 209 insertions(+), 5 deletions(-) create mode 100644 hotspot/test/runtime/6925573/SortMethodsTest.java diff --git a/hotspot/src/share/vm/oops/methodOop.cpp b/hotspot/src/share/vm/oops/methodOop.cpp index 07ef9a8b9a5..9e281f0d482 100644 --- a/hotspot/src/share/vm/oops/methodOop.cpp +++ b/hotspot/src/share/vm/oops/methodOop.cpp @@ -1114,6 +1114,20 @@ extern "C" { return ( a < b ? -1 : (a == b ? 0 : 1)); } + // We implement special compare versions for narrow oops to avoid + // testing for UseCompressedOops on every comparison. + static int method_compare_narrow(narrowOop* a, narrowOop* b) { + methodOop m = (methodOop)oopDesc::load_decode_heap_oop(a); + methodOop n = (methodOop)oopDesc::load_decode_heap_oop(b); + return m->name()->fast_compare(n->name()); + } + + static int method_compare_narrow_idempotent(narrowOop* a, narrowOop* b) { + int i = method_compare_narrow(a, b); + if (i != 0) return i; + return ( a < b ? -1 : (a == b ? 0 : 1)); + } + typedef int (*compareFn)(const void*, const void*); } @@ -1166,7 +1180,7 @@ void methodOopDesc::sort_methods(objArrayOop methods, // Use a simple bubble sort for small number of methods since // qsort requires a functional pointer call for each comparison. - if (UseCompressedOops || length < 8) { + if (length < 8) { bool sorted = true; for (int i=length-1; i>0; i--) { for (int j=0; jbase(), length, heapOopSize, compare); } diff --git a/hotspot/test/runtime/6925573/SortMethodsTest.java b/hotspot/test/runtime/6925573/SortMethodsTest.java new file mode 100644 index 00000000000..33638c39ff8 --- /dev/null +++ b/hotspot/test/runtime/6925573/SortMethodsTest.java @@ -0,0 +1,190 @@ +/* + * Copyright 2008-2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; + +import java.lang.reflect.Method; +import java.net.URI; +import java.util.Arrays; +import java.util.Vector; + +import javax.tools.Diagnostic; +import javax.tools.DiagnosticCollector; +import javax.tools.FileObject; +import javax.tools.ForwardingJavaFileManager; +import javax.tools.JavaCompiler; +import javax.tools.JavaCompiler.CompilationTask; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import javax.tools.JavaFileObject.Kind; +import javax.tools.SimpleJavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.ToolProvider; + +/* + * @test SortMethodsTest + * @bug 6925573 + * @summary verify that class loading does not need quadratic time with regard to the number of class +methods. + * @run main SortMethodsTest + * @author volker.simonis@gmail.com +*/ + +public class SortMethodsTest { + + static String createClass(String name, int nrOfMethods) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + pw.println("public class " + name + "{"); + for (int i = 0; i < nrOfMethods; i++) { + pw.println(" public void m" + i + "() {}"); + } + pw.println(" public static String sayHello() {"); + pw.println(" return \"Hello from class \" + " + name + + ".class.getName() + \" with \" + " + name + + ".class.getDeclaredMethods().length + \" methods\";"); + pw.println(" }"); + pw.println("}"); + pw.close(); + return sw.toString(); + } + + public static void main(String args[]) { + + JavaCompiler comp = ToolProvider.getSystemJavaCompiler(); + DiagnosticCollector diags = new DiagnosticCollector(); + final String cName = new String("ManyMethodsClass"); + Vector results = new Vector(); + + for (int i = 6; i < 600000; i*=10) { + String klass = createClass(cName, i); + JavaMemoryFileObject file = new JavaMemoryFileObject(cName, klass); + MemoryFileManager mfm = new MemoryFileManager(comp.getStandardFileManager(diags, null, null), file); + CompilationTask task = comp.getTask(null, mfm, diags, null, null, Arrays.asList(file)); + + if (task.call()) { + try { + MemoryClassLoader mcl = new MemoryClassLoader(file); + long start = System.nanoTime(); + Class c = Class.forName(cName, true, mcl); + long end = System.nanoTime(); + results.add(end - start); + Method m = c.getDeclaredMethod("sayHello", new Class[0]); + String ret = (String)m.invoke(null, new Object[0]); + System.out.println(ret + " (loaded and resloved in " + (end - start) + "ns)"); + } catch (Exception e) { + System.err.println(e); + } + } + else { + System.out.println(klass); + System.out.println(); + for (Diagnostic diag : diags.getDiagnostics()) { + System.out.println(diag.getCode() + "\n" + diag.getKind() + "\n" + diag.getPosition()); + System.out.println(diag.getSource() + "\n" + diag.getMessage(null)); + } + } + } + + long lastRatio = 0; + for (int i = 2; i < results.size(); i++) { + long normalized1 = Math.max(results.get(i-1) - results.get(0), 1); + long normalized2 = Math.max(results.get(i) - results.get(0), 1); + long ratio = normalized2/normalized1; + lastRatio = ratio; + System.out.println("10 x more methods requires " + ratio + " x more time"); + } + // The following is just vague estimation but seems to work on current x86_64 and sparcv9 machines + if (lastRatio > 80) { + throw new RuntimeException("ATTENTION: it seems that class loading needs quadratic time with regard to the number of class methods!!!"); + } + } +} + +class JavaMemoryFileObject extends SimpleJavaFileObject { + + private final String code; + private ByteArrayOutputStream byteCode; + + JavaMemoryFileObject(String name, String code) { + super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE); + this.code = code; + } + + @Override + public CharSequence getCharContent(boolean ignoreEncodingErrors) { + return code; + } + + @Override + public OutputStream openOutputStream() { + byteCode = new ByteArrayOutputStream(); + return byteCode; + } + + byte[] getByteCode() { + return byteCode.toByteArray(); + } +} + +class MemoryClassLoader extends ClassLoader { + + private final JavaMemoryFileObject jfo; + + public MemoryClassLoader(JavaMemoryFileObject jfo) { + this.jfo = jfo; + } + + public Class findClass(String name) { + byte[] b = jfo.getByteCode(); + return defineClass(name, b, 0, b.length); + } +} + +class MemoryFileManager extends ForwardingJavaFileManager { + + private final JavaFileObject jfo; + + public MemoryFileManager(StandardJavaFileManager jfm, JavaFileObject jfo) { + super(jfm); + this.jfo = jfo; + } + + @Override + public FileObject getFileForInput(Location location, String packageName, + String relativeName) throws IOException { + return jfo; + } + + @Override + public JavaFileObject getJavaFileForOutput(Location location, String qualifiedName, + Kind kind, FileObject outputFile) throws IOException { + return jfo; + } + +} From 510d77a436da20ccc29e4559206cfa5e94e190b5 Mon Sep 17 00:00:00 2001 From: Erik Trimble Date: Tue, 4 May 2010 12:25:39 -0700 Subject: [PATCH 53/64] Added tag hs18-b03 for changeset d5db8102090b --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 2e0258455ee..4fb4ca49028 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -91,3 +91,4 @@ e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 4b60f23c42231f7ecd62ad1fcb6a9ca26fa57d1b hs18-b02 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90 e0a1a502e402dbe7bf2d9102b4084a7e79a99a9b jdk7-b91 +25f53b53aaa3eb8b2d5391a1e8de9a76ae1dd8a2 hs18-b03 From 070ea7c31043d3968655a7993fbb9eefa880c2af Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 5 May 2010 05:57:21 -0700 Subject: [PATCH 54/64] 6949830: 6939134 broke Zero The commit for 6939134 broke Zero. Reviewed-by: twisti --- hotspot/src/cpu/zero/vm/methodHandles_zero.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp b/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp index e1344ea005f..b574ddc3675 100644 --- a/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp +++ b/hotspot/src/cpu/zero/vm/methodHandles_zero.cpp @@ -26,6 +26,10 @@ #include "incls/_precompiled.incl" #include "incls/_methodHandles_zero.cpp.incl" +int MethodHandles::adapter_conversion_ops_supported_mask() { + ShouldNotCallThis(); +} + void MethodHandles::generate_method_handle_stub(MacroAssembler* masm, MethodHandles::EntryKind ek) { ShouldNotCallThis(); From 51da92458c80a7584f75b12a72d3a6912756f4f2 Mon Sep 17 00:00:00 2001 From: Keith McGuigan Date: Wed, 5 May 2010 09:28:13 -0400 Subject: [PATCH 55/64] 6949118: jvm.dll shows the company name as Sun Microsystems Changed to "Oracle Corporation" Reviewed-by: coleenp, dcubed --- hotspot/make/hotspot_distro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotspot/make/hotspot_distro b/hotspot/make/hotspot_distro index 51bad9748eb..bb0a6952a72 100644 --- a/hotspot/make/hotspot_distro +++ b/hotspot/make/hotspot_distro @@ -28,5 +28,5 @@ # Don't put quotes (fail windows build). HOTSPOT_VM_DISTRO=Java HotSpot(TM) -COMPANY_NAME=Sun Microsystems, Inc. +COMPANY_NAME=Oracle Corporation PRODUCT_NAME=Java(TM) Platform SE From 4d6c5d6fefa49233162d01d3cbe9cc99814d025f Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Thu, 6 May 2010 02:09:18 -0700 Subject: [PATCH 56/64] 6950178: Zero stack improvements Moves the logic for determining the size of the Zero stack into the ZeroStack class. Reviewed-by: twisti --- hotspot/src/cpu/zero/vm/stack_zero.cpp | 5 +++++ hotspot/src/cpu/zero/vm/stack_zero.hpp | 6 ++++++ hotspot/src/cpu/zero/vm/stack_zero.inline.hpp | 17 +++++++++++------ hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp | 5 +---- hotspot/src/share/vm/includeDB_zero | 1 + 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/hotspot/src/cpu/zero/vm/stack_zero.cpp b/hotspot/src/cpu/zero/vm/stack_zero.cpp index 328e52e6b00..532f54e7798 100644 --- a/hotspot/src/cpu/zero/vm/stack_zero.cpp +++ b/hotspot/src/cpu/zero/vm/stack_zero.cpp @@ -26,6 +26,11 @@ #include "incls/_precompiled.incl" #include "incls/_stack_zero.cpp.incl" +int ZeroStack::suggest_size(Thread *thread) const { + assert(needs_setup(), "already set up"); + return align_size_down(abi_stack_available(thread) / 2, wordSize); +} + void ZeroStack::handle_overflow(TRAPS) { JavaThread *thread = (JavaThread *) THREAD; diff --git a/hotspot/src/cpu/zero/vm/stack_zero.hpp b/hotspot/src/cpu/zero/vm/stack_zero.hpp index ab3beca4760..691cbc790e5 100644 --- a/hotspot/src/cpu/zero/vm/stack_zero.hpp +++ b/hotspot/src/cpu/zero/vm/stack_zero.hpp @@ -42,6 +42,8 @@ class ZeroStack { return _base == NULL; } + int suggest_size(Thread *thread) const; + void setup(void *mem, size_t size) { assert(needs_setup(), "already set up"); assert(!(size & WordAlignmentMask), "unaligned"); @@ -67,6 +69,9 @@ class ZeroStack { _sp = new_sp; } + int total_words() const { + return _top - _base; + } int available_words() const { return _sp - _base; } @@ -89,6 +94,7 @@ class ZeroStack { int shadow_pages_size() const { return _shadow_pages_size; } + int abi_stack_available(Thread *thread) const; public: void overflow_check(int required_words, TRAPS); diff --git a/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp b/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp index ffb247c6039..89513dbb75e 100644 --- a/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp +++ b/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp @@ -25,19 +25,24 @@ // This function should match SharkStack::CreateStackOverflowCheck inline void ZeroStack::overflow_check(int required_words, TRAPS) { - JavaThread *thread = (JavaThread *) THREAD; - // Check the Zero stack - if (required_words > available_words()) { + if (available_words() < required_words) { handle_overflow(THREAD); return; } // Check the ABI stack - address stack_top = thread->stack_base() - thread->stack_size(); - int free_stack = ((address) &stack_top) - stack_top; - if (free_stack < shadow_pages_size()) { + if (abi_stack_available(THREAD) < 0) { handle_overflow(THREAD); return; } } + +// This method returns the amount of ABI stack available for us +// to use under normal circumstances. Note that the returned +// value can be negative. +inline int ZeroStack::abi_stack_available(Thread *thread) const { + int stack_used = thread->stack_base() - (address) &stack_used; + int stack_free = thread->stack_size() - stack_used; + return stack_free - shadow_pages_size(); +} diff --git a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp index 4ffa5d18919..a1b093ad57b 100644 --- a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp +++ b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp @@ -51,10 +51,7 @@ class StubGenerator: public StubCodeGenerator { // Set up the stack if necessary bool stack_needs_teardown = false; if (stack->needs_setup()) { - size_t stack_used = thread->stack_base() - (address) &stack_used; - size_t stack_free = thread->stack_size() - stack_used; - size_t zero_stack_size = align_size_down(stack_free / 2, wordSize); - + size_t zero_stack_size = stack->suggest_size(thread); stack->setup(alloca(zero_stack_size), zero_stack_size); stack_needs_teardown = true; } diff --git a/hotspot/src/share/vm/includeDB_zero b/hotspot/src/share/vm/includeDB_zero index b5c7a60440f..20a7fed1ec3 100644 --- a/hotspot/src/share/vm/includeDB_zero +++ b/hotspot/src/share/vm/includeDB_zero @@ -61,6 +61,7 @@ stack_.inline.hpp thread.hpp stack_.cpp interpreterRuntime.hpp stack_.cpp stack_.hpp +stack_.cpp stack_.inline.hpp stubGenerator_.cpp stack_.inline.hpp From 611ef519647b6bcd18212f6177178388e318c4dc Mon Sep 17 00:00:00 2001 From: Erik Trimble Date: Thu, 6 May 2010 12:46:21 -0700 Subject: [PATCH 57/64] 6950438: Add 6u18 and 6u20 release values explicitly to jprt.properties file Modify jprt.properties to allow JPRT to use 6u18 and 6u18 targets Reviewed-by: ohair --- hotspot/make/jprt.properties | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hotspot/make/jprt.properties b/hotspot/make/jprt.properties index 66243d17550..a65c653b2ae 100644 --- a/hotspot/make/jprt.properties +++ b/hotspot/make/jprt.properties @@ -51,6 +51,8 @@ jprt.my.solaris.sparc.jdk6=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6perf=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6u10=solaris_sparc_5.8 jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8 +jprt.my.solaris.sparc.jdk6u18=solaris_sparc_5.8 +jprt.my.solaris.sparc.jdk6u20=solaris_sparc_5.8 jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}} jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10 @@ -58,6 +60,8 @@ jprt.my.solaris.sparcv9.jdk6=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6perf=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6u10=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8 +jprt.my.solaris.sparcv9.jdk6u18=solaris_sparcv9_5.8 +jprt.my.solaris.sparcv9.jdk6u20=solaris_sparcv9_5.8 jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}} jprt.my.solaris.i586.jdk7=solaris_i586_5.10 @@ -65,6 +69,8 @@ jprt.my.solaris.i586.jdk6=solaris_i586_5.8 jprt.my.solaris.i586.jdk6perf=solaris_i586_5.8 jprt.my.solaris.i586.jdk6u10=solaris_i586_5.8 jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8 +jprt.my.solaris.i586.jdk6u18=solaris_i586_5.8 +jprt.my.solaris.i586.jdk6u20=solaris_i586_5.8 jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}} jprt.my.solaris.x64.jdk7=solaris_x64_5.10 @@ -72,6 +78,8 @@ jprt.my.solaris.x64.jdk6=solaris_x64_5.10 jprt.my.solaris.x64.jdk6perf=solaris_x64_5.10 jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10 jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10 +jprt.my.solaris.x64.jdk6u18=solaris_x64_5.10 +jprt.my.solaris.x64.jdk6u20=solaris_x64_5.10 jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}} jprt.my.linux.i586.jdk7=linux_i586_2.6 @@ -79,6 +87,8 @@ jprt.my.linux.i586.jdk6=linux_i586_2.4 jprt.my.linux.i586.jdk6perf=linux_i586_2.4 jprt.my.linux.i586.jdk6u10=linux_i586_2.4 jprt.my.linux.i586.jdk6u14=linux_i586_2.4 +jprt.my.linux.i586.jdk6u18=linux_i586_2.4 +jprt.my.linux.i586.jdk6u20=linux_i586_2.4 jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}} jprt.my.linux.x64.jdk7=linux_x64_2.6 @@ -86,6 +96,8 @@ jprt.my.linux.x64.jdk6=linux_x64_2.4 jprt.my.linux.x64.jdk6perf=linux_x64_2.4 jprt.my.linux.x64.jdk6u10=linux_x64_2.4 jprt.my.linux.x64.jdk6u14=linux_x64_2.4 +jprt.my.linux.x64.jdk6u18=linux_x64_2.4 +jprt.my.linux.x64.jdk6u20=linux_x64_2.4 jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}} jprt.my.windows.i586.jdk7=windows_i586_5.0 @@ -93,6 +105,8 @@ jprt.my.windows.i586.jdk6=windows_i586_5.0 jprt.my.windows.i586.jdk6perf=windows_i586_5.0 jprt.my.windows.i586.jdk6u10=windows_i586_5.0 jprt.my.windows.i586.jdk6u14=windows_i586_5.0 +jprt.my.windows.i586.jdk6u18=windows_i586_5.0 +jprt.my.windows.i586.jdk6u20=windows_i586_5.0 jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}} jprt.my.windows.x64.jdk7=windows_x64_5.2 @@ -100,6 +114,8 @@ jprt.my.windows.x64.jdk6=windows_x64_5.2 jprt.my.windows.x64.jdk6perf=windows_x64_5.2 jprt.my.windows.x64.jdk6u10=windows_x64_5.2 jprt.my.windows.x64.jdk6u14=windows_x64_5.2 +jprt.my.windows.x64.jdk6u18=windows_x64_5.2 +jprt.my.windows.x64.jdk6u20=windows_x64_5.2 jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}} # Standard list of jprt build targets for this source tree From e7e93ff0ddb4e5b6c06a726668523616b987b4e6 Mon Sep 17 00:00:00 2001 From: "J. Duke" Date: Wed, 5 Jul 2017 17:10:17 +0200 Subject: [PATCH 58/64] Added tag jdk7-b90 for changeset 1d1927f9ec09 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index cbaaf52ea04..9151c4dc7d6 100644 --- a/.hgtags +++ b/.hgtags @@ -64,3 +64,4 @@ c94d9cc81f495d97817eba9d71b84fc45f7661a5 jdk7-b86 b7456c473862048fa70ed8092313a4ef0a55d403 jdk7-b87 7077b95d42f6b3942a8751bba033801ff50e5889 jdk7-b88 44158f6d3b94c0fa020e33632532473d92d1ea96 jdk7-b89 +1d1927f9ec097b62c913921e2dfa5dbaf5dc325b jdk7-b90 From 404ff1ae4b3d13f1e90238cfe7f166e3ee5a1e74 Mon Sep 17 00:00:00 2001 From: "J. Duke" Date: Wed, 5 Jul 2017 17:10:46 +0200 Subject: [PATCH 59/64] Added tag jdk7-b91 for changeset 308ad8f68b8d --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 9151c4dc7d6..1cf6191516b 100644 --- a/.hgtags +++ b/.hgtags @@ -65,3 +65,4 @@ b7456c473862048fa70ed8092313a4ef0a55d403 jdk7-b87 7077b95d42f6b3942a8751bba033801ff50e5889 jdk7-b88 44158f6d3b94c0fa020e33632532473d92d1ea96 jdk7-b89 1d1927f9ec097b62c913921e2dfa5dbaf5dc325b jdk7-b90 +308ad8f68b8dd68e22d73dd490e110059b732422 jdk7-b91 From d8298c3ca4ac45699edfc871ddf5c006f1611c7b Mon Sep 17 00:00:00 2001 From: Michael Wilkerson Date: Thu, 6 May 2010 18:25:58 -0700 Subject: [PATCH 60/64] Added tag jdk7-b92 for changeset 8f63b4408306 --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 4fb4ca49028..1506a9033be 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -92,3 +92,4 @@ e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90 e0a1a502e402dbe7bf2d9102b4084a7e79a99a9b jdk7-b91 25f53b53aaa3eb8b2d5391a1e8de9a76ae1dd8a2 hs18-b03 +3221d1887d30341bedfdac1dbf365ea41beff20f jdk7-b92 From 399d1f6a5f101f8bfd79ac6ff9f6e772b07b915b Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Fri, 7 May 2010 04:20:56 -0700 Subject: [PATCH 61/64] 6950617: Zero/Shark interface updates Zero needs a couple of new methods to allow Shark to access the new frame anchor field. Reviewed-by: twisti --- hotspot/src/cpu/zero/vm/frame_zero.cpp | 4 ++++ hotspot/src/cpu/zero/vm/frame_zero.hpp | 3 +++ hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp | 4 ++++ hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp | 6 ++++++ 4 files changed, 17 insertions(+) diff --git a/hotspot/src/cpu/zero/vm/frame_zero.cpp b/hotspot/src/cpu/zero/vm/frame_zero.cpp index 0bf4ae68b44..6a573a6254c 100644 --- a/hotspot/src/cpu/zero/vm/frame_zero.cpp +++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp @@ -36,6 +36,10 @@ bool frame::is_interpreted_frame() const { return zeroframe()->is_interpreter_frame(); } +bool frame::is_fake_stub_frame() const { + return zeroframe()->is_fake_stub_frame(); +} + frame frame::sender_for_entry_frame(RegisterMap *map) const { assert(zeroframe()->is_entry_frame(), "wrong type of frame"); assert(map != NULL, "map must be set"); diff --git a/hotspot/src/cpu/zero/vm/frame_zero.hpp b/hotspot/src/cpu/zero/vm/frame_zero.hpp index 31815eb24fb..4d32a5b818b 100644 --- a/hotspot/src/cpu/zero/vm/frame_zero.hpp +++ b/hotspot/src/cpu/zero/vm/frame_zero.hpp @@ -61,6 +61,9 @@ return zeroframe()->as_shark_frame(); } + public: + bool is_fake_stub_frame() const; + public: frame sender_for_nonentry_frame(RegisterMap* map) const; diff --git a/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp b/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp index 7665780bc01..93e25a274e1 100644 --- a/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp +++ b/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp @@ -81,3 +81,7 @@ ZeroFrame* last_Java_fp() const { return _last_Java_fp; } + + static ByteSize last_Java_fp_offset() { + return byte_offset_of(JavaFrameAnchor, _last_Java_fp); + } diff --git a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp index aea90119989..b92daee9650 100644 --- a/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp +++ b/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp @@ -88,6 +88,12 @@ return frame(last_Java_fp(), last_Java_sp()); } + public: + static ByteSize last_Java_fp_offset() { + return byte_offset_of(JavaThread, _anchor) + + JavaFrameAnchor::last_Java_fp_offset(); + } + public: // Check for pending suspend requests and pending asynchronous // exceptions. There are separate accessors for these, but From bd1c4063c8db5707ba0b8ebdbc4319ea3ec77e9a Mon Sep 17 00:00:00 2001 From: Erik Trimble Date: Fri, 7 May 2010 15:13:00 -0700 Subject: [PATCH 62/64] Added tag hs18-b04 for changeset 31ba466ddb99 --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 1506a9033be..787b20f32c9 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -93,3 +93,4 @@ e7e7e36ccdb5d56edd47e5744351202d38f3b7ad jdk7-b87 e0a1a502e402dbe7bf2d9102b4084a7e79a99a9b jdk7-b91 25f53b53aaa3eb8b2d5391a1e8de9a76ae1dd8a2 hs18-b03 3221d1887d30341bedfdac1dbf365ea41beff20f jdk7-b92 +310cdbc355355a13aa53c002b6bde4a8c5ba67ff hs18-b04 From 8afbd9a53e8f3f9f71356871b9743c68bd5eea7d Mon Sep 17 00:00:00 2001 From: Tom Rodriguez Date: Mon, 10 May 2010 14:58:38 -0700 Subject: [PATCH 63/64] 6951190: assert(!klass_is_exact(),"only non-exact klass") while building JDK Reviewed-by: kvn --- hotspot/src/share/vm/opto/library_call.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hotspot/src/share/vm/opto/library_call.cpp b/hotspot/src/share/vm/opto/library_call.cpp index eaa2a06ebb4..709e31ab878 100644 --- a/hotspot/src/share/vm/opto/library_call.cpp +++ b/hotspot/src/share/vm/opto/library_call.cpp @@ -809,8 +809,7 @@ Node* LibraryCallKit::make_string_method_node(int opcode, Node* str1, Node* cnt1 Node* no_ctrl = NULL; ciInstanceKlass* klass = env()->String_klass(); - const TypeInstPtr* string_type = - TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0); + const TypeOopPtr* string_type = TypeOopPtr::make_from_klass(klass); const TypeAryPtr* value_type = TypeAryPtr::make(TypePtr::NotNull, @@ -883,8 +882,7 @@ bool LibraryCallKit::inline_string_compareTo() { } ciInstanceKlass* klass = env()->String_klass(); - const TypeInstPtr* string_type = - TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0); + const TypeOopPtr* string_type = TypeOopPtr::make_from_klass(klass); Node* no_ctrl = NULL; // Get counts for string and argument @@ -958,14 +956,16 @@ bool LibraryCallKit::inline_string_equals() { } } - const TypeInstPtr* string_type = - TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0); + const TypeOopPtr* string_type = TypeOopPtr::make_from_klass(klass); Node* no_ctrl = NULL; Node* receiver_cnt; Node* argument_cnt; if (!stopped()) { + // Properly cast the argument to String + argument = _gvn.transform(new (C, 2) CheckCastPPNode(control(), argument, string_type)); + // Get counts for string and argument Node* receiver_cnta = basic_plus_adr(receiver, receiver, count_offset); receiver_cnt = make_load(no_ctrl, receiver_cnta, TypeInt::INT, T_INT, string_type->add_offset(count_offset)); @@ -1090,7 +1090,7 @@ Node* LibraryCallKit::string_indexOf(Node* string_object, ciTypeArray* target_ar const int offset_offset = java_lang_String::offset_offset_in_bytes(); ciInstanceKlass* klass = env()->String_klass(); - const TypeInstPtr* string_type = TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0); + const TypeOopPtr* string_type = TypeOopPtr::make_from_klass(klass); const TypeAryPtr* source_type = TypeAryPtr::make(TypePtr::NotNull, TypeAry::make(TypeInt::CHAR,TypeInt::POS), ciTypeArrayKlass::make(T_CHAR), true, 0); Node* sourceOffseta = basic_plus_adr(string_object, string_object, offset_offset); @@ -1199,8 +1199,7 @@ bool LibraryCallKit::inline_string_indexOf() { Node* no_ctrl = NULL; ciInstanceKlass* klass = env()->String_klass(); - const TypeInstPtr* string_type = - TypeInstPtr::make(TypePtr::BotPTR, klass, false, NULL, 0); + const TypeOopPtr* string_type = TypeOopPtr::make_from_klass(klass); // Get counts for string and substr Node* source_cnta = basic_plus_adr(receiver, receiver, count_offset); From b8491bb9fedf0953277aa6aefea97fca24a6fc32 Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 12 May 2010 03:49:52 -0700 Subject: [PATCH 64/64] 6951784: Zero deoptimizer changes The way Zero currently handles deoptimization can lead to methods being freed while they are still being executed. Reviewed-by: twisti --- .../src/cpu/zero/vm/cppInterpreter_zero.cpp | 38 +++++++++++-------- .../src/cpu/zero/vm/cppInterpreter_zero.hpp | 8 ++-- hotspot/src/cpu/zero/vm/entry_zero.hpp | 30 ++++++++++----- 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp index 3d6748e4935..325502ea200 100644 --- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp +++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp @@ -37,15 +37,18 @@ thread->reset_last_Java_frame(); \ fixup_after_potential_safepoint() -void CppInterpreter::normal_entry(methodOop method, intptr_t UNUSED, TRAPS) { +int CppInterpreter::normal_entry(methodOop method, intptr_t UNUSED, TRAPS) { JavaThread *thread = (JavaThread *) THREAD; // Allocate and initialize our frame. - InterpreterFrame *frame = InterpreterFrame::build(method, CHECK); + InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0); thread->push_zero_frame(frame); // Execute those bytecodes! main_loop(0, THREAD); + + // No deoptimized frames on the stack + return 0; } void CppInterpreter::main_loop(int recurse, TRAPS) { @@ -165,7 +168,7 @@ void CppInterpreter::main_loop(int recurse, TRAPS) { stack->push(result[-i]); } -void CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) { +int CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) { // Make sure method is native and not abstract assert(method->is_native() && !method->is_abstract(), "should be"); @@ -173,7 +176,7 @@ void CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) { ZeroStack *stack = thread->zero_stack(); // Allocate and initialize our frame - InterpreterFrame *frame = InterpreterFrame::build(method, CHECK); + InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0); thread->push_zero_frame(frame); interpreterState istate = frame->interpreter_state(); intptr_t *locals = istate->locals(); @@ -430,25 +433,26 @@ void CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) { ShouldNotReachHere(); } } + + // No deoptimized frames on the stack + return 0; } -void CppInterpreter::accessor_entry(methodOop method, intptr_t UNUSED, TRAPS) { +int CppInterpreter::accessor_entry(methodOop method, intptr_t UNUSED, TRAPS) { JavaThread *thread = (JavaThread *) THREAD; ZeroStack *stack = thread->zero_stack(); intptr_t *locals = stack->sp(); // Drop into the slow path if we need a safepoint check if (SafepointSynchronize::do_call_back()) { - normal_entry(method, 0, THREAD); - return; + return normal_entry(method, 0, THREAD); } // Load the object pointer and drop into the slow path // if we have a NullPointerException oop object = LOCALS_OBJECT(0); if (object == NULL) { - normal_entry(method, 0, THREAD); - return; + return normal_entry(method, 0, THREAD); } // Read the field index from the bytecode, which looks like this: @@ -470,15 +474,14 @@ void CppInterpreter::accessor_entry(methodOop method, intptr_t UNUSED, TRAPS) { constantPoolCacheOop cache = method->constants()->cache(); ConstantPoolCacheEntry* entry = cache->entry_at(index); if (!entry->is_resolved(Bytecodes::_getfield)) { - normal_entry(method, 0, THREAD); - return; + return normal_entry(method, 0, THREAD); } // Get the result and push it onto the stack switch (entry->flag_state()) { case ltos: case dtos: - stack->overflow_check(1, CHECK); + stack->overflow_check(1, CHECK_0); stack->alloc(wordSize); break; } @@ -558,20 +561,25 @@ void CppInterpreter::accessor_entry(methodOop method, intptr_t UNUSED, TRAPS) { ShouldNotReachHere(); } } + + // No deoptimized frames on the stack + return 0; } -void CppInterpreter::empty_entry(methodOop method, intptr_t UNUSED, TRAPS) { +int CppInterpreter::empty_entry(methodOop method, intptr_t UNUSED, TRAPS) { JavaThread *thread = (JavaThread *) THREAD; ZeroStack *stack = thread->zero_stack(); // Drop into the slow path if we need a safepoint check if (SafepointSynchronize::do_call_back()) { - normal_entry(method, 0, THREAD); - return; + return normal_entry(method, 0, THREAD); } // Pop our parameters stack->set_sp(stack->sp() + method->size_of_parameters()); + + // No deoptimized frames on the stack + return 0; } InterpreterFrame *InterpreterFrame::build(const methodOop method, TRAPS) { diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp index 69a4efc68cc..96f4e564a93 100644 --- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp +++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp @@ -29,10 +29,10 @@ public: // Method entries - static void normal_entry(methodOop method, intptr_t UNUSED, TRAPS); - static void native_entry(methodOop method, intptr_t UNUSED, TRAPS); - static void accessor_entry(methodOop method, intptr_t UNUSED, TRAPS); - static void empty_entry(methodOop method, intptr_t UNUSED, TRAPS); + static int normal_entry(methodOop method, intptr_t UNUSED, TRAPS); + static int native_entry(methodOop method, intptr_t UNUSED, TRAPS); + static int accessor_entry(methodOop method, intptr_t UNUSED, TRAPS); + static int empty_entry(methodOop method, intptr_t UNUSED, TRAPS); public: // Main loop of normal_entry diff --git a/hotspot/src/cpu/zero/vm/entry_zero.hpp b/hotspot/src/cpu/zero/vm/entry_zero.hpp index 12f7e554b1a..8ba27238373 100644 --- a/hotspot/src/cpu/zero/vm/entry_zero.hpp +++ b/hotspot/src/cpu/zero/vm/entry_zero.hpp @@ -1,6 +1,6 @@ /* * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. - * Copyright 2008, 2009 Red Hat, Inc. + * Copyright 2008, 2009, 2010 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 @@ -41,20 +41,30 @@ class ZeroEntry { } private: - typedef void (*NormalEntryFunc)(methodOop method, - intptr_t base_pc, - TRAPS); - typedef void (*OSREntryFunc)(methodOop method, - address osr_buf, - intptr_t base_pc, - TRAPS); + typedef int (*NormalEntryFunc)(methodOop method, + intptr_t base_pc, + TRAPS); + typedef int (*OSREntryFunc)(methodOop method, + address osr_buf, + intptr_t base_pc, + TRAPS); public: void invoke(methodOop method, TRAPS) const { - ((NormalEntryFunc) entry_point())(method, (intptr_t) this, THREAD); + maybe_deoptimize( + ((NormalEntryFunc) entry_point())(method, (intptr_t) this, THREAD), + THREAD); } void invoke_osr(methodOop method, address osr_buf, TRAPS) const { - ((OSREntryFunc) entry_point())(method, osr_buf, (intptr_t) this, THREAD); + maybe_deoptimize( + ((OSREntryFunc) entry_point())(method, osr_buf, (intptr_t) this, THREAD), + THREAD); + } + + private: + static void maybe_deoptimize(int deoptimized_frames, TRAPS) { + if (deoptimized_frames) + CppInterpreter::main_loop(deoptimized_frames - 1, THREAD); } public: